1/* @preserve 2 * Leaflet 1.3.1, a JS library for interactive maps. http://leafletjs.com 3 * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade 4 */ 5!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 i(t){var i,e,n,o;for(e=1,n=arguments.length;e<n;e++){o=arguments[e];for(i in o)t[i]=o[i]}return t}function e(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}function n(t){return t._leaflet_id=t._leaflet_id||++ti,t._leaflet_id}function o(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function s(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function r(){return!1}function a(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function h(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function u(t){return h(t).split(/\s+/)}function l(t,i){t.hasOwnProperty("options")||(t.options=t.options?Qt(t.options):{});for(var e in i)t.options[e]=i[e];return t.options}function c(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf("?")?"&":"?")+n.join("&")}function _(t,i){return t.replace(ii,function(t,e){var n=i[e];if(void 0===n)throw new Error("No value provided for variable "+t);return"function"==typeof n&&(n=n(i)),n})}function d(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}function p(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}function m(t){var i=+new Date,e=Math.max(0,16-(i-oi));return oi=i+e,window.setTimeout(t,e)}function f(t,i,n){if(!n||si!==m)return si.call(window,e(t,i));t.call(i)}function g(t){t&&ri.call(window,t)}function v(){}function y(t){if("undefined"!=typeof L&&L&&L.Mixin){t=ei(t)?t:[t];for(var i=0;i<t.length;
5i++)t[i]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}}function x(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}function w(t,i,e){return t instanceof x?t:ei(t)?new x(t[0],t[1]):void 0===t||null===t?t:"object"==typeof t&&"x"in t&&"y"in t?new x(t.x,t.y):new x(t,i,e)}function P(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function b(t,i){return!t||t instanceof P?t:new P(t,i)}function T(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function z(t,i){return t instanceof T?t:new T(t,i)}function M(t,i,e){if(isNaN(t)||isNaN(i))throw new Error("Invalid LatLng object: ("+t+", "+i+")");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function C(t,i,e){return t instanceof M?t:ei(t)&&"object"!=typeof t[0]?3===t.length?new M(t[0],t[1],t[2]):2===t.length?new M(t[0],t[1]):null:void 0===t||null===t?t:"object"==typeof t&&"lat"in t?new M(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===i?null:new M(t,i,e)}function Z(t,i,e,n){if(ei(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function S(t,i,e,n){return new Z(t,i,e,n)}function E(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function k(t,i){var e,n,o,s,r,a,h="";for(e=0,o=t.length;e<o;e++){for(n=0,s=(r=t[e]).length;n<s;n++)a=r[n],h+=(n?"L":"M")+a.x+" "+a.y;h+=i?Xi?"z":"x":""}return h||"M0 0"}function I(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}function A(t,i,e,n){return"touchstart"===i?O(t,e,n):"touchmove"===i?W(t,e,n):"touchend"===i&&H(t,e,n),this}function B(t,i,e){var n=t["_leaflet_"+i+e];return"touchstart"===i?t.removeEventListener(Qi,n,!1):"touchmove"===i?t.removeEventListener(te,n,!1):"touchend"===i&&(t.removeEventListener(ie,n,!1),t.removeEventListener(ee,n,!1)),this}function O(t,i,n){var o=e(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(ne.indexOf(t.target.tagName)<0))return;$(t)}j(t,i)});t["_leaflet_touchstart"+n]=o,t.addEventListener(Qi,o,!1),se||(document.documentElement.addEventListener(Qi,R,!0),document.documentElement.addEventListener(te,D,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,N,!0),se=!0)}function R(t){oe[t.pointerId]=t,re++}function D(t){oe[t.pointerId]&&(oe[t.pointerId]=t)}function N(t){delete oe[t.pointerId],re--}function j(t,i){t.touches=[];for(var e in oe)t.touches.push(oe[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&j(t,i)};t["_leaflet_touchmove"+e]=n,t.addEventListener(te,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t["_leaflet_touchend"+e]=n,t.addEventListener(ie,n,!1),t.addEventListener(ee,n,!1)}function F(t,i,e){function n(t){var i;if(Ui){if(!Pi||"mouse"===t.pointerType)return;i=re}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Ui){if(!Pi||"mouse"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type="dblclick",i(r),s=null}}var s,r,a=!1,h=250;return t[ue+ae+e]=n,t[ue+he+e]=o,t[ue+"dblclick"+e]=i,t.addEventListener(ae,n,!1),t.addEventListener(he,o,!1),t.addEventListener("dblclick",i,!1),this}function U(t,i){var e=t[ue+ae+i],n=t[ue+he+i],o=t[ue+"dblclick"+i];return t.removeEventListener(ae,e,!1),t.removeEventListener(he,n,!1),Pi||t.removeEventListener("dblclick",o,!1),this}function V(t,i,e,n){if("object"==typeof i)for(var o in i)G(t,o,i[o],e);else for(var s=0,r=(i=u(i)).length;s<r;s++)G(t,i[s],e,n);return this}function q(t,i,e,n){if("object"==typeof i)for(var o in i)K(t,o,i[o],e);else if(i)for(var s=0,r=(i=u(i)).length;s<r;s++)K(t,i[s],e,n);else{for(var a in t[le])K(t,a,t[le][a]);delete t[le]}return this}function G(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):"");if(t[le]&&t[le][s])return this;var r=function(i){return e.call(o||t,i||window.event)},a=r;Ui&&0===i.indexOf("touch")?A(t,i,r,s):!Vi||"dblclick"!==i||!F||Ui&&Si?"addEventListener"in t?"mousewheel"===i?t.addEventListener("onw
5heel"in t?"wheel":"mousewheel",r,!1):"mouseenter"===i||"mouseleave"===i?(r=function(i){i=i||window.event,ot(t,i)&&a(i)},t.addEventListener("mouseenter"===i?"mouseover":"mouseout",r,!1)):("click"===i&&Ti&&(r=function(t){st(t,a)}),t.addEventListener(i,r,!1)):"attachEvent"in t&&t.attachEvent("on"+i,r):F(t,r,s),t[le]=t[le]||{},t[le][s]=r}function K(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):""),r=t[le]&&t[le][s];if(!r)return this;Ui&&0===i.indexOf("touch")?B(t,i,s):!Vi||"dblclick"!==i||!U||Ui&&Si?"removeEventListener"in t?"mousewheel"===i?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",r,!1):t.removeEventListener("mouseenter"===i?"mouseover":"mouseleave"===i?"mouseout":i,r,!1):"detachEvent"in t&&t.detachEvent("on"+i,r):U(t,s),t[le][s]=null}function Y(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,nt(t),this}function X(t){return G(t,"mousewheel",Y),this}function J(t){return V(t,"mousedown touchstart dblclick",Y),G(t,"click",et),this}function $(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Q(t){return $(t),Y(t),this}function tt(t,i){if(!i)return new x(t.clientX,t.clientY);var e=i.getBoundingClientRect(),n=e.width/i.offsetWidth||1,o=e.height/i.offsetHeight||1;return new x(t.clientX/n-e.left-i.clientLeft,t.clientY/o-e.top-i.clientTop)}function it(t){return Pi?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/ce:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}function et(t){_e[t.type]=!0}function nt(t){var i=_e[t.type];return _e[t.type]=!1,i}function ot(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(t){return!1}return e!==t}function st(t,i){var e=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,n=pi&&e-pi;n&&n>100&&n<500||t.target._simulatedClick&&!t._simulated?Q(t):(pi=e,i(t))}function rt(t){return"string"==typeof t?document.getElementById(t):t}function at(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||"auto"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return"auto"===e?null:e}function ht(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function ut(t){var i=t.parentNode;i&&i.removeChild(t)}function lt(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function ct(t){var i=t.parentNode;i.lastChild!==t&&i.appendChild(t)}function _t(t){var i=t.parentNode;i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function dt(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=gt(t);return e.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(e)}function pt(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;n<o;n++)t.classList.add(e[n]);else if(!dt(t,i)){var s=gt(t);ft(t,(s?s+" ":"")+i)}}function mt(t,i){void 0!==t.classList?t.classList.remove(i):ft(t,h((" "+gt(t)+" ").replace(" "+i+" "," ")))}function ft(t,i){void 0===t.className.baseVal?t.className=i:t.className.baseVal=i}function gt(t){return void 0===t.className.baseVal?t.className:t.className.baseVal}function vt(t,i){"opacity"in t.style?t.style.opacity=i:"filter"in t.style&&yt(t,i)}function yt(t,i){var e=!1,n="DXImageTransform.Microsoft.Alpha";try{e=t.filters.item(n)}catch(t){if(1===i)return}i=Math.round(100*i),e?(e.Enabled=100!==i,e.Opacity=i):t.style.filter+=" progid:"+n+"(opacity="+i+")"}function xt(t){for(var i=document.documentElement.style,e=0;e<t.length;e++)if(t[e]in i)return t[e];return!1}function wt(t,i,e){var n=i||new x(0,0);t.style[pe]=(Oi?"translate("+n.x+"px,"+n.y+"px)":"translate3d("+n.x+"px,"+n.y+"px,0)")+(e?" scale("+e+")":"")}function Lt(t,i){t._leaflet_pos=i,Ni?wt(t,i):(t.style.left=i.x+"px",t.style.top=i.y+"px")}function Pt(t){return t._leaflet_pos||new x(0,0)}function bt(){V(window,"dragstart",$)}function Tt(){q(window,"dragstart",$)}function zt(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Mt(),ve=t,ye=t.style.outline,t.style.outline="none",V(window,"keydown",Mt))}function Mt(){ve&&(ve.style.outline=ye,ve=void 0,ye=void 0,q(window,"keydown",Mt))}function Ct(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=kt(t,e),t=St(t,e)}function Zt(t,i,e){return Math.sqrt(Rt(t,i,e,!0))}function St(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(e);n[0]=n[e-1]=1,Et(t,n,i,0,e-1);var o,s=[];for(o=0;o<e;o++)n[o]&&s.push(t[o]);return s}function Et(t,i,e,n,o){var s,r,a,h=0;for(r=n+1;r<=o-1;r++)(a=Rt(t[r],t[n],t[o],!0))>h&&(s=r,h=a);h>e&&(i[s]=1,Et(t,i,e,n,s),Et(t,i,e,s,o))}function kt(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;n<s;n++)Ot(t[n],t[o])>i&&(e.push(t[n]),o=n);return o<s-1&&e.push(t[s-1]),e}function It(t,i,e,n,o){var s,r,a,h=n?Se:Bt(t,e),u=Bt(i,e);for(Se=u;;){if(!(h|u))return[t,i];if(h&u)return!1;a=Bt(r=At(t,i,s=h||u,e,o),e),s===h?(t=r,h=a):(i=r,u=a)}}function At(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,u=n.min,l=n.max;return 8&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):4&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):2&e?(s=l.x,r=t.y+h*(l.x-t.x)/a):1&e&&(s=u.x,r=t.y+h*(u.x-t.x)/a),new x(s,r,o)}function Bt(t,i){var e=0;return t.x<i.min.x?e|=1:t.x>i.max.x&&(e|=2),t.y<i.min.y?e|=4:t.y>i.max.y&&(e|=8),e}function Ot(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Rt(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 u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function Dt(t){return!ei(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function Nt(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),Dt(t)}function jt(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o<u;o++)t[o]._code=Bt(t[o],i);for(r=0;r<4;r++){for(l=_[r],n=[],o=0,s=(u=t.length)-1;o<u;s=o++)a=t[o],h=t[s],a._code&l?h._code&l||((c=At(h,a,l,i,e))._code=Bt(c,i),n.push(c)):(h._code&l&&((c=At(h,a,l,i,e))._code=Bt(c,i),n.push(c)),n.push(a));t=n}return t}function Wt(t,i){var e,n,o,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],u=i&&i.pointToLayer,l=i&&i.coordsToLatLng||Ht;if(!a&&!r)return null;switch(r.type){case"Point":return e=l(a),u?u(t,e):new Xe(e);case"MultiPoint":for(o=0,s=a.length;o<s;o++)e=l(a[o]),h.push(u?u(t,e):new Xe(e));return new qe(h);case"LineString":case"MultiLineString":return n=Ft(a,"LineString"===r.type?0:1,l),new tn(n,i);case"Polygon":case"MultiPolygon":return n=Ft(a,"Polygon"===r.type?1:2,l),new en(n,i);case"GeometryCollection":for(o=0,s=r.geometries.length;o<s;o++){var c=Wt({geometry:r.geometries[o],type:"Feature",properties:t.properties},i);c&&h.push(c)}return new qe(h);default:throw new Error("Invalid GeoJSON object.")}}function Ht(t){return new M(t[1],t[0],t[2])}function Ft(t,i,e){for(var n,o=[],s=0,r=t.length;s<r;s++)n=i?Ft(t[s],i-1,e):(e||Ht)(t[s]),o.push(n);return o}function Ut(t,i){return i="number"==typeof i?i:6,void 0!==t.alt?[a(t.lng,i),a(t.lat,i),a(t.alt,i)]:[a(t.lng,i),a(t.lat,i)]}function Vt(t,i,e,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(i?Vt(t[s],i-1,e,n):Ut(t[s],n));return!i&&e&&o.push(o[0]),o}function qt(t,e){return t.feature?i({},t.feature,{geometry:e}):Gt(e)}function Gt(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}function Kt(t,i){return new nn(t,i)}function Yt(t,i){return new dn(t,i)}function Xt(t){return Yi?new fn(t):null}function Jt(t){return Xi||Ji?new xn(t):null}var $t=Object.freeze;Object.freeze=function(t){return t};var Qt=Object.create||function(){function t(){}return function(i){return t.prototype=i,new t}}(),ti=0,ii=/\{ *([\w_-]+) *\}/g,ei=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},ni="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",oi=0,si=window.requestAnimationFrame||p("RequestAnimationFrame")||m,ri=window.cancelAnimationFrame||p("CancelAnimationFrame")||p("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)},ai=(Object.freeze||Object)({freeze:$t,extend:i,create:Qt,bind:e,lastId:ti,stamp:n,throttle:o,wrapNum:s,falseFn:r,formatNum:a,trim:h,splitWords:u,setOptions:l,getParamString:c,template:_,isArray:ei,indexOf:d,emptyImageUrl:ni,requestFn:si,cancelFn:ri,requestAnimFrame:f,cancelAnimFrame:g});v.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},n=e.__super__=this.prototype,o=Qt(n);o.constructor=e,e.prototype=o;for(var s in this)this.hasOwnProperty(s)&&"prototype"!==s&&"__super__"!==s&&(e[s]=this[s]);return t.statics&&(i(e,t.statics),delete t.statics),t.includes&&(y(t.includes),i.apply(null,[o].concat(t.includes)),delete t.includes),o.options&&(t.options=i(Qt(o.options),t.options)),i(o,t),o._initHooks=[],o.callInitHooks=function(){if(!this._initHooksCalled){n.c
vendor: 6,244 bytes, line 5
5allInitHooks&&n.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=o._initHooks.length;t<i;t++)o._initHooks[t].call(this)}},e},v.include=function(t){return i(this.prototype,t),this},v.mergeOptions=function(t){return i(this.prototype.options,t),this},v.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e="function"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var hi={on:function(t,i,e){if("object"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if("object"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var a=n[o];if(a.ctx===e&&a.fn===i)return a.fn=r,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=r;delete this._events[t]}},fire:function(t,e,n){if(!this.listens(t,n))return this;var o=i({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var h=s[r];h.fn.call(h.ctx||this,o)}this._firingCount--}}return n&&this._propagateEvent(o),this},listens:function(t,i){var e=this._events&&this._events[t];if(e&&e.length)return!0;if(i)for(var n in this._eventParents)if(this._eventParents[n].listens(t,i))return!0;return!1},once:function(t,i,n){if("object"==typeof t){for(var o in t)this.once(o,t[o],i);return this}var s=e(function(){this.off(t,i,n).off(t,s,n)},this);return this.on(t,i,n).on(t,s,n)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[n(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[n(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,i({layer:t.target,propagatedFrom:t.target},t),!0)}};hi.addEventListener=hi.on,hi.removeEventListener=hi.clearAllEventListeners=hi.off,hi.addOneTimeEventListener=hi.once,hi.fireEvent=hi.fire,hi.hasEventListeners=hi.listens;var ui=v.extend(hi),li=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=li(this.x),this.y=li(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+a(this.x)+", "+a(this.y)+")"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t="number"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(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=b(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},isValid:function(){return!(!this.min||!this.max)}},T.prototype={extend:function(t){var i,e,n=this._southWest,o=this._northEast;if(t instanceof M)i=t,e=t;else{if(!(t instanceof T))return t?this.extend(C(t)||z(t)):this;if(i=t._southWest,e=t._northEast,!i||!e)return this}return n||o?(n.lat=Math.min(i.lat,n.lat),n.lng=Math.min(i.lng,n.lng),o.lat=Math.max(e.lat,o.lat),o.lng=Math.max(e.lng,o.lng)):(this._southWest=new M(i.lat,i.lng),this._northEast=new M(e.lat,e.lng)),this},pad:function(t){var i=this._southWest,e=this._northEast,n=Math.abs(i.lat-e.lat)*t,o=Math.abs(i.lng-e.lng)*t;return new T(new M(i.lat-n,i.lng-o),new M(e.lat+n,e.lng+o))},getCenter:function(){return new M((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new M(this.getNorth(),this.getWest())},getSouthEast:function(){return new M(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat}
vendor: 2,436 bytes, line 5
5,getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof M||"lat"in t?C(t):z(t);var i,e,n=this._southWest,o=this._northEast;return t instanceof T?(i=t.getSouthWest(),e=t.getNorthEast()):i=e=t,i.lat>=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(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=z(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},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,i){return!!t&&(t=z(t),this._southWest.equals(t.getSouthWest(),i)&&this._northEast.equals(t.getNorthEast(),i))},isValid:function(){return!(!this._southWest||!this._northEast)}},M.prototype={equals:function(t,i){return!!t&&(t=C(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===i?1e-9:i))},toString:function(t){return"LatLng("+a(this.lat,t)+", "+a(this.lng,t)+")"},distanceTo:function(t){return _i.distance(this,C(t))},wrap:function(){return _i.wrapLatLng(this)},toBounds:function(t){var i=180*t/40075017,e=i/Math.cos(Math.PI/180*this.lat);return z([this.lat-i,this.lng-e],[this.lat+i,this.lng+e])},clone:function(){return new M(this.lat,this.lng,this.alt)}};var ci={latLngToPoint:function(t,i){var e=this.projection.project(t),n=this.scale(i);return this.transformation._transform(e,n)},pointToLatLng:function(t,i){var e=this.scale(i),n=this.transformation.untransform(t,e);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var i=this.projection.bounds,e=this.scale(t);return new P(this.transformation.transform(i.min,e),this.transformation.transform(i.max,e))},infinite:!1,wrapLatLng:function(t){var i=this.wrapLng?s(t.lng,this.wrapLng,!0):t.lng;return new M(this.wrapLat?s(t.lat,this.wrapLat,!0):t.lat,i,t.alt)},wrapLatLngBounds:function(t){var i=t.getCenter(),e=this.wrapLatLng(i),n=i.lat-e.lat,o=i.lng-e.lng;if(0===n&&0===o)return t;
vendor: 51,693 bytes, line 5
5var s=t.getSouthWest(),r=t.getNorthEast();return new T(new M(s.lat-n,s.lng-o),new M(r.lat-n,r.lng-o))}},_i=i({},ci,{wrapLng:[-180,180],R:6371e3,distance:function(t,i){var e=Math.PI/180,n=t.lat*e,o=i.lat*e,s=Math.sin((i.lat-t.lat)*e/2),r=Math.sin((i.lng-t.lng)*e/2),a=s*s+Math.cos(n)*Math.cos(o)*r*r,h=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*h}}),di={R:6378137,MAX_LATITUDE:85.0511287798,project:function(t){var i=Math.PI/180,e=this.MAX_LATITUDE,n=Math.max(Math.min(e,t.lat),-e),o=Math.sin(n*i);return new x(this.R*t.lng*i,this.R*Math.log((1+o)/(1-o))/2)},unproject:function(t){var i=180/Math.PI;return new M((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*i,t.x*i/this.R)},bounds:function(){var t=6378137*Math.PI;return new P([-t,-t],[t,t])}()};Z.prototype={transform:function(t,i){return this._transform(t.clone(),i)},_transform:function(t,i){return i=i||1,t.x=i*(this._a*t.x+this._b),t.y=i*(this._c*t.y+this._d),t},untransform:function(t,i){return i=i||1,new x((t.x/i-this._b)/this._a,(t.y/i-this._d)/this._c)}};var pi,mi,fi,gi,vi=i({},_i,{code:"EPSG:3857",projection:di,transformation:function(){var t=.5/(Math.PI*di.R);return S(t,.5,-t,.5)}()}),yi=i({},vi,{code:"EPSG:900913"}),xi=document.documentElement.style,wi="ActiveXObject"in window,Li=wi&&!document.addEventListener,Pi="msLaunchUri"in navigator&&!("documentMode"in document),bi=I("webkit"),Ti=I("android"),zi=I("android 2")||I("android 3"),Mi=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),Ci=Ti&&I("Google")&&Mi<537&&!("AudioNode"in window),Zi=!!window.opera,Si=I("chrome"),Ei=I("gecko")&&!bi&&!Zi&&!wi,ki=!Si&&I("safari"),Ii=I("phantom"),Ai="OTransition"in xi,Bi=0===navigator.platform.indexOf("Win"),Oi=wi&&"transition"in xi,Ri="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!zi,Di="MozPerspective"in xi,Ni=!window.L_DISABLE_3D&&(Oi||Ri||Di)&&!Ai&&!Ii,ji="undefined"!=typeof orientation||I("mobile"),Wi=ji&&bi,Hi=ji&&Ri,Fi=!window.PointerEvent&&window.MSPointerEvent,Ui=!(!window.PointerEvent&&!Fi),Vi=!window.L_NO_TOUCH&&(Ui||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),qi=ji&&Zi,Gi=ji&&Ei,Ki=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Yi=!!document.createElement("canvas").getContext,Xi=!(!document.createElementNS||!E("svg").createSVGRect),Ji=!Xi&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(t){return!1}}(),$i=(Object.freeze||Object)({ie:wi,ielt9:Li,edge:Pi,webkit:bi,android:Ti,android23:zi,androidStock:Ci,opera:Zi,chrome:Si,gecko:Ei,safari:ki,phantom:Ii,opera12:Ai,win:Bi,ie3d:Oi,webkit3d:Ri,gecko3d:Di,any3d:Ni,mobile:ji,mobileWebkit:Wi,mobileWebkit3d:Hi,msPointer:Fi,pointer:Ui,touch:Vi,mobileOpera:qi,mobileGecko:Gi,retina:Ki,canvas:Yi,svg:Xi,vml:Ji}),Qi=Fi?"MSPointerDown":"pointerdown",te=Fi?"MSPointerMove":"pointermove",ie=Fi?"MSPointerUp":"pointerup",ee=Fi?"MSPointerCancel":"pointercancel",ne=["INPUT","SELECT","OPTION"],oe={},se=!1,re=0,ae=Fi?"MSPointerDown":Ui?"pointerdown":"touchstart",he=Fi?"MSPointerUp":Ui?"pointerup":"touchend",ue="_leaflet_",le="_leaflet_events",ce=Bi&&Si?2*window.devicePixelRatio:Ei?window.devicePixelRatio:1,_e={},de=(Object.freeze||Object)({on:V,off:q,stopPropagation:Y,disableScrollPropagation:X,disableClickPropagation:J,preventDefault:$,stop:Q,getMousePosition:tt,getWheelDelta:it,fakeStop:et,skipped:nt,isExternalTarget:ot,addListener:V,removeListener:q}),pe=xt(["transform","WebkitTransform","OTransform","MozTransform","msTransform"]),me=xt(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),fe="webkitTransition"===me||"OTransition"===me?me+"End":"transitionend";if("onselectstart"in document)mi=function(){V(window,"selectstart",$)},fi=function(){q(window,"selectstart",$)};else{var ge=xt(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);mi=function(){if(ge){var t=document.documentElement.style;gi=t[ge],t[ge]="none"}},fi=function(){ge&&(document.documentElement.style[ge]=gi,gi=void 0)}}var ve,ye,xe=(Object.freeze||Object)({TRANSFORM:pe,TRANSITION:me,TRANSITION_END:fe,get:rt,getStyle:at,create:ht,remove:ut,empty:lt,toFront:ct,toBack:_t,hasClass:dt,addClass:pt,removeClass:mt,setClass:ft,getClass:gt,setOpacity:vt,testProp:xt,setTransform:wt,setPosition:Lt,getPosition:Pt,disableTextSelection:mi,enableTextSelection:fi,disableImageDrag:bt,enableImageDrag:Tt,preventOutline:zt,restoreOutline:Mt}),we=ui.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=Pt(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;i<e?this._runFrame(this._easeOut(i/e),t):(this._runFrame(1),this._complete())},_runFrame:function(t,i){var e=this._startPos.add(this._offset.multiplyBy(t));i&&e._round(),Lt(this._el,e),this.fire("step")},_complete:function(){g(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),Le=ui.extend({options:{crs:vi,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,i){i=l(this,i),this._initContainer(t),this._initLayout(),this._onResize=e(this._onResize,this),this._initEvents(),i.maxBounds&&this.setMaxBounds(i.maxBounds),void 0!==i.zoom&&(this._zoom=this._limitZoom(i.zoom)),i.center&&void 0!==i.zoom&&this.setView(C(i.center),i.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this.callInitHooks(),this._zoomAnimated=me&&Ni&&!qi&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),V(this._proxy,fe,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,n){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(C(t),e,this.options.maxBounds),n=n||{},this._stop(),this._loaded&&!n.reset&&!0!==n&&(void 0!==n.animate&&(n.zoom=i({animate:n.animate},n.zoom),n.pan=i({animate:n.animate,duration:n.duration},n.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,i){return this._loaded?this.setView(this.getCenter(),t,{zoom:i}):(this._zoom=t,this)},zoomIn:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom+t,i)},zoomOut:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom-t,i)},setZoomAround:function(t,i,e){var n=this.getZoomScale(i),o=this.getSize().divideBy(2),s=(t instanceof x?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),r=this.containerPointToLatLng(o.add(s));return this.setView(r,i,{zoom:e})},_getBoundsCenterZoom:function(t,i){i=i||{},t=t.getBounds?t.getBounds():z(t);var e=w(i.paddingTopLeft||i.padding||[0,0]),n=w(i.paddingBottomRight||i.padding||[0,0]),o=this.getBoundsZoom(t,!1,e.add(n));if((o="number"==typeof i.maxZoom?Math.min(i.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};var s=n.subtract(e).divideBy(2),r=this.project(t.getSouthWest(),o),a=this.project(t.getNorthEast(),o);return{center:this.unproject(r.add(a).divideBy(2).add(s),o),zoom:o}},fitBounds:function(t,i){if(!(t=z(t)).isValid())throw new Error("Bounds are not valid.");var e=this._getBoundsCenterZoom(t,i);return this.setView(e.center,e.zoom,i)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,i){return this.setView(t,this._zoom,{pan:i})},panBy:function(t,i){if(t=w(t).round(),i=i||{},!t.x&&!t.y)return this.fire("moveend");if(!0!==i.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new we,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),i.noMoveStart||this.fire("movestart"),!1!==i.animate){pt(this._mapPane,"leaflet-pan-anim");var e=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,e,i.duration||.25,i.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(t,i,e){function n(t){var i=(g*g-m*m+(t?-1:1)*x*x*v*v)/(2*(t?g:m)*x*v),e=Math.sqrt(i*i+1)-i;return e<1e-9?-18:Math.log(e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function s(t){return(Math.exp(t)+Math.exp(-t))/2}function r(t){return o(t)/s(t)}function a(t){return m*(s(w)/s(w+y*t))}function h(t){return m*(s(w)*r(w+y*t)-o(w))/x}function u(t){return 1-Math.pow(1-t,1.5)}function l(){var e=(Date.now()-L)/b,n=u(e)*P;e<=1?(this._flyToFrame=f(l,this),this._move(this.unproject(c.add(_.subtract(c).multiplyBy(h(n)/v)),p),this.getScaleZoom(m/a(n),p),{flyTo:!0})):this._move(t,i)._moveEnd(!0)}if(!1===(e=e||{}).animate||!Ni)return this.setView(t,i,e);this._stop();var c=this.project(this.getCenter()),_=this.project(t),d=this.getSize(),p=this._zoom;t=C(t),i=void 0===i?p:i;var m=Math.max(d.x,d.y),g=m*this.getZoomScale(p,i),v=_.distanceTo(c)||1,y=1.42,x=y*y,w=n(0),L=Date.now(),P=(n(1)-w)/y,b=e.duration?1e3*e.duration:1e3*P*.8;return this._moveStart(!0,e.noMoveStart),l.call(this),this},flyToBounds:function(t,i){var e=this._getBoundsCenterZoom(t,i);return this.flyTo(e.center,e.zoom,i)},setMaxBounds:function(t){return(t=z(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var i=this.options.minZoom;return this.options.minZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var i=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?"permission denied":2===i?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+e+"."})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ut(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this._loaded&&this.fire("unload");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)ut(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=ht("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=Ni?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return tt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=rt(t);if(!i)throw new Error("Map container not found.");if(i._leaflet_id)throw new Error("Map container is already initialized.");V(i,"scroll",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Ni,pt(t,"leaflet-container"+(Vi?" leaflet-touch":"")+(Ki?" leaflet-retina":"")+(Li?" leaflet-oldie":"")+(ki?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=at(t,"position");"absolute"!==i&&"relative"!==i&&"fixed"!==i&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Lt(this._mapPane,new x(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(pt(t.markerPane,"leaflet-zoom-hide"),pt(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i){Lt(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire("viewreset"),e&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Lt(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[n(this._container)]=this;var i=t?q:V;i(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),Ni&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,o=[],s="mouseout"===i||"mouseover"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&("click"===i||"preclick"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!ot(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!ot(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!nt(t)){var i=t.type;"mousedown"!==i&&"keypress"!==i||zt(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,n){if("click"===t.type){var o=i({},t);o.type="preclick",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];"contextmenu"===e&&s.listens(e,!0)&&$(t);var r={originalEvent:t};if("keypress"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h<n.length;h++)if(n[h].fire(e,r,!0),r.originalEvent._stopped||!1===n[h].options.bubblingMouseEvents&&-1!==d(this._mouseEvents,e))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,i=this._handlers.length;t<i;t++)this._handlers[t].disable()},whenReady:function(t,i){return this._loaded?t.call(i||this,{target:this}):this.on("load",t,i),this},_getMapPanePos:function(){return Pt(this._mapPane)||new x(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,i){return(t&&void 0!==i?this._getNewPixelOrigin(t,i):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,i){var e=this.getSize()._divideBy(2);return this.project(t,i)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return this.project(t,i)._subtract(n)},_latLngBoundsToNewLayerBounds:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return b([this.project(t.getSouthWest(),i)._subtract(n),this.project(t.getNorthWest(),i)._subtract(n),this.project(t.getSouthEast(),i)._subtract(n),this.project(t.getNorthEast(),i)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,i,e){if(!e)return t;var n=this.project(t,i),o=this.getSize().divideBy(2),s=new P(n.subtract(o),n.add(o)),r=this._getBoundsOffset(s,e,i);return r.round().equals([0,0])?t:this.unproject(n.add(r),i)},_limitOffset:function(t,i){if(!i)return t;var e=this.getPixelBounds(),n=new P(e.min.add(t),e.max.add(t));return t.add(this._getBoundsOffset(n,i))},_getBoundsOffset:function(t,i,e){var n=b(this.project(i.getNorthEast(),e),this.project(i.getSouthWest(),e)),o=n.min.subtract(t.min),s=n.max.subtract(t.max);return new x(this._rebound(o.x,-s.x),this._rebound(o.y,-s.y))},_rebound:function(t,i){return t+i>0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=Ni?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){mt(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=ht("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var i=pe,e=this._proxy.style[i];wt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var t=this.getCenter(),i=this.getZoom();wt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ut(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.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))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,pt(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&mt(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Pe=v.extend({options:{position:"topright"},initialize:function(t){l(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 pt(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(ut(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),be=function(t){return new Pe(t)};Le.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+" "+e+o;i[t+o]=ht("div",s,n)}var i=this._controlCorners={},e="leaflet-",n=this._controlContainer=ht("div",e+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)ut(this._controlCorners[t]);ut(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Te=Pe.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e<n?-1:n<e?1:0}},initialize:function(t,i,e){l(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in i)this._addLayer(i[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on("zoomend",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return Pe.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(t,i){return this._addLayer(t,i),this._map?this._update():this},addOverlay:function(t,i){return this._addLayer(t,i,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var i=this._getLayer(n(t));return i&&this._layers.splice(this._layers.indexOf(i),1),this._map?this._update():this},expand:function(){pt(this._container,"leaflet-control-layers-expanded"),this._form.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._form.clientHeight?(pt(this._form,"leaflet-control-layers-scrollbar"),this._form.style.height=t+"px"):mt(this._form,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return mt(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",i=this._container=ht("div",t),e=this.options.collapsed;i.setAttribute("aria-haspopup",!0),J(i),X(i);var n=this._form=ht("form",t+"-list");e&&(this._map.on("click",this.collapse,this),Ti||V(i,{mouseenter:this.expand,mouseleave:this.collapse},this));var o=this._layersLink=ht("a",t+"-toggle",i);o.href="#",o.title="Layers",Vi?(V(o,"click",Q),V(o,"click",this.expand,this)):V(o,"focus",this.expand,this),e||this.expand(),this._baseLayersList=ht("div",t+"-base",n),this._separator=ht("div",t+"-separator",n),this._overlaysList=ht("div",t+"-overlays",n),i.appendChild(n)},_getLayer:function(t){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&n(this._layers[i].layer)===t)return this._layers[i]},_addLayer:function(t,i,n){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:i,overlay:n}),this.options.sortLayers&&this._layers.sort(e(function(t,i){return this.options.sortFunction(t.layer,i.layer,t.name,i.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;lt(this._baseLayersList),lt(this._overlaysList),this._layerControlInputs=[];var t,i,e,n,o=0;for(e=0;e<this._layers.length;e++)n=this._layers[e],this._addItem(n),i=i||n.overlay,t=t||!n.overlay,o+=n.overlay?0:1;return this.options.hideSingleBase&&(t=t&&o>1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(i?' checked="checked"':"")+"/>",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=o):i=this._createRadioElement("leaflet-base-layers",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),V(i,"click",this._onInputClick,this);var s=document.createElement("span");s.innerHTML=" "+t.name;var r=document.createElement("div");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(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;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])&&this._map.removeLayer(o[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,i,e=this._layerControlInputs,n=this._map.getZoom(),o=e.length-1;o>=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&n<i.options.minZoom||void 0!==i.options.maxZoom&&n>i.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ze=Pe.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"−",zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=ht("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._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=ht("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),J(s),V(s,"click",Q),V(s,"click",o,this),V(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";mt(this._zoomInButton,i),mt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&pt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&pt(this._zoomInButton,i)}});Le.mergeOptions({zoomControl:!0}),Le.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new ze,this.addControl(this.zoomControl))});var Me=Pe.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=ht("div","leaflet-control-scale"),e=this.options;return this._addScales(e,"leaflet-control-scale-line",i),t.on(e.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=ht("div",i,e)),t.imperial&&(this._iScale=ht("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;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+" mi",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ce=Pe.extend({options:{position:"bottomright",prefix:'<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=ht("div","leaflet-control-attribution"),J(this._container);for(var i in 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):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):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(" | ")}}});Le.mergeOptions({attributionControl:!0}),Le.addInitHook(function(){this.options.attributionControl&&(new Ce).addTo(this)});Pe.Layers=Te,Pe.Zoom=ze,Pe.Scale=Me,Pe.Attribution=Ce,be.layers=function(t,i,e){return new Te(t,i,e)},be.zoom=function(t){return new ze(t)},be.scale=function(t){return new Me(t)},be.attribution=function(t){return new Ce(t)};var Ze=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ze.addTo=function(t,i){return t.addHandler(i,this),this};var Se,Ee={Events:hi},ke=Vi?"touchstart mousedown":"mousedown",Ie={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},Ae={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},Be=ui.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(V(this._dragStartTarget,ke,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Be._dragging===this&&this.finishDrag(),q(this._dragStartTarget,ke,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!dt(this._element,"leaflet-zoom-anim")&&!(Be._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Be._dragging=this,this._preventOutline&&zt(this._element),bt(),mi(),this._moving)))){this.fire("down");var i=t.touches?t.touches[0]:t;this._startPoint=new x(i.clientX,i.clientY),V(document,Ae[t.type],this._onMove,this),V(document,Ie[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY).subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)<this.options.clickTolerance||($(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=Pt(this._element).subtract(e),pt(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),pt(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(e),this._moving=!0,g(this._animRequest),this._lastEvent=t,this._animRequest=f(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),Lt(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){mt(document.body,"leaflet-dragging"),this._lastTarget&&(mt(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null);for(var t in Ae)q(document,Ae[t],this._onMove,this),q(document,Ie[t],this._onUp,this);Tt(),fi(),this._moved&&this._moving&&(g(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,Be._dragging=!1}}),Oe=(Object.freeze||Object)({simplify:Ct,pointToSegmentDistance:Zt,closestPointOnSegment:function(t,i,e){return Rt(t,i,e)},clipSegment:It,_getEdgeIntersection:At,_getBitCode:Bt,_sqClosestPointOnSegment:Rt,isFlat:Dt,_flat:Nt}),Re=(Object.freeze||Object)({clipPolygon:jt}),De={project:function(t){return new x(t.lng,t.lat)},unproject:function(t){return new M(t.y,t.x)},bounds:new P([-180,-90],[180,90])},Ne={R:6378137,R_MINOR:6356752.314245179,bounds:new P([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new x(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,u=.1;h<15&&Math.abs(u)>1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},je=(Object.freeze||Object)({LonLat:De,Mercator:Ne,SphericalMercator:di}),We=i({},_i,{code:"EPSG:3395",projection:Ne,transformation:function(){var t=.5/(Math.PI*Ne.R);return S(t,.5,-t,.5)}()}),He=i({},_i,{code:"EPSG:4326",projection:De,transformation:S(1/180,1,-1/180,.5)}),Fe=i({},ci,{projection:De,transformation:S(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});ci.Earth=_i,ci.EPSG3395=We,ci.EPSG3857=vi,ci.EPSG900913=yi,ci.EPSG4326=He,ci.Simple=Fe;var Ue=ui.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once("remove",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),i.fire("layeradd",{layer:this})}}});Le.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?ei(t)?t:[t]:[]).length;i<e;i++)this.addLayer(t[i])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[n(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var i=n(t);this._zoomBoundLayers[i]&&(delete this._zoomBoundLayers[i],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,i=-1/0,e=this._getZoomSpan();for(var n in this._zoomBoundLayers){var o=this._zoomBoundLayers[n].options;t=void 0===o.minZoom?t:Math.min(t,o.minZoom),i=void 0===o.maxZoom?i:Math.max(i,o.maxZoom)}this._layersMaxZoom=i===-1/0?void 0:i,this._layersMinZoom=t===1/0?void 0:t,e!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Ve=Ue.extend({initialize:function(t,i){l(this,i),this._layers={};var e,n;if(t)for(e=0,n=t.length;e<n;e++)this.addLayer(t[e])},addLayer:function(t){var i=this.getLayerId(t);return this._layers[i]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var i=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[i]&&this._map.removeLayer(this._layers[i]),delete this._layers[i],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var i,e,n=Array.prototype.slice.call(arguments,1);for(i in this._layers)(e=this._layers[i])[t]&&e[t].apply(e,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return n(t)}}),qe=Ve.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Ve.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Ve.prototype.removeLayer.call(this,t),this.fire("layerremove",{layer:t})):this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new T;for(var i in this._layers){var e=this._layers[i];t.extend(e.getBounds?e.getBounds():e.getLatLng())}return t}}),Ge=v.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){l(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,i){var e=this._getIconUrl(t);if(!e){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n=this._createImg(e,i&&"IMG"===i.tagName?i:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,i){var e=this.options,n=e[i+"Size"];"number"==typeof n&&(n=[n,n]);var o=w(n),s=w("shadow"===i&&e.shadowAnchor||e.iconAnchor||o&&o.divideBy(2,!0));t.className="leaflet-marker-"+i+" "+(e.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),o&&(t.style.width=o.x+"px",t.style.height=o.y+"px")},_createImg:function(t,i){return i=i||document.createElement("img"),i.src=t,i},_getIconUrl:function(t){return Ki&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}}),Ke=Ge.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Ke.imagePath||(Ke.imagePath=this._detectIconPath()),(this.options.imagePath||Ke.imagePath)+Ge.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=ht("div","leaflet-default-icon-path",document.body),i=at(t,"background-image")||at(t,"backgroundImage");return document.body.removeChild(t),i=null===i||0!==i.indexOf("url")?"":i.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Ye=Ze.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new Be(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),pt(t,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&mt(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var i=this._marker,e=i._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=L.DomUtil.getPosition(i._icon),r=e.getPixelBounds(),a=e.getPixelOrigin(),h=b(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));if(!h.contains(s)){var u=w((Math.max(h.max.x,s.x)-h.max.x)/(r.max.x-h.max.x)-(Math.min(h.min.x,s.x)-h.min.x)/(r.min.x-h.min.x),(Math.max(h.max.y,s.y)-h.max.y)/(r.max.y-h.max.y)-(Math.min(h.min.y,s.y)-h.min.y)/(r.min.y-h.min.y)).multiplyBy(n);e.panBy(u,{animate:!1}),this._draggable._newPos._add(u),this._draggable._startPos._add(u),L.DomUtil.setPosition(i._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=f(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&(g(this._panRequest),this._panRequest=f(this._adjustPan.bind(this,t)))},_onDrag:function(t){var i=this._marker,e=i._shadow,n=Pt(i._icon),o=i._map.layerPointToLatLng(n);e&&Lt(e,n),i._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,i.fire("move",t).fire("drag",t)},_onDragEnd:function(t){g(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),Xe=Ue.extend({options:{icon:new Ke,interactive:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",bubblingMouseEvents:!1},initialize:function(t,i){l(this,i),this._latlng=C(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var i=this._latlng;return this._latlng=C(t),this.update(),this.fire("move",{oldLatLng:i,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,i="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),e=t.icon.createIcon(this._icon),n=!1;e!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(e.title=t.title),"IMG"===e.tagName&&(e.alt=t.alt||"")),pt(e,i),t.keyboard&&(e.tabIndex="0"),this._icon=e,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var o=t.icon.createShadow(this._shadow),s=!1;o!==this._shadow&&(this._removeShadow(),s=!0),o&&(pt(o,i),o.alt=""),this._shadow=o,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),o&&s&&this.getPane("shadowPane").appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ut(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ut(this._shadow),this._shadow=null},_setPos:function(t){Lt(this._icon,t),this._shadow&&Lt(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(i)},_initInteraction:function(){if(this.options.interactive&&(pt(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Ye)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Ye(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;vt(this._icon,t),this._shadow&&vt(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}}),Je=Ue.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,f
vendor: 6,016 bytes, line 5
5illRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return l(this,t),this._renderer&&this._renderer._updateStyle(this),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),$e=Je.extend({options:{fill:!0,radius:10},initialize:function(t,i){l(this,i),this._latlng=C(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=C(t),this.redraw(),this.fire("move",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var i=t&&t.radius||this._radius;return Je.prototype.setStyle.call(this,t),this.setRadius(i),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,i=this._radiusY||t,e=this._clickTolerance(),n=[t+e,i+e];this._pxBounds=new P(this._point.subtract(n),this._point.add(n))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}}),Qe=$e.extend({initialize:function(t,e,n){if("number"==typeof e&&(e=i({},n,{radius:e})),l(this,e),this._latlng=C(t),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new T(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:Je.prototype.setStyle,_project:function(){var t=this._latlng.lng,i=this._latlng.lat,e=this._map,n=e.options.crs;if(n.distance===_i.distance){var o=Math.PI/180,s=this._mRadius/_i.R/o,r=e.project([i+s,t]),a=e.project([i-s,t]),h=r.add(a).divideBy(2),u=e.unproject(h).lat,l=Math.acos((Math.cos(s*o)-Math.sin(i*o)*Math.sin(u*o))/(Math.cos(i*o)*Math.cos(u*o)))/o;(isNaN(l)||0===l)&&(l=s/Math.cos(Math.PI/180*i)),this._point=h.subtract(e.getPixelOrigin()),this._radius=isNaN(l)?0:h.x-e.project([u,t-l]).x,this._radiusY=h.y-r.y}else{var c=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=e.latLngToLayerPoint(this._latlng),this._radius=this._point.x-e.latLngToLayerPoint(c).x}this._updateBounds()}}),tn=Je.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,i){l(this,i),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var i,e,n=1/0,o=null,s=Rt,r=0,a=this._parts.length;r<a;r++)for(var h=this._parts[r],u=1,l=h.length;u<l;u++){var c=s(t,i=h[u-1],e=h[u],!0);c<n&&(n=c,o=s(t,i,e))}return o&&(o.distance=Math.sqrt(n)),o},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a=this._rings[0],h=a.length;if(!h)return null;for(t=0,i=0;t<h-1;t++)i+=a[t].distanceTo(a[t+1])/2;if(0===i)return this._map.layerPointToLatLng(a[0]);for(t=0,n=0;t<h-1;t++)if(o=a[t],s=a[t+1],e=o.distanceTo(s),(n+=e)>i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return Dt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=Dt(t),n=0,o=t.length;n<o;n++)e?(i[n]=C(t[n]),this._bounds.extend(i[n])):i[n]=this._convertLatLngs(t[n]);return i},_project:function(){var t=new P;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t);var i=this._clickTolerance(),e=new x(i,i);this._bounds.isValid()&&t.isValid()&&(t.min._subtract(e),t.max._add(e),this._pxBounds=t)},_projectLatlngs:function(t,i,e){var n,o,s=t[0]instanceof M,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),e.extend(o[n]);i.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],i,e)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var i,e,n,o,s,r,a,h=this._parts;for(i=0,n=0,o=this._rings.length;i<o;i++)for(e=0,s=(a=this._rings[i]).length;e<s-1;e++)(r=It(a[e],a[e+1],t,e,!0))&&(h[n]=h[n]||[],h[n].push(r[0]),r[1]===a[e+1]&&e!==s-2||(h[n].push(r[1]),n++))}},_simplifyPoints:function(){for(var t=this._parts,i=this.options.smoothFactor,e=0,n=t.length;e<n;e++)t[e]=Ct(t[e],i)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,i){var e,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(e=0,s=this._parts.length;e<s;e++)for(n=0,o=(r=(a=this._parts[e]).length)-1;n<r;o=n++)if((i||0!==n)&&Zt(t,a[o],a[n])<=h)return!0;return!1}});tn._flat=Nt;var en=tn.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length}
vendor: 40,401 bytes, line 5
5,getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a,h,u=this._rings[0],l=u.length;if(!l)return null;for(s=r=a=0,t=0,i=l-1;t<l;i=t++)e=u[t],n=u[i],o=e.y*n.x-n.y*e.x,r+=(e.x+n.x)*o,a+=(e.y+n.y)*o,s+=3*o;return h=0===s?u[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var i=tn.prototype._convertLatLngs.call(this,t),e=i.length;return e>=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){tn.prototype._setLatLngs.call(this,t),Dt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Dt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;o<s;o++)(n=jt(this._rings[o],t,!0)).length&&this._parts.push(n)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var i,e,n,o,s,r,a,h,u=!1;if(!this._pxBounds.contains(t))return!1;for(o=0,a=this._parts.length;o<a;o++)for(s=0,r=(h=(i=this._parts[o]).length)-1;s<h;r=s++)e=i[s],n=i[r],e.y>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||tn.prototype._containsPoint.call(this,t,!0)}}),nn=qe.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=ei(t)?t:t.features;if(o){for(i=0,e=o.length;i<e;i++)((n=o[i]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=Wt(t,s);return r?(r.feature=Gt(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=i({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer(function(i){this._setLayerStyle(i,t)},this)},_setLayerStyle:function(t,i){"function"==typeof i&&(i=i(t.feature)),t.setStyle&&t.setStyle(i)}}),on={toGeoJSON:function(t){return qt(this,{type:"Point",coordinates:Ut(this.getLatLng(),t)})}};Xe.include(on),Qe.include(on),$e.include(on),tn.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=Vt(this._latlngs,i?1:0,!1,t);return qt(this,{type:(i?"Multi":"")+"LineString",coordinates:e})}}),en.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=i&&!Dt(this._latlngs[0]),n=Vt(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),qt(this,{type:(e?"Multi":"")+"Polygon",coordinates:n})}}),Ve.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(e){i.push(e.toGeoJSON(t).geometry.coordinates)}),qt(this,{type:"MultiPoint",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===i)return this.toMultiPoint(t);var e="GeometryCollection"===i,n=[];return this.eachLayer(function(i){if(i.toGeoJSON){var o=i.toGeoJSON(t);if(e)n.push(o.geometry);else{var s=Gt(o);"FeatureCollection"===s.type?n.push.apply(n,s.features):n.push(s)}}}),e?qt(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}});var sn=Kt,rn=Ue.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,e){this._url=t,this._bounds=z(i),l(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(pt(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ut(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&ct(this._image),this},bringToBack:function(){return this._map&&_t(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=z(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,i=this._image=t?this._url:ht("img");pt(i,"leaflet-image-layer"),this._zoomAnimated&&pt(i,"leaflet-zoom-animated"),this.options.className&&pt(i,this.options.className),i.onselectstart=r,i.onmousemove=r,i.onload=e(this.fire,this,"load"),i.onerror=e(this._overlayOnError,this,"error"),this.options.crossOrigin&&(i.crossOrigin=""),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;wt(this._image,e,i)},_reset:function(){var t=this._image,i=new P(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();Lt(t,i.min),t.style.width=e.x+"px",t.style.height=e.y+"px"},_updateOpacity:function(){vt(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),an=rn.extend({options:{autoplay:!0,loop:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,i=this._image=t?this._url:ht("video");if(pt(i,"leaflet-image-layer"),this._zoomAnimated&&pt(i,"leaflet-zoom-animated"),i.onselectstart=r,i.onmousemove=r,i.onloadeddata=e(this.fire,this,"load"),t){for(var n=i.getElementsByTagName("source"),o=[],s=0;s<n.length;s++)o.push(n[s].src);this._url=n.length>0?o:[i.src]}else{ei(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;a<this._url.length;a++){var h=ht("source");h.src=this._url[a],i.appendChild(h)}}}}),hn=Ue.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,i){l(this,t),this._source=i},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&vt(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&vt(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(vt(this._container,0),this._removeTimeout=setTimeout(e(ut,void 0,this._container),200)):ut(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=C(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&ct(this._container),this},bringToBack:function(){return this._map&&_t(this._container),this},_updateContent:function(){if(this._content){var t=this._contentNode,i="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof i)t.innerHTML=i;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(i)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),i=w(this.options.offset),e=this._getAnchor();this._zoomAnimated?Lt(this._container,t.add(e)):i=i.add(t).add(e);var n=this._containerBottom=-i.y,o=this._containerLeft=-Math.round(this._containerWidth/2)+i.x;this._container.style.bottom=n+"px",this._container.style.left=o+"px"}},_getAnchor:function(){return[0,0]}}),un=hn.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){hn.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Je||this._source.on("preclick",Y))},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Je||this._source.off("preclick",Y))},getEvents:function(){var t=hn.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",i=this._container=ht("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),e=this._wrapper=ht("div",t+"-content-wrapper",i);if(this._contentNode=ht("div",t+"-content",e),J(e),X(this._contentNode),V(e,"contextmenu",Y),this._tipContainer=ht("div",t+"-tip-container",i),this._tip=ht("div",t+"-tip",this._tipContainer),this.options.closeButton){var n=this._closeButton=ht("a",t+"-close-button",i);n.href="#close",n.innerHTML="×",V(n,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,i=t.style;i.width="",i.whiteSpace="nowrap";var e=t.offsetWidth;e=Math.min(e,this.options.maxWidth),e=Math.max(e,this.options.minWidth),i.width=e+1+"px",i.whiteSpace="",i.height="";var n=t.offsetHeight,o=this.options.maxHeight;o&&n>o?(i.height=o+"px",pt(t,"leaflet-popup-scrolled")):mt(t,"leaflet-popup-scrolled"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();Lt(this._container,i.add(e))},_adjustPan:function(){if(!(!this.options.autoPan||this._map._panAnim&&this._map._panAnim._inProgress)){var t=this._map,i=parseInt(at(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(Pt(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.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(),Q(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Le.mergeOptions({closePopupOnClick:!0}),Le.include({openPopup:function(t,i,e){return t instanceof un||(t=new un(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}}),Ue.include({bindPopup:function(t,i){return t instanceof un?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new un(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){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),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&&(Q(t),i instanceof Je?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 ln=hn.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){hn.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){hn.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=hn.prototype.getEvents.call(this);return Vi&&!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=ht("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();"top"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):"bottom"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):"center"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):"right"===s||"auto"===s&&o.x<n.x?(s="right",t=t.add(w(h.x+u.x,u.y-a/2+h.y,!0))):(s="left",t=t.subtract(w(r+u.x-h.x,a/2-u.y-h.y,!0))),mt(e,"leaflet-tooltip-right"),mt(e,"leaflet-tooltip-left"),mt(e,"leaflet-tooltip-top"),mt(e,"leaflet-tooltip-bottom"),pt(e,"leaflet-tooltip-"+s),Lt(e,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&vt(this._container,t)},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(i)},_getAnchor:function(){return w(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});Le.include({openTooltip:function(t,i,e){return t instanceof ln||(t=new ln(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),Ue.include({bindTooltip:function(t,i){return t instanceof ln?(l(t,i),this._tooltip=t,t._source=this):(this._tooltip&&!i||(this._tooltip=new ln(i,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var i=t?"off":"on",e={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),Vi&&(e.click=this._openTooltip)),this[i](e),this._tooltipHandlersAdded=!t}},openTooltip:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._tooltip&&this._map&&(this._tooltip._source=t,this._tooltip.update(),this._map.openTooltip(this._tooltip,i),this._tooltip.options.interactive&&this._tooltip._container&&(pt(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(mt(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var i=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(i,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var i,e,n=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(i=this._map.mouseEventToContainerPoint(t.originalEvent),e=this._map.containerPointToLayerPoint(i),n=this._map.layerPointToLatLng(e)),this._tooltip.setLatLng(n)}});var cn=Ge.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var i=t&&"DIV"===t.tagName?t:document.createElement("div"),e=this.options;if(i.innerHTML=!1!==e.html?e.html:"",e.bgPos){var n=w(e.bgPos);i.style.backgroundPosition=-n.x+"px "+-n.y+"px"}return this._setIconStyles(i,"icon"),i},createShadow:function(){return null}});Ge.Default=Ke;var _n=Ue.extend({options:{tileSize:256,opacity:1,updateWhenIdle:ji,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){l(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ut(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(ct(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(_t(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=o(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof x?t:new x(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var i,e=this.getPane().children,n=-t(-1/0,1/0),o=0,s=e.length;o<s;o++)i=e[o].style.zIndex,e[o]!==this._container&&i&&(n=t(n,+i));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Li){vt(this._container,this.options.opacity);var t=+new Date,i=!1,e=!1;for(var n in this._tiles){var o=this._tiles[n];if(o.current&&o.loaded){var s=Math.min(1,(t-o.loaded)/200);vt(o.el,s),s<1?i=!0:(o.active?e=!0:this._onOpaqueTile(o),o.active=!0)}}e&&!this._noPrune&&this._pruneTiles(),i&&(g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this))}},_onOpaqueTile:r,_initContainer:function(){this._container||(this._container=ht("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,i=this.options.maxZoom;if(void 0!==t){for(var e in this._levels)this._levels[e].el.children.length||e===t?(this._levels[e].el.style.zIndex=i-Math.abs(t-e),this._onUpdateLevel(e)):(ut(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=ht("div","leaflet-tile-container leaflet-zoom-animated",this._container),n.el.style.zIndex=i,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),n.el.offsetWidth,this._onCreateLevel(n)),this._level=n,n}},_onUpdateLevel:r,_onRemoveLevel:r,_onCreateLevel:r,_pruneTiles:function(){if(this._map){var t,i,e=this._map.getZoom();if(e>this.options.maxZoom||e<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(i=this._tiles[t]).retain=i.current;for(t in this._tiles)if((i=this._tiles[t]).current&&!i.active){var n=i.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var i in this._tiles)this._tiles[i].coords.z===t&&this._removeTile(i)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ut(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,i,e,n){var o=Math.floor(t/2),s=Math.floor(i/2),r=e-1,a=new x(+o,+s);a.z=+r;var h=this._tileCoordsToKey(a),u=this._tiles[h];return u&&u.active?(u.retain=!0,!0):(u&&u.loaded&&(u.retain=!0),r>n&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1<n&&this._retainChildren(o,s,e+1,n))}},_resetView:function(t){var i=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),i,i)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var i=this.options;return void 0!==i.minNativeZoom&&t<i.minNativeZoom?i.minNativeZoom:void 0!==i.maxNativeZoom&&i.maxNativeZoom<t?i.maxNativeZoom:t},_setView:function(t,i,e,n){var o=this._clampZoom(Math.round(i));(void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom)&&(o=void 0);var s=this.options.updateWhenZooming&&o!==this._tileZoom;n&&!s||(this._tileZoom=o,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==o&&this._update(t),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(t,i)},_setZoomTransforms:function(t,i){for(var e in this._levels)this._setZoomTransform(this._levels[e],t,i)},_setZoomTransform:function(t,i,e){var n=this._map.getZoomScale(e,t.zoom),o=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i,e)).round();Ni?wt(t.el,o,n):Lt(t.el,o)},_resetGrid:function(){var t=this._map,i=t.options.crs,e=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=i.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,i.wrapLng[0]],n).x/e.x),Math.ceil(t.project([0,i.wrapLng[1]],n).x/e.y)],this._wrapY=i.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([i.wrapLat[0],0],n).y/e.x),Math.ceil(t.project([i.wrapLat[1],0],n).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var i=this._map,e=i._animatingZoom?Math.max(i._animateToZoom,i.getZoom()):i.getZoom(),n=i.getZoomScale(e,this._tileZoom),o=i.project(t,this._tileZoom).floor(),s=i.getSize().divideBy(2*n);return new P(o.subtract(s),o.add(s))},_update:function(t){var i=this._map;if(i){var e=this._clampZoom(i.getZoom());if(void 0===t&&(t=i.getCenter()),void 0!==this._tileZoom){var n=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(n),s=o.getCenter(),r=[],a=this.options.keepBuffer,h=new P(o.getBottomLeft().subtract([a,-a]),o.getTopRight().add([a,-a]));if(!(isFinite(o.min.x)&&isFinite(o.min.y)&&isFinite(o.max.x)&&isFinite(o.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var u in this._tiles){var l=this._tiles[u].coords;l.z===this._tileZoom&&h.contains(new x(l.x,l.y))||(this._tiles[u].current=!1)}if(Math.abs(e-this._tileZoom)>1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(_=0;_<r.length;_++)this._addTile(r[_],m);this._level.el.appendChild(m)}}}}},_isValidTile:function(t){var i=this._map.options.crs;if(!i.infinite){var e=this._globalTileRange;if(!i.wrapLng&&(t.x<e.min.x||t.x>e.max.x)||!i.wrapLat&&(t.y<e.min.y||t.y>e.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(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 T(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 x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(Ci||i.el.setAttribute("src",ni),ut(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){pt(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&vt(t,this.options.opacity),Ti&&!zi&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),Lt(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire("tileloadstart",{tile:s,coords:t})},_tileReady:function(t,i,n){if(this._map){i&&this.fire("tileerror",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(vt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(pt(n.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))}},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(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}}),dn=_n.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=l(this,i)).detectRetina&&Ki&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),"string"==typeof i.subdomains&&(i.subdomains=i.subdomains.split("")),Ti||this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement("img");return V(n,"load",e(this._tileOnLoad,this,i,n)),V(n,"error",e(this._tileOnError,this,i,n)),this.options.crossOrigin&&(n.crossOrigin=""),n.alt="",n.setAttribute("role","presentation"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Ki?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e["-y"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute("src")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=ni,ut(i),delete this._tiles[t]))}}),pn=dn.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Ki?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[i]=this._crs.code,dn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===He?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(","),a=L.TileLayer.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});dn.WMS=pn,Yt.wms=function(t,i){return new pn(t,i)};var mn=Ue.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&pt(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=Pt(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);Ni?wt(this._container,a,e):Lt(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),fn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){mn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");V(t,"mousemove",o(this._onMouseMove,32,this),this),V(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),V(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){delete this._ctx,ut(this._container),q(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){this._drawnLayers={},mn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Ki?2:1;Lt(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+"px",i.style.height=e.y+"px",Ki&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){mn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[L.stamp(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(t.options.dashArray){var i,e=t.options.dashArray.split(","),n=[];for(i=0;i<e.length;i++)n.push(Number(e[i]));t.options._dashArray=n}},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||f(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var i=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new P,this._redrawBounds.extend(t._pxBounds.min.subtract([i,i])),this._redrawBounds.extend(t._pxBounds.max.add([i,i]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var i=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,i.x,i.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,i=this._redrawBounds;if(this._ctx.save(),i){var e=i.getSize();this._ctx.beginPath(),this._ctx.rect(i.min.x,i.min.y,e.x,e.y),this._ctx.clip()}this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)t=n.layer,(!i||t._pxBounds&&t._pxBounds.intersects(i))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,i){if(this._drawing){var e,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(this._drawnLayers[t._leaflet_id]=t,h.beginPath(),e=0;e<a;e++){for(n=0,o=r[e].length;n<o;n++)s=r[e][n],h[n?"lineTo":"moveTo"](s.x,s.y);i&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var i=t._point,e=this._ctx,n=Math.max(Math.round(t._radius),1),o=(Math.max(Math.round(t._radiusY),1)||n)/n;this._drawnLayers[t._leaflet_id]=t,1!==o&&(e.save(),e.scale(1,o)),e.beginPath(),e.arc(i.x,i.y/o,n,0,2*Math.PI,!1),1!==o&&e.restore(),this._fillStroke(e,t)}},_fillStroke:function(t,i){var e=i.options;e.fill&&(t.globalAlpha=e.fillOpacity,t.fillStyle=e.fillColor||e.color,t.fill(e.fillRule||"evenodd")),e.stroke&&0!==e.weight&&(t.setLineDash&&t.setLineDash(i.options&&i.options._dashArray||[]),t.globalAlpha=e.opacity,t.lineWidth=e.weight,t.strokeStyle=e.color,t.lineCap=e.lineCap,t.lineJoin=e.lineJoin,t.stroke())},_onClick:function(t){for(var i,e,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(i=o.layer).options.interactive&&i._containsPoint(n)&&!this._map._draggableMoved(i)&&(e=i);e&&(et(t),this._fireEvent([e],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var i=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,i)}},_handleMouseOut:function(t){var i=this._hoveredLayer;i&&(mt(this._container,"leaflet-interactive"),this._fireEvent([i],t,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(t,i){for(var e,n,o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(i)&&(n=e);n!==this._hoveredLayer&&(this._handleMouseOut(t),n&&(pt(this._container,"leaflet-interactive"),this._fireEvent([n],t,"mouseover"),this._hoveredLayer=n)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,i,e){this._map._fireDOMEvent(i,e||i.type,t)},_bringToFront:function(t){var i=t._order,e=i.next,n=i.prev;e&&(e.prev=n,n?n.next=e:e&&(this._drawFirst=e),i.prev=this._drawLast,this._drawLast.next=i,i.next=null,this._drawLast=i,this._requestRedraw(t))},_bringToBack:function(t){var i=t._order,e=i.next,n=i.prev;n&&(n.next=e,e?e.prev=n:n&&(this._drawLast=n),i.prev=null,i.next=this._drawFirst,this._drawFirst.prev=i,this._drawFirst=i,this._requestRedraw(t))}}),gn=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return document.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),vn={_initContainer:function(){this._container=ht("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(mn.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=gn("shape");pt(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=gn("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(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;ut(i),t.removeInteractiveTarget(i),delete this._layers[n(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=gn("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=ei(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=gn("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){ct(t._container)},_bringToBack:function(t){_t(t._container)}},yn=Ji?gn:E,xn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=yn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=yn("g"),this._container.appendChild(this._rootGroup)}
vendor: 2,722 bytes, line 5
5,_destroyContainer:function(){ut(this._container),q(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){mn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),Lt(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=yn("path");t.options.className&&pt(i,t.options.className),t.options.interactive&&pt(i,"leaflet-interactive"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ut(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(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,k(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){ct(t._path)},_bringToBack:function(t){_t(t._path)}});Ji&&xn.include(vn),Le.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this.options.preferCanvas&&Xt()||Jt()),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=xn&&Jt({pane:t})||fn&&Xt({pane:t}),this._paneRenderers[t]=i),i}});var wn=en.extend({initialize:function(t,i){en.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))}
vendor: 13,842 bytes, line 5
5,_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});xn.create=yn,xn.pointsToPath=k,nn.geometryToLayer=Wt,nn.coordsToLatLng=Ht,nn.coordsToLatLngs=Ft,nn.latLngToCoords=Ut,nn.latLngsToCoords=Vt,nn.getFeature=qt,nn.asFeature=Gt,Le.mergeOptions({boxZoom:!0});var Ln=Ze.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(){V(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){q(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ut(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(),mi(),bt(),this._startPoint=this._map.mouseEventToContainerPoint(t),V(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=ht("div","leaflet-zoom-box",this._container),pt(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();Lt(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(ut(this._box),mt(this._container,"leaflet-crosshair")),fi(),Tt(),q(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(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()}});Le.addInitHook("addHandler","boxZoom",Ln),Le.mergeOptions({doubleClickZoom:!0});var Pn=Ze.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)}});Le.addInitHook("addHandler","doubleClickZoom",Pn),Le.mergeOptions({dragging:!0,inertia:!zi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var bn=Ze.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Be(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))}pt(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){mt(this._map._container,"leaflet-grab"),mt(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=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var 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(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.x<i.min.x&&(t.x=this._viscousLimit(t.x,i.min.x)),t.y<i.min.y&&(t.y=this._viscousLimit(t.y,i.min.y)),t.x>i.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)<Math.abs(s+e)?o:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var i=this._map,e=i.options,n=!e.inertia||this._times.length<2;if(i.fire("dragend",t),n)i.fire("moveend");else{this._prunePositions(+new Date);var o=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=e.easeLinearity,a=o.multiplyBy(r/s),h=a.distanceTo([0,0]),u=Math.min(e.inertiaMaxSpeed,h),l=a.multiplyBy(u/h),c=u/(e.inertiaDeceleration*r),_=l.multiplyBy(-c/2).round();_.x||_.y?(_=i._limitOffset(_,i.options.maxBounds),f(function(){i.panBy(_,{duration:c,easeLinearity:r,noMoveStart:!0,animate:!0})})):i.fire("moveend")}}});Le.addInitHook("addHandler","dragging",bn),Le.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Tn=Ze.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),V(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),q(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,i=document.documentElement,e=t.scrollTop||i.scrollTop,n=t.scrollLeft||i.scrollLeft;this._map._container.focus(),window.scrollTo(n,e)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var i,e,n=this._panKeys={},o=this.keyCodes;for(i=0,e=o.left.length;i<e;i++)n[o.left[i]]=[-1*t,0];for(i=0,e=o.right.length;i<e;i++)n[o.right[i]]=[t,0];for(i=0,e=o.down.length;i<e;i++)n[o.down[i]]=[0,t];for(i=0,e=o.up.length;i<e;i++)n[o.up[i]]=[0,-1*t]},_setZoomDelta:function(t){var i,e,n=this._zoomKeys={},o=this.keyCodes;for(i=0,e=o.zoomIn.length;i<e;i++)n[o.zoomIn[i]]=t;for(i=0,e=o.zoomOut.length;i<e;i++)n[o.zoomOut[i]]=-t},_addHooks:function(){V(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){q(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var i,e=t.keyCode,n=this._map;if(e in this._panKeys){if(n._panAnim&&n._panAnim._inProgress)return;i=this._panKeys[e],t.shiftKey&&(i=w(i).multiplyBy(3)),n.panBy(i),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds)}else if(e in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}Q(t)}}});Le.addInitHook("addHandler","keyboard",Tn),Le.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var zn=Ze.extend({addHooks:function(){V(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){q(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var i=it(t),n=this._map.options.wheelDebounceTime;this._delta+=i,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(n-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(e(this._performZoom,this),o),Q(t)},_performZoom:function(){var t=this._map,i=t.getZoom(),e=this._map.options.zoomSnap||0;t._stop();var n=this._delta/(4*this._map.options.wheelPxPerZoomLevel),o=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=e?Math.ceil(o/e)*e:o,r=t._limitZoom(i+(this._delta>0?s:-s))-i;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});Le.addInitHook("addHandler","scrollWheelZoom",zn),Le.mergeOptions({tap:!0,tapTolerance:15});var Mn=Ze.extend({addHooks:function(){V(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){q(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if($(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&pt(n,"leaflet-active"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),this._simulateEvent("mousedown",i),V(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),q(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&"a"===e.tagName.toLowerCase()&&mt(e,"leaflet-active"),this._simulateEvent("mouseup",i),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent("mousemove",i)},_simulateEvent:function(t,i){var e=document.createEvent("MouseEvents");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});Vi&&!Ui&&Le.addInitHook("addHandler","tap",Mn),Le.mergeOptions({touchZoom:Vi&&!zi,bounceAtZoomLimits:!0});var Cn=Ze.extend({addHooks:function(){pt(this._map._container,"leaflet-touch-zoom"),V(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){mt(this._map._container,"leaflet-touch-zoom"),q(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),V(document,"touchmove",this._onTouchMove,this),V(document,"touchend",this._onTouchEnd,this),$(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoom<i.getMinZoom()&&s<1||this._zoom>i.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),"center"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),$(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),q(document,"touchmove",this._onTouchMove),q(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Le.addInitHook("addHandler","touchZoom",Cn),Le.BoxZoom=Ln,Le.DoubleClickZoom=Pn,Le.Drag=bn,Le.Keyboard=Tn,Le.ScrollWheelZoom=zn,Le.Tap=Mn,Le.TouchZoom=Cn;var Zn=window.L;window.L=t,Object.freeze=$t,t.version="1.3.1",t.noConflict=function(){return window.L=Zn,this},t.Control=Pe,t.control=be,t.Browser=$i,t.Evented=ui,t.Mixin=Ee,t.Util=ai,t.Class=v,t.Handler=Ze,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=de,t.DomUtil=xe,t.PosAnimation=we,t.Draggable=Be,t.LineUtil=Oe,t.PolyUtil=Re,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=Z,t.transformation=S,t.Projection=je,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=ci,t.GeoJSON=nn,t.geoJSON=Kt,t.geoJ
5son=sn,t.Layer=Ue,t.LayerGroup=Ve,t.layerGroup=function(t,i){return new Ve(t,i)},t.FeatureGroup=qe,t.featureGroup=function(t){return new qe(t)},t.ImageOverlay=rn,t.imageOverlay=function(t,i,e){return new rn(t,i,e)},t.VideoOverlay=an,t.videoOverlay=function(t,i,e){return new an(t,i,e)},t.DivOverlay=hn,t.Popup=un,t.popup=function(t,i){return new un(t,i)},t.Tooltip=ln,t.tooltip=function(t,i){return new ln(t,i)},t.Icon=Ge,t.icon=function(t){return new Ge(t)},t.DivIcon=cn,t.divIcon=function(t){return new cn(t)},t.Marker=Xe,t.marker=function(t,i){return new Xe(t,i)},t.TileLayer=dn,t.tileLayer=Yt,t.GridLayer=_n,t.gridLayer=function(t){return new _n(t)},t.SVG=xn,t.svg=Jt,t.Renderer=mn,t.Canvas=fn,t.canvas=Xt,t.Path=Je,t.CircleMarker=$e,t.circleMarker=function(t,i){return new $e(t,i)},t.Circle=Qe,t.circle=function(t,i,e){return new Qe(t,i,e)},t.Polyline=tn,t.polyline=function(t,i){return new tn(t,i)},t.Polygon=en,t.polygon=function(t,i){return new en(t,i)},t.Rectangle=wn,t.rectangle=function(t,i){return new wn(t,i)},t.Map=Le,t.map=function(t,i){return new Le(t,i)}}); 6 7/* MapLibre GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v3.6.2/LICENSE.txt */ 8(function (global, factory) { 9typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 10typeof define === 'function' && define.amd ? define(factory) : 11(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.maplibregl = factory()); 12})(this, (function () { 'use strict'; 13 14/* eslint-disable */ 15 16var shared, worker, maplibregl; 17// define gets called three times: one for each chunk. we rely on the order 18// they're imported to know which is which 19function define(_, chunk) { 20 if (!shared) { 21 shared = chunk; 22 } else if (!worker) { 23 worker = chunk; 24 } else { 25 var workerBundleString = 'var sharedChunk = {}; (' + shared + ')(sharedChunk); (' + worker + ')(sharedChunk);' 26 27 var sharedChunk = {}; 28 shared(sharedChunk); 29 maplibregl = chunk(sharedChunk); 30 if (typeof window !== 'undefined') { 31 maplibregl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' })); 32 } 33 } 34} 35 36 37define(["exports"],(function(t){"use strict";function e(t,e,r,n){return new(r||(r=Promise))((function(i,a){function s(t){try{l(n.next(t));}catch(t){a(t);}}function o(t){try{l(n.throw(t));}catch(t){a(t);}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e);}))).then(s,o);}l((n=n.apply(t,e||[])).next());}))}function r(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}"function"==typeof SuppressedError&&SuppressedError;var n=i;function i(t,e){this.x=t,this.y=e;}i.prototype={clone:function(){return new i(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=n,this}
vendor: 4,561 bytes, line 37
37,_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-n*(this.y-e.y),this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},i.convert=function(t){return t instanceof i?t:Array.isArray(t)?new i(t[0],t[1]):t};var a=r(n),s=o;function o(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=e,this.p2x=r,this.p2y=n;}o.prototype={sampleCurveX:function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},sampleCurveY:function(t){return ((this.ay*t+this.by)*t+this.cy)*t},sampleCurveDerivativeX:function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},solveCurveX:function(t,e){if(void 0===e&&(e=1e-6),t<0)return 0;if(t>1)return 1;for(var r=t,n=0;n<8;n++){var i=this.sampleCurveX(r)-t;if(Math.abs(i)<e)return r;var a=this.sampleCurveDerivativeX(r);if(Math.abs(a)<1e-6)break;r-=i/a;}var s=0,o=1;for(r=t,n=0;n<20&&(i=this.sampleCurveX(r),!(Math.abs(i-t)<e));n++)t>i?s=r:o=r,r=.5*(o-s)+s;return r},solve:function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}};var l=r(s);let u,c;function h(){return null==u&&(u="undefined"!=typeof OffscreenCanvas&&new OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof createImageBitmap),u}function p(){if(null==c&&(c=!1,h())){const t=5,e=new OffscreenCanvas(t,t).getContext("2d",{willReadFrequently:!0});if(e){for(let r=0;r<t*t;r++){const n=4*r;e.fillStyle=`rgb(${n},${n+1},${n+2})`,e.fillRect(r%t,Math.floor(r/t),1,1);}const r=e.getImageData(0,0,t,t).data;for(let e=0;e<t*t*4;e++)if(e%4!=3&&r[e]!==e){c=!0;break}}}return c||!1}function f(t,e,r,n){const i=new l(t,e,r,n);return function(t){return i.solve(t)}}const d=f(.25,.1,.25,1);function y(t,e,r){return Math.min(r,Math.max(e,t))}function m(t,e,r){const n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function g(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}let x=1;function v(t,e,r){const n={};for(const i in t)n[i]=e.call(r||this,t[i],i,t);return n}function b(t,e,r){const n={};for(const i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function w(t){return Array.isArray(t)?t.map(w):"object"==typeof t&&t?v(t,w):t}const _={};function A(t){_[t]||("undefined"!=typeof console&&console.warn(t),_[t]=!0);}function S(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function k(t){let e=0;for(let r,n,i=0,a=t.length,s=a-1;i<a;s=i++)r=t[i],n=t[s],e+=(n.x-r.x)*(r.y+n.y);return e}function I(){return "undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof self&&self instanceof WorkerGlobalScope}let z=null;function M(t){return "undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap}const C="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function B(t,r,n,i,a){return e(this,void 0,void 0,(function*(){if("undefined"==typeof VideoFrame)throw new Error("VideoFrame not supported");const e=new VideoFrame(t,{timestamp:0});try{const s=null==e?void 0:e.format;if(!s||!s.startsWith("BGR")&&!s.startsWith("RGB"))throw new Error(`Unrecognized format ${s}`);const o=s.startsWith("BGR"),l=new Uint8ClampedArray(i*a*4);if(yield e.copyTo(l,function(t,e,r,n,i){const a=4*Math.max(-e,0),s=(Math.max(0,r)-r)*n*4+a,o=4*n,l=Math.max(0,e),u=Math.max(0,r);return {rect:{x:l,y:u,width:Math.min(t.width,e+n)-l,height:Math.min(t.height,r+i)-u},layout:[{offset:s,stride:o}]}}(t,r,n,i,a)),o)for(let t=0;t<l.length;t+=4){const e=l[t];l[t]=l[t+2],l[t+2]=e;}return l}finally{e.close();}}))}let P,V,E,F;const T={now:"undefined"!=typeof performance&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frame(t){const e=requestAnimationFrame(t);return {cancel:()=>cancelAnimationFrame(e)}},getImageData(t,e=0){return this.getImageCanvasContext(t).getImageData(-e,-e,t.width+2*e,t.height+2*e)},getImageCanvasContext(t){const e=window.document.createElement("canvas"),r=e.getContext("2d",{willReadFrequently:!0});if(!r)throw new Error("failed to create canvas 2d context");return e.width=t.width,e.height=t.height,r.drawImage(t,0,0,t.width,t.height),r},resolveURL:t=>(E||(E=document.createElement("a")),E.href=t,E.href),hardwareConcurrency:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return !!matchMedia&&(null==F&&(F=matchMedia("(prefers-reduced-motion: reduce)")),F.matches)}},$={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:""};
37class L extends Error{constructor(t,e,r,n){super(`AJAXError: ${e} (${t}): ${r}`),this.status=t,this.statusText=e,this.url=r,this.body=n;}}const D=I()?()=>self.worker&&self.worker.referrer:()=>("blob:"===window.location.protocol?window.parent:window).location.href,O=t=>$.REGISTERED_PROTOCOLS[t.substring(0,t.indexOf("://"))];function U(t,e){const r=new AbortController,n=new Request(t.url,{method:t.method||"GET",body:t.body,credentials:t.credentials,headers:t.headers,cache:t.cache,referrer:D(),signal:r.signal});let i=!1,a=!1;"json"===t.type&&n.headers.set("Accept","application/json");return a||fetch(n).then((r=>r.ok?(r=>{("arrayBuffer"===t.type||"image"===t.type?r.arrayBuffer():"json"===t.type?r.json():r.text()).then((t=>{a||(i=!0,e(null,t,r.headers.get("Cache-Control"),r.headers.get("Expires")));})).catch((t=>{a||e(new Error(t.message));}));})(r):r.blob().then((n=>e(new L(r.status,r.statusText,t.url,n)))))).catch((t=>{20!==t.code&&e(new Error(t.message));})),{cancel:()=>{a=!0,i||r.abort();}}}const R=function(t,e){if(/:\/\//.test(t.url)&&!/^https?:|^file:/.test(t.url)){if(I()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",t,e);if(!I())return (O(t.url)||U)(t,e)}if(!(/^file:/.test(r=t.url)||/^file:/.test(D())&&!/^\w+:/.test(r))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return U(t,e);if(I()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",t,e,void 0,!0)}var r;return function(t,e){const r=new XMLHttpRequest;r.open(t.method||"GET",t.url,!0),"arrayBuffer"!==t.type&&"image"!==t.type||(r.responseType="arraybuffer");for(const e in t.headers)r.setRequestHeader(e,t.headers[e]);return "json"===t.type&&(r.responseType="text",r.setRequestHeader("Accept","application/json")),r.withCredentials="include"===t.credentials,r.onerror=()=>{e(new Error(r.statusText));},r.onload=()=>{if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){let n=r.response;if("json"===t.type)try{n=JSON.parse(r.response);}catch(t){return e(t)}e(null,n,r.getResponseHeader("Cache-Control"),r.getResponseHeader("Expires"));}else {const n=new Blob([r.response],{type:r.getResponseHeader("Content-Type")});e(new L(r.status,r.statusText,t.url,n));}},r.send(t.body),{cancel:()=>r.abort()}}(t,e)},q=function(t,e){return R(g(t,{type:"arrayBuffer"}),e)};function j(t){if(!t||t.indexOf("://")<=0||0===t.indexOf("data:image/")||0===t.indexOf("blob:"))return !0;const e=new URL(t),r=window.location;return e.protocol===r.protocol&&e.host===r.host}function N(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e));}function Z(t,e,r){if(r&&r[t]){const n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1);}}class K{constructor(t,e={}){g(this,e),this.type=t;}}class G extends K{constructor(t,e={}){super("error",g({error:t},e));}}class J{on(t,e){return this._listeners=this._listeners||{},N(t,e,this._listeners),this}off(t,e){return Z(t,e,this._listeners),Z(t,e,this._oneTimeListeners),this}once(t,e){return e?(this._oneTimeListeners=this._oneTimeListeners||{},N(t,e,this._oneTimeListeners),this):new Promise((e=>this.once(t,e)))}fire(t,e){"string"==typeof t&&(t=new K(t,e||{}));const r=t.type;if(this.listens(r)){t.target=this;const e=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];for(const r of e)r.call(this,t);const n=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];for(const e of n)Z(r,e,this._oneTimeListeners),e.call(this,t);const i=this._eventedParent;i&&(g(t,"function"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),i.fire(t));}else t instanceof G&&console.error(t.error);return this}listens(t){return this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)}setEventedParent(t,e){return this._eventedParent=t,this._eventedParentData=e,this}}var X={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"}
vendor: 3,526 bytes, line 37
37,bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade
vendor: 10,514 bytes, line 37
37","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},
vendor: 1,289 bytes, line 37
37filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5
vendor: 14,262 bytes, line 37
37,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};const
37Y=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function H(t,e){const r={};for(const e in t)"ref"!==e&&(r[e]=t[e]);return Y.forEach((t=>{t in e&&(r[t]=e[t]);})),r}function W(t,e){if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return !1;for(let r=0;r<t.length;r++)if(!W(t[r],e[r]))return !1;return !0}if("object"==typeof t&&null!==t&&null!==e){if("object"!=typeof e)return !1;if(Object.keys(t).length!==Object.keys(e).length)return !1;for(const r in t)if(!W(t[r],e[r]))return !1;return !0}return t===e}const Q={setStyle:"setStyle",addLayer:"addLayer",removeLayer:"removeLayer",setPaintProperty:"setPaintProperty",setLayoutProperty:"setLayoutProperty",setFilter:"setFilter",addSource:"addSource",removeSource:"removeSource",setGeoJSONSourceData:"setGeoJSONSourceData",setLayerZoomRange:"setLayerZoomRange",setLayerProperty:"setLayerProperty",setCenter:"setCenter",setZoom:"setZoom",setBearing:"setBearing",setPitch:"setPitch",setSprite:"setSprite",setGlyphs:"setGlyphs",setTransition:"setTransition",setLight:"setLight"};
vendor: 21,248 bytes, line 37
37function tt(t,e,r){r.push({command:Q.addSource,args:[t,e[t]]});}function et(t,e,r){e.push({command:Q.removeSource,args:[t]}),r[t]=!0;}function rt(t,e,r,n){et(t,r,n),tt(t,e,r);}function nt(t,e,r){let n;for(n in t[r])if(Object.prototype.hasOwnProperty.call(t[r],n)&&"data"!==n&&!W(t[r][n],e[r][n]))return !1;for(n in e[r])if(Object.prototype.hasOwnProperty.call(e[r],n)&&"data"!==n&&!W(t[r][n],e[r][n]))return !1;return !0}function it(t,e,r,n,i,a){let s;for(s in e=e||{},t=t||{})Object.prototype.hasOwnProperty.call(t,s)&&(W(t[s],e[s])||r.push({command:a,args:[n,s,e[s],i]}));for(s in e)Object.prototype.hasOwnProperty.call(e,s)&&!Object.prototype.hasOwnProperty.call(t,s)&&(W(t[s],e[s])||r.push({command:a,args:[n,s,e[s],i]}));}function at(t){return t.id}function st(t,e){return t[e.id]=e,t}class ot{constructor(t,e,r,n){this.message=(t?`${t}: `:"")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__);}}function lt(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}class ut extends Error{constructor(t,e){super(e),this.message=e,this.key=t;}}class ct{constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,r]of e)this.bindings[t]=r;}concat(t){return new ct(this,t)}get(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(`${t} not found in scope.`)}has(t){return !!this.bindings[t]||!!this.parent&&this.parent.has(t)}}const ht={kind:"null"},pt={kind:"number"},ft={kind:"string"},dt={kind:"boolean"},yt={kind:"color"},mt={kind:"object"},gt={kind:"value"},xt={kind:"collator"},vt={kind:"formatted"},bt={kind:"padding"},wt={kind:"resolvedImage"},_t={kind:"variableAnchorOffsetCollection"};function At(t,e){return {kind:"array",itemType:t,N:e}}function St(t){if("array"===t.kind){const e=St(t.itemType);return "number"==typeof t.N?`array<${e}, ${t.N}>`:"value"===t.itemType.kind?"array":`array<${e}>`}return t.kind}const kt=[ht,pt,ft,dt,yt,vt,mt,At(gt),bt,wt,_t];function It(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!It(t.itemType,e.itemType))&&("number"!=typeof t.N||t.N===e.N))return null}else {if(t.kind===e.kind)return null;if("value"===t.kind)for(const t of kt)if(!It(t,e))return null}return `Expected ${St(t)} but found ${St(e)} instead.`}function zt(t,e){return e.some((e=>e.kind===t.kind))}function Mt(t,e){return e.some((e=>"null"===e?null===t:"array"===e?Array.isArray(t):"object"===e?t&&!Array.isArray(t)&&"object"==typeof t:e===typeof t))}function Ct(t,e){return "array"===t.kind&&"array"===e.kind?t.itemType.kind===e.itemType.kind&&"number"==typeof t.N:t.kind===e.kind}const Bt=.96422,Pt=.82521,Vt=4/29,Et=6/29,Ft=3*Et*Et,Tt=Et*Et*Et,$t=Math.PI/180,Lt=180/Math.PI;function Dt(t){return (t%=360)<0&&(t+=360),t}function Ot([t,e,r,n]){let i,a;const s=Rt((.2225045*(t=Ut(t))+.7168786*(e=Ut(e))+.0606169*(r=Ut(r)))/1);t===e&&e===r?i=a=s:(i=Rt((.4360747*t+.3850649*e+.1430804*r)/Bt),a=Rt((.0139322*t+.0971045*e+.7141733*r)/Pt));const o=116*s-16;return [o<0?0:o,500*(i-s),200*(s-a),n]}function Ut(t){return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Rt(t){return t>Tt?Math.pow(t,1/3):t/Ft+Vt}function qt([t,e,r,n]){let i=(t+16)/116,a=isNaN(e)?i:i+e/500,s=isNaN(r)?i:i-r/200;return i=1*Nt(i),a=Bt*Nt(a),s=Pt*Nt(s),[jt(3.1338561*a-1.6168667*i-.4906146*s),jt(-.9787684*a+1.9161415*i+.033454*s),jt(.0719453*a-.2289914*i+1.4052427*s),n]}function jt(t){return (t=t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055)<0?0:t>1?1:t}function Nt(t){return t>Et?t*t*t:Ft*(t-Vt)}function Zt(t){return parseInt(t.padEnd(2,t),16)/255}function Kt(t,e){return Gt(e?t/100:t,0,1)}function Gt(t,e,r){return Math.min(Math.max(e,t),r)}function Jt(t){return !t.some(Number.isNaN)}const Xt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Yt{constructor(t,e,r,n=1,i=!0){this.r=t,this.g=e,this.b=r,this.a=n,i||(this.r*=n,this.g*=n,this.b*=n,n||this.overwriteGetter("rgb",[t,e,r,n]));}static parse(t){if(t instanceof Yt)return t;if("string"!=typeof t)return;const e=function(t){if("transparent"===(t=t.toLowerCase().trim()))return [0,0,0,0];const e=Xt[t];if(e){const[t,r,n]=e;return [t/255,r/255,n/255,1]}if(t.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(t)){const e=t.length<6?1:2;let r=1;return [Zt(t.slice(r,r+=e)),Zt(t.slice(r,r+=e)),Zt(t.slice(r,r+=e)),Zt(t.slice(r,r+e)||"ff")]}if(t.startsWith("rgb")){const e=t.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(e){const[t,r,n,i,a,s,o,l,u,c,h,p]=e,f=[i||" ",o||" ",c].join("");if(" "===f||" /"===f||",,"===f||",,,"===f){const t=[n,s,u].join(""),e="%%%"===t?100:""===t?255:0;if(e){const t=[Gt(+r/e,0,1),Gt(+a/e,0,1),Gt(+l/e,0,1),h?Kt(+h,p):1];if(Jt(t))return t}}return}}const r=t.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(r){const[t,e,n,i,a,s,o,l,u]=r,c=[n||" ",a||" ",o].join("");if(" "===c||" /"===c||",,"===c||",,,"===c){const t=[+e,Gt(+i,0,100),Gt(+s,0,100),l?Kt(+l,u):1];if(Jt(t))return function([t,e,r,n]){function i(n){const i=(n+t/30)%12,a=e*Math.min(r,1-r);return r-a*Math.max(-1,Math.min(i-3,9-i,1))}return t=Dt(t),e/=100,r/=100,[i(0),i(8),i(4),n]}(t)}}}(t);return e?new Yt(...e,!1):void 0}get rgb(){const{r:t,g:e,b:r,a:n}=this,i=n||1/0;return this.overwriteGetter("rgb",[t/i,e/i,r/i,n])}get hcl(){return this.overwriteGetter("hcl",function(t){const[e,r,n,i]=Ot(t),a=Math.sqrt(r*r+n*n);return [Math.round(1e4*a)?Dt(Math.atan2(n,r)*Lt):NaN,a,e,i]}(this.rgb))}get lab(){return this.overwriteGetter("lab",Ot(this.rgb))}overwriteGetter(t,e){return Object.defineProperty(this,t,{value:e}),e}toString(){const[t,e,r,n]=this.rgb;return `rgba(${[t,e,r].map((t=>Math.round(255*t))).join(",")},${n})`}}Yt.black=new Yt(0,0,0,1),Yt.white=new Yt(1,1,1,1),Yt.transparent=new Yt(0,0,0,0),Yt.red=new Yt(1,0,0,1);class Ht{constructor(t,e,r){this.sensitivity=t?e?"variant":"case":e?"accent":"base",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"});}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Wt{constructor(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i;}}class Qt{constructor(t){this.sections=t;}static fromString(t){return new Qt([new Wt(t,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!==t.text.length||t.image&&0!==t.image.name.length))}static factory(t){return t instanceof Qt?t:Qt.fromString(t)}toString(){return 0===this.sections.length?"":this.sections.map((t=>t.text)).join("")}}class te{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof te)return t;if("number"==typeof t)return new te([t,t,t,t]);if(Array.isArray(t)&&!(t.length<1||t.length>4)){for(const e of t)if("number"!=typeof e)return;switch(t.length){case 1:t=[t[0],t[0],t[0],t[0]];break;case 2:t=[t[0],t[1],t[0],t[1]];break;case 3:t=[t[0],t[1],t[2],t[1]];}return new te(t)}}toString(){return JSON.stringify(this.values)}}const ee=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class re{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof re)return t;if(Array.isArray(t)&&!(t.length<1)&&t.length%2==0){for(let e=0;e<t.length;e+=2){const r=t[e],n=t[e+1];if("string"!=typeof r||!ee.has(r))return;if(!Array.isArray(n)||2!==n.length||"number"!=typeof n[0]||"number"!=typeof n[1])return}return new re(t)}}toString(){return JSON.stringify(this.values)}}class ne{constructor(t){this.name=t.name,this.available=t.available;}toString(){return this.name}static fromString(t){return t?new ne({name:t,available:!1}):null}}function ie(t,e,r,n){return "number"==typeof t&&t>=0&&t<=255&&"number"==typeof e&&e>=0&&e<=255&&"number"==typeof r&&r>=0&&r<=255?void 0===n||"number"==typeof n&&n>=0&&n<=1?null:`Invalid rgba value [${[t,e,r,n].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${("number"==typeof n?[t,e,r,n]:[t,e,r]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function ae(t){if(null===t||"string"==typeof t||"boolean"==typeof t||"number"==typeof t||t instanceof Yt||t instanceof Ht||t instanceof Qt||t instanceof te||t instanceof re||t instanceof ne)return !0;if(Array.isArray(t)){for(const e of t)if(!ae(e))return !1;return !0}if("object"==typeof t){for(const e in t)if(!ae(t[e]))return !1;return !0}return !1}function se(t){if(null===t)return ht;if("string"==typeof t)return ft;if("boolean"==typeof t)return dt;if("number"==typeof t)return pt;if(t instanceof Yt)return yt;if(t instanceof Ht)return xt;if(t instanceof Qt)return vt;if(t instanceof te)return bt;if(t instanceof re)return _t;if(t instanceof ne)return wt;if(Array.isArray(t)){const e=t.length;let r;for(const e of t){const t=se(e);if(r){if(r===t)continue;r=gt;break}r=t;}return At(r||gt,e)}return mt}function oe(t){const e=typeof t;return null===t?"":"string"===e||"number"===e||"boolean"===e?String(t):t instanceof Yt||t instanceof Qt||t instanceof te||t instanceof re||t instanceof ne?t.toString():JSON.stringify(t)}class le{constructor(t,e){this.type=t,this.value=e;}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!ae(t[1]))return e.error("invalid value");const r=t[1];let n=se(r);const i=e.expectedType;return "array"!==n.kind||0!==n.N||!i||"array"!==i.kind||"number"==typeof i.N&&0!==i.N||(n=i),new le(n,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return !0}}class ue{constructor(t){this.name="ExpressionEvaluationError",this.message=t;}toJSON(){return this.message}}const ce={string:ft,number:pt,boolean:dt,object:mt};class he{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");let r,n=1;const i=t[0];if("array"===i){let i,a;if(t.length>2){const r=t[1];if("string"!=typeof r||!(r in ce)||"object"===r)return e.error('The item type argument of "array" must be one of string, number, boolean',1);i=ce[r],n++;}else i=gt;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to "array" must be a positive integer literal',2);a=t[2],n++;}r=At(i,a);}else {if(!ce[i])throw new Error(`Types doesn't contain name = ${i}`);r=ce[i];}const a=[];for(;n<t.length;n++){const r=e.parse(t[n],n,gt);if(!r)return null;a.push(r);}return new he(r,a)}evaluate(t){for(let e=0;e<this.args.length;e++){const r=this.args[e].evaluate(t);if(!It(this.type,se(r)))return r;if(e===this.args.length-1)throw new ue(`Expected value to be of type ${St(this.type)}, but found ${St(se(r))} instead.`)}throw new Error}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}const pe={"to-boolean":dt,"to-color":yt,"to-number":pt,"to-string":ft};class fe{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const r=t[0];if(!pe[r])throw new Error(`Can't parse ${r} as it is not part of the known types`);if(("to-boolean"===r||"to-string"===r)&&2!==t.length)return e.error("Expected one argument.");const n=pe[r],i=[];for(let r=1;r<t.length;r++){const n=e.parse(t[r],r,gt);if(!n)return null;i.push(n);}return new fe(n,i)}evaluate(t){switch(this.type.kind){case"boolean":return Boolean(this.args[0].evaluate(t));case"color":{let e,r;for(const n of this.args){if(e=n.evaluate(t),r=null,e instanceof Yt)return e;if("string"==typeof e){const r=t.parseColor(e);if(r)return r}else if(Array.isArray(e)&&(r=e.length<3||e.length>4?`Invalid rbga value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:ie(e[0],e[1],e[2],e[3]),!r))return new Yt(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ue(r||`Could not parse color from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case"padding":{let e;for(const r of this.args){e=r.evaluate(t);const n=te.parse(e);if(n)return n}throw new ue(`Could not parse padding from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case"variableAnchorOffsetCollection":{let e;for(const r of this.args){e=r.evaluate(t);const n=re.parse(e);if(n)return n}throw new ue(`Could not parse variableAnchorOffsetCollection from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case"number":{let e=null;for(const r of this.args){if(e=r.evaluate(t),null===e)return 0;const n=Number(e);if(!isNaN(n))return n}throw new ue(`Could not convert ${JSON.stringify(e)} to number.`)}case"formatted":return Qt.fromString(oe(this.args[0].evaluate(t)));case"resolvedImage":return ne.fromString(oe(this.args[0].evaluate(t)));default:return oe(this.args[0].evaluate(t))}}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}const de=["Unknown","Point","LineString","Polygon"];class ye{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null;}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?"number"==typeof this.feature.type?de[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(t){let e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=Yt.parse(t)),e}}class me{constructor(t,e,r=[],n,i=new ct,a=[]){this.registry=t,this.path=r,this.key=r.map((t=>`[${t}]`)).join(""),this.scope=i,this.errors=a,this.expectedType=n,this._isConstant=e;}parse(t,e,r,n,i={}){return e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)}_parse(t,e){function r(t,e,r){return "assert"===r?new he(e,[t]):"coerce"===r?new fe(e,[t]):t}if(null!==t&&"string"!=typeof t&&"boolean"!=typeof t&&"number"!=typeof t||(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const n=t[0];if("string"!=typeof n)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const i=this.registry[n];if(i){let n=i.parse(t,this);if(!n)return null;if(this.expectedType){const t=this.expectedType,i=n.type;if("string"!==t.kind&&"number"!==t.kind&&"boolean"!==t.kind&&"object"!==t.kind&&"array"!==t.kind||"value"!==i.kind)if("color"!==t.kind&&"formatted"!==t.kind&&"resolvedImage"!==t.kind||"value"!==i.kind&&"string"!==i.kind)if("padding"!==t.kind||"value"!==i.kind&&"number"!==i.kind&&"array"!==i.kind)if("variableAnchorOffsetCollection"!==t.kind||"value"!==i.kind&&"array"!==i.kind){if(this.checkSubtype(t,i))return null}else n=r(n,t,e.typeAnnotation||"coerce");else n=r(n,t,e.typeAnnotation||"coerce");else n=r(n,t,e.typeAnnotation||"coerce");else n=r(n,t,e.typeAnnotation||"assert");}if(!(n instanceof le)&&"resolvedImage"!==n.type.kind&&this._isConstant(n)){const t=new ye;try{n=new le(n.type,n.evaluate(t));}catch(t){return this.error(t.message),null}}return n}return this.error(`Unknown expression "${n}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(void 0===t?"'undefined' value invalid. Use null instead.":"object"==typeof t?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof t} instead.`)}concat(t,e,r){const n="number"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new me(this.registry,this._isConstant,n,e||null,i,this.errors)}error(t,...e){const r=`${this.key}${e.map((t=>`[${t}]`)).join("")}`;this.errors.push(new ut(r,t));}checkSubtype(t,e){const r=It(t,e);return r&&this.error(r),r}}class ge{constructor(t,e,r){this.type=xt,this.locale=r,this.caseSensitive=t,this.diacriticSensitive=e;}static parse(t,e){if(2!==t.length)return e.error("Expected one argument.");const r=t[1];if("object"!=typeof r||Array.isArray(r))return e.error("Collator options argument must be an object.");const n=e.parse(void 0!==r["case-sensitive"]&&r["case-sensitive"],1,dt);if(!n)return null;const i=e.parse(void 0!==r["diacritic-sensitive"]&&r["diacritic-sensitive"],1,dt);if(!i)return null;let a=null;return r.locale&&(a=e.parse(r.locale,1,ft),!a)?null:new ge(n,i,a)}evaluate(t){return new Ht(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)}eachChild(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);}outputDefined(){return !1}}const xe=8192;function ve(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1]);}function be(t,e){return !(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function we(t,e){const r=(180+t[0])/360,n=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,i=Math.pow(2,e.z);return [Math.round(r*i*xe),Math.round(n*i*xe)]}function _e(t,e,r){const n=t[0]-e[0],i=t[1]-e[1],a=t[0]-r[0],s=t[1]-r[1];return n*s-a*i==0&&n*a<=0&&i*s<=0}function Ae(t,e){let r=!1;for(let s=0,o=e.length;s<o;s++){const o=e[s];for(let e=0,s=o.length;e<s-1;e++){if(_e(t,o[e],o[e+1]))return !1;(i=o[e])[1]>(n=t)[1]!=(a=o[e+1])[1]>n[1]&&n[0]<(a[0]-i[0])*(n[1]-i[1])/(a[1]-i[1])+i[0]&&(r=!r);}}var n,i,a;return r}function Se(t,e){for(let r=0;r<e.length;r++)if(Ae(t,e[r]))return !0;return !1}function ke(t,e,r,n){const i=n[0]-r[0],a=n[1]-r[1],s=(t[0]-r[0])*a-i*(t[1]-r[1]),o=(e[0]-r[0])*a-i*(e[1]-r[1]);return s>0&&o<0||s<0&&o>0}function Ie(t,e,r){for(const u of r)for(let r=0;r<u.length-1;++r)if(0!=(o=[(s=u[r+1])[0]-(a=u[r])[0],s[1]-a[1]])[0]*(l=[(i=e)[0]-(n=t)[0],i[1]-n[1]])[1]-o[1]
vendor: 4,893 bytes, line 37
37*l[0]&&ke(n,i,a,s)&&ke(a,s,n,i))return !0;var n,i,a,s,o,l;return !1}function ze(t,e){for(let r=0;r<t.length;++r)if(!Ae(t[r],e))return !1;for(let r=0;r<t.length-1;++r)if(Ie(t[r],t[r+1],e))return !1;return !0}function Me(t,e){for(let r=0;r<e.length;r++)if(ze(t,e[r]))return !0;return !1}function Ce(t,e,r){const n=[];for(let i=0;i<t.length;i++){const a=[];for(let n=0;n<t[i].length;n++){const s=we(t[i][n],r);ve(e,s),a.push(s);}n.push(a);}return n}function Be(t,e,r){const n=[];for(let i=0;i<t.length;i++){const a=Ce(t[i],e,r);n.push(a);}return n}function Pe(t,e,r,n){if(t[0]<r[0]||t[0]>r[2]){const e=.5*n;let i=t[0]-r[0]>e?-n:r[0]-t[0]>e?n:0;0===i&&(i=t[0]-r[2]>e?-n:r[2]-t[0]>e?n:0),t[0]+=i;}ve(e,t);}function Ve(t,e,r,n){const i=Math.pow(2,n.z)*xe,a=[n.x*xe,n.y*xe],s=[];for(const n of t)for(const t of n){const n=[t.x+a[0],t.y+a[1]];Pe(n,e,r,i),s.push(n);}return s}function Ee(t,e,r,n){const i=Math.pow(2,n.z)*xe,a=[n.x*xe,n.y*xe],s=[];for(const r of t){const t=[];for(const n of r){const r=[n.x+a[0],n.y+a[1]];ve(e,r),t.push(r);}s.push(t);}if(e[2]-e[0]<=i/2){(o=e)[0]=o[1]=1/0,o[2]=o[3]=-1/0;for(const t of s)for(const n of t)Pe(n,e,r,i);}var o;return s}class Fe{constructor(t,e){this.type=dt,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(ae(t[1])){const e=t[1];if("FeatureCollection"===e.type)for(let t=0;t<e.features.length;++t){const r=e.features[t].geometry.type;if("Polygon"===r||"MultiPolygon"===r)return new Fe(e,e.features[t].geometry)}else if("Feature"===e.type){const t=e.geometry.type;if("Polygon"===t||"MultiPolygon"===t)return new Fe(e,e.geometry)}else if("Polygon"===e.type||"MultiPolygon"===e.type)return new Fe(e,e)}return e.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if("Point"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if("Polygon"===e.type){const a=Ce(e.coordinates,n,i),s=Ve(t.geometry(),r,n,i);if(!be(r,n))return !1;for(const t of s)if(!Ae(t,a))return !1}if("MultiPolygon"===e.type){const a=Be(e.coordinates,n,i),s=Ve(t.geometry(),r,n,i);if(!be(r,n))return !1;for(const t of s)if(!Se(t,a))return !1}return !0}(t,this.geometries);if("LineString"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if("Polygon"===e.type){const a=Ce(e.coordinates,n,i),s=Ee(t.geometry(),r,n,i);if(!be(r,n))return !1;for(const t of s)if(!ze(t,a))return !1}if("MultiPolygon"===e.type){const a=Be(e.coordinates,n,i),s=Ee(t.geometry(),r,n,i);if(!be(r,n))return !1;for(const t of s)if(!Me(t,a))return !1}return !0}(t,this.geometries)}return !1}eachChild(){}outputDefined(){return !0}}class Te{constructor(t,e){this.type=e.type,this.name=t,this.boundExpression=e;}static parse(t,e){if(2!==t.length||"string"!=typeof t[1])return e.error("'var' expression requires exactly one string literal argument.");const r=t[1];return e.scope.has(r)?new Te(r,e.scope.get(r)):e.error(`Unknown variable "${r}". Make sure "${r}" has been bound in an enclosing "let" expression before using it.`,1)}evaluate(t){return this.boundExpression.evaluate(t)}eachChild(){}outputDefined(){return !1}}class $e{constructor(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n;}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t);}outputDefined(){return !1}static parse(t,e){const r=t[0],n=$e.definitions[r];if(!n)return e.error(`Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`,0);const i=Array.isArray(n)?n[0]:n.type,a=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,s=a.filter((([e])=>!Array.isArray(e)||e.length===t.length-1));let o=null;for(const[n,a]of s){o=new me(e.registry,Le,e.path,null,e.scope);const s=[];let l=!1;for(let e=1;e<t.length;e++){const r=t[e],i=Array.isArray(n)?n[e-1]:n.type,a=o.parse(r,1+s.length,i);if(!a){l=!0;break}s.push(a);}if(!l)if(Array.isArray(n)&&n.length!==s.length)o.error(`Expected ${n.length} arguments, but found ${s.length} instead.`);else {for(let t=0;t<s.length;t++){const e=Array.isArray(n)?n[t]:n.type,r=s[t];o.concat(t+1).checkSubtype(e,r.type);}if(0===o.errors.length)return new $e(r,i,a,s)}}if(1===s.length)e.errors.push(...o.errors);else {const r=(s.length?s:a).map((([t])=>{return e=t,Array.isArray(e)?`(${e.map(St).join(", ")})`:`(${St(e.type)}...)`;var e;})).join(" | "),n=[];for(let r=1;r<t.length;r++){const i=e.parse(t[r],1+n.length);if(!i)return null;n.push(St(i.type));}e.error(`Expected arguments of type ${r}, but found (${n.join(", ")}) instead.`);}return null}static register(t,e){$e.definitions=e;for(const r in e)t[r]=$e;}}function Le(t){if(t instanceof Te)return Le(t.boundExpression);if(t instanceof $e&&"error"===t.name)return !1;
vendor: 5,291 bytes, line 37
37if(t instanceof ge)return !1;if(t instanceof Fe)return !1;const e=t instanceof fe||t instanceof he;let r=!0;return t.eachChild((t=>{r=e?r&&Le(t):r&&t instanceof le;})),!!r&&De(t)&&Ue(t,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function De(t){if(t instanceof $e){if("get"===t.name&&1===t.args.length)return !1;if("feature-state"===t.name)return !1;if("has"===t.name&&1===t.args.length)return !1;if("properties"===t.name||"geometry-type"===t.name||"id"===t.name)return !1;if(/^filter-/.test(t.name))return !1}if(t instanceof Fe)return !1;let e=!0;return t.eachChild((t=>{e&&!De(t)&&(e=!1);})),e}function Oe(t){if(t instanceof $e&&"feature-state"===t.name)return !1;let e=!0;return t.eachChild((t=>{e&&!Oe(t)&&(e=!1);})),e}function Ue(t,e){if(t instanceof $e&&e.indexOf(t.name)>=0)return !1;let r=!0;return t.eachChild((t=>{r&&!Ue(t,e)&&(r=!1);})),r}function Re(t,e){const r=t.length-1;let n,i,a=0,s=r,o=0;for(;a<=s;)if(o=Math.floor((a+s)/2),n=t[o],i=t[o+1],n<=e){if(o===r||e<i)return o;a=o+1;}else {if(!(n>e))throw new ue("Input is not a number.");s=o-1;}return 0}class qe{constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(const[t,e]of r)this.labels.push(t),this.outputs.push(e);}static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");const r=e.parse(t[1],1,pt);if(!r)return null;const n=[];let i=null;e.expectedType&&"value"!==e.expectedType.kind&&(i=e.expectedType);for(let r=1;r<t.length;r+=2){const a=1===r?-1/0:t[r],s=t[r+1],o=r,l=r+1;if("number"!=typeof a)return e.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.',o);if(n.length&&n[n.length-1][0]>=a)return e.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',o);const u=e.parse(s,l,i);if(!u)return null;i=i||u.type,n.push([a,u]);}return new qe(i,r,n)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Re(e,n)].evaluate(t)}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function je(t,e,r){return t+r*(e-t)}function Ne(t,e,r){return t.map(((t,n)=>je(t,e[n],r)))}const Ze={number:je,color:function(t,e,r,n="rgb"){switch(n){case"rgb":{const[n,i,a,s]=Ne(t.rgb,e.rgb,r);return new Yt(n,i,a,s,!1)}case"hcl":{const[n,i,a,s]=t.hcl,[o,l,u,c]=e.hcl;let h,p;if(isNaN(n)||isNaN(o))isNaN(n)?isNaN(o)?h=NaN:(h=o,1!==a&&0!==a||(p=l)):(h=n,1!==u&&0!==u||(p=i));else {let t=o-n;o>n&&t>180?t-=360:o<n&&n-o>180&&(t+=360),h=n+r*t;}const[f,d,y,m]=function([t,e,r,n]){return t=isNaN(t)?0:t*$t,qt([r,Math.cos(t)*e,Math.sin(t)*e,n])}([h,null!=p?p:je(i,l,r),je(a,u,r),je(s,c,r)]);return new Yt(f,d,y,m,!1)}case"lab":{const[n,i,a,s]=qt(Ne(t.lab,e.lab,r));return new Yt(n,i,a,s,!1)}}},array:Ne,padding:function(t,e,r){return new te(Ne(t.values,e.values,r))},variableAnchorOffsetCollection:function(t,e,r){const n=t.values,i=e.values;if(n.length!==i.length)throw new ue(`Cannot interpolate values of different length. from: ${t.toString()}, to: ${e.toString()}`);const a=[];for(let t=0;t<n.length;t+=2){if(n[t]!==i[t])throw new ue(`Cannot interpolate values containing mismatched anchors. from[${t}]: ${n[t]}, to[${t}]: ${i[t]}`);a.push(n[t]);const[e,s]=n[t+1],[o,l]=i[t+1];a.push([je(e,o,r),je(s,l,r)]);}return new re(a)}};class Ke{constructor(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(const[t,e]of i)this.labels.push(t),this.outputs.push(e);}static interpolationFactor(t,e,r,n){let i=0;if("exponential"===t.name)i=Ge(e,t.base,r,n);else if("linear"===t.name)i=Ge(e,1,r,n);else if("cubic-bezier"===t.name){const a=t.controlPoints;i=new l(a[0],a[1],a[2],a[3]).solve(Ge(e,1,r,n));}return i}static parse(t,e){let[r,n,i,...a]=t;if(!Array.isArray(n)||0===n.length)return e.error("Expected an interpolation type expression.",1);if("linear"===n[0])n={name:"linear"};else if("exponential"===n[0]){const t=n[1];if("number"!=typeof t)return e.error("Exponential interpolation requires a numeric base.",1,1);n={name:"exponential",base:t};}else {if("cubic-bezier"!==n[0])return e.error(`Unknown interpolation type ${String(n[0])}`,1,0);{const t=n.slice(1);if(4!==t.length||t.some((t=>"number"!=typeof t||t<0||t>1)))return e.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);n={name:"cubic-bezier",controlPoints:t};}}if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");if(i=e.parse(i,2,pt),!i)return null;const s=[];let o=null;"interpolate-hcl"===r||"interpolate-lab"===r?o=yt:e.expectedType&&"value"!==e.expectedType.kind&&(o=e.expectedType);for(let t=0;t<a.length;t+=2){const r=a[t],n=a[t+1],i=t+3,l=t+4;if("number"!=typeof r)return e.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not c
37omputed expressions) for the input values.',i);if(s.length&&s[s.length-1][0]>=r)return e.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',i);const u=e.parse(n,l,o);if(!u)return null;o=o||u.type,s.push([r,u]);}return Ct(o,pt)||Ct(o,yt)||Ct(o,bt)||Ct(o,_t)||Ct(o,At(pt))?new Ke(o,r,n,i,s):e.error(`Type ${St(o)} is not interpolatable.`)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);const a=Re(e,n),s=Ke.interpolationFactor(this.interpolation,n,e[a],e[a+1]),o=r[a].evaluate(t),l=r[a+1].evaluate(t);switch(this.operator){case"interpolate":return Ze[this.type.kind](o,l,s);case"interpolate-hcl":return Ze.color(o,l,s,"hcl");case"interpolate-lab":return Ze.color(o,l,s,"lab")}}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function Ge(t,e,r,n){const i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}class Je{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expectected at least one argument.");let r=null;const n=e.expectedType;n&&"value"!==n.kind&&(r=n);const i=[];for(const n of t.slice(1)){const t=e.parse(n,1+i.length,r,void 0,{typeAnnotation:"omit"});if(!t)return null;r=r||t.type,i.push(t);}if(!r)throw new Error("No output type");const a=n&&i.some((t=>It(n,t.type)));return new Je(a?gt:r,i)}evaluate(t){let e,r=null,n=0;for(const i of this.args)if(n++,r=i.evaluate(t),r&&r instanceof ne&&!r.available&&(e||(e=r.name),r=null,n===this.args.length&&(r=e)),null!==r)break;return r}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}class Xe{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e;}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result);}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const r=[];for(let n=1;n<t.length-1;n+=2){const i=t[n];if("string"!=typeof i)return e.error(`Expected string, but found ${typeof i} instead.`,n);if(/[^a-zA-Z0-9_]/.test(i))return e.error("Variable names must contain only alphanumeric characters or '_'.",n);const a=e.parse(t[n+1],n+1);if(!a)return null;r.push([i,a]);}const n=e.parse(t[t.length-1],t.length-1,e.expectedType,r);return n?new Xe(r,n):null}outputDefined(){return this.result.outputDefined()}}class Ye{constructor(t,e,r){this.type=t,this.index=e,this.input=r;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,pt),n=e.parse(t[2],2,At(e.expectedType||gt));return r&&n?new Ye(n.type.itemType,r,n):null}evaluate(t){const e=this.index.evaluate(t),r=this.input.evaluate(t);if(e<0)throw new ue(`Array index out of bounds: ${e} < 0.`);if(e>=r.length)throw new ue(`Array index out of bounds: ${e} > ${r.length-1}.`);if(e!==Math.floor(e))throw new ue(`Array index must be an integer, but found ${e} instead.`);return r[e]}eachChild(t){t(this.index),t(this.input);}outputDefined(){return !1}}class He{constructor(t,e){this.type=dt,this.needle=t,this.haystack=e;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,gt),n=e.parse(t[2],2,gt);return r&&n?zt(r.type,[dt,ft,pt,ht,gt])?new He(r,n):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${St(r.type)} instead`):null}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return !1;if(!Mt(e,["boolean","string","number","null"]))throw new ue(`Expected first argument to be of type boolean, string, number or null, but found ${St(se(e))} instead.`);if(!Mt(r,["string","array"]))throw new ue(`Expected second argument to be of type array or string, but found ${St(se(r))} instead.`);return r.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack);}outputDefined(){return !0}}class We{constructor(t,e,r){this.type=pt,this.needle=t,this.haystack=e,this.fromIndex=r;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,gt),n=e.parse(t[2],2,gt);if(!r||!n)return null;if(!zt(r.type,[dt,ft,pt,ht,gt]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${St(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,pt);return i?new We(r,n,i):null}return new We(r,n)}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Mt(e,["boolean","string","number","null"]))throw new ue(`Expected first argument to be of type boolean, string, number or null, but found ${St(se(e))} instead.`);if(!Mt(r,["string","array"]))throw new ue(`Expected second argument to be of type array or string, but found ${St(se(r))} instead.`);if(this.fromIndex){const n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex);}outputDefined(){return !1}}class Qe{constructor(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a;}static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return e.error("Expected an even number of arguments.");let r,n;e.expectedType&&"value"!==e.expectedType.kind&&(n=e.expectedType);const i={},a=[];for(let s=2;s<t.length-1;s+=2){let o=t[s];const l=t[s+1];Array.isArray(o)||(o=[o]);const u=e.concat(s);if(0===o.length)return u.error("Expected at least one branch label.");for(const t of o){if("number"!=typeof t&&"string"!=typeof t)return u.error("Branch labels must be numbers or strings.");if("number"==typeof t&&Math.abs(t)>Number.MAX_SAFE_INTEGER)return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if("number"==typeof t&&Math.floor(t)!==t)return u.error("Numeric branch labels must be integer values.");if(r){if(u.checkSubtype(r,se(t)))return null}else r=se(t);if(void 0!==i[String(t)])return u.error("Branch labels must be unique.");i[String(t)]=a.length;}const c=e.parse(l,s,n);if(!c)return null;n=n||c.type,a.push(c);}const s=e.parse(t[1],1,gt);if(!s)return null;const o=e.parse(t[t.length-1],t.length-1,n);return o?"value"!==s.type.kind&&e.concat(1).checkSubtype(r,s.type)?null:new Qe(r,n,s,i,a,o):null}evaluate(t){const e=this.input.evaluate(t);return (se(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}
vendor: 38,263 bytes, line 37
37eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))&&this.otherwise.outputDefined()}}class tr{constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r;}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error("Expected an odd number of arguments.");let r;e.expectedType&&"value"!==e.expectedType.kind&&(r=e.expectedType);const n=[];for(let i=1;i<t.length-1;i+=2){const a=e.parse(t[i],i,dt);if(!a)return null;const s=e.parse(t[i+1],i+1,r);if(!s)return null;n.push([a,s]),r=r||s.type;}const i=e.parse(t[t.length-1],t.length-1,r);if(!i)return null;if(!r)throw new Error("Can't infer output type");return new tr(r,n,i)}evaluate(t){for(const[e,r]of this.branches)if(e.evaluate(t))return r.evaluate(t);return this.otherwise.evaluate(t)}eachChild(t){for(const[e,r]of this.branches)t(e),t(r);t(this.otherwise);}outputDefined(){return this.branches.every((([t,e])=>e.outputDefined()))&&this.otherwise.outputDefined()}}class er{constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=n;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,gt),n=e.parse(t[2],2,pt);if(!r||!n)return null;if(!zt(r.type,[At(gt),ft,gt]))return e.error(`Expected first argument to be of type array or string, but found ${St(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,pt);return i?new er(r.type,r,n,i):null}return new er(r.type,r,n)}evaluate(t){const e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Mt(e,["string","array"]))throw new ue(`Expected first argument to be of type array or string, but found ${St(se(e))} instead.`);if(this.endIndex){const n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex);}outputDefined(){return !1}}function rr(t,e){return "=="===t||"!="===t?"boolean"===e.kind||"string"===e.kind||"number"===e.kind||"null"===e.kind||"value"===e.kind:"string"===e.kind||"number"===e.kind||"value"===e.kind}function nr(t,e,r,n){return 0===n.compare(e,r)}function ir(t,e,r){const n="=="!==t&&"!="!==t;return class i{constructor(t,e,r){this.type=dt,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument="value"===t.type.kind||"value"===e.type.kind;}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error("Expected two or three arguments.");const r=t[0];let a=e.parse(t[1],1,gt);if(!a)return null;if(!rr(r,a.type))return e.concat(1).error(`"${r}" comparisons are not supported for type '${St(a.type)}'.`);let s=e.parse(t[2],2,gt);if(!s)return null;if(!rr(r,s.type))return e.concat(2).error(`"${r}" comparisons are not supported for type '${St(s.type)}'.`);if(a.type.kind!==s.type.kind&&"value"!==a.type.kind&&"value"!==s.type.kind)return e.error(`Cannot compare types '${St(a.type)}' and '${St(s.type)}'.`);n&&("value"===a.type.kind&&"value"!==s.type.kind?a=new he(s.type,[a]):"value"!==a.type.kind&&"value"===s.type.kind&&(s=new he(a.type,[s])));let o=null;if(4===t.length){if("string"!==a.type.kind&&"string"!==s.type.kind&&"value"!==a.type.kind&&"value"!==s.type.kind)return e.error("Cannot use collator to compare non-string types.");if(o=e.parse(t[3],3,xt),!o)return null}return new i(a,s,o)}evaluate(i){const a=this.lhs.evaluate(i),s=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){const e=se(a),r=se(s);if(e.kind!==r.kind||"string"!==e.kind&&"number"!==e.kind)throw new ue(`Expected arguments for "${t}" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`)}if(this.collator&&!n&&this.hasUntypedArgument){const t=se(a),r=se(s);if("string"!==t.kind||"string"!==r.kind)return e(i,a,s)}return this.collator?r(i,a,s,this.collator.evaluate(i)):e(i,a,s)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator);}outputDefined(){return !0}}}const ar=ir("==",(function(t,e,r){return e===r}),nr),sr=ir("!=",(function(t,e,r){return e!==r}),(function(t,e,r,n){return !nr(0,e,r,n)})),or=ir("<",(function(t,e,r){return e<r}),(function(t,e,r,n){return n.compare(e,r)<0})),lr=ir(">",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),ur=ir("<=",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),cr=ir(">=",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0}));class hr{constructor(t,e,r,n,i){this.type=ft,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i;}static parse(t,e){if(3!==t.length)return e.error("Expected two arguments.");const r=e.parse(t[1],1,pt);if(!r)return null;const n=t[2];if("object"!=typeof n||Array.isArray(n))return e.error("NumberFormat options argument must be an object.");let i=null;if(n.locale&&(i=e.parse(n.locale,1,ft),!i))return null;let a=null;if(n.currency&&(a=e.parse(n.currency,1,ft),!a))return null;let s=null;if(n["min-fraction-digits"]&&(s=e.parse(n["min-fraction-digits"],1,pt),!s))return null;let o=null;return n["max-fraction-digits"]&&(o=e.parse(n["max-fraction-digits"],1,pt),!o)?null:new hr(r,i,a,s,o)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);}outputDefined(){return !1}}class pr{constructor(t){this.type=vt,this.sections=t;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const r=t[1];if(!Array.isArray(r)&&"object"==typeof r)return e.error("First argument must be an image or text section.");const n=[];let i=!1;for(let r=1;r<=t.length-1;++r){const a=t[r];if(i&&"object"==typeof a&&!Array.isArray(a)){i=!1;let t=null;if(a["font-scale"]&&(t=e.parse(a["font-scale"],1,pt),!t))return null;let r=null;if(a["text-font"]&&(r=e.parse(a["text-font"],1,At(ft)),!r))return null;let s=null;if(a["text-color"]&&(s=e.parse(a["text-color"],1,yt),!s))return null;const o=n[n.length-1];o.scale=t,o.font=r,o.textColor=s;}else {const a=e.parse(t[r],1,gt);if(!a)return null;const s=a.type.kind;if("string"!==s&&"value"!==s&&"null"!==s&&"resolvedImage"!==s)return e.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");i=!0,n.push({content:a,scale:null,font:null,textColor:null});}}return new pr(n)}evaluate(t){return new Qt(this.sections.map((e=>{const r=e.content.evaluate(t);return se(r)===wt?new Wt("",r,null,null,null):new Wt(oe(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(","):null,e.textColor?e.textColor.evaluate(t):null)})))}eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor);}outputDefined(){return !1}}class fr{constructor(t){this.type=wt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error("Expected two arguments.");const r=e.parse(t[1],1,ft);return r?new fr(r):e.error("No image name provided.")}evaluate(t){const e=this.input.evaluate(t),r=ne.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r}eachChild(t){t(this.input);}outputDefined(){return !1}}class dr{constructor(t){this.type=pt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const r=e.parse(t[1],1);return r?"array"!==r.type.kind&&"string"!==r.type.kind&&"value"!==r.type.kind?e.error(`Expected argument of type string or array, but found ${St(r.type)} instead.`):new dr(r):null}evaluate(t){const e=this.input.evaluate(t);if("string"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ue(`Expected value to be of type string or array, but found ${St(se(e))} instead.`)}eachChild(t){t(this.input);}outputDefined(){return !1}}const yr={"==":ar,"!=":sr,">":lr,"<":or,">=":cr,"<=":ur,array:he,at:Ye,boolean:he,case:tr,coalesce:Je,collator:ge,format:pr,image:fr,in:He,"index-of":We,interpolate:Ke,"interpolate-hcl":Ke,"interpolate-lab":Ke,length:dr,let:Xe,literal:le,match:Qe,number:he,"number-format":hr,object:he,slice:er,step:qe,string:he,"to-boolean":fe,"to-color":fe,"to-number":fe,"to-string":fe,var:Te,within:Fe};function mr(t,[e,r,n,i]){e=e.evaluate(t),r=r.evaluate(t),n=n.evaluate(t);const a=i?i.evaluate(t):1,s=ie(e,r,n,a);if(s)throw new ue(s);return new Yt(e/255,r/255,n/255,a,!1)}function gr(t,e){return t in e}function xr(t,e){const r=e[t];return void 0===r?null:r}function vr(t){return {type:t}}function br(t){return {result:"success",value:t}}function wr(t){return {result:"error",value:t}}function _r(t){return "data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function Ar(t){return !!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function Sr(t){return !!t.expression&&t.expression.interpolated}function kr(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}function Ir(t){return "object"==typeof t&&null!==t&&!Array.isArray(t)}function zr(t){return t}function Mr(t,e){const r="color"===e.type,n=t.stops&&"object"==typeof t.stops[0][0],i=n||!(n||void 0!==t.property),a=t.type||(Sr(e)?"exponential":"interval");if(r||"padding"===e.type){const n=r?Yt.parse:te.parse;(t=lt({},t)).stops&&(t.stops=t.stops.map((t=>[t[0],n(t[1])]))),t.default=n(t.default?t.default:e.default);}if(t.colorSpace&&"rgb"!==(s=t.colorSpace)&&"hcl"!==s&&"lab"!==s)throw new Error(`Unknown color space: "${t.colorSpace}"`);var s;let o,l,u;if("exponential"===a)o=Vr;else if("interval"===a)o=Pr;else if("categorical"===a){o=Br,l=Object.create(null);for(const e of t.stops)l[e[0]]=e[1];u=typeof t.stops[0][0];}else {if("identity"!==a)throw new Error(`Unknown function type "${a}"`);o=Er;}if(n){const r={},n=[];for(let e=0;e<t.stops.length;e++){const i=t.stops[e],a=i[0].zoom;void 0===r[a]&&(r[a]={zoom:a,type:t.type,property:t.property,default:t.default,stops:[]},n.push(a)),r[a].stops.push([i[0].value,i[1]]);}const i=[];for(const t of n)i.push([r[t].zoom,Mr(r[t],e)]);const a={name:"linear"};return {kind:"composite",interpolationType:a,interpolationFactor:Ke.interpolationFactor.bind(void 0,a),zoomStops:i.map((t=>t[0])),evaluate:({zoom:r},n)=>Vr({stops:i,base:t.base},e,r).evaluate(r,n)}}if(i){const r="exponential"===a?{name:"exponential",base:void 0!==t.base?t.base:1}:null;return {kind:"camera",interpolationType:r,interpolationFactor:Ke.interpolationFactor.bind(void 0,r),zoomStops:t.stops.map((t=>t[0])),evaluate:({zoom:r})=>o(t,e,r,l,u)}}return {kind:"source",evaluate(r,n){const i=n&&n.properties?n.properties[t.property]:void 0;return void 0===i?Cr(t.default,e.default):o(t,e,i,l,u)}}}function Cr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Br(t,e,r,n,i){return Cr(typeof r===i?n[r]:void 0,t.default,e.default)}function Pr(t,e,r){if("number"!==kr(r))return Cr(t.default,e.default);const n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];const i=Re(t.stops.map((t=>t[0])),r);return t.stops[i][1]}function Vr(t,e,r){const n=void 0!==t.base?t.base:1;if("number"!==kr(r))return Cr(t.default,e.default);const i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];const a=Re(t.stops.map((t=>t[0])),r),s=function(t,e,r,n){const i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),o=t.stops[a][1],l=t.stops[a+1][1],u=Ze[e.type]||zr;return "function"==typeof o.evaluate?{evaluate(...e){const r=o.evaluate.apply(void 0,e),n=l.evaluate.apply(void 0,e);if(void 0!==r&&void 0!==n)return u(r,n,s,t.colorSpace)}}:u(o,l,s,t.colorSpace)}function Er(t,e,r){switch(e.type){case"color":r=Yt.parse(r);break;case"formatted":r=Qt.fromString(r.toString());break;case"resolvedImage":r=ne.fromString(r.toString());break;case"padding":r=te.parse(r);break;default:kr(r)===e.type||"enum"===e.type&&e.values[r]||(r=void 0);}return Cr(r,t.default,e.default)}$e.register(yr,{error:[{kind:"error"},[ft],(t,[e])=>{throw new ue(e.evaluate(t))}],typeof:[ft,[gt],(t,[e])=>St(se(e.evaluate(t)))],"to-rgba":[At(pt,4),[yt],(t,[e])=>{const[r,n,i,a]=e.evaluate(t).rgb;return [255*r,255*n,255*i,a]}],rgb:[yt,[pt,pt,pt],mr],rgba:[yt,[pt,pt,pt,pt],mr],has:{type:dt,overloads:[[[ft],(t,[e])=>gr(e.evaluate(t),t.properties())],[[ft,mt],(t,[e,r])=>gr(e.evaluate(t),r.evaluate(t))]]},get:{type:gt,overloads:[[[ft],(t,[e])=>xr(e.evaluate(t),t.properties())],[[ft,mt],(t,[e,r])=>xr(e.evaluate(t),r.evaluate(t))]]},"feature-state":[gt,[ft],(t,[e])=>xr(e.evaluate(t),t.featureState||{})],properties:[mt,[],t=>t.properties()],"geometry-type":[ft,[],t=>t.geometryType()],id:[gt,[],t=>t.id()],zoom:[pt,[],t=>t.globals.zoom],"heatmap-density":[pt,[],t=>t.globals.heatmapDensity||0],"line-progress":[pt,[],t=>t.globals.lineProgress||0],accumulated:[gt,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],"+":[pt,vr(pt),(t,e)=>{let r=0;for(const n of e)r+=n.evaluate(t);return r}],"*":[pt,vr(pt),(t,e)=>{let r=1;for(const n of e)r*=n.evaluate(t);return r}],"-":{type:pt,overloads:[[[pt,pt],(t,[e,r])=>e.evaluate(t)-r.evaluate(t)],[[pt],(t,[e])=>-e.evaluate(t)]]},"/":[pt,[pt,pt],(t,[e,r])=>e.evaluate(t)/r.evaluate(t)],"%":[pt,[pt,pt],(t,[e,r])=>e.evaluate(t)%r.evaluate(t)],ln2:[pt,[],()=>Math.LN2],pi:[pt,[],()=>Math.PI],e:[pt,[],()=>Math.E],"^":[pt,[pt,pt],(t,[e,r])=>Math.pow(e.evaluate(t),r.evaluate(t))],sqrt:[pt,[pt],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[pt,[pt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[pt,[pt],(t,[e])=>Math.log(e.evaluate(t))],log2:[pt,[pt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[pt,[pt],(t,[e])=>Math.sin(e.evaluate(t))],cos:[pt,[pt],(t,[e])=>Math.cos(e.evaluate(t))],tan:[pt,[pt],(t,[e])=>Math.tan(e.evaluate(t))],asin:[pt,[pt],(t,[e])=>Math.asin(e.evaluate(t))],acos:[pt,[pt],(t,[e])=>Math.acos(e.evaluate(t))],atan:[pt,[pt],(t,[e])=>Math.atan(e.evaluate(t))],min:[pt,vr(pt),(t,e)=>Math.min(...e.map((e=>e.evaluate(t))))],max:[pt,vr(pt),(t,e)=>Math.max(...e.map((e=>e.evaluate(t))))],abs:[pt,[pt],(t,[e])=>Math.abs(e.evaluate(t))],round:[pt,[pt],(t,[e])=>{const r=e.evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[pt,[pt],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[pt,[pt],(t,[e])=>Math.ceil(e.evaluate(t))],"filter-==":[dt,[ft,gt],(t,[e,r])=>t.properties()[e.value]===r.value],"filter-id-==":[dt,[gt],(t,[e])=>t.id()===e.value],"filter-type-==":[dt,[ft],(t,[e])=>t.geometryType()===e.value],"filter-<":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<i}],"filter-id-<":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<n}],"filter->":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>i}],"filter-id->":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>n}],"filter-<=":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<=i}],"filter-id-<=":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<=n}],"filter->=":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>=i}],"filter-id->=":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>=n}],"filter-has":[dt,[gt],(t,[e])=>e.value in t.properties()],"filter-has-id":[dt,[],t=>null!==t.id()&&void 0!==t.id()],"filter-type-in":[dt,[At(ft)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],"filter-id-in":[dt,[At(gt)],(t,[e])=>e.value.indexOf(t.id())>=0],"filter-in-small":[dt,[ft,At(gt)],(t,[e,r])=>r.value.indexOf(t.properties()[e.value])>=0],"filter-in-large":[dt,[ft,At(gt)],(t,[e,r])=>function(t,e,r,n){for(;r<=n;){const i=r+n>>1;if(e[i]===t)return !0;e[i]>t?n=i-1:r=i+1;}return !1}(t.properties()[e.value],r.value,0,r.value.length-1)],all:{type:dt,overloads:[[[dt,dt],(t,[e,r])=>e.evaluate(t)&&r.evaluate(t)],[vr(dt),(t,e)=>{for(const r of e)if(!r.evaluate(t))return !1;return !0}]]},any:{type:dt,overloads:[[[dt,dt],(t,[e,r])=>e.evaluate(t)||r.evaluate(t)],[vr(dt),(t,e)=>{for(const r of e)if(r.evaluate(t))return !0;return !1}]]},"!":[dt,[dt],(t,[e])=>!e.evaluate(t)],"is-supported-script":[dt,[ft],(t,[e])=>{const r=t.globals&&t.globals.isSupportedScript;return !r||r(e.evaluate(t))}],upcase:[ft,[ft],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[ft,[ft],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[ft,vr(gt),(t,e)=>e.map((e=>oe(e.evaluate(t)))).join("")],"resolved-locale":[ft,[xt],(t,[e])=>e.evaluate(t).resolvedLocale()]});class Fr{constructor(t,e){var r;this.expression=t,this._warningHistory={},this._evaluator=new ye,this._defaultValue=e?"color"===(r=e).type&&Ir(r.default)?new Yt(0,0,0,0):"color"===r.type?Yt.parse(r.default)||null:"padding"===r.type?te.parse(r.default)||null:"variableAnchorOffsetCollection"===r.type?re.parse(r.default)||null:void 0===r.default?null:r.default:null,this._enumValues=e&&"enum"===e.type?e.values:null;}evaluateWithoutErrorHandling(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)}evaluate(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{const t=this.expression.evaluate(this._evaluator);if(null==t||"number"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new ue(`Expected value to be one of ${Object.keys(this._enumValues).map((t=>JSON.stringify(t))).join(", ")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,"undefined"!=typeof console&&console.warn(t.message)),this._defaultValue}}}function Tr(t){return Array.isArray(t)&&t.length>0&&"string"==typeof t[0]&&t[0]in yr}function $r(t,e){const r=new me(yr,Le,[],e?function(t){const e={color:yt,string:ft,number:pt,enum:ft,boolean:dt,formatted:vt,padding:bt,resolvedImage:wt,variableAnchorOffsetCollection:_t};return "array"===t.type?At(e[t.value]||gt,t.length):e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&"string"===e.type?{typeAnnotation:"coerce"}:void 0);return n?br(new Fr(n,e)):wr(r.errors)}class Lr{constructor(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent="constant"!==t&&!Oe(e.expression);}evaluateWithoutErrorHandling(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)}evaluate(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)}}class Dr{constructor(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent="camera"!==t&&!Oe(e.expression),this.interpolationType=n;}evaluateWithoutErrorHandling(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)}evaluate(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)}interpolationFactor(t,e,r){return this.interpolationType?Ke.interpolationFactor(this.interpolationType,t,e,r):0}}function Or(t,e){const r=$r(t,e);if("error"===r.result)return r;const n=r.value.expression,i=De(n);if(!i&&!_r(e))return wr([new ut("","data expressions not supported")]);const a=Ue(n,["zoom"]);if(!a&&!Ar(e))return wr([new ut("","zoom expressions not supported")]);const s=Rr(n);return s||a?s instanceof ut?wr([s]):s instanceof Ke&&!Sr(e)?wr([new ut("",'"interpolate" expressions cannot be used with this property')]):br(s?new Dr(i?"camera":"composite",r.value,s.labels,s instanceof Ke?s.interpolation:void 0):new Lr(i?"constant":"source",r.value)):wr([new ut("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class Ur{constructor(t,e){this._parameters=t,this._specification=e,lt(this,Mr(this._parameters,this._specification));}static deserialize(t){return new Ur(t._parameters,t._specification)}static serialize(t){return {_parameters:t._parameters,_specification:t._specification}}}function Rr(t){let e=null;if(t instanceof Xe)e=Rr(t.result);else if(t instanceof Je){for(const r of t.args)if(e=Rr(r),e)break}else (t instanceof qe||t instanceof Ke)&&t.input instanceof $e&&"zoom"===t.input.name&&(e=t);return e instanceof ut||t.eachChild((t=>{const r=Rr(t);r instanceof ut?e=r:!e&&r?e=new ut("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&r&&e!==r&&(e=new ut("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'));})),e}function qr(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.length)return !1;switch(t[0]){case"has":return t.length>=2&&"$id"!==t[1]&&"$type"!==t[1];case"in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case"!in":case"!has":case"none":return !1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case"any":case"all":for(const e of t.slice(1))if(!qr(e)&&"boolean"!=typeof e)return !1;return !0;default:return !0}}const jr={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Nr(t){if(null==t)return {filter:()=>!0,needGeometry:!1};qr(t)||(t=Gr(t));const e=$r(t,jr);if("error"===e.result)throw new Error(e.value.map((t=>`${t.key}: ${t.message}`)).join(", "));return {filter:(t,r,n)=>e.value.evaluate(t,r,{},n),needGeometry:Kr(t)}}function Zr(t,e){return t<e?-1:t>e?1:0}function Kr(t){if(!Array.isArray(t))return !1;if("within"===t[0])return !0;for(let e=1;e<t.length;e++)if(Kr(t[e]))return !0;return !1}function Gr(t){if(!t)return !0;const e=t[0];return t.length<=1?"any"!==e:"=="===e?Jr(t[1],t[2],"=="):"!="===e?Hr(Jr(t[1],t[2],"==")):"<"===e||">"===e||"<="===e||">="===e?Jr(t[1],t[2],e):"any"===e?(r=t.slice(1),["any"].concat(r.map(Gr))):"all"===e?["all"].concat(t.slice(1).map(Gr)):"none"===e?["all"].concat(t.slice(1).map(Gr).map(Hr)):"in"===e?Xr(t[1],t.slice(2)):"!in"===e?Hr(Xr(t[1],t.slice(2))):"has"===e?Yr(t[1]):"!has"===e?Hr(Yr(t[1])):"within"!==e||t;var r;}function Jr(t,e,r){switch(t){case"$type":return [`filter-type-${r}`,e];case"$id":return [`filter-id-${r}`,e];default:return [`filter-${r}`,t,e]}}function Xr(t,e){if(0===e.length)return !1;switch(t){case"$type":return ["filter-type-in",["literal",e]];case"$id":return ["filter-id-in",["literal",e]];default:return e.length>200&&!e.some((t=>typeof t!=typeof e[0]))?["filter-in-large",t,["literal",e.sort(Zr)]]:["filter-in-small",t,["literal",e]]}}function Yr(t){switch(t){case"$type":return !0;case"$id":return ["filter-has-id"];default:return ["filter-has",t]}}function Hr(t){return ["!",t]}function Wr(t){const e=typeof t;if("number"===e||"boolean"===e||"string"===e||null==t)return JSON.stringify(t);if(Array.isArray(t)){let e="[";for(const r of t)e+=`${Wr(r)},`;return `${e}]`}const r=Object.keys(t).sort();let n="{";for(let e=0;e<r.length;e++)n+=`${JSON.stringify(r[e])}:${Wr(t[r[e]])},`;return `${n}}`}function Qr(t){let e="";for(const r of Y)e+=`/${Wr(t[r])}`;return e}function tn(t){const e=t.value;return e?[new ot(t.key,e,"constants have been deprecated as of v8")]:[]}function en(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function rn(t){if(Array.isArray(t))return t.map(rn);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){const e={};for(const r in t)e[r]=rn(t[r]);return e}return en(t)}function nn(t){const e=t.key,r=t.value,n=t.valueSpec||{},i=t.objectElementValidators||{},a=t.style,s=t.styleSpec,o=t.validateSpec;let l=[];const u=kr(r);if("object"!==u)return [new ot(e,r,`object expected, ${u} found`)];for(const t in r){const u=t.split(".")[0],c=n[u]||n["*"];let h;if(i[u])h=i[u];else if(n[u])h=o;else if(i["*"])h=i["*"];else {if(!n["*"]){l.push(new ot(e,r[t],`unknown property "${t}"`));continue}h=o;}l=l.concat(h({key:(e?`${e}.`:e)+t,value:r[t],valueSpec:c,style:a,styleSpec:s,object:r,objectKey:t,validateSpec:o},r));}for(const t in n)i[t]||n[t].required&&void 0===n[t].default&&void 0===r[t]&&l.push(new ot(e,r,`missing required property "${t}"`));return l}function an(t){const e=t.value,r=t.valueSpec,n=t.style,i=t.styleSpec,a=t.key,s=t.arrayElementValidator||t.validateSpec;if("array"!==kr(e))return [new ot(a,e,`array expected, ${kr(e)} found`)];if(r.length&&e.length!==r.length)return [new ot(a,e,`array length ${r.length} expected, length ${e.length} found`)];if(r["min-length"]&&e.length<r["min-length"])return [new ot(a,e,`array length at least ${r["min-length"]} expected, length ${e.length} found`)];let o={type:r.value,values:r.values};i.$version<7&&(o.function=r.function),"object"===kr(r.value)&&(o=r.value);let l=[];for(let r=0;r<e.length;r++)l=l.concat(s({array:e,arrayIndex:r,value:e[r],valueSpec:o,validateSpec:t.validateSpec,style:n,styleSpec:i,key:`${a}[${r}]`}));return l}function sn(t){const e=t.key,r=t.value,n=t.valueSpec;let i=kr(r);return "number"===i&&r!=r&&(i="NaN"),"number"!==i?[new ot(e,r,`number expected, ${i} found`)]:"minimum"in n&&r<n.minimum?[new ot(e,r,`${r} is less than the minimum value ${n.minimum}`)]:"maximum"in n&&r>n.maximum?[new ot(e,r,`${r} is greater than the maximum value ${n.maximum}`)]:[]}function on(t){const e=t.valueSpec,r=en(t.value.type);let n,i,a,s={};const o="categorical"!==r&&void 0===t.value.property,l=!o,u="array"===kr(t.value.stops)&&"array"===kr(t.value.stops[0])&&"object"===kr(t.value.stops[0][0]),c=nn({key:t.key,value:t.value,valueSpec:t.styleSpec.function,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if("identity"===r)return [new ot(t.key,t.value,'identity function may not have a "stops" property')];let e=[];const n=t.value;return e=e.concat(an({key:t.key,value:n,valueSpec:t.valueSpec,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),"array"===kr(n)&&0===n.length&&e.push(new ot(t.key,n,"array must have at least one stop")),e},default:function(t){return t.validateSpec({key:t.key,value:t.value,valueSpec:e,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec})}}});return "identity"===r&&o&&c.push(new ot(t.key,t.value,'missing required property "property"')),"identity"===r||t.value.stops||c.push(new ot(t.key,t.value,'missing required property "stops"')),"exponential"===r&&t.valueSpec.expression&&!Sr(t.valueSpec)&&c.push(new ot(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(l&&!_r(t.valueSpec)?c.push(new ot(t.key,t.value,"property functions not supported")):o&&!Ar(t.valueSpec)&&c.push(new ot(t.key,t.value,"zoom functions not supported"))),"categorical"!==r&&!u||void 0!==t.value.property||c.push(new ot(t.key,t.value,'"property" property is required')),c;function h(t){let r=[];const n=t.value,o=t.key;if("array"!==kr(n))return [new ot(o,n,`array expected, ${kr(n)} found`)];if(2!==n.length)return [new ot(o,n,`array length 2 expected, length ${n.length} found`)];if(u){if("object"!==kr(n[0]))return [new ot(o,n,`object expected, ${kr(n[0])} found`)];if(void 0===n[0].zoom)return [new ot(o,n,"object stop key must have zoom")];if(void 0===n[0].value)return [new ot(o,n,"object stop key must have value")];if(a&&a>en(n[0].zoom))return [new ot(o,n[0].zoom,"stop zoom values must appear in ascending order")];en(n[0].zoom)!==a&&(a=en(n[0].zoom),i=void 0,s={}),r=r.concat(nn({key:`${o}[0]`,value:n[0],valueSpec:{zoom:{}},validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:sn,value:p}}));}else r=r.concat(p({key:`${o}[0]`,value:n[0],valueSpec:{},validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec},n));return Tr(rn(n[1]))?r.concat([new ot(`${o}[1]`,n[1],"expressions are not allowed in function stops.")]):r.concat(t.validateSpec({key:`${o}[1]`,value:n[1],valueSpec:e,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec}))}function p(t,a){const o=kr(t.value),l=en(t.value),u=null!==t.value?t.value:a;if(n){if(o!==n)return [new ot(t.key,u,`${o} stop domain type must match previous stop domain type ${n}`)]}else n=o;if("number"!==o&&"string"!==o&&"boolean"!==o)return [new ot(t.key,u,"stop domain value must be a number, string, or boolean")];if("number"!==o&&"categorical"!==r){let n=`number expected, ${o} found`;return _r(e)&&void 0===r&&(n+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new ot(t.key,u,n)]}return "categorical"!==r||"number"!==o||isFinite(l)&&Math.floor(l)===l?"categorical"!==r&&"number"===o&&void 0!==i&&l<i?[new ot(t.key,u,"stop domain values must appear in ascending order")]:(i=l,"categorical"===r&&l in s?[new ot(t.key,u,"stop domain values must be unique")]:(s[l]=!0,[])):[new ot(t.key,u,`integer expected, found ${l}`)]}}function ln(t){const e=("property"===t.expressionContext?Or:$r)(rn(t.value),t.valueSpec);if("error"===e.result)return e.value.map((e=>new ot(`${t.key}${e.key}`,t.value,e.message)));const r=e.value.expression||e.value._styleExpression.expression;if("property"===t.expressionContext&&"text-font"===t.propertyKey&&!r.outputDefined())return [new ot(t.key,t.value,`Invalid data expression for "${t.propertyKey}". Output values must be contained as literals within the expression.`)];if("property"===t.expressionContext&&"layout"===t.propertyType&&!Oe(r))return [new ot(t.key,t.value,'"feature-state" data expressions are not supported with layout properties.')];if("filter"===t.expressionContext&&!Oe(r))return [new ot(t.key,t.value,'"feature-state" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf("cluster")){if(!Ue(r,["zoom","feature-state"]))return [new ot(t.key,t.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if("cluster-initial"===t.expressionContext&&!De(r))return [new ot(t.key,t.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return []}function un(t){const e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(en(r))&&i.push(new ot(e,r,`expected one of [${n.values.join(", ")}], ${JSON.stringify(r)} found`)):-1===Object.keys(n.values).indexOf(en(r))&&i.push(new ot(e,r,`expected one of [${Object.keys(n.values).join(", ")}], ${JSON.stringify(r)} found`)),i}function cn(t){return qr(rn(t.value))?ln(lt({},t,{expressionContext:"filter",valueSpec:{value:"boolean"}})):hn(t)}function hn(t){const e=t.value,r=t.key;if("array"!==kr(e))return [new ot(r,e,`array expected, ${kr(e)} found`)];const n=t.styleSpec;let i,a=[];if(e.length<1)return [new ot(r,e,"filter array must have at least 1 element")];switch(a=a.concat(un({key:`${r}[0]`,value:e[0],valueSpec:n.filter_operator,style:t.style,styleSpec:t.styleSpec})),en(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&"$type"===en(e[1])&&a.push(new ot(r,e,`"$type" cannot be use with operator "${e[0]}"`));case"==":case"!=":3!==e.length&&a.push(new ot(r,e,`filter array for operator "${e[0]}" must have 3 elements`));case"in":case"!in":e.length>=2&&(i=kr(e[1]),"string"!==i&&a.push(new ot(`${r}[1]`,e[1],`string expected, ${i} found`)));for(let s=2;s<e.length;s++)i=kr(e[s]),"$type"===en(e[1])?a=a.concat(un({key:`${r}[${s}]`,value:e[s],valueSpec:n.geometry_type,style:t.style,styleSpec:t.styleSpec})):"string"!==i&&"number"!==i&&"boolean"!==i&&a.push(new ot(`${r}[${s}]`,e[s],`string, number, or boolean expected, ${i} found`));break;case"any":case"all":case"none":for(let n=1;n<e.length;n++)a=a.concat(hn({key:`${r}[${n}]`,value:e[n],style:t.style,styleSpec:t.styleSpec}));break;case"has":case"!has":i=kr(e[1]),2!==e.length?a.push(new ot(r,e,`filter array for "${e[0]}" operator must have 2 elements`)):"string"!==i&&a.push(new ot(`${r}[1]`,e[1],`string expected, ${i} found`));break;case"within":i=kr(e[1]),2!==e.length?a.push(new ot(r,e,`filter array for "${e[0]}" operator must have 2 elements`)):"object"!==i&&a.push(new ot(`${r}[1]`,e[1],`object expected, ${i} found`));}return a}function pn(t,e){const r=t.key,n=t.validateSpec,i=t.style,a=t.styleSpec,s=t.value,o=t.objectKey,l=a[`${e}_${t.layerType}`];if(!l)return [];const u=o.match(/^(.*)-transition$/);if("paint"===e&&u&&l[u[1]]&&l[u[1]].transition)return n({key:r,value:s,valueSpec:a.transition,style:i,styleSpec:a});const c=t.valueSpec||l[o];if(!c)return [new ot(r,s,`unknown property "${o}"`)];let h;if("string"===kr(s)&&_r(c)&&!c.tokens&&(h=/^{([^}]+)}$/.exec(s)))return [new ot(r,s,`"${o}" does not support interpolation syntax\nUse an identity property function instead: \`{ "type": "identity", "property": ${JSON.stringify(h[1])} }\`.`)];const p=[];return "symbol"===t.layerType&&("text-field"===o&&i&&!i.glyphs&&p.push(new ot(r,s,'use of "text-field" requires a style "glyphs" property')),"text-font"===o&&Ir(rn(s))&&"identity"===en(s.type)&&p.push(new ot(r,s,'"text-font" does not support identity functions'))),p.concat(n({key:t.key,value:s,valueSpec:c,style:i,styleSpec:a,expressionContext:"property",propertyType:e,propertyKey:o}))}function fn(t){return pn(t,"paint")}function dn(t){return pn(t,"layout")}function yn(t){let e=[];const r=t.value,n=t.key,i=t.style,a=t.styleSpec;r.type||r.ref||e.push(new ot(n,r,'either "type" or "ref" is required'));let s=en(r.type);const o=en(r.ref);if(r.id){const a=en(r.id);for(let s=0;s<t.arrayIndex;s++){const t=i.layers[s];en(t.id)===a&&e.push(new ot(n,r.id,`duplicate layer id "${r.id}", previously used at line ${t.id.__line__}`));}}if("ref"in r){let t;["type","source","source-layer","filter","layout"].forEach((t=>{t in r&&e.push(new ot(n,r[t],`"${t}" is prohibited for ref layers`));})),i.layers.forEach((e=>{en(e.id)===o&&(t=e);})),t?t.ref?e.push(new ot(n,r.ref,"ref cannot reference another ref layer")):s=en(t.type):e.push(new ot(n,r.ref,`ref layer "${o}" not found`));}else if("background"!==s)if(r.source){const t=i.sources&&i.sources[r.source],a=t&&en(t.type);t?"vector"===a&&"raster"===s?e.push(new ot(n,r.source,`layer "${r.id}" requires a raster source`)):"raster-dem"!==a&&"hillshade"===s?e.push(new ot(n,r.source,`layer "${r.id}" requires a raster-dem source`)):"raster"===a&&"raster"!==s?e.push(new ot(n,r.source,`layer "${r.id}" requires a vector source`)):"vector"!==a||r["source-layer"]?"raster-dem"===a&&"hillshade"!==s?e.push(new ot(n,r.source,"raster-dem source can only be used with layer type 'hillshade'.")):"line"!==s||!r.paint||!r.paint["line-gradient"]||"geojson"===a&&t.lineMetrics||e.push(new ot(n,r,`layer "${r.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):e.push(new ot(n,r,`layer "${r.id}" must specify a "source-layer"`)):e.push(new ot(n,r.source,`source "${r.source}" not found`));}else e.push(new ot(n,r,'missing required property "source"'));return e=e.concat(nn({key:n,value:r,valueSpec:a.layer,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":()=>[],type:()=>t.validateSpec({key:`${n}.type`,value:r.type,valueSpec:a.layer.type,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,object:r,objectKey:"type"}),filter:cn,layout:t=>nn({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":t=>dn(lt({layerType:s},t))}}),paint:t=>nn({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":t=>fn(lt({layerType:s},t))}})}})),e}function mn(t){const e=t.value,r=t.key,n=kr(e);return "string"!==n?[new ot(r,e,`string expected, ${n} found`)]:[]}const gn={promoteId:function({key:t,value:e}){if("string"===kr(e))return mn({key:t,value:e});{const r=[];for(const n in e)r.push(...mn({key:`${t}.${n}`,value:e[n]}));return r}}};function xn(t){const e=t.value,r=t.key,n=t.styleSpec,i=t.style,a=t.validateSpec;if(!e.type)return [new ot(r,e,'"type" is required')];const s=en(e.type);let o;switch(s){case"vector":case"raster":return o=nn({key:r,value:e,valueSpec:n[`source_${s.replace("-","_")}`],style:t.style,styleSpec:n,objectElementValidators:gn,validateSpec:a}),o;case"raster-dem":return o=function(t){var e;const r=null!==(e=t.sourceName)&&void 0!==e?e:"",n=t.value,i=t.styleSpec,a=i.source_raster_dem,s=t.style;let o=[];const l=kr(n);if(void 0===n)return o;if("object"!==l)return o.push(new ot("source_raster_dem",n,`object expected, ${l} found`)),o;const u="custom"===en(n.encoding),c=["redFactor","greenFactor","blueFactor","baseShift"],h=t.value.encoding?`"${t.value.encoding}"`:"Default";for(const e in n)!u&&c.includes(e)?o.push(new ot(e,n[e],`In "${r}": "${e}" is only valid when "encoding" is set to "custom". ${h} encoding found`)):a[e]?o=o.concat(t.validateSpec({key:e,value:n[e],valueSpec:a[e],validateSpec:t.validateSpec,style:s,styleSpec:i})):o.push(new ot(e,n[e],`unknown property "${e}"`));return o}({sourceName:r,value:e,style:t.style,styleSpec:n,validateSpec:a}),o;case"geojson":if(o=nn({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n,validateSpec:a,objectElementValidators:gn}),e.cluster)for(const t in e.clusterProperties){const[n,i]=e.clusterProperties[t],s="string"==typeof n?[n,["accumulated"],["get",t]]:n;o.push(...ln({key:`${r}.${t}.map`,value:i,validateSpec:a,expressionContext:"cluster-map"})),o.push(...ln({key:`${r}.${t}.reduce`,value:s,validateSpec:a,expressionContext:"cluster-reduce"}));}return o;case"video":return nn({key:r,value:e,valueSpec:n.source_video,style:i,validateSpec:a,styleSpec:n});case"image":return nn({key:r,value:e,valueSpec:n.source_image,style:i,validateSpec:a,styleSpec:n});case"canvas":return [new ot(r,null,"Please use runtime APIs to add canvas sources, rather than
37including them in stylesheets.","source.canvas")];default:return un({key:`${r}.type`,value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:i,validateSpec:a,styleSpec:n})}}function vn(t){const e=t.value,r=t.styleSpec,n=r.light,i=t.style;let a=[];const s=kr(e);if(void 0===e)return a;if("object"!==s)return a=a.concat([new ot("light",e,`object expected, ${s} found`)]),a;for(const s in e){const o=s.match(/^(.*)-transition$/);a=a.concat(o&&n[o[1]]&&n[o[1]].transition?t.validateSpec({key:s,value:e[s],valueSpec:r.transition,validateSpec:t.validateSpec,style:i,styleSpec:r}):n[s]?t.validateSpec({key:s,value:e[s],valueSpec:n[s],validateSpec:t.validateSpec,style:i,styleSpec:r}):[new ot(s,e[s],`unknown property "${s}"`)]);}return a}function bn(t){const e=t.value,r=t.styleSpec,n=r.terrain,i=t.style;let a=[];const s=kr(e);if(void 0===e)return a;if("object"!==s)return a=a.concat([new ot("terrain",e,`object expected, ${s} found`)]),a;for(const s in e)a=a.concat(n[s]?t.validateSpec({key:s,value:e[s],valueSpec:n[s],validateSpec:t.validateSpec,style:i,styleSpec:r}):[new ot(s,e[s],`unknown property "${s}"`)]);return a}function wn(t){let e=[];const r=t.value,n=t.key;if(Array.isArray(r)){const i=[],a=[];for(const s in r)r[s].id&&i.includes(r[s].id)&&e.push(new ot(n,r,`all the sprites' ids must be unique, but ${r[s].id} is duplicated`)),i.push(r[s].id),r[s].url&&a.includes(r[s].url)&&e.push(new ot(n,r,`all the sprites' URLs must be unique, but ${r[s].url} is duplicated`)),a.push(r[s].url),e=e.concat(nn({key:`${n}[${s}]`,value:r[s],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:t.validateSpec}));return e}return mn({key:n,value:r})}const _n={"*":()=>[],array:an,boolean:function(t){const e=t.value,r=t.key,n=kr(e);return "boolean"!==n?[new ot(r,e,`boolean expected, ${n} found`)]:[]},number:sn,color:function(t){const e=t.key,r=t.value,n=kr(r);return "string"!==n?[new ot(e,r,`color expected, ${n} found`)]:Yt.parse(String(r))?[]:[new ot(e,r,`color expected, "${r}" found`)]},constants:tn,enum:un,filter:cn,function:on,layer:yn,object:nn,source:xn,light:vn,terrain:bn,string:mn,formatted:function(t){return 0===mn(t).length?[]:ln(t)},resolvedImage:function(t){return 0===mn(t).length?[]:ln(t)},padding:function(t){const e=t.key,r=t.value;if("array"===kr(r)){if(r.length<1||r.length>4)return [new ot(e,r,`padding requires 1 to 4 values; ${r.length} values found`)];const n={type:"number"};let i=[];for(let a=0;a<r.length;a++)i=i.concat(t.validateSpec({key:`${e}[${a}]`,value:r[a],validateSpec:t.validateSpec,valueSpec:n}));return i}return sn({key:e,value:r,valueSpec:{}})},variableAnchorOffsetCollection:function(t){const e=t.key,r=t.value,n=kr(r),i=t.styleSpec;if("array"!==n||r.length<1||r.length%2!=0)return [new ot(e,r,"variableAnchorOffsetCollection requires a non-empty array of even length")];let a=[];for(let n=0;n<r.length;n+=2)a=a.concat(un({key:`${e}[${n}]`,value:r[n],valueSpec:i.layout_symbol["text-anchor"]})),a=a.concat(an({key:`${e}[${n+1}]`,value:r[n+1],valueSpec:{length:2,value:"number"},validateSpec:t.validateSpec,style:t.style,styleSpec:i}));return a},sprite:wn};function An(t){const e=t.value,r=t.valueSpec,n=t.styleSpec;return t.validateSpec=An,r.expression&&Ir(en(e))?on(t):r.expression&&Tr(rn(e))?ln(t):r.type&&_n[r.type]?_n[r.type](t):nn(lt({},t,{valueSpec:r.type?n[r.type]:r}))}function Sn(t){const e=t.value,r=t.key,n=mn(t);return n.length||(-1===e.indexOf("{fontstack}")&&n.push(new ot(r,e,'"glyphs" url must include a "{fontstack}" token')),-1===e.indexOf("{range}")&&n.push(new ot(r,e,'"glyphs" url must include a "{range}" token'))),n}function kn(t,e=X){let r=[];return r=r.concat(An({key:"",value:t,valueSpec:e.$root,styleSpec:e,style:t,validateSpec:An,objectElementValidators:{glyphs:Sn,"*":()=>[]}})),t.constants&&(r=r.concat(tn({key:"constants",value:t.constants,style:t,styleSpec:e,validateSpec:An}))),zn(r)}function In(t){return function(e){return t({...e,validateSpec:An})}}function zn(t){return [].concat(t).sort(((t,e)=>t.line-e.line))}function Mn(t){return function(...e){return zn(t.apply(this,e))}}kn.source=Mn(In(xn)),kn.sprite=Mn(In(wn)),kn.glyphs=Mn(In(Sn)),kn.light=Mn(In(vn)),kn.terrain=Mn(In(bn)),kn.layer=Mn(In(yn)),kn.filter=Mn(In(cn)),kn.paintProperty=Mn(In(fn)),kn.layoutProperty=Mn(In(dn));const Cn=kn,Bn=Cn.light,Pn=Cn.paintProperty,Vn=Cn.layoutProperty;function En(t,e){let r=!1;if(e&&e.length)for(const n of e)t.fire(new G(new Error(n.message))),r=!0;return r}class Fn{constructor(t,e,r){const n=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;const i=new Int32Array(this.arrayBuffer);t=i[0],this.d=(e=i[1])+2*(r=i[2]);for(let t=0;t<this.d*this.d;t++){const e=i[3+t],r=i[3+t+1];n.push(e===r?null:i.subarray(e,r));}const a=i[3+n.length+1];this.keys=i.subarray(i[3+n.length],a),this.bboxes=i.subarray(a),this.insert=this._insertReadonly;}else {this.d=e+2*r;for(let t=0;t<this.d*this.d;t++)n.push([]);this.keys=[],this.bboxes=[];}this.n=e,this.extent=t,this.padding=r,this.scale=e/t,this.uid=0;const i=r/e*t;this.min=-i,this.max=t+i;}
37insert(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertCell,this.uid++,void 0,void 0),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i);}_insertReadonly(){throw new Error("Cannot insert into a GridIndex created from an ArrayBuffer.")}_insertCell(t,e,r,n,i,a){this.cells[i].push(a);}query(t,e,r,n,i){const a=this.min,s=this.max;if(t<=a&&e<=a&&s<=r&&s<=n&&!i)return Array.prototype.slice.call(this.keys);{const a=[];return this._forEachCell(t,e,r,n,this._queryCell,a,{},i),a}}_queryCell(t,e,r,n,i,a,s,o){const l=this.cells[i];if(null!==l){const i=this.keys,u=this.bboxes;for(let c=0;c<l.length;c++){const h=l[c];if(void 0===s[h]){const l=4*h;(o?o(u[l+0],u[l+1],u[l+2],u[l+3]):t<=u[l+2]&&e<=u[l+3]&&r>=u[l+0]&&n>=u[l+1])?(s[h]=!0,a.push(i[h])):s[h]=!1;}}}}_forEachCell(t,e,r,n,i,a,s,o){const l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(r),h=this._convertToCellCoord(n);for(let p=l;p<=c;p++)for(let l=u;l<=h;l++){const u=this.d*l+p;if((!o||o(this._convertFromCellCoord(p),this._convertFromCellCoord(l),this._convertFromCellCoord(p+1),this._convertFromCellCoord(l+1)))&&i.call(this,t,e,r,n,u,a,s,o))return}}_convertFromCellCoord(t){return (t-this.padding)/this.scale}_convertToCellCoord(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;const t=this.cells,e=3+this.cells.length+1+1;let r=0;for(let t=0;t<this.cells.length;t++)r+=this.cells[t].length;const n=new Int32Array(e+r+this.keys.length+this.bboxes.length);n[0]=this.extent,n[1]=this.n,n[2]=this.padding;let i=e;for(let e=0;e<t.length;e++){const r=t[e];n[3+e]=i,n.set(r,i),i+=r.length;}return n[3+t.length]=i,n.set(this.keys,i),i+=this.keys.length,n[3+t.length+1]=i,n.set(this.bboxes,i),i+=this.bboxes.length,n.buffer}static serialize(t,e){const r=t.toArrayBuffer();return e&&e.push(r),{buffer:r}}static deserialize(t){return new Fn(t.buffer)}}const Tn={};function $n(t,e,r={}){if(Tn[t])throw new Error(`${t} is already registered.`);Object.defineProperty(e,"_classRegistryKey",{value:t,writeable:!1}),Tn[t]={klass:e,omit:r.omit||[],shallow:r.shallow||[]};}$n("Object",Object),$n("TransferableGridIndex",Fn),$n("Color",Yt),$n("Error",Error),$n("AJAXError",L),$n("ResolvedImage",ne),$n("StylePropertyFunction",Ur),$n("StyleExpression",Fr,{omit:["_evaluator"]}),$n("ZoomDependentExpression",Dr),$n("ZoomConstantExpression",Lr),$n("CompoundExpression",$e,{omit:["_evaluate"]});for(const t in yr)yr[t]._classRegistryKey||$n(`Expression_${t}`,yr[t]);function Ln(t){return t&&"undefined"!=typeof ArrayBuffer&&(t instanceof ArrayBuffer||t.constructor&&"ArrayBuffer"===t.constructor.name)}function Dn(t,e){if(null==t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||t instanceof Blob)return t;if(Ln(t))return e&&e.push(t),t;if(M(t))return e&&e.push(t),t;if(ArrayBuffer.isView(t)){const r=t;return e&&e.push(r.buffer),r}if(t instanceof ImageData)return e&&e.push(t.data.buffer),t;if(Array.isArray(t)){const r=[];for(const n of t)r.push(Dn(n,e));return r}if("object"==typeof t){const r=t.constructor,n=r._classRegistryKey;if(!n)throw new Error("can't serialize object of unregistered class");if(!Tn[n])throw new Error(`${n} is not registered.`);const i=r.serialize?r.serialize(t,e):{};if(r.serialize){if(e&&i===e[e.length-1])throw new Error("statically serialized object won't survive transfer of $name property")}else {for(const r in t){if(!t.hasOwnProperty(r))continue;if(Tn[n].omit.indexOf(r)>=0)continue;const a=t[r];i[r]=Tn[n].shallow.indexOf(r)>=0?a:Dn(a,e);}t instanceof Error&&(i.message=t.message);}if(i.$name)throw new Error("$name property is reserved for worker serialization logic.");return "Object"!==n&&(i.$name=n),i}throw new Error("can't serialize object of type "+typeof t)}function On(t){if(null==t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||t instanceof Blob||Ln(t)||M(t)||ArrayBuffer.isView(t)||t instanceof ImageData)return t;if(Array.isArray(t))return t.map(On);if("object"==typeof t){const e=t.$name||"Object";if(!Tn[e])throw new Error(`can't deserialize unregistered class ${e}`);const{klass:r}=Tn[e];if(!r)throw new Error(`can't deserialize unregistered class ${e}`);if(r.deserialize)return r.deserialize(t);const n=Object.create(r.prototype);for(const r of Object.keys(t)){if("$name"===r)continue;const i=t[r];n[r]=Tn[e].shallow.indexOf(r)>=0?i:On(i);}return n}throw new Error("can't deserialize object of type "+typeof t)}class Un{constructor(){this.first=!0;}update(t,e){const r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom<r&&(this.lastIntegerZoom=r,this.lastIntegerZoomTime=e),t!==this.lastZoom&&(this.lastZoom=t,this.lastFloorZoom=r,!0))}}const Rn={"Latin-1 Supplement":t=>t>=128&&t<=255,Arabic:t=>t>=1536&&t<=1791,"Arabic Supplement":t=>t>=1872&&t<=1919,"Arabic Extended-A":t=>t>=2208&&t<=2303,"Hangul Jamo":t=>t>=4352&&t<=4607,"Unified Canadian Aboriginal Syllabics":t=>t>=5120&&t<=5759,Khmer:t=>t>=6016&&t<=6143,"Unified Canadian Aboriginal Syllabics Extended":t=>t>=6320&&t<=6399,"General Punctuation":t=>t>=8192&&t<=8303,"Letterlike Symbols":t=>t>=8448&&t<=8527,"Number Forms":t=>t>=8528&&t<=8591,"Miscellaneous Technical":t=>t>=8960&&t<=9215,"Control Pictures":t=>t>=9216&&t<=9279,"Optical Character Recognition":t=>t>=9280&&t<=9311,"Enclosed Alphanumerics":t=>t>=9312&&t<=9471,"Geometric Shapes":t=>t>=9632&&t<=9727,"Miscellaneous Symbols":t=>t>=9728&&t<=9983,"Miscellaneous Symbols and Arrows":t=>t>=11008&&t<=11263,"CJK Radicals Supplement":t=>t>=11904&&t<=12031,"Kangxi Radicals":t=>t>=12032&&t<=12255,"Ideographic Description Characters":t=>t>=12272&&t<=12287,"CJK Symbols and Punctuation":t=>t>=12288&&t<=12351,Hiragana:t=>t>=12352&&t<=12447,Katakana:t=>t>=12448&&t<=12543,Bopomofo:t=>t>=12544&&t<=12591,"Hangul Compatibility Jamo":t=>t>=12592&&t<=12687,Kanbun:t=>t>=12688&&t<=12703,"Bopomofo Extended":t=>t>=12704&&t<=12735,"CJK Strokes":t=>t>
vendor: 3,335 bytes, line 37
37=12736&&t<=12783,"Katakana Phonetic Extensions":t=>t>=12784&&t<=12799,"Enclosed CJK Letters and Months":t=>t>=12800&&t<=13055,"CJK Compatibility":t=>t>=13056&&t<=13311,"CJK Unified Ideographs Extension A":t=>t>=13312&&t<=19903,"Yijing Hexagram Symbols":t=>t>=19904&&t<=19967,"CJK Unified Ideographs":t=>t>=19968&&t<=40959,"Yi Syllables":t=>t>=40960&&t<=42127,"Yi Radicals":t=>t>=42128&&t<=42191,"Hangul Jamo Extended-A":t=>t>=43360&&t<=43391,"Hangul Syllables":t=>t>=44032&&t<=55215,"Hangul Jamo Extended-B":t=>t>=55216&&t<=55295,"Private Use Area":t=>t>=57344&&t<=63743,"CJK Compatibility Ideographs":t=>t>=63744&&t<=64255,"Arabic Presentation Forms-A":t=>t>=64336&&t<=65023,"Vertical Forms":t=>t>=65040&&t<=65055,"CJK Compatibility Forms":t=>t>=65072&&t<=65103,"Small Form Variants":t=>t>=65104&&t<=65135,"Arabic Presentation Forms-B":t=>t>=65136&&t<=65279,"Halfwidth and Fullwidth Forms":t=>t>=65280&&t<=65519};function qn(t){for(const e of t)if(Zn(e.charCodeAt(0)))return !0;return !1}function jn(t){for(const e of t)if(!Nn(e.charCodeAt(0)))return !1;return !0}function Nn(t){return !(Rn.Arabic(t)||Rn["Arabic Supplement"](t)||Rn["Arabic Extended-A"](t)||Rn["Arabic Presentation Forms-A"](t)||Rn["Arabic Presentation Forms-B"](t))}function Zn(t){return !(746!==t&&747!==t&&(t<4352||!(Rn["Bopomofo Extended"](t)||Rn.Bopomofo(t)||Rn["CJK Compatibility Forms"](t)&&!(t>=65097&&t<=65103)||Rn["CJK Compatibility Ideographs"](t)||Rn["CJK Compatibility"](t)||Rn["CJK Radicals Supplement"](t)||Rn["CJK Strokes"](t)||!(!Rn["CJK Symbols and Punctuation"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||Rn["CJK Unified Ideographs Extension A"](t)||Rn["CJK Unified Ideographs"](t)||Rn["Enclosed CJK Letters and Months"](t)||Rn["Hangul Compatibility Jamo"](t)||Rn["Hangul Jamo Extended-A"](t)||Rn["Hangul Jamo Extended-B"](t)||Rn["Hangul Jamo"](t)||Rn["Hangul Syllables"](t)||Rn.Hiragana(t)||Rn["Ideographic Description Characters"](t)||Rn.Kanbun(t)||Rn["Kangxi Radicals"](t)||Rn["Katakana Phonetic Extensions"](t)||Rn.Katakana(t)&&12540!==t||!(!Rn["Halfwidth and Fullwidth Forms"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!Rn["Small Form Variants"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||Rn["Unified Canadian Aboriginal Syllabics"](t)||Rn["Unified Canadian Aboriginal Syllabics Extended"](t)||Rn["Vertical Forms"](t)||Rn["Yijing Hexagram Symbols"](t)||Rn["Yi Syllables"](t)||Rn["Yi Radicals"](t))))}function Kn(t){return !(Zn(t)||function(t){return !!(Rn["Latin-1 Supplement"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||Rn["General Punctuation"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||Rn["Letterlike Symbols"](t)||Rn["Number Forms"](t)||Rn["Miscellaneous Technical"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||Rn["Control Pictures"](t)&&9251!==t||Rn["Optical Character Recognition"](t)||Rn["Enclosed Alphanumerics"](t)||Rn["Geometric Shapes"](t)||Rn["Miscellaneous Symbols"](t)&&!(t>=9754&&t<=9759)||Rn["Miscellaneous Symbols and Arrows"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>
37=11192&&t<=11243)||Rn["CJK Symbols and Punctuation"](t)||Rn.Katakana(t)||Rn["Private Use Area"](t)||Rn["CJK Compatibility Forms"](t)||Rn["Small Form Variants"](t)||Rn["Halfwidth and Fullwidth Forms"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function Gn(t){return t>=1424&&t<=2303||Rn["Arabic Presentation Forms-A"](t)||Rn["Arabic Presentation Forms-B"](t)}function Jn(t,e){return !(!e&&Gn(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||Rn.Khmer(t))}function Xn(t){for(const e of t)if(Gn(e.charCodeAt(0)))return !0;return !1}const Yn="deferred",Hn="loading",Wn="loaded";let Qn=null,ti="unavailable",ei=null;const ri=function(t){t&&"string"==typeof t&&t.indexOf("NetworkError")>-1&&(ti="error"),Qn&&Qn(t);};function ni(){ii.fire(new K("pluginStateChange",{pluginStatus:ti,pluginURL:ei}));}const ii=new J,ai=function(){return ti},si=function(){if(ti!==Yn||!ei)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");ti=Hn,ni(),ei&&q({url:ei},(t=>{t?ri(t):(ti=Wn,ni());}));},oi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>ti===Wn||null!=oi.applyArabicShaping,isLoading:()=>ti===Hn,setState(t){if(!I())throw new Error("Cannot set the state of the rtl-text-plugin when not in the web-worker context");ti=t.pluginStatus,ei=t.pluginURL;},isParsed(){if(!I())throw new Error("rtl-text-plugin is only parsed on the worker-threads");return null!=oi.applyArabicShaping&&null!=oi.processBidirectionalText&&null!=oi.processStyledBidirectionalText},getPluginURL(){if(!I())throw new Error("rtl-text-plugin url can only be queried from the worker threads");return ei}};class li{constructor(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Un,this.transition={});}isSupportedScript(t){return function(t,e){for(const r of t)if(!Jn(r.charCodeAt(0),e))return !1;return !0}(t,oi.isLoaded())}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const t=this.zoom,e=t-Math.floor(t),r=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}}}class ui{constructor(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Ir(t))return new Ur(t,e);if(Tr(t)){const r=Or(t,e);if("error"===r.result)throw new Error(r.value.map((t=>`${t.key}: ${t.message}`)).join(", "));return r.value}{let r=t;return "color"===e.type&&"string"==typeof t?r=Yt.parse(t):"padding"!==e.type||"number"!=typeof t&&!Array.isArray(t)?"variableAnchorOffsetCollection"===e.type&&Array.isArray(t)&&(r=re.parse(t)):r=te.parse(t),{kind:"constant",evaluate:()=>r}}}(void 0===e?t.specification.default:e,t.specification);}isDataDriven(){return "source"===this.expression.kind||"composite"===this.expression.kind}possiblyEvaluate(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)}}class ci{constructor(t){this.property=t,this.value=new ui(t,void 0);}transitioned(t,e){return new pi(this.property,this.value,e,g({},t.transition,this.transition),t.now)}untransitioned(){return new pi(this.property,this.value,null,{},0)}}class hi{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues);}getValue(t){return w(this._values[t].value.value)}setValue(t,e){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new ci(this._values[t].property)),this._values[t].value=new ui(this._values[t].property,null===e?void 0:w(e));}getTransition(t){return w(this._values[t].transition)}setTransition(t,e){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new ci(this._values[t].property)),this._values[t].transition=w(e)||void 0;}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);const n=this.getTransition(e);void 0!==n&&(t[`${e}-transition`]=n);}return t}transitioned(t,e){const r=new fi(this._properties);for(const n of Object.keys(this._values))r._values[n]=this._values[n].transitioned(t,e._values[n]);return r}untransitioned(){const t=new fi(this._properties);for(const e of Object.keys(this._values))t._values[e]=this._values[e].untransitioned();return t}}class pi{constructor(t,e,r,n,i){this.property=t,this.value=e,this.begin=i+n.delay||0,this.end=this.begin+n.duration||0,t.specification.transition&&(n.delay||n.duration)&&(this.prior=r);}possiblyEvaluate(t,e,r){const n=t.now||0,i=this.value.possiblyEvaluate(t,e,r),a=this.prior;if(a){if(n>this.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n<this.begin)return a.possiblyEvaluate(t,e,r);{const s=(n-this.begin)/(this.end-this.begin);return this.property.interpolate(a.possiblyEvaluate(t,e,r),i,function(t){if(t<=0)return 0;if(t>=1)return 1;const e=t*t,r=e*t;
vendor: 25,699 bytes, line 37
37return 4*(t<.5?r:3*(t-e)+r-.75)}(s))}}return i}}class fi{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues);}possiblyEvaluate(t,e,r){const n=new mi(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}hasTransition(){for(const t of Object.keys(this._values))if(this._values[t].prior)return !0;return !1}}class di{constructor(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues);}hasValue(t){return void 0!==this._values[t].value}getValue(t){return w(this._values[t].value)}setValue(t,e){this._values[t]=new ui(this._values[t].property,null===e?void 0:w(e));}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);}return t}possiblyEvaluate(t,e,r){const n=new mi(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}}class yi{constructor(t,e,r){this.property=t,this.value=e,this.parameters=r;}isConstant(){return "constant"===this.value.kind}constantOr(t){return "constant"===this.value.kind?this.value.value:t}evaluate(t,e,r,n){return this.property.evaluate(this.value,this.parameters,t,e,r,n)}}class mi{constructor(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues);}get(t){return this._values[t]}}class gi{constructor(t){this.specification=t;}possiblyEvaluate(t,e){if(t.isDataDriven())throw new Error("Value should not be data driven");return t.expression.evaluate(e)}interpolate(t,e,r){const n=Ze[this.specification.type];return n?n(t,e,r):t}}class xi{constructor(t,e){this.specification=t,this.overrides=e;}possiblyEvaluate(t,e,r,n){return new yi(this,"constant"===t.expression.kind||"camera"===t.expression.kind?{kind:"constant",value:t.expression.evaluate(e,null,{},r,n)}:t.expression,e)}interpolate(t,e,r){if("constant"!==t.value.kind||"constant"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new yi(this,{kind:"constant",value:void 0},t.parameters);const n=Ze[this.specification.type];if(n){const i=n(t.value.value,e.value.value,r);return new yi(this,{kind:"constant",value:i},t.parameters)}return t}evaluate(t,e,r,n,i,a){return "constant"===t.kind?t.value:t.evaluate(e,r,n,i,a)}}class vi extends xi{possiblyEvaluate(t,e,r,n){if(void 0===t.value)return new yi(this,{kind:"constant",value:void 0},e);if("constant"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n),a="resolvedImage"===t.property.specification.type&&"string"!=typeof i?i.name:i,s=this._calculate(a,a,a,e);return new yi(this,{kind:"constant",value:s},e)}if("camera"===t.expression.kind){const r=this._calculate(t.expression.evaluate({zoom:e.zoom-1}),t.expression.evaluate({zoom:e.zoom}),t.expression.evaluate({zoom:e.zoom+1}),e);return new yi(this,{kind:"constant",value:r},e)}return new yi(this,t.expression,e)}evaluate(t,e,r,n,i,a){if("source"===t.kind){const s=t.evaluate(e,r,n,i,a);return this._calculate(s,s,s,e)}return "composite"===t.kind?this._calculate(t.evaluate({zoom:Math.floor(e.zoom)-1},r,n),t.evaluate({zoom:Math.floor(e.zoom)},r,n),t.evaluate({zoom:Math.floor(e.zoom)+1},r,n),e):t.value}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class bi{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){if(void 0!==t.value){if("constant"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new li(Math.floor(e.zoom-1),e)),t.expression.evaluate(new li(Math.floor(e.zoom),e)),t.expression.evaluate(new li(Math.floor(e.zoom+1),e)),e)}}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class wi{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){return !!t.expression.evaluate(e,null,{},r,n)}interpolate(){return !1}}class _i{constructor(t){this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const e in t){const r=t[e];r.specification.overridable&&this.overridableProperties.push(e);const n=this.defaultPropertyValues[e]=new ui(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new ci(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({});}}}$n("DataDrivenProperty",xi),$n("DataConstantProperty",gi),$n("CrossFadedDataDrivenProperty",vi),$n("CrossFadedProperty",bi),$n("ColorRampProperty",wi);const Ai="-transition";class Si extends J{constructor(t,e){if(super(),this.id=t.id,this.type=t.type,this._featureFilter={filter:()=>!0,needGeometry:!1},"custom"!==t.type&&(this.metadata=t.metadata,this.minzoom=t.minzoom,this.maxzoom=t.maxzoom,"background"!==t.type&&(this.source=t.source,this.sourceLayer=t["source-layer"],this.filter=t.filter),e.layout&&(this._unevaluatedLayout=new di(e.layout)),e.paint)){this._transitionablePaint=new hi(e.paint);for(const e in t.paint)this.setPaintProperty(e,t.paint[e],{validate:!1});for(const e in t.layout)this.setLayoutProperty(e,t.layout[e],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new mi(e.paint);}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(t){return "visibility"===t?this.visibility:this._unevaluatedLayout.getValue(t)}setLayoutProperty(t,e,r={}){null!=e&&this._validate(Vn,`layers.${this.id}.layout.${t}`,t,e,r)||("visibility"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e);}getPaintProperty(t){return t.endsWith(Ai)?this._transitionablePaint.getTransition(t.slice(0,-11)):this._transitionablePaint.getValue(t)}setPaintProperty(t,e,r={}){if(null!=e&&this._validate(Pn,`layers.${this.id}.paint.${t}`,t,e,r))return !1;if(t.endsWith(Ai))return this._transitionablePaint.setTransition(t.slice(0,-11),e||void 0),!1;{const r=this._transitionablePaint._values[t],n="cross-faded-data-driven"===r.property.specification["property-type"],i=r.value.isDataDriven(),a=r.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);const s=this._transitionablePaint._values[t].value;return s.isDataDriven()||i||n||this._handleOverridablePaintPropertyUpdate(t,a,s)}}_handleSpecialPaintPropertyUpdate(t){}_handleOverridablePaintPropertyUpdate(t,e,r){return !1}isHidden(t){return !!(this.minzoom&&t<this.minzoom)||!!(this.maxzoom&&t>=this.maxzoom)||"none"===this.visibility}updateTransitions(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e);}serialize(){const t={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),b(t,((t,e)=>!(void 0===t||"layout"===e&&!Object.keys(t).length||"paint"===e&&!Object.keys(t).length)))}_validate(t,e,r,n,i={}){return (!i||!1!==i.validate)&&En(this,t.call(Cn,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:X,style:{glyphs:!0,sprite:!0}}))}is3D(){return !1}isTileClipped(){return !1}hasOffscreenPass(){return !1}resize(){}isStateDependent(){for(const t in this.paint._values){const e=this.paint.get(t);if(e instanceof yi&&_r(e.property.specification)&&("source"===e.value.kind||"composite"===e.value.kind)&&e.value.isStateDependent)return !0}return !1}}const ki={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Ii{constructor(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;}}class zi{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0);}static serialize(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}}static deserialize(t){const e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());}clear(){this.length=0;}resize(t){this.reserve(t),this.length=t;}reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function Mi(t,e=1){let r=0,n=0;return {members:t.map((t=>{const i=ki[t.type].BYTES_PER_ELEMENT,a=r=Ci(r,Math.max(e,i)),s=t.components||1;return n=Math.max(n,i),r+=i*s,{name:t.name,type:t.type,components:s,offset:a}})),size:Ci(r,Math.max(n,e)),alignment:e}}function Ci(t,e){return Math.ceil(t/e)*e}class Bi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t}}Bi.prototype.bytesPerElement=4,$n("StructArrayLayout2i4",Bi);class Pi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t}}Pi.prototype.bytesPerElement=6,$n("StructArrayLayout3i6",Pi);class Vi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t}}Vi.prototype.bytesPerElement=8,$n("StructArrayLayout4i8",Vi);class Ei extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,s){const o=6*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.int16[o+3]=i,this.int16[o+4]=a,this.int16[o+5]=s,t}}Ei.prototype.bytesPerElement=12,$n("StructArrayLayout2i4i12",Ei);class Fi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,s){const o=4*t,l=8*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=a,this.uint8[l+7]=s,t}}Fi.prototype.bytesPerElement=8,$n("StructArrayLayout2i4ub8",Fi);class Ti extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t}}Ti.prototype.bytesPerElement=8,$n("StructArrayLayout2f8",Ti);class $i extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l,u){const c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,s,o,l,u)}emplace(t,e,r,n,i,a,s,o,l,u,c){const h=10*t;return this.uint16[h+0]=e,this.uint16[h+1]=r,this.uint16[h+2]=n,this.uint16[h+3]=i,this.uint16[h+4]=a,this.uint16[h+5]=s,this.uint16[h+6]=o,this.uint16[h+7]=l,this.uint16[h+8]=u,this.uint16[h+9]=c,t}}$i.prototype.bytesPerElement=20,$n("StructArrayLayout10ui20",$i);class Li extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l,u,c,h){const p=this.length;return this.resize(p+1),this.emplace(p,t,e,r,n,i,a,s,o,l,u,c,h)}emplace(t,e,r,n,i,a,s,o,l,u,c,h,p){const f=12*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=n,this.int16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=s,this.uint16[f+6]=o,this.uint16[f+7]=l,this.int16[f+8]=u,this.int16[f+9]=c,this.int16[f+10]=h,this.int16[f+11]=p,t}}Li.prototype.bytesPerElement=24,$n("StructArrayLayout4i4ui4i24",Li);class Di extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}Di.prototype.bytesPerElement=12,$n("StructArrayLayout3f12",Di);class Oi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint32[1*t+0]=e,t}}Oi.prototype.bytesPerElement=4,$n("StructArrayLayout1ul4",Oi);class Ui extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l){const u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,s,o,l)}emplace(t,e,r,n,i,a,s,o,l,u){const c=10*t,h=5*t;return this.int16[c+0]=e,this.int16[c+1]=r,this.int16[c+2]=n,this.int16[c+3]=i,this.int16[c+4]=a,this.int16[c+5]=s,this.uint32[h+3]=o,this.uint16[c+8]=l,this.uint16[c+9]=u,t}}Ui.prototype.bytesPerElement=20,$n("StructArrayLayout6i1ul2ui20",Ui);class Ri extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,s){const o=6*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.int16[o+3]=i,this.int16[o+4]=a,this.int16[o+5]=s,t}}Ri.prototype.bytesPerElement=12,$n("StructArrayLayout2i2i2i12",Ri);class qi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)}emplace(t,e,r,n,i,a){const s=4*t,o=8*t;return this.float32[s+0]=e,this.float32[s+1]=r,this.float32[s+2]=n,this.int16[o+6]=i,this.int16[o+7]=a,t}}qi.prototype.bytesPerElement=16,$n("StructArrayLayout2f1f2i16",qi);class ji extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const a=12*t,s=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[s+1]=n,this.float32[s+2]=i,t}}ji.prototype.bytesPerElement=12,$n("StructArrayLayout2ub2f12",ji);class Ni extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t}}Ni.prototype.bytesPerElement=6,$n("StructArrayLayout3ui6",Ni);class Zi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m){const g=this.length;return this.resize(g+1),this.emplace(g,t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m)}emplace(t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g){const x=24*t,v=12*t,b=48*t;return this.int16[x+0]=e,this.int16[x+1]=r,this.uint16[x+2]=n,this.uint16[x+3]=i,this.uint32[v+2]=a,this.uint32[v+3]=s,this.uint32[v+4]=o,this.uint16[x+10]=l,this.uint16[x+11]=u,this.uint16[x+12]=c,this.float32[v+7]=h,this.float32[v+8]=p,this.uint8[b+36]=f,this.uint8[b+37]=d,this.uint8[b+38]=y,this.uint32[v+10]=m,this.int16[x+22]=g,t}}Zi.prototype.bytesPerElement=48,$n("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",Zi);class Ki extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,A,S,k,I,z){const M=this.length;return this.resize(M+1),this.emplace(M,t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,A,S,k,I,z)}emplace(t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,A,S,k,I,z,M){const C=32*t,B=16*t;return this.int16[C+0]=e,this.int16[C+1]=r,this.int16[C+2]=n,this.int16[C+3]=i,this.int16[C+4]=a,this.int16[C+5]=s,this.int16[C+6]=o,this.int16[C+7]=l,this.uint16[C+8]=u,this.uint16[C+9]=c,this.uint16[C+10]=h,this.uint16[C+11]=p,this.uint16[C+12]=f,this.uint16[C+13]=d,this.uint16[C+14]=y,this.uint16[C+15]=m,this.uint16[C+16]=g,this.uint16[C+17]=x,this.uint16[C+18]=v,this.uint16[C+19]=b,this.uint16[C+20]=w,this.uint16[C+21]=_,this.uint16[C+22]=A,this.uint32[B+12]=S,this.float32[B+13]=k,this.float32[B+14]=I,this.uint16[C+30]=z,this.uint16[C+31]=M,t}}Ki.prototype.bytesPerElement=64,$n("StructArrayLayout8i15ui1ul2f2ui64",Ki);class Gi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.float32[1*t+0]=e,t}}Gi.prototype.bytesPerElement=4,$n("StructArrayLayout1f4",Gi);class Ji extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.uint16[6*t+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}Ji.prototype.bytesPerElement=12,$n("StructArrayLayout1ui2f12",Ji);class Xi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=4*t;return this.uint32[2*t+0]=e,this.uint16[i+2]=r,this.uint16[i+3]=n,t}}Xi.prototype.bytesPerElement=8,$n("StructArrayLayout1ul2ui8",Xi);class Yi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t}}Yi.prototype.bytesPerElement=4,$n("StructArrayLayout2ui4",Yi);class Hi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint16[1*t+0]=e,t}}Hi.prototype.bytesPerElement=2,$n("StructArrayLayout1ui2",Hi);class Wi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t}}Wi.prototype.bytesPerElement=16,$n("StructArrayLayout4f16",Wi);class Qi extends Ii{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new a(this.anchorPointX,this.anchorPointY)}}Qi.prototype.size=20;class ta extends Ui{get(t){return new Qi(this,t)}}$n("CollisionBoxArray",ta);class ea extends Ii{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(t){this._structArray.uint8[this._pos1+37]=t;}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(t){this._structArray.uint8[this._pos1+38]=t;}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(t){this._structArray.uint32[this._pos4+10]=t;}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}ea.prototype.size=48;class ra extends Zi{get(t){return new ea(this,t)}}$n("PlacedSymbolArray",ra);class na extends Ii{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(t){this._structArray.uint32[this._pos4+12]=t;}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}na.prototype.size=64;class ia extends Ki{get(t){return new na(this,t)}}$n("SymbolInstanceArray",ia);class aa extends Gi{getoffsetX(t){return this.float32[1*t+0]}}$n("GlyphOffsetArray",aa);class sa extends Pi{getx(t){return this.int16[3*t+0]}gety(t){return this.int16[3*t+1]}gettileUnitDistanceFromAnchor(t){return this.int16[3*t+2]}}$n("SymbolLineVertexArray",sa);class oa extends Ii{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}oa.prototype.size=12;class la extends Ji{get(t){return new oa(this,t)}}$n("TextAnchorOffsetArray",la);class ua extends Ii{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}ua.prototype.size=8;class ca extends Xi{get(t){return new ua(this,t)}}$n("FeatureIndexArray",ca);class ha extends Bi{}class pa extends Bi{}class fa extends Bi{}
vendor: 14,528 bytes, line 37
37class da extends Ei{}class ya extends Fi{}class ma extends Ti{}class ga extends $i{}class xa extends Li{}class va extends Di{}class ba extends Oi{}class wa extends Ri{}class _a extends ji{}class Aa extends Ni{}class Sa extends Yi{}const ka=Mi([{name:"a_pos",components:2,type:"Int16"}],4),{members:Ia}=ka;class za{constructor(t=[]){this.segments=t;}prepareSegment(t,e,r,n){let i=this.segments[this.segments.length-1];return t>za.MAX_VERTEX_ARRAY_LENGTH&&A(`Max vertices per segment is ${za.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}`),(!i||i.vertexLength+t>za.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i}get(){return this.segments}destroy(){for(const t of this.segments)for(const e in t.vaos)t.vaos[e].destroy();}static simpleSegment(t,e,r,n){return new za([{vertexOffset:t,primitiveOffset:e,vertexLength:r,primitiveLength:n,vaos:{},sortKey:0}])}}function Ma(t,e){return 256*(t=y(Math.floor(t),0,255))+y(Math.floor(e),0,255)}za.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,$n("SegmentVector",za);const Ca=Mi([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]);var Ba={exports:{}},Pa={exports:{}};Pa.exports=function(t,e){var r,n,i,a,s,o,l,u;for(n=t.length-(r=3&t.length),i=e,s=3432918353,o=461845907,u=0;u<n;)l=255&t.charCodeAt(u)|(255&t.charCodeAt(++u))<<8|(255&t.charCodeAt(++u))<<16|(255&t.charCodeAt(++u))<<24,++u,i=27492+(65535&(a=5*(65535&(i=(i^=l=(65535&(l=(l=(65535&l)*s+(((l>>>16)*s&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295;}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0};var Va=Pa.exports,Ea={exports:{}};Ea.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16);}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0};var Fa=Va,Ta=Ea.exports;Ba.exports=Fa,Ba.exports.murmur3=Fa,Ba.exports.murmur2=Ta;var $a=r(Ba.exports);class La{constructor(){this.ids=[],this.positions=[],this.indexed=!1;}add(t,e,r,n){this.ids.push(Da(t)),this.positions.push(e,r,n);}getPositions(t){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");const e=Da(t);let r=0,n=this.ids.length-1;for(;r<n;){const t=r+n>>1;this.ids[t]>=e?n=t:r=t+1;}const i=[];for(;this.ids[r]===e;)i.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return i}static serialize(t,e){const r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return Oa(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}}static deserialize(t){const e=new La;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e}}function Da(t){const e=+t;return !isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:$a(String(t))}function Oa(t,e,r,n){for(;r<n;){const i=t[r+n>>1];let a=r-1,s=n+1;for(;;){do{a++;}while(t[a]<i);do{s--;}while(t[s]>i);if(a>=s)break;Ua(t,a,s),Ua(e,3*a,3*s),Ua(e,3*a+1,3*s+1),Ua(e,3*a+2,3*s+2);}s-r<n-s?(Oa(t,e,r,s),r=s+1):(Oa(t,e,s+1,n),n=s);}}function Ua(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}$n("FeaturePositionMap",La);class Ra{constructor(t,e){this.gl=t.gl,this.location=e;}}class qa extends Ra{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1f(this.location,t));}}class ja extends Ra{constructor(t,e){super(t,e),this.current=[0,0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]&&t[3]===this.current[3]||(this.current=t,this.gl.uniform4f(this.location,t[0],t[1],t[2],t[3]));}}class Na extends Ra{constructor(t,e){super(t,e),this.current=Yt.transparent;}set(t){t.r===this.current.r&&t.g===this.current.g&&t.b===this.current.b&&t.a===this.current.a||(this.current=t,this.gl.uniform4f(this.location,t.r,t.g,t.b,t.a));}}const Za=new Float32Array(16);function Ka(t){return [Ma(255*t.r,255*t.g),Ma(255*t.b,255*t.a)]}class Ga{constructor(t,e,r){this.value=t,this.uniformNames=e.map((t=>`u_${t}`)),this.type=r;}setUniform(t,e,r){t.set(r.constantOr(this.value));}getBinding(t,e,r){return "color"===this.type?new Na(t,e):new qa(t,e)}}class Ja{constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1;}setConstantPatternPositions(t,e){this.pixelRatioFrom=e.pixelRatio,this.pixelRatioTo=t.pixelRatio,this.patternFrom=e.tlbr,this.patternTo=t.tlbr;}setUniform(t,e,r,n){const i="u_pattern_to"===n?this.patternTo:"u_pattern_from"===n?this.patternFrom:"u_pixel_ratio_to"===n?this.pixelRatioTo:"u_pixel_ratio_from"===n?this.pixelRatioFrom:null;i&&t.set(i);}getBinding(t,e,r){return "u_pattern"===r.substr(0,9)?new ja(t,e):new qa(t,e)}}class Xa{constructor(t,e,r,n){this.expression=t,this.type=r,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:"Float32",components:"color"===r?2:1,offset:0}))),this.paintVertexArray=new n;}populatePaintArray(t,e,r,n,i){const a=this.paintVertexArray.length,s=this.expression.evaluate(new li(0),e,{},n,[],i);this.paintVertexArray.resize(t),this._setPaintValue(a,t,s);}updatePaintArray(t,e,r,n){const i=this.expression.evaluate({zoom:0},r,n);this._setPaintValue(t,e,i);}_setPaintValue(t,e,r){if("color"===this.type){const n=Ka(r);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,n[0],n[1]);}else {for(let n=t;n<e;n++)this.paintVertexArray.emplace(n,r);this.maxValue=Math.max(this.maxValue,Math.abs(r));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}}class Ya{constructor(t,e,r,n,i,a){this.expression=t,this.uniformNames=e.map((t=>`u_${t}_t`)),this.type=r,this.useIntegerZoom=n,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:"Float32",components:"color"===r?4:2,offset:0}))),this.paintVertexArray=new a;}populatePaintArray(t,e,r,n,i){const a=this.expression.evaluate(new li(this.zoom),e,{},n,[],i),s=this.expression.evaluate(new li(this.zoom+1),e,{},n,[],i),o=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(o,t,a,s);}updatePaintArray(t,e,r,n){const i=this.expression.evaluate({zoom:this.zoom},r,n),a=this.expression.evaluate({zoom:this.zoom+1},r,n);this._setPaintValue(t,e,i,a);}_setPaintValue(t,e,r,n){if("color"===this.type){const i=Ka(r),a=Ka(n);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,i[0],i[1],a[0],a[1]);}else {for(let i=t;i<e;i++)this.paintVertexArray.emplace(i,r,n);this.maxValue=Math.max(this.maxValue,Math.abs(r),Math.abs(n));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}setUniform(t,e){const r=this.useIntegerZoom?Math.floor(e.zoom):e.zoom,n=y(this.expression.interpolationFactor(r,this.zoom,this.zoom+1),0,1);t.set(n);}getBinding(t,e,r){return new qa(t,e)}}class Ha{constructor(t,e,r,n,i,a){this.expression=t,this.type=e,this.useIntegerZoom=r,this.zoom=n,this.layerId=a,this.zoomInPaintVertexArray=new i,this.zoomOutPaintVertexArray=new i;}populatePaintArray(t,e,r){const n=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(t),this.zoomOutPaintVertexArray.resize(t),this._setPaintValues(n,t,e.patterns&&e.patterns[this.layerId],r);}updatePaintArray(t,e,r,n,i){this._setPaintValues(t,e,r.patterns&&r.patterns[this.layerId],i);}_setPaintValues(t,e,r,n){if(!n||!r)return;const{min:i,mid:a,max:s}=r,o=n[i],l=n[a],u=n[s];if(o&&l&&u)for(let r=t;r<e;r++)this.zoomInPaintVertexArray.emplace(r,l.tl[0],l.tl[1],l.br[0],l.br[1],o.tl[0],o.tl[1],o.br[0],o.br[1],l.pixelRatio,o.pixelRatio),this.zoomOutPaintVertexArray.emplace(r,l.tl[0],l.tl[1],l.br[0],l.br[1],u.tl[0],u.tl[1],u.br[0],u.br[1],l.pixelRatio,u.pixelRatio);}upload(t){this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer&&(this.zoomInPaintVertexBuffer=t.createVertexBuffer(this.zoomInPaintVertexArray,Ca.members,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=t.createVertexBuffer(this.zoomOutPaintVertexArray,Ca.members,this.expression.isStateDependent));}destroy(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy();}}class Wa{constructor(t,e,r){this.binders={},this._buffers=[];const n=[];for(const i in t.paint._values){if(!r(i))continue;const a=t.paint.get(i);if(!(a instanceof yi&&_r(a.property.specification)))continue;const s=ts(i,t.type),o=a.value,l=a.property.specification.type,u=a.property.useIntegerZoom,c=a.property.specification["property-type"],h="cross-faded"===c||"cross-faded-data-driven"===c;if("constant"===o.kind)this.binders[i]=h?new Ja(o.value,s):new Ga(o.value,s,l),n.push(`/u_${i}`);else if("source"===o.kind||h){const r=es(i,l,"source");this.binders[i]=h?new Ha(o,l,u,e,r,t.id):new Xa(o,s,l,r),n.push(`/a_${i}`);}else {const t=es(i,l,"composite");this.binders[i]=new Ya(o,s,l,u,e,t),n.push(`/z_${i}`);}}this.cacheKey=n.sort().join("");}getMaxValue(t){const e=this.binders[t];return e instanceof Xa||e instanceof Ya?e.maxValue:0}populatePaintArrays(t,e,r,n,i){for(const a in this.binders){const s=this.binders[a];(s instanceof Xa||s instanceof Ya||s instanceof Ha)&&s.populatePaintArray(t,e,r,n,i);}}setConstantPatternPositions(t,e){for(const r in this.binders){const n=this.binders[r];n instanceof Ja&&n.setConstantPatternPositions(t,e);}}updatePaintArrays(t,e,r,n,i){let a=!1;for(const s in t){const o=e.getPositions(s);for(const e of o){const o=r.feature(e.index);for(const r in this.binders){const l=this.binders[r];if((l instanceof Xa||l instanceof Ya||l instanceof Ha)&&!0===l.expression.isStateDependent){const u=n.paint.get(r);l.expression=u.value,l.updatePaintArray(e.start,e.end,o,t[s],i),a=!0;}}}}return a}defines(){const t=[];for(const e in this.binders){const r=this.binders[e];(r instanceof Ga||r instanceof Ja)&&t.push(...r.uniformNames.map((t=>`#define HAS_UNIFORM_${t}`)));}return t}getBinderAttributes(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof Xa||r instanceof Ya)for(let e=0;e<r.paintVertexAttributes.length;e++)t.push(r.paintVertexAttributes[e].name);else if(r instanceof Ha)for(let e=0;e<Ca.members.length;e++)t.push(Ca.members[e].name);}return t}getBinderUniforms(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof Ga||r instanceof Ja||r instanceof Ya)for(const e of r.uniformNames)t.push(e);}return t}getPaintVertexBuffers(){return this._buffers}getUniforms(t,e){const r=[];for(const n in this.binders){const i=this.binders[n];if(i instanceof Ga||i instanceof Ja||i instanceof Ya)for(const a of i.uniformNames)if(e[a]){const s=i.getBinding(t,e[a],a);r.push({name:a,property:n,binding:s});}}return r}setUniforms(t,e,r,n){for(const{name:t,property:i,binding:a}of e)this.binders[i].setUniform(a,n,r.get(i),t);}updatePaintBuffers(t){this._buffers=[];for(const e in this.binders){const r=this.binders[e];if(t&&r instanceof Ha){const e=2===t.fromScale?r.zoomInPaintVertexBuffer:r.zoomOutPaintVertexBuffer;e&&this._buffers.push(e);}else (r instanceof Xa||r instanceof Ya)&&r.paintVertexBuffer&&this._buffers.push(r.paintVertexBuffer);}}upload(t){for(const e in this.binders){const r=this.binders[e];(r instanceof Xa||r instanceof Ya||r instanceof Ha)&&r.upload(t);}this.updatePaintBuffers();}destroy(){for(const t in this.binders){const e=this.binders[t];(e instanceof Xa||e instanceof Ya||e instanceof Ha)&&e.destroy();}}}class Qa{constructor(t,e,r=(()=>!0)){this.programConfigurations={};for(const n of t)this.programConfigurations[n.id]=new Wa(n,e,r);this.needsUpload=!1,this._featureMap=new La,this._bufferOffset=0;}populatePaintArrays(t,e,r,n,i,a){for(const r in this.programConfigurations)this.programConfigurations[r].populatePaintArrays(t,e,n,i,a);void 0!==e.id&&this._featureMap.add(e.id,r,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0;}updatePaintArrays(t,e,r,n){for(const i of r)this.needsUpload=this.programConfigurations[i.id].updatePaintArrays(t,this._featureMap,e,i,n)||this.needsUpload;}get(t){return this.programConfigurations[t]}upload(t){if(this.needsUpload){for(const e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1;}}destroy(){for(const t in this.programConfigurations)this.programConfigurations[t].destroy();}}function ts(t,e){return {"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[t]||[t.replace(`${e}
37-`,"").replace(/-/g,"_")]}function es(t,e,r){const n={color:{source:Ti,composite:Wi},number:{source:Gi,composite:Ti}},i=function(t){return {"line-pattern":{source:ga,composite:ga},"fill-pattern":{source:ga,composite:ga},"fill-extrusion-pattern":{source:ga,composite:ga}}[t]}(t);return i&&i[r]||n[e][r]}$n("ConstantBinder",Ga),$n("CrossFadedConstantBinder",Ja),$n("SourceExpressionBinder",Xa),$n("CrossFadedCompositeBinder",Ha),$n("CompositeExpressionBinder",Ya),$n("ProgramConfiguration",Wa,{omit:["_buffers"]}),$n("ProgramConfigurationSet",Qa);const rs=8192,ns=Math.pow(2,14)-1,is=-ns-1;function as(t){const e=rs/t.extent,r=t.loadGeometry();for(let t=0;t<r.length;t++){const n=r[t];for(let t=0;t<n.length;t++){const r=n[t],i=Math.round(r.x*e),a=Math.round(r.y*e);r.x=y(i,is,ns),r.y=y(a,is,ns),(i<r.x||i>r.x+1||a<r.y||a>r.y+1)&&A("Geometry exceeds allowed extent, reduce your vector tile buffer size");}}return r}function ss(t,e){return {type:t.type,id:t.id,properties:t.properties,geometry:e?as(t):[]}}function os(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2);}class ls{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new pa,this.indexArray=new Aa,this.segments=new za,this.programConfigurations=new Qa(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){const n=this.layers[0],i=[];let a=null,s=!1;"circle"===n.type&&(a=n.layout.get("circle-sort-key"),s=!a.isConstant());for(const{feature:e,id:n,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=ss(e,t);if(!this.layers[0]._featureFilter.filter(new li(this.zoom),u,r))continue;const c=s?a.evaluate(u,{},r):void 0,h={id:n,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:as(e),patterns:{},sortKey:c};i.push(h);}s&&i.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of i){const{geometry:i,index:a,sourceLayerIndex:s}=n,o=t[a].feature;this.addFeature(n,i,a,r),e.featureIndex.insert(o,i,a,s,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Ia),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}addFeature(t,e,r,n){for(const r of e)for(const e of r){const r=e.x,n=e.y;if(r<0||r>=rs||n<0||n>=rs)continue;const i=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),a=i.vertexLength;os(this.layoutVertexArray,r,n,-1,-1),os(this.layoutVertexArray,r,n,1,-1),os(this.layoutVertexArray,r,n,1,1),os(this.layoutVertexArray,r,n,-1,1),this.indexArray.emplaceBack(a,a+1,a+2),this.indexArray.emplaceBack(a,a+3,a+2),i.vertexLength+=4,i.primitiveLength+=2;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n);}}function us(t,e){for(let r=0;r<t.length;r++)if(xs(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(xs(t,e[r]))return !0;return !!fs(t,e)}function cs(t,e,r){return !!xs(t,e)||!!ys(e,t,r)}function hs(t,e){if(1===t.length)return gs(e,t[0]);for(let r=0;r<e.length;r++){const n=e[r];for(let e=0;e<n.length;e++)if(xs(t,n[e]))return !0}for(let r=0;r<t.length;r++)if(gs(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(fs(t,e[r]))return !0;return !1}function ps(t,e,r){if(t.length>1){if(fs(t,e))return !0;for(let n=0;n<e.length;n++)if(ys(e[n],t,r))return !0}for(let n=0;n<t.length;n++)if(ys(t[n],e,r))return !0;return !1}function fs(t,e){if(0===t.length||0===e.length)return !1;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1];for(let t=0;t<e.length-1;t++)if(ds(n,i,e[t],e[t+1]))return !0}return !1}function ds(t,e,r,n){return S(t,r,n)!==S(e,r,n)&&S(t,e,r)!==S(t,e,n)}function ys(t,e,r){const n=r*r;if(1===e.length)return t.distSqr(e[0])<n;for(let r=1;r<e.length;r++)if(ms(t,e[r-1],e[r])<n)return !0;return !1}function ms(t,e,r){const n=e.distSqr(r);if(0===n)return t.distSqr(e);const i=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;return t.distSqr(i<0?e:i>1?r:r.sub(e)._mult(i)._add(e))}function gs(t,e){let r,n,i,a=!1;for(let s=0;s<t.length;s++){r=t[s];for(let t=0,s=r.length-1;t<r.length;s=t++)n=r[t],i=r[s],n.y>e.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);}return a}function xs(t,e){let r=!1;for(let n=0,i=t.length-1;n<t.length;i=n++){const a=t[n],s=t[i];a.y>e.y!=s.y>e.y&&e.x<(s.x-a.x)*(e.y-a.y)/(s.y-a.y)+a.x&&(r=!r);}return r}function vs(t,e,r){const n=r[0],i=r[2];if(t.x<n.x&&e.x<n.x||t.x>i.x&&e.x>i.x||t.y<n.y&&e.y<n.y||t.y>i.y&&e.y>i.y)return !1;const a=S(t,e,r[0]);return a!==S(t,e,r[1])||a!==S(t,e,r[2])||a!==S(t,e,r[3])}function bs(t,e,r){const n=e.paint.get(t).value;return "constant"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function ws(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function _s(t,e,r,n,i){if(!e[0]&&!e[1])return t;const s=a.convert(e)._mult(i);"viewport"===r&&s._rotate(-n);const o=[];for(let e=0;e<t.length;e++)o.push(t[e].sub(s));return o}let As,Ss;$n("CircleBucket",ls,{omit:["layers"]});var ks={get paint(){return Ss=Ss||new _i({"circle-radius":new xi(X.paint_circle["circle-radius"]),"circle-color":new xi(X.paint_circle["circle-color"]),"circle-blur":new xi(X.paint_circle["circle-blur"]),"circle-opacity":new xi(X.paint_circle["circle-opacity"]),"circle-translate":new gi(X.paint_circle["circle-translate"]),"circle-translate-anchor":new gi(X.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new gi(X.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new gi(X.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new xi(X.paint_circle["circle-stroke-width"]),"circle-stroke-color":new xi(X.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new xi(X.paint_circle["circle-stroke-opacity"])})},get layout(){return As=As||new _i({"circle-sort-key":new xi(X.layout_circle["circle-sort-key"])})}},Is=1e-6,zs="undefined"!=typeof Float32Array?Float32Array:Array;function Ms(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Cs(t,e,r){var n=e[0],i=e[1],a=e[2],s=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],y=e[12],m=e[13],g=e[14],x=e[15],v=r[0],b=r[1],w=r[2],_=r[3];return t[0]=v*n+b*o+w*h+_*y,t[1]=v*i+b*l+w*p+_*m,t[2]=v*a+b*u+w*f+_*g,t[3]=v*s+b*c+w*d+_*x,t[4]=(v=r[4])*n+(b=r[5])*o+(w=r[6])*h+(_=r[7])*y,t[5]=v*i+b*l+w*p+_*m,t[6]=v*a+b*u+w*f+_*g,t[7]=v*s+b*c+w*d+_*x,t[8]=(v=r[8])*n+(b=r[9])*o+(w=r[10])*h+(_=r[11])*y,t[9]=v*i+b*l+w*p+_*m,t[10]=v*a+b*u+w*f+_*g,t[11]=v*s+b*c+w*d+_*x,t[12]=(v=r[12])*n+(b=r[13])*o+(w=r[14])*h+(_=r[15])*y,t[13]=v*i+b*l+w*p+_*m,t[14]=v*a+b*u+w*f+_*g,t[15]=v*s+b*c+w*d+_*x,t}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});var Bs,Ps=Cs;function Vs(t,e,r){var n=e[0],i=e[1],a=e[2],s=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*s,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*s,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*s,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*s,t}Bs=new zs(4),zs!=Float32Array&&(Bs[0]=0,Bs[1]=0,Bs[2]=0,Bs[3]=0);class Es extends Si{constructor(t){super(t,ks);}createBucket(t){return new ls(t)}queryRadius(t){const e=t;return bs("circle-radius",this,e)+bs("circle-stroke-width",this,e)+ws(this.paint.get("circle-translate"))}queryIntersectsFeature(t,e,r,n,i,a,s,o){const l=_s(t,this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),a.angle,s),u=this.paint.get("circle-radius").evaluate(e,r)+this.paint.get("circle-stroke-width").evaluate(e,r),c="map"===this.paint.get("circle-pitch-alignment"),h=c?l:function(t,e){return t.map((t=>Fs(t,e)))}(l,o),p=c?u*s:u;for(const t of n)for(const e of t){const t=c?e:Fs(e,o);let r=p;const n=Vs([],[e.x,e.y,0,1],o);if("viewport"===this.paint.get("circle-pitch-scale")&&"map"===this.paint.get("circle-pitch-alignment")?r*=n[3]/a.cameraToCenterDistance:"map"===this.paint.get("circle-pitch-scale")&&"viewport"===this.paint.get("circle-pitch-alignment")&&(r*=a.cameraToCenterDistance/n[3]),cs(h,t,r))return !0}return !1}}function Fs(t,e){const r=Vs([],[t.x,t.y,0,1],e);return new a(r[0]/r[3],r[1]/r[3])}class Ts extends ls{}let $s;$n("HeatmapBucket",Ts,{omit:["layers"]});var Ls={get paint(){return $s=$s||new _i({"heatmap-radius":new xi(X.paint_heatmap["heatmap-radius"]),"heatmap-weight":new xi(X.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new gi(X.paint_heatmap["heatmap-intensity"]),"heatmap-color":new wi(X.paint_heatmap["heatmap-color"]),"heatmap-opacity":new gi(X.paint_heatmap["heatmap-opacity"])})}};function Ds(t,{width:e,height:r},n,i){if(i){if(i instanceof Uint8ClampedArray)i=new Uint8Array(i.buffer);else if(i.length!==e*r*n)throw new RangeError(`mismatched image size. expected: ${i.length} but got: ${e*r*n}`)}else i=new Uint8Array(e*r*n);return t.width=e,t.height=r,t.data=i,t}function Os(t,{width:e,height:r},n){if(e===t.width&&r===t.height)return;const i=Ds({},{width:e,height:r},n);Us(t,i,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,e),height:Math.min(t.height,r)},n),t.width=e,t.height=r,t.data=i.data;}function Us(t,e,r,n,i,a){if(0===i.width||0===i.height)return e;if(i.width>t.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError("out of range source coordinates for image copy");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError("out of range destination coordinates for image copy");const s=t.data,o=e.data;if(s===o)throw new Error("srcData equals dstData, so image is already copied");for(let l=0;l<i.height;l++){const u=((r.y+l)*t.width+r.x)*a,c=((n.y+l)*e.width+n.x)*a;for(let t=0;t<i.width*a;t++)o[c+t]=s[u+t];}return e}class Rs{constructor(t,e){Ds(this,t,1,e);}resize(t){Os(this,t,1);}clone(){return new Rs({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){Us(t,e,r,n,i,1);}}class qs{constructor(t,e){Ds(this,t,4,e);}resize(t){Os(this,t,4);}replace(t,e){e?this.data.set(t):this.data=t instanceof Uint8ClampedArray?new Uint8Array(t.buffer):t;}clone(){return new qs({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){Us(t,e,r,n,i,4);}}function js(t){const e={},r=t.resolution||256,n=t.clips?t.clips.length:1,i=t.image||new qs({width:r,height:n});if(Math.log(r)/Math.LN2%1!=0)throw new Error(`width is not a power of 2 - ${r}`);const a=(r,n,a)=>{e[t.evaluationKey]=a;const s=t.expression.evaluate(e);i.data[r+n+0]=Math.floor(255*s.r/s.a),i.data[r+n+1]=Math.floor(255*s.g/s.a),i.data[r+n+2]=Math.floor(255*s.b/s.a),i.data[r+n+3]=Math.floor(255*s.a);};if(t.clips)for(let e=0,i=0;e<n;++e,i+=4*r)for(let n=0,s=0;n<r;n++,s+=4){const o=n/(r-1),{start:l,end:u}=t.clips[e];a(i,s,l*(1-o)+u*o);}else for(let t=0,e=0;t<r;t++,e+=4)a(0,e,t/(r-1));return i}
37$n("AlphaImage",Rs),$n("RGBAImage",qs);class Ns extends Si{createBucket(t){return new Ts(t)}constructor(t){super(t,Ls),this._updateColorRamp();}_handleSpecialPaintPropertyUpdate(t){"heatmap-color"===t&&this._updateColorRamp();}_updateColorRamp(){this.colorRamp=js({expression:this._transitionablePaint._values["heatmap-color"].value.expression,evaluationKey:"heatmapDensity",image:this.colorRamp}),this.colorRampTexture=null;}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null);}queryRadius(){return 0}queryIntersectsFeature(){return !1}hasOffscreenPass(){return 0!==this.paint.get("heatmap-opacity")&&"none"!==this.visibility}}let Zs;var Ks={get paint(){return Zs=Zs||new _i({"hillshade-illumination-direction":new gi(X.paint_hillshade["hillshade-illumination-direction"]),"hillshade-illumination-anchor":new gi(X.paint_hillshade["hillshade-illumination-anchor"]),"hillshade-exaggeration":new gi(X.paint_hillshade["hillshade-exaggeration"]),"hillshade-shadow-color":new gi(X.paint_hillshade["hillshade-shadow-color"]),"hillshade-highlight-color":new gi(X.paint_hillshade["hillshade-highlight-color"]),"hillshade-accent-color":new gi(X.paint_hillshade["hillshade-accent-color"])})}};class Gs extends Si{constructor(t){super(t,Ks);}hasOffscreenPass(){return 0!==this.paint.get("hillshade-exaggeration")&&"none"!==this.visibility}}const Js=Mi([{name:"a_pos",components:2,type:"Int16"}],4),{members:Xs}=Js;var Ys={exports:{}};function Hs(t,e,r){r=r||2;var n,i,a,s,o,l,u,c=e&&e.length,h=c?e[0]*r:t.length,p=Ws(t,0,h,r,!0),f=[];if(!p||p.next===p.prev)return f;if(c&&(p=function(t,e,r,n){var i,a,s,o=[];for(i=0,a=e.length;i<a;i++)(s=Ws(t,e[i]*n,i<a-1?e[i+1]*n:t.length,n,!1))===s.next&&(s.steiner=!0),o.push(uo(s));for(o.sort(ao),i=0;i<o.length;i++)r=so(o[i],r);return r}(t,e,p,r)),t.length>80*r){n=a=t[0],i=s=t[1];for(var d=r;d<h;d+=r)(o=t[d])<n&&(n=o),(l=t[d+1])<i&&(i=l),o>a&&(a=o),l>s&&(s=l);u=0!==(u=Math.max(a-n,s-i))?32767/u:0;}return to(p,f,r,n,i,u,0),f}function Ws(t,e,r,n,i){var a,s;if(i===Ao(t,e,r,n)>0)for(a=e;a<r;a+=n)s=bo(a,t[a],t[a+1],s);else for(a=r-n;a>=e;a-=n)s=bo(a,t[a],t[a+1],s);return s&&fo(s,s.next)&&(wo(s),s=s.next),s}function Qs(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!fo(n,n.next)&&0!==po(n.prev,n,n.next))n=n.next;else {if(wo(n),(n=e=n.prev)===n.next)break;r=!0;}}while(r||n!==e);return e}function to(t,e,r,n,i,a,s){if(t){!s&&a&&function(t,e,r,n){var i=t;do{0===i.z&&(i.z=lo(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,s,o,l,u=1;do{for(r=t,t=null,a=null,s=0;r;){for(s++,n=r,o=0,e=0;e<u&&(o++,n=n.nextZ);e++);for(l=u;o>0||l>0&&n;)0!==o&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,o--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n;}a.nextZ=null,u*=2;}while(s>1)}(i);}(t,n,i,a);for(var o,l,u=t;t.prev!==t.next;)if(o=t.prev,l=t.next,a?ro(t,n,i,a):eo(t))e.push(o.i/r|0),e.push(t.i/r|0),e.push(l.i/r|0),wo(t),t=l.next,u=l.next;else if((t=l)===u){s?1===s?to(t=no(Qs(t),e,r),e,r,n,i,a,2):2===s&&io(t,e,r,n,i,a):to(Qs(t),e,r,n,i,a,1);break}}}function eo(t){var e=t.prev,r=t,n=t.next;if(po(e,r,n)>=0)return !1;for(var i=e.x,a=r.x,s=n.x,o=e.y,l=r.y,u=n.y,c=i<a?i<s?i:s:a<s?a:s,h=o<l?o<u?o:u:l<u?l:u,p=i>a?i>s?i:s:a>s?a:s,f=o>l?o>u?o:u:l>u?l:u,d=n.next;d!==e;){if(d.x>=c&&d.x<=p&&d.y>=h&&d.y<=f&&co(i,o,a,l,s,u,d.x,d.y)&&po(d.prev,d,d.next)>=0)return !1;d=d.next;}return !0}function ro(t,e,r,n){var i=t.prev,a=t,s=t.next;if(po(i,a,s)>=0)return !1;for(var o=i.x,l=a.x,u=s.x,c=i.y,h=a.y,p=s.y,f=o<l?o<u?o:u:l<u?l:u,d=c<h?c<p?c:p:h<p?h:p,y=o>l?o>u?o:u:l>u?l:u,m=c>h?c>p?c:p:h>p?h:p,g=lo(f,d,e,r,n),x=lo(y,m,e,r,n),v=t.prevZ,b=t.nextZ;v&&v.z>=g&&b&&b.z<=x;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==s&&co(o,c,l,h,u,p,v.x,v.y)&&po(v.prev,v,v.next)>=0)return !1;if(v=v.prevZ,b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==s&&co(o,c,l,h,u,p,b.x,b.y)&&po(b.prev,b,b.next)>=0)return !1;b=b.nextZ;}for(;v&&v.z>=g;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==s&&co(o,c,l,h,u,p,v.x,v.y)&&po(v.prev,v,v.next)>=0)return !1;v=v.prevZ;}for(;b&&b.z<=x;){if(b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==s&&co(o,c,l,h,u,p,b.x,b.y)&&po(b.prev,b,b.next)>=0)return !1;
vendor: 1,839 bytes, line 37
37b=b.nextZ;}return !0}function no(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!fo(i,a)&&yo(i,n,n.next,a)&&xo(i,a)&&xo(a,i)&&(e.push(i.i/r|0),e.push(n.i/r|0),e.push(a.i/r|0),wo(n),wo(n.next),n=t=a),n=n.next;}while(n!==t);return Qs(n)}function io(t,e,r,n,i,a){var s=t;do{for(var o=s.next.next;o!==s.prev;){if(s.i!==o.i&&ho(s,o)){var l=vo(s,o);return s=Qs(s,s.next),l=Qs(l,l.next),to(s,e,r,n,i,a,0),void to(l,e,r,n,i,a,0)}o=o.next;}s=s.next;}while(s!==t)}function ao(t,e){return t.x-e.x}function so(t,e){var r=function(t,e){var r,n=e,i=t.x,a=t.y,s=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var o=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(o<=i&&o>s&&(s=o,r=n.x<n.next.x?n:n.next,o===i))return r}n=n.next;}while(n!==e);if(!r)return null;var l,u=r,c=r.x,h=r.y,p=1/0;n=r;do{i>=n.x&&n.x>=c&&i!==n.x&&co(a<h?i:s,a,c,h,a<h?s:i,a,n.x,n.y)&&(l=Math.abs(a-n.y)/(i-n.x),xo(n,t)&&(l<p||l===p&&(n.x>r.x||n.x===r.x&&oo(r,n)))&&(r=n,p=l)),n=n.next;}while(n!==u);return r}(t,e);if(!r)return e;var n=vo(r,t);return Qs(n,n.next),Qs(r,r.next)}function oo(t,e){return po(t.prev,t,e.prev)<0&&po(e.next,t,t.next)<0}function lo(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*i|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function uo(t){var e=t,r=t;do{(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.next;}while(e!==t);return r}function co(t,e,r,n,i,a,s,o){return (i-s)*(e-o)>=(t-s)*(a-o)&&(t-s)*(n-o)>=(r-s)*(e-o)&&(r-s)*(a-o)>=(i-s)*(n-o)}function ho(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&yo(r,r.next,t,e))return !0;r=r.next;}while(r!==t);return !1}(t,e)&&(xo(t,e)&&xo(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>
vendor: 9,151 bytes, line 37
37a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;}while(r!==t);return n}(t,e)&&(po(t.prev,t,e.prev)||po(t,e.prev,e))||fo(t,e)&&po(t.prev,t,t.next)>0&&po(e.prev,e,e.next)>0)}function po(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function fo(t,e){return t.x===e.x&&t.y===e.y}function yo(t,e,r,n){var i=go(po(t,e,r)),a=go(po(t,e,n)),s=go(po(r,n,t)),o=go(po(r,n,e));return i!==a&&s!==o||!(0!==i||!mo(t,r,e))||!(0!==a||!mo(t,n,e))||!(0!==s||!mo(r,t,n))||!(0!==o||!mo(r,e,n))}function mo(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function go(t){return t>0?1:t<0?-1:0}function xo(t,e){return po(t.prev,t,t.next)<0?po(t,e,t.next)>=0&&po(t,t.prev,e)>=0:po(t,e,t.prev)<0||po(t,t.next,e)<0}function vo(t,e){var r=new _o(t.i,t.x,t.y),n=new _o(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function bo(t,e,r,n){var i=new _o(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function wo(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ);}function _o(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1;}function Ao(t,e,r,n){for(var i=0,a=e,s=r-n;a<r;a+=n)i+=(t[s]-t[a])*(t[a+1]+t[s+1]),s=a;return i}Ys.exports=Hs,Ys.exports.default=Hs,Hs.deviation=function(t,e,r,n){var i=e&&e.length,a=Math.abs(Ao(t,0,i?e[0]*r:t.length,r));if(i)for(var s=0,o=e.length;s<o;s++)a-=Math.abs(Ao(t,e[s]*r,s<o-1?e[s+1]*r:t.length,r));var l=0;for(s=0;s<n.length;s+=3){var u=n[s]*r,c=n[s+1]*r,h=n[s+2]*r;l+=Math.abs((t[u]-t[h])*(t[c+1]-t[u+1])-(t[u]-t[c])*(t[h+1]-t[u+1]));}return 0===a&&0===l?0:Math.abs((l-a)/a)},Hs.flatten=function(t){for(var e=t[0][0].length,r={vertices:[],holes:[],dimensions:e},n=0,i=0;i<t.length;i++){for(var a=0;a<t[i].length;a++)for(var s=0;s<e;s++)r.vertices.push(t[i][a][s]);i>0&&r.holes.push(n+=t[i-1].length);}return r};var So=r(Ys.exports);function ko(t,e,r,n,i){Io(t,e,r||0,n||t.length-1,i||Mo);}function Io(t,e,r,n,i){for(;n>r;){if(n-r>600){var a=n-r+1,s=e-r+1,o=Math.log(a),l=.5*Math.exp(2*o/3),u=.5*Math.sqrt(o*l*(a-l)/a)*(s-a/2<0?-1:1);Io(t,e,Math.max(r,Math.floor(e-s*l/a+u)),Math.min(n,Math.floor(e+(a-s)*l/a+u)),i);}var c=t[e],h=r,p=n;for(zo(t,r,e),i(t[n],c)>0&&zo(t,r,n);h<p;){for(zo(t,h,p),h++,p--;i(t[h],c)<0;)h++;for(;i(t[p],c)>0;)p--;}0===i(t[r],c)?zo(t,r,p):zo(t,++p,n),p<=e&&(r=p+1),e<=p&&(n=p-1);}}function zo(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function Mo(t,e){return t<e?-1:t>e?1:0}function Co(t,e){const r=t.length;if(r<=1)return [t];const n=[];let i,a;for(let e=0;e<r;e++){const r=k(t[e]);0!==r&&(t[e].area=Math.abs(r),void 0===a&&(a=r<0),a===r<0?(i&&n.push(i),i=[t[e]]):i.push(t[e]));}if(i&&n.push(i),e>1)for(let t=0;t<n.length;t++)n[t].length<=e||(ko(n[t],e,1,n[t].length-1,Bo),n[t]=n[t].slice(0,e));return n}function Bo(t,e){return e.area-t.area}function Po(t,e,r){const n=r.patternDependencies;let i=!1;for(const r of e){const e=r.paint.get(`${t}-pattern`);e.isConstant()||(i=!0);const a=e.constantOr(null);a&&(i=!0,n[a.to]=!0,n[a.from]=!0);}return i}function Vo(t,e,r,n,i){const a=i.patternDependencies;for(const s of e){const e=s.paint.get(`${t}-pattern`).value;if("constant"!==e.kind){let t=e.evaluate({zoom:n-1},r,{},i.availableImages),o=e.evaluate({zoom:n},r,{},i.availableImages),l=e.evaluate({zoom:n+1},r,{},i.availableImages);t=t&&t.name?t.name:t,o=o&&o.name?o.name:o,l=l&&l.name?l.name:l,a[t]=!0,a[o]=!0,a[l]=!0,r.patterns[s.id]={min:t,mid:o,max:l};}}return r}class Eo{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new fa,this.indexArray=new Aa,this.indexArray2=new Sa,this.programConfigurations=new Qa(t.layers,t.zoom),this.segments=new za,this.segments2=new za,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.hasPattern=Po("fill",this.layers,e);const n=this.layers[0].layout.get("fill-sort-key"),i=!n.isConstant(),a=[];for(const{feature:s,id:o,index:l,sourceLayerIndex:u}of t){const t=this.layers[0]._featureFilter.needGeometry,c=ss(s,t);if(!this.layers[0]._featureFilter.filter(new li(this.zoom),c,r))continue;const h=i?n.evaluate(c,{},r,e.availableImages):void 0,p={id:o,properties:s.properties,type:s.type,sourceLayerIndex:u,index:l,geometry:t?c.geometry:as(s),patterns:{},sortKey:h};a.push(p);}i&&a.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of a){const{geometry:i,index:a,sourceLayerIndex:s}=n;if(this.hasPattern){const t=Vo("fill",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,a,r,{});e.featureIndex.insert(t[a].feature,i,a,s,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}addFeatures(t,e,r){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Xs),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy());}addFeature(t,e,r,n,i){for(const t of Co(e,500)){let e=0;for(const r of t)e+=r.length;const r=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray),n=r.vertexLength,i=[],a=[];for(const e of t){if(0===e.length)continue;e!==t[0]&&a.push(i.length/2);const r=this.segments2.prepareSegment(e.length,this.layoutVertexArray,this.indexArray2),n=r.vertexLength;this.layoutVertexArray.emplaceBack(e[0].x,e[0].y),this.indexArray2.emplaceBack(n+e.length-1,n),i.push(e[0].x),i.push(e[0].y);for(let t=1;t<e.length;t++)this.layoutVertexArray.emplaceBack(e[t].x,e[t].y),this.indexArray2.emplaceBack(n+t-1,n+t),i.push(e[t].x),i.push(e[t].y);r.vertexLength+=e.length,r.primitiveLength+=e.length;}const s=So(i,a);for(let t=0;t<s.length;t+=3)this.indexArray.emplaceBack(n+s[t],n+s[t+1],n+s[t+2]);r.vertexLength+=e,r.primitiveLength+=s.length/3;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);}}let Fo,To;$n("FillBucket",Eo,{omit:["layers","patternFeatures"]});var $o={get paint(){return To=To||new _i({"fill-antialias":new gi(X.paint_fill["fill-antialias"]),"fill-opacity":new xi(X.paint_fill["fill-opacity"]),"fill-color":new xi(X.paint_fill["fill-color"]),"fill-outline-color":new xi(X.paint_fill["fill-outline-color"]),"fill-translate":new gi(X.paint_fill["fill-translate"]),"fill-translate-anchor":new gi(X.paint_fill["fill-translate-anchor"]),"fill-pattern":new vi(X.paint_fill["fill-pattern"])})},get layout(){return Fo=Fo||new _i({"fill-sort-key":new xi(X.layout_fill["fill-sort-key"])})}};class Lo extends Si{constructor(t){super(t,$o);}recalculate(t,e){super.recalculate(t,e);const r=this.paint._values["fill-outline-color"];"constant"===r.value.kind&&void 0===r.value.value&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"]);}createBucket(t){return new Eo(t)}queryRadius(){return ws(this.paint.get("fill-translate"))}queryIntersectsFeature(t,e,r,n,i,a,s){return hs(_s(t,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),a.angle,s),n)}isTileClipped(){return !0}}const Do=Mi([{name:"a_pos",components:2,type:"Int16"},{name:"a_normal_ed",components:4,type:"Int16"}],4),Oo=Mi([{name:"a_centroid",components:2,type:"Int16"}],4),{members:Uo}=Do;var Ro={},qo=n,jo=No;function No(t,e,r,n,i){this.properties={},this.extent=r,this.type=0,this._pbf=t,this._geometry=-1,this._keys=n,this._values=i,t.readFields(Zo,this,e);}function Zo(t,e,r){1==t?e.id=r.readVarint():2==t?function(t,e){for(var r=t.readVarint()+t.pos;t.pos<r;){var n=e._keys[t.readVarint()],i=e._values[t.readVarint()];e.properties[n]=i;}}(r,e):3==t?e.type=r.readVarint():4==t&&(e._geometry=r.pos);}function Ko(t){for(var e,r,n=0,i=0,a=t.length,s=a-1;i<a;s=i++)n+=((r=t[s]).x-(e=t[i]).x)*(e.y+r.y);return n}No.types=["Unknown","Point","LineString","Polygon"],No.prototype.loadGeometry=function(){var t=this._pbf;t.pos=this._geometry;for(var e,r=t.readVarint()+t.pos,n=1,i=0,a=0,s=0,o=[];t.pos<r;){if(i<=0){var l=t.readVarint();n=7&l,i=l>>3;}if(i--,1===n||2===n)a+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&o.push(e),e=[]),e.push(new qo(a,s));else {if(7!==n)throw new Error("unknown command "+n);e&&e.push(e[0].clone());}}return e&&o.push(e),o},No.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,s=1/0,o=-1/0,l=1/0,u=-1/0;t.pos<e;){if(n<=0){var c=t.readVarint();r=7&c,n=c>>3;}if(n--,1===r||2===r)(i+=t.readSVarint())<s&&(s=i),i>
vendor: 9,070 bytes, line 37
37o&&(o=i),(a+=t.readSVarint())<l&&(l=a),a>u&&(u=a);else if(7!==r)throw new Error("unknown command "+r)}return [s,l,o,u]},No.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),s=this.extent*t,o=this.extent*e,l=this.loadGeometry(),u=No.types[this.type];function c(t){for(var e=0;e<t.length;e++){var r=t[e];t[e]=[360*(r.x+s)/a-180,360/Math.PI*Math.atan(Math.exp((180-360*(r.y+o)/a)*Math.PI/180))-90];}}switch(this.type){case 1:var h=[];for(n=0;n<l.length;n++)h[n]=l[n][0];c(l=h);break;case 2:for(n=0;n<l.length;n++)c(l[n]);break;case 3:for(l=function(t){var e=t.length;if(e<=1)return [t];for(var r,n,i=[],a=0;a<e;a++){var s=Ko(t[a]);0!==s&&(void 0===n&&(n=s<0),n===s<0?(r&&i.push(r),r=[t[a]]):r.push(t[a]));}return r&&i.push(r),i}(l),n=0;n<l.length;n++)for(i=0;i<l[n].length;i++)c(l[n][i]);}1===l.length?l=l[0]:u="Multi"+u;var p={type:"Feature",geometry:{type:u,coordinates:l},properties:this.properties};return "id"in this&&(p.id=this.id),p};var Go=jo,Jo=Xo;function Xo(t,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(Yo,this,e),this.length=this._features.length;}function Yo(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readString():5===t?e.extent=r.readVarint():2===t?e._features.push(r.pos):3===t?e._keys.push(r.readString()):4===t&&e._values.push(function(t){for(var e=null,r=t.readVarint()+t.pos;t.pos<r;){var n=t.readVarint()>>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null;}return e}(r));}Xo.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new Go(this._pbf,e,this.extent,this._keys,this._values)};var Ho=Jo;function Wo(t,e,r){if(3===t){var n=new Ho(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n);}}Ro.VectorTile=function(t,e){this.layers=t.readFields(Wo,{},e);},Ro.VectorTileFeature=jo,Ro.VectorTileLayer=Jo;const Qo=Ro.VectorTileFeature.types,tl=Math.pow(2,13);function el(t,e,r,n,i,a,s,o){t.emplaceBack(e,r,2*Math.floor(n*tl)+s,i*tl*2,a*tl*2,Math.round(o));}class rl{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new da,this.centroidVertexArray=new ha,this.indexArray=new Aa,this.programConfigurations=new Qa(t.layers,t.zoom),this.segments=new za,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.features=[],this.hasPattern=Po("fill-extrusion",this.layers,e);for(const{feature:n,id:i,index:a,sourceLayerIndex:s}of t){const t=this.layers[0]._featureFilter.needGeometry,o=ss(n,t);if(!this.layers[0]._featureFilter.filter(new li(this.zoom),o,r))continue;const l={id:i,sourceLayerIndex:s,index:a,geometry:t?o.geometry:as(n),properties:n.properties,type:n.type,patterns:{}};this.hasPattern?this.features.push(Vo("fill-extrusion",this.layers,l,this.zoom,e)):this.addFeature(l,l.geometry,a,r,{}),e.featureIndex.insert(n,l.geometry,a,s,this.index,!0);}}addFeatures(t,e,r){for(const t of this.features){const{geometry:n}=t;this.addFeature(t,n,t.index,e,r);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.centroidVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Uo),this.centroidVertexBuffer=t.createVertexBuffer(this.centroidVertexArray,Oo.members,!0),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy());}addFeature(t,e,r,n,i){const a={x:0,y:0,vertexCount:0};for(const r of Co(e,500)){let e=0;for(const t of r)e+=t.length;let n=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(const t of r){if(0===t.length)continue;if(il(t))continue;let e=0;for(let r=0;r<t.length;r++){const i=t[r];if(r>=1){const s=t[r-1];if(!nl(i,s)){n.vertexLength+4>za.MAX_VERTEX_ARRAY_LENGTH&&(n=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const t=i.sub(s)._perp()._unit(),r=s.dist(i);e+r>32768&&(e=0),el(this.layoutVertexArray,i.x,i.y,t.x,t.y,0,0,e),el(this.layoutVertexArray,i.x,i.y,t.x,t.y,0,1,e),a.x+=2*i.x,a.y+=2*i.y,a.vertexCount+=2,e+=r,el(this.layoutVertexArray,s.x,s.y,t.x,t.y,0,0,e),el(this.layoutVertexArray,s.x,s.y,t.x,t.y,0,1,e),a.x+=2*s.x,a.y+=2*s.y,a.vertexCount+=2;const o=n.vertexLength;this.indexArray.emplaceBack(o,o+2,o+1),this.indexArray.emplaceBack(o+1,o+2,o+3),n.vertexLength+=4,n.primitiveLength+=2;}}}}if(n.vertexLength+e>za.MAX_VERTEX_ARRAY_LENGTH&&(n=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray)),"Polygon"!==Qo[t.type])continue;const i=[],s=[],o=n.vertexLength;for(const t of r)if(0!==t.length){t!==r[0]&&s.push(i.length/2);for(let e=0;e<t.length;e++){const r=t[e];el(this.layoutVertexArray,r.x,r.y,0,0,1,1,0),a.x+=r.x,a.y+=r.y,a.vertexCount+=1,i.push(r.x),i.push(r.y);}}const l=So(i,s);for(let t=0;t<l.length;t+=3)this.indexArray.emplaceBack(o+l[t],o+l[t+2],o+l[t+1]);n.primitiveLength+=l.length/3,n.vertexLength+=e;}for(let t=0;t<a.vertexCount;t++)this.centroidVertexArray.emplaceBack(Math.floor(a.x/a.vertexCount),Math.floor(a.y/a.vertexCount));this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);}}function nl(t,e){return t.x===e.x&&(t.x<0||t.x>rs)||t.y===e.y&&(t.y<0||t.y>rs)}function il(t){return t.every((t=>t.x<0))||t.every((t=>t.x>rs))||t.every((t=>t.y<0))||t.every((t=>t.y>rs))}let al;$n("FillExtrusionBucket",rl,{omit:["layers","features"]});var sl={get paint(){return al=al||new _i({"fill-extrusion-opacity":new gi(X["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new xi(X["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new gi(X["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new gi(X["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new vi(X["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new xi(X["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new xi(X["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new gi(X["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class ol extends Si{constructor(t){super(t,sl);}createBucket(t){return new rl(t)}queryRadius(){return ws(this.paint.get("fill-extrusion-translate"))}is3D(){return !0}queryIntersectsFeature(t,e,r,n,i,s,o,l){const u=_s(t,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),s.angle,o),c=this.paint.get("fill-extrusion-height").evaluate(e,r),h=this.paint.get("fill-extrusion-base").evaluate(e,r),p=function(t,e,r,n){const i=[];for(const r of t){const t=[r.x,r.y,0,1];Vs(t,t,e),i.push(new a(t[0]/t[3],t[1]/t[3]));}return i}(u,l),f=function(t,e,r,n){const i=[],s=[],o=n[8]*e,l=n[9]*e,u=n[10]*e,c=n[11]*e,h=n[8]*r,p=n[9]*r,f=n[10]*r,d=n[11]*r;for(const e of t){const t=[],r=[];for(const i of e){const e=i.x,s=i.y,y=n[0]*e+n[4]*s+n[12],m=n[1]*e+n[5]*s+n[13],g=n[2]*e+n[6]*s+n[14],x=n[3]*e+n[7]*s+n[15],v=g+u,b=x+c,w=y+h,_=m+p,A=g+f,S=x+d,k=new a((y+o)/b,(m+l)/b);k.z=v/b,t.push(k);const I=new a(w/S,_/S);I.z=A/S,r.push(I);}i.push(t),s.push(r);}return [i,s]}(n,h,c,l);return function(t,e,r){let n=1/0;hs(r,e)&&(n=ul(r,e[0]));for(let i=0;i<e.length;i++){const a=e[i],s=t[i];for(let t=0;t<a.length-1;t++){const e=a[t],i=[e,a[t+1],s[t+1],s[t],e];us(r,i)&&(n=Math.min(n,ul(r,i)));}}return n!==1/0&&n}(f[0],f[1],p)}}function ll(t,e){return t.x*e.x+t.y*e.y}function ul(t,e){if(1===t.length){let r=0;const n=e[r++];let i;for(;!i||n.equals(i);)if(i=e[r++],!i)return 1/0;for(;r<e.length;r++){const a=e[r],s=t[0],o=i.sub(n),l=a.sub(n),u=s.sub(n),c=ll(o,o),h=ll(o,l),p=ll(l,l),f=ll(u,o),d=ll(u,l),y=c*p-h*h,m=(p*f-h*d)/y,g=(c*d-h*f)/y,x=n.z*(1-m-g)+i.z*m+a.z*g;if(isFinite(x))return x}return 1/0}{let t=1/0;for(const r of e)t=Math.min(t,r.z);return t}}const cl=Mi([{name:"a_pos_normal",components:2,type:"Int16"},{name:"a_data",components:4,type:"Uint8"}],4),{members:hl}=cl,pl=Mi([{name:"a_uv_x",components:1,type:"Float32"},{name:"a_split_index",components:1,type:"Float32"}]),{members:fl}=pl,dl=Ro.VectorTileFeature.types,yl=Math.cos(Math.PI/180*37.5),ml=Math.pow(2,14)/.5;class gl{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={}
vendor: 4,907 bytes, line 37
37,this.layers.forEach((t=>{this.gradients[t.id]={};})),this.layoutVertexArray=new ya,this.layoutVertexArray2=new ma,this.indexArray=new Aa,this.programConfigurations=new Qa(t.layers,t.zoom),this.segments=new za,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.hasPattern=Po("line",this.layers,e);const n=this.layers[0].layout.get("line-sort-key"),i=!n.isConstant(),a=[];for(const{feature:e,id:s,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=ss(e,t);if(!this.layers[0]._featureFilter.filter(new li(this.zoom),u,r))continue;const c=i?n.evaluate(u,{},r):void 0,h={id:s,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:as(e),patterns:{},sortKey:c};a.push(h);}i&&a.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of a){const{geometry:i,index:a,sourceLayerIndex:s}=n;if(this.hasPattern){const t=Vo("line",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,a,r,{});e.featureIndex.insert(t[a].feature,i,a,s,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}addFeatures(t,e,r){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,fl)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,hl),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}lineFeatureClips(t){if(t.properties&&Object.prototype.hasOwnProperty.call(t.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(t.properties,"mapbox_clip_end"))return {start:+t.properties.mapbox_clip_start,end:+t.properties.mapbox_clip_end}}addFeature(t,e,r,n,i){const a=this.layers[0].layout,s=a.get("line-join").evaluate(t,{}),o=a.get("line-cap"),l=a.get("line-miter-limit"),u=a.get("line-round-limit");this.lineClips=this.lineFeatureClips(t);for(const r of e)this.addLine(r,t,s,o,l,u);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);}addLine(t,e,r,n,i,a){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let e=0;e<t.length-1;e++)this.totalDistance+=t[e].dist(t[e+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance);}const s="Polygon"===dl[e.type];let o=t.length;for(;o>=2&&t[o-1].equals(t[o-2]);)o--;let l=0;for(;l<o-1&&t[l].equals(t[l+1]);)l++;if(o<(s?3:2))return;"bevel"===r&&(i=1.05);const u=this.overscaling<=16?15*rs/(512*this.overscaling):0,c=this.segments.prepareSegment(10*o,this.layoutVertexArray,this.indexArray);let h,p,f,d,y;this.e1=this.e2=-1,s&&(h=t[o-2],y=t[l].sub(h)._unit()._perp());for(let e=l;e<o;e++){if(f=e===o-1?s?t[l+1]:void 0:t[e+1],f&&t[e].equals(f))continue;y&&(d=y),h&&(p=h),h=t[e],y=f?f.sub(h)._unit()._perp():d,d=d||y;let m=d.add(y);0===m.x&&0===m.y||m._unit();const g=d.x*y.x+d.y*y.y,x=m.x*y.x+m.y*y.y,v=0!==x?1/x:1/0,b=2*Math.sqrt(2-2*x),w=x<yl&&p&&f,_=d.x*y.y-d.y*y.x>0;if(w&&e>l){const t=h.dist(p);if(t>2*u){const e=h.sub(h.sub(p)._mult(u/t)._round());this.updateDistance(p,e),this.addCurrentVertex(e,d,0,0,c),p=e;}}const A=p&&f;let S=A?r:s?"butt":n;if(A&&"round"===S&&(v<a?S="miter":v<=2&&(S="fakeround")),"miter"===S&&v>i&&(S="bevel"),"bevel"===S&&(v>2&&(S="flipbevel"),v<i&&(S="miter")),p&&this.updateDistance(p,h),"miter"===S)m._mult(v),this.addCurrentVertex(h,m,0,0,c);else if("flipbevel"===S){if(v>100)m=y.mult(-1);else {const t=v*d.add(y).mag()/d.sub(y).mag();m._perp()._mult(t*(_?-1:1));}this.addCurrentVertex(h,m,0,0,c),this.addCurrentVertex(h,m.mult(-1),0,0,c);}else if("bevel"===S||"fakeround"===S){const t=-Math.sqrt(v*v-1),e=_?t:0,r=_?0:t;if(p&&this.addCurrentVertex(h,d,e,r,c),"fakeround"===S){const t=Math.round(180*b/Math.PI/20);for(let e=1;e<t;e++){let r=e/t;if(.5!==r){const t=r-.5;r+=r*t*(r-1)*((1.0904+g*(g*(3.55645-1.43519*g)-3.2452))*t*t+(.848013+g*(.215638*g-1.06021)));}const n=y.sub(d)._mult(r)._add(d)._unit()._mult(_?-1:1);this.addHalfVertex(h,n.x,n.y,!1,_,0,c);}}f&&this.addCurrentVertex(h,y,-e,-r,c);}else if("butt"===S)this.addCurrentVertex(h,m,0,0,c);else if("square"===S){const t=p?1:-1;this.addCurrentVertex(h,m,t,t,c);}else "round"===S&&(p&&(this.addCurrentVertex(h,d,0,0,c),this.addCurrentVertex(h,d,1,1,c,!0)),f&&(this.addCurrentVertex(h,y,-1,-1,c,!0),this.addCurrentVertex(h,y,0,0,c)));if(w&&e<o-1){const t=h.dist(f);if(t>
vendor: 10,527 bytes, line 37
372*u){const e=h.add(f.sub(h)._mult(u/t)._round());this.updateDistance(h,e),this.addCurrentVertex(e,y,0,0,c),h=e;}}}}addCurrentVertex(t,e,r,n,i,a=!1){const s=e.y*n-e.x,o=-e.y-e.x*n;this.addHalfVertex(t,e.x+e.y*r,e.y-e.x*r,a,!1,r,i),this.addHalfVertex(t,s,o,a,!0,-n,i),this.distance>ml/2&&0===this.totalDistance&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(t,e,r,n,i,a));}addHalfVertex({x:t,y:e},r,n,i,a,s,o){const l=.5*(this.lineClips?this.scaledDistance*(ml-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((t<<1)+(i?1:0),(e<<1)+(a?1:0),Math.round(63*r)+128,Math.round(63*n)+128,1+(0===s?0:s<0?-1:1)|(63&l)<<2,l>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const u=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,u),o.primitiveLength++),a?this.e2=u:this.e1=u;}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance;}updateDistance(t,e){this.distance+=t.dist(e),this.updateScaledDistance();}}let xl,vl;$n("LineBucket",gl,{omit:["layers","patternFeatures"]});var bl={get paint(){return vl=vl||new _i({"line-opacity":new xi(X.paint_line["line-opacity"]),"line-color":new xi(X.paint_line["line-color"]),"line-translate":new gi(X.paint_line["line-translate"]),"line-translate-anchor":new gi(X.paint_line["line-translate-anchor"]),"line-width":new xi(X.paint_line["line-width"]),"line-gap-width":new xi(X.paint_line["line-gap-width"]),"line-offset":new xi(X.paint_line["line-offset"]),"line-blur":new xi(X.paint_line["line-blur"]),"line-dasharray":new bi(X.paint_line["line-dasharray"]),"line-pattern":new vi(X.paint_line["line-pattern"]),"line-gradient":new wi(X.paint_line["line-gradient"])})},get layout(){return xl=xl||new _i({"line-cap":new gi(X.layout_line["line-cap"]),"line-join":new xi(X.layout_line["line-join"]),"line-miter-limit":new gi(X.layout_line["line-miter-limit"]),"line-round-limit":new gi(X.layout_line["line-round-limit"]),"line-sort-key":new xi(X.layout_line["line-sort-key"])})}};class wl extends xi{possiblyEvaluate(t,e){return e=new li(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,zoomHistory:e.zoomHistory,transition:e.transition}),super.possiblyEvaluate(t,e)}evaluate(t,e,r,n){return e=g({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(t,e,r,n)}}let _l;class Al extends Si{constructor(t){super(t,bl),this.gradientVersion=0,_l||(_l=new wl(bl.paint.properties["line-width"].specification),_l.useIntegerZoom=!0);}_handleSpecialPaintPropertyUpdate(t){if("line-gradient"===t){const t=this.gradientExpression();this.stepInterpolant=!!function(t){return void 0!==t._styleExpression}(t)&&t._styleExpression.expression instanceof qe,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER;}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(t,e){super.recalculate(t,e),this.paint._values["line-floorwidth"]=_l.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,t);}createBucket(t){return new gl(t)}queryRadius(t){const e=t,r=Sl(bs("line-width",this,e),bs("line-gap-width",this,e)),n=bs("line-offset",this,e);return r/2+Math.abs(n)+ws(this.paint.get("line-translate"))}queryIntersectsFeature(t,e,r,n,i,s,o){const l=_s(t,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),s.angle,o),u=o/2*Sl(this.paint.get("line-width").evaluate(e,r),this.paint.get("line-gap-width").evaluate(e,r)),c=this.paint.get("line-offset").evaluate(e,r);return c&&(n=function(t,e){const r=[];for(let n=0;n<t.length;n++){const i=t[n],s=[];for(let t=0;t<i.length;t++){const r=i[t-1],n=i[t],o=i[t+1],l=0===t?new a(0,0):n.sub(r)._unit()._perp(),u=t===i.length-1?new a(0,0):o.sub(n)._unit()._perp(),c=l._add(u)._unit(),h=c.x*u.x+c.y*u.y;0!==h&&c._mult(1/h),s.push(c._mult(e)._add(n));}r.push(s);}return r}(n,c*o)),function(t,e,r){for(let n=0;n<e.length;n++){const i=e[n];if(t.length>=3)for(let e=0;e<i.length;e++)if(xs(t,i[e]))return !0;if(ps(t,i,r))return !0}return !1}(l,n,u)}isTileClipped(){return !0}}function Sl(t,e){return e>0?e+2*t:t}const kl=Mi([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),Il=Mi([{name:"a_projected_pos",components:3,type:"Float32"}],4);Mi([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const zl=Mi([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}]);Mi([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);const Ml=Mi([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),Cl=Mi([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function Bl(t,e,r){return t.sections.forEach((t=>{t.text=function(t,e,r){const n=e.layout.get("text-transform").evaluate(r,{});return "uppercase"===n?t=t.toLocaleUpperCase():"lowercase"===n&&(t=t.toLocaleLowerCase()),oi.applyArabicShaping&&(t=oi.applyArabicShaping(t)),t}(t.text,e,r);})),t}Mi([{name:"triangle",components:3,type:"Uint16"}]),Mi([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),Mi([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),Mi([{type:"Float32",name:"offsetX"}]),Mi([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),Mi([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);const Pl={"!":"ï¸","#":"ï¼",$:"ï¼","%":"ï¼
","&":"ï¼","(":"︵",")":"︶","*":"ï¼","+":"ï¼",",":"ï¸","-":"︲",".":"ã»","/":"ï¼",":":"ï¸",";":"ï¸","<":"︿","=":"ï¼",">":"ï¹","?":"ï¸","@":"ï¼ ","[":"ï¹","\\":"ï¼¼","]":"ï¹","^":"ï¼¾",_:"︳","`":"ï½","{":"︷","|":"â","}":"︸","~":"ï½","¢":"ï¿ ","£":"ï¿¡","Â¥":"ï¿¥","¦":"¦","¬":"ï¿¢","¯":"ï¿£","â":"︲","â":"︱","â":"ï¹","â":"ï¹","â":"ï¹","â":"ï¹","â¦":"ï¸","â§":"ã»","â©":"₩","ã":"ï¸","ã":"ï¸","ã":"︿","ã":"ï¹","ã":"︽","ã":"︾","ã":"ï¹","ã":"ï¹","ã":"ï¹","ã":"ï¹","ã":"︻","ã":"︼","ã":"︹","ã":"︺","ã":"ï¸","ã":"ï¸","ï¼":"ï¸","ï¼":"︵","ï¼":"︶","ï¼":"ï¸","ï¼":"︲","ï¼":"ã»","ï¼":"ï¸","ï¼":"ï¸","ï¼":"︿","ï¼":"ï¹","ï¼":"ï¸","ï¼»":"ï¹","ï¼½":"ï¹","_":"︳","ï½":"︷","ï½":"â","ï½":"︸","ï½":"︵","ï½ ":"︶","。":"ï¸","ï½¢":"ï¹","ï½£":"ï¹"};var Vl=24,El=$l,Fl=function(t,e,r,n,i){var a,s,o=8*i-n-1,l=(1<<o)-1,u=l>>1,c=-7,h=r?i-1:0,p=r?-1:1,f=t[e+h];for(h+=p,a=f&(1<<-c)-1,f>>=-c,c+=o;c>0;a=256*a+t[e+h],h+=p,c-=8);for(s=a&(1<<-c)-1,a>>=-c,c+=n;c>0;s=256*s+t[e+h],h+=p,c-=8);if(0===a)a=1-u;else {if(a===l)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,n),a-=u;}return (f?-1:1)*s*Math.pow(2,a-n)},Tl=function(t,e,r,n,i,a){var s,o,l,u=8*a-i-1,c=(1<<u)-1,h=c>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:a-1,d=n?1:-1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-s))<1&&(s--,l*=2),(e+=s+h>=1?p/l:p*Math.pow(2,1-h))*l>=2&&(s++,l/=2),s+h>=c?(o=0,s=c):s+h>=1?(o=(e*l-1)*Math.pow(2,i),s+=h):(o=e*Math.pow(2,h-1)*Math.pow(2,i),s=0));i>=8;t[r+f]=255&o,f+=d,o/=256,i-=8);for(s=s<<i|o,u+=i;u>0;t[r+f]=255&s,f+=d,s/=256,u-=8);t[r+f-d]|=128*y;};function $l(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length;}$l.Varint=0,$l.Fixed64=1,$l.Bytes=2,$l.Fixed32=5;var Ll=4294967296,Dl=1/Ll,Ol="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function Ul(t){return t.type===$l.Bytes?t.readVarint()+t.pos:t.pos+1}function Rl(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function ql(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i];}function jl(t,e){for(var r=0;r<t.length;r++)e.writeVarint(t[r]);}function Nl(t,e){for(var r=0;r<t.length;r++)e.writeSVarint(t[r]);}function Zl(t,e){for(var r=0;r<t.length;r++)e.writeFloat(t[r]);}function Kl(t,e){for(var r=0;r<t.length;r++)e.writeDouble(t[r]);}function Gl(t,e){for(var r=0;r<t.length;r++)e.writeBoolean(t[r]);}function Jl(t,e){for(var r=0;r<t.length;r++)e.writeFixed32(t[r]);}function Xl(t,e){for(var r=0;r<t.length;r++)e.writeSFixed32(t[r]);}function Yl(t,e){for(var r=0;r<t.length;
vendor: 4,125 bytes, line 37
37r++)e.writeFixed64(t[r]);}function Hl(t,e){for(var r=0;r<t.length;r++)e.writeSFixed64(t[r]);}function Wl(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+16777216*t[e+3]}function Ql(t,e,r){t[r]=e,t[r+1]=e>>>8,t[r+2]=e>>>16,t[r+3]=e>>>24;}function tu(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}$l.prototype={destroy:function(){this.buf=null;},readFields:function(t,e,r){for(r=r||this.length;this.pos<r;){var n=this.readVarint(),i=n>>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n);}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=Wl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=tu(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=Wl(this.buf,this.pos)+Wl(this.buf,this.pos+4)*Ll;return this.pos+=8,t},readSFixed64:function(){var t=Wl(this.buf,this.pos)+tu(this.buf,this.pos+4)*Ll;return this.pos+=8,t},readFloat:function(){var t=Fl(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=Fl(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(n=(112&(i=a[r.pos++]))>>4,i<128)return Rl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<3,i<128)return Rl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<10,i<128)return Rl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<17,i<128)return Rl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<24,i<128)return Rl(t,n,e);if(n|=(1&(i=a[r.pos++]))<<31,i<128)return Rl(t,n,e);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&Ol?function(t,e,r){return Ol.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){for(var n="",i=e;i<r;){var a,s,o,l=t[i],u=null,c=l>239?4:l>223?3:l>191?2:1;if(i+c>r)break;1===c?l<128&&(u=l):2===c?128==(192&(a=t[i+1]))&&(u=(31&l)<<6|63&a)<=127&&(u=null):3===c?(s=t[i+2],128==(192&(a=t[i+1]))&&128==(192&s)&&((u=(15&l)<<12|(63&a)<<6|63&s)<=2047||u>=55296&&u<=57343)&&(u=null)):4===c&&(s=t[i+2],o=t[i+3],128==(192&(a=t[i+1]))&&128==(192&s)&&128==(192&o)&&((u=(15&l)<<18|(63&a)<<12|(63&s)<<6|63&o)<=65535||u>=1114112)&&(u=null)),null===u?(u=65533,c=1):u>65535&&(u-=65536,n+=String.fromCharCode(u>>>10&1023|55296),u=56320|1023&u),n+=String.fromCharCode(u),i+=c;}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==$l.Bytes)return t.push(this.readVarint(e));var r=Ul(this);for(t=t||[];this.pos<r;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){if(this.type!==$l.Bytes)return t.push(this.readSVarint());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){if(this.type!==$l.Bytes)return t.push(this.readBoolean());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){if(this.type!==$l.Bytes)return t.push(this.readFloat());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){if(this.type!==$l.Bytes)return t.push(this.readDouble());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){if(this.type!==$l.Bytes)return t.push(this.readFixed32());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){if(this.type!==$l.Bytes)return t.push(this.readSFixed32());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){if(this.type!==$l.Bytes)return t.push(this.readFixed64());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t}
vendor: 4,361 bytes, line 37
37,readPackedSFixed64:function(t){if(this.type!==$l.Bytes)return t.push(this.readSFixed64());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=7&t;if(e===$l.Varint)for(;this.buf[this.pos++]>127;);else if(e===$l.Bytes)this.pos=this.readVarint()+this.pos;else if(e===$l.Fixed32)this.pos+=4;else {if(e!==$l.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8;}},writeTag:function(t,e){this.writeVarint(t<<3|e);},realloc:function(t){for(var e=this.length||16;e<this.pos+t;)e*=2;if(e!==this.length){var r=new Uint8Array(e);r.set(this.buf),this.buf=r,this.length=e;}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),Ql(this.buf,t,this.pos),this.pos+=4;},writeSFixed32:function(t){this.realloc(4),Ql(this.buf,t,this.pos),this.pos+=4;},writeFixed64:function(t){this.realloc(8),Ql(this.buf,-1&t,this.pos),Ql(this.buf,Math.floor(t*Dl),this.pos+4),this.pos+=8;},writeSFixed64:function(t){this.realloc(8),Ql(this.buf,-1&t,this.pos),Ql(this.buf,Math.floor(t*Dl),this.pos+4),this.pos+=8;},writeVarint:function(t){(t=+t||0)>268435455||t<0?function(t,e){var r,n;if(t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,r.buf[r.pos]=127&(t>>>=7);}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))));}(n,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t);},writeBoolean:function(t){this.writeVarint(Boolean(t));},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a<e.length;a++){if((n=e.charCodeAt(a))>55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null;}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128);}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&ql(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r;},writeFloat:function(t){this.realloc(4),Tl(this.buf,t,this.pos,!0,23,4),this.pos+=4;},writeDouble:function(t){this.realloc(8),Tl(this.buf,t,this.pos,!0,52,8),this.pos+=8;},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r<e;r++)this.buf[this.pos++]=t[r];},writeRawMessage:function(t,e){this.pos++;var r=this.pos;t(e,this);var n=this.pos-r;n>=128&&ql(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n;},writeMessage:function(t,e,r){this.writeTag(t,$l.Bytes),this.writeRawMessage(e,r);},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,jl,e);},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Nl,e);},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,Gl,e);},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,Zl,e);},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,Kl,e);},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,Jl,e);},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,Xl,e);},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,Yl,e);},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Hl,e);},writeBytesField:function(t,e){this.writeTag(t,$l.Bytes),this.writeBytes(e);},writeFixed32Field:function(t,e){this.writeTag(t,$l.Fixed32),this.writeFixed32(e);},writeSFixed32Field:function(t,e){this.writeTag(t,$l.Fixed32),this.writeSFixed32(e);},writeFixed64Field:function(t,e){this.writeTag(t,$l.Fixed64),this.writeFixed64
vendor: 7,053 bytes, line 37
37(e);},writeSFixed64Field:function(t,e){this.writeTag(t,$l.Fixed64),this.writeSFixed64(e);},writeVarintField:function(t,e){this.writeTag(t,$l.Varint),this.writeVarint(e);},writeSVarintField:function(t,e){this.writeTag(t,$l.Varint),this.writeSVarint(e);},writeStringField:function(t,e){this.writeTag(t,$l.Bytes),this.writeString(e);},writeFloatField:function(t,e){this.writeTag(t,$l.Fixed32),this.writeFloat(e);},writeDoubleField:function(t,e){this.writeTag(t,$l.Fixed64),this.writeDouble(e);},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e));}};var eu=r(El);const ru=3;function nu(t,e,r){1===t&&r.readMessage(iu,e);}function iu(t,e,r){if(3===t){const{id:t,bitmap:n,width:i,height:a,left:s,top:o,advance:l}=r.readMessage(au,{});e.push({id:t,bitmap:new Rs({width:i+2*ru,height:a+2*ru},n),metrics:{width:i,height:a,left:s,top:o,advance:l}});}}function au(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint());}const su=ru;function ou(t){let e=0,r=0;for(const n of t)e+=n.w*n.h,r=Math.max(r,n.w);t.sort(((t,e)=>e.h-t.h));const n=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}];let i=0,a=0;for(const e of t)for(let t=n.length-1;t>=0;t--){const r=n[t];if(!(e.w>r.w||e.h>r.h)){if(e.x=r.x,e.y=r.y,a=Math.max(a,e.y+e.h),i=Math.max(i,e.x+e.w),e.w===r.w&&e.h===r.h){const e=n.pop();t<n.length&&(n[t]=e);}else e.h===r.h?(r.x+=e.w,r.w-=e.w):e.w===r.w?(r.y+=e.h,r.h-=e.h):(n.push({x:r.x+e.w,y:r.y,w:r.w-e.w,h:e.h}),r.y+=e.h,r.h-=e.h);break}}return {w:i,h:a,fill:e/(i*a)||0}}const lu=1;class uu{constructor(t,{pixelRatio:e,version:r,stretchX:n,stretchY:i,content:a}){this.paddedRect=t,this.pixelRatio=e,this.stretchX=n,this.stretchY=i,this.content=a,this.version=r;}get tl(){return [this.paddedRect.x+lu,this.paddedRect.y+lu]}get br(){return [this.paddedRect.x+this.paddedRect.w-lu,this.paddedRect.y+this.paddedRect.h-lu]}get tlbr(){return this.tl.concat(this.br)}get displaySize(){return [(this.paddedRect.w-2*lu)/this.pixelRatio,(this.paddedRect.h-2*lu)/this.pixelRatio]}}class cu{constructor(t,e){const r={},n={};this.haveRenderCallbacks=[];const i=[];this.addImages(t,r,i),this.addImages(e,n,i);const{w:a,h:s}=ou(i),o=new qs({width:a||1,height:s||1});for(const e in t){const n=t[e],i=r[e].paddedRect;qs.copy(n.data,o,{x:0,y:0},{x:i.x+lu,y:i.y+lu},n.data);}for(const t in e){const r=e[t],i=n[t].paddedRect,a=i.x+lu,s=i.y+lu,l=r.data.width,u=r.data.height;qs.copy(r.data,o,{x:0,y:0},{x:a,y:s},r.data),qs.copy(r.data,o,{x:0,y:u-1},{x:a,y:s-1},{width:l,height:1}),qs.copy(r.data,o,{x:0,y:0},{x:a,y:s+u},{width:l,height:1}),qs.copy(r.data,o,{x:l-1,y:0},{x:a-1,y:s},{width:1,height:u}),qs.copy(r.data,o,{x:0,y:0},{x:a+l,y:s},{width:1,height:u});}this.image=o,this.iconPositions=r,this.patternPositions=n;}addImages(t,e,r){for(const n in t){const i=t[n],a={x:0,y:0,w:i.data.width+2*lu,h:i.data.height+2*lu};r.push(a),e[n]=new uu(a,i),i.hasRenderCallback&&this.haveRenderCallbacks.push(n);}}patchUpdatedImages(t,e){t.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const r in t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e);}patchUpdatedImage(t,e,r){if(!t||!e)return;if(t.version===e.version)return;t.version=e.version;const[n,i]=t.tl;r.update(e.data,void 0,{x:n,y:i});}}var hu;$n("ImagePosition",uu),$n("ImageAtlas",cu),t.ai=void 0,(hu=t.ai||(t.ai={}))[hu.none=0]="none",hu[hu.horizontal=1]="horizontal",hu[hu.vertical=2]="vertical",hu[hu.horizontalOnly=3]="horizontalOnly";const pu=-17;class fu{constructor(){this.scale=1,this.fontStack="",this.imageName=null;}static forText(t,e){const r=new fu;return r.scale=t||1,r.fontStack=e,r}static forImage(t){const e=new fu;return e.imageName=t,e}}class du{constructor(){this.text="",this.sectionIndex=[],this.sections=[],this.imageSectionID=null;}static fromFeature(t,e){const r=new du;for(let n=0;n<t.sections.length;n++){const i=t.sections[n];i.image?r.addImageSection(i):r.addTextSection(i,e);}return r}length(){return this.text.length}getSection(t){return this.sections[this.sectionIndex[t]]}getSectionIndex(t){return this.sectionIndex[t]}getCharCode(t){return this.text.charCodeAt(t)}verticalizePunctuation(){this.text=function(t){let e="";for(let r=0;r<t.length;r++){const n=t.charCodeAt(r+1)||null,i=t.charCodeAt(r-1)||null;e+=n&&Kn(n)&&!Pl[t[r+1]]||i&&Kn(i)&&!Pl[t[r-1]]||!Pl[t[r]]?t[r]:Pl[t[r]];}return e}(this.text);}trim(){let t=0;for(let e=0;e<this.text.length&&mu[this.text.charCodeAt(e)];e++)t++;let e=this.text.length;for(let r=this.text.length-1;r>=0&&r>=t&&mu[this.text.charCodeAt(r)];r--)e--;this.text=this.text.substring(t,e),this.sectionIndex=this.sectionIndex.slice(t,e);}substring(t,e){const r=new du;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce(((t,e)=>Math.max(t,this.sections[e].scale)),0)}addTextSection(t,e){this.text+=t.text,this.sections.push(fu.forText(t.scale,t.fontStack||e));const r=this.sections.length-1;for(let e=0;e<t.text.length;++e)this.sectionIndex.push(r);}addImageSection(t){const e=t.image?t.image.name:"";if(0===e.length)return void A("Can't add FormattedSection with an empty image.");const r=this.getNextImageSectionCharCode();r?(this.text+=String.fromCharCode(r),this.sections.push(fu.forImage(e)),this.sectionIndex.push(this.sections.length-1)):A("Reached maximum number of images 6401");}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function yu(e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m){const g=du.fromFeature(e,a);let x;p===t.ai.vertical&&g.verticalizePunctuation();const{processBidirectionalText:v,processStyledBidirectionalText:b}=oi;if(v&&1===g.sections.length){x=[];const t=v(g.toString(),Au(g,c,s,r,i,d,y));for(const e of t){const t=new du;t.text=e,t.sections=g.sections;for(let r=0;r<e.length;r++)t.sectionIndex.push(0);x.push(t);}}else if(b){x=[];const t=b(g.text,g.sectionIndex,Au(g,c,s,r,i,d,y));for(const e of t){const t=new du;t.text=e[0],t.sectionIndex=e[1],t.sections=g.sections,x.push(t);}}else x=function(t,e){const r=[],n=t.text;let i=0;for(const n of e)r.push(t.substring(i,n)),i=n;return i<n.length&&r.push(t.substring(i,n.length)),r}(g,Au(g,c,s,r,i,d,y));const w=[],_={positionedLines:w,text:g.toString(),top:h[1],bottom:h[1],left:h[0],right:h[0],writingMode:p,iconsInText:!1,verticalizable:!1};return function(e,r,n,i,a,s,o,l,u,c,h,p){let f=0,d=pu,y=0,m=0;const g="right"===l?1:"left"===l?0:.5;let x=0;for(const o of a){o.trim();const a=o.getMaxScale(),l=(a-1)*Vl,b={positionedGlyphs:[],lineOffset:0};e.positionedLines[x]=b;const w=b.positionedGlyphs;let _=0;if(!o.length()){d+=s,++x;continue}for(let s=0;s<o.length();s++){const y=o.getSection(s),m=o.getSectionIndex(s),g=o.getCharCode(s);let x=0,b=null,A=null,S=null,k=Vl;
37const I=!(u===t.ai.horizontal||!h&&!Zn(g)||h&&(mu[g]||(v=g,Rn.Arabic(v)||Rn["Arabic Supplement"](v)||Rn["Arabic Extended-A"](v)||Rn["Arabic Presentation Forms-A"](v)||Rn["Arabic Presentation Forms-B"](v))));if(y.imageName){const t=i[y.imageName];if(!t)continue;S=y.imageName,e.iconsInText=e.iconsInText||!0,A=t.paddedRect;const r=t.displaySize;y.scale=y.scale*Vl/p,b={width:r[0],height:r[1],left:lu,top:-su,advance:I?r[1]:r[0]},x=l+(Vl-r[1]*y.scale),k=b.advance;const n=I?r[0]*y.scale-Vl*a:r[1]*y.scale-Vl*a;n>0&&n>_&&(_=n);}else {const t=n[y.fontStack],e=t&&t[g];if(e&&e.rect)A=e.rect,b=e.metrics;else {const t=r[y.fontStack],e=t&&t[g];if(!e)continue;b=e.metrics;}x=(a-y.scale)*Vl;}I?(e.verticalizable=!0,w.push({glyph:g,imageName:S,x:f,y:d+x,vertical:I,scale:y.scale,fontStack:y.fontStack,sectionIndex:m,metrics:b,rect:A}),f+=k*y.scale+c):(w.push({glyph:g,imageName:S,x:f,y:d+x,vertical:I,scale:y.scale,fontStack:y.fontStack,sectionIndex:m,metrics:b,rect:A}),f+=b.advance*y.scale+c);}0!==w.length&&(y=Math.max(f-c,y),ku(w,0,w.length-1,g,_)),f=0;const A=s*a+_;b.lineOffset=Math.max(_,l),d+=A,m=Math.max(A,m),++x;}var v;const b=d-pu,{horizontalAlign:w,verticalAlign:_}=Su(o);((function(t,e,r,n,i,a,s,o,l){const u=(e-r)*i;let c=0;
vendor: 24,000 bytes, line 37
37c=a!==s?-o*n-pu:(-n*l+.5)*s;for(const e of t)for(const t of e.positionedGlyphs)t.x+=u,t.y+=c;}))(e.positionedLines,g,w,_,y,m,s,b,a.length),e.top+=-_*b,e.bottom=e.top+b,e.left+=-w*y,e.right=e.left+y;}(_,r,n,i,x,o,l,u,p,c,f,m),!function(t){for(const e of t)if(0!==e.positionedGlyphs.length)return !1;return !0}(w)&&_}const mu={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},gu={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function xu(t,e,r,n,i,a){if(e.imageName){const t=n[e.imageName];return t?t.displaySize[0]*e.scale*Vl/a+i:0}{const n=r[e.fontStack],a=n&&n[t];return a?a.metrics.advance*e.scale+i:0}}function vu(t,e,r,n){const i=Math.pow(t-e,2);return n?t<e?i/2:2*i:i+Math.abs(r)*r}function bu(t,e,r){let n=0;return 10===t&&(n-=1e4),r&&(n+=150),40!==t&&65288!==t||(n+=50),41!==e&&65289!==e||(n+=50),n}function wu(t,e,r,n,i,a){let s=null,o=vu(e,r,i,a);for(const t of n){const n=vu(e-t.x,r,i,a)+t.badness;n<=o&&(s=t,o=n);}return {index:t,x:e,priorBreak:s,badness:o}}function _u(t){return t?_u(t.priorBreak).concat(t.index):[]}function Au(t,e,r,n,i,a,s){if("point"!==a)return [];if(!t)return [];const o=[],l=function(t,e,r,n,i,a){let s=0;for(let r=0;r<t.length();r++){const o=t.getSection(r);s+=xu(t.getCharCode(r),o,n,i,e,a);}return s/Math.max(1,Math.ceil(s/r))}(t,e,r,n,i,s),u=t.text.indexOf("â")>=0;let c=0;for(let r=0;r<t.length();r++){const a=t.getSection(r),p=t.getCharCode(r);if(mu[p]||(c+=xu(p,a,n,i,e,s)),r<t.length()-1){const e=!((h=p)<11904||!(Rn["Bopomofo Extended"](h)||Rn.Bopomofo(h)||Rn["CJK Compatibility Forms"](h)||Rn["CJK Compatibility Ideographs"](h)||Rn["CJK Compatibility"](h)||Rn["CJK Radicals Supplement"](h)||Rn["CJK Strokes"](h)||Rn["CJK Symbols and Punctuation"](h)||Rn["CJK Unified Ideographs Extension A"](h)||Rn["CJK Unified Ideographs"](h)||Rn["Enclosed CJK Letters and Months"](h)||Rn["Halfwidth and Fullwidth Forms"](h)||Rn.Hiragana(h)||Rn["Ideographic Description Characters"](h)||Rn["Kangxi Radicals"](h)||Rn["Katakana Phonetic Extensions"](h)||Rn.Katakana(h)||Rn["Vertical Forms"](h)||Rn["Yi Radicals"](h)||Rn["Yi Syllables"](h)));(gu[p]||e||a.imageName)&&o.push(wu(r+1,c,l,o,bu(p,t.getCharCode(r+1),e&&u),!1));}}var h;return _u(wu(t.length(),c,l,o,0,!0))}function Su(t){let e=.5,r=.5;switch(t){case"right":case"top-right":case"bottom-right":e=1;break;case"left":case"top-left":case"bottom-left":e=0;}switch(t){case"bottom":case"bottom-right":case"bottom-left":r=1;break;case"top":case"top-right":case"top-left":r=0;}return {horizontalAlign:e,verticalAlign:r}}function ku(t,e,r,n,i){if(!n&&!i)return;const a=t[r],s=(t[r].x+a.metrics.advance*a.scale)*n;for(let n=e;n<=r;n++)t[n].x-=s,t[n].y+=i;}function Iu(t,e,r){const{horizontalAlign:n,verticalAlign:i}=Su(r),a=e[0]-t.displaySize[0]*n,s=e[1]-t.displaySize[1]*i;return {image:t,top:s,bottom:s+t.displaySize[1],left:a,right:a+t.displaySize[0]}}function zu(t,e,r,n,i,a){const s=t.image;let o;if(s.content){const t=s.content,e=s.pixelRatio||1;o=[t[0]/e,t[1]/e,s.displaySize[0]-t[2]/e,s.displaySize[1]-t[3]/e];}const l=e.left*a,u=e.right*a;let c,h,p,f;"width"===r||"both"===r?(f=i[0]+l-n[3],h=i[0]+u+n[1]):(f=i[0]+(l+u-s.displaySize[0])/2,h=f+s.displaySize[0]);const d=e.top*a,y=e.bottom*a;return "height"===r||"both"===r?(c=i[1]+d-n[0],p=i[1]+y+n[2]):(c=i[1]+(d+y-s.displaySize[1])/2,p=c+s.displaySize[1]),{image:s,top:c,right:h,bottom:p,left:f,collisionPadding:o}}const Mu=255,Cu=128,Bu=Mu*Cu;function Pu(t,e){const{expression:r}=e;if("constant"===r.kind)return {kind:"constant",layoutSize:r.evaluate(new li(t+1))};if("source"===r.kind)return {kind:"source"};{const{zoomStops:e,interpolationType:n}=r;let i=0;for(;i<e.length&&e[i]<=t;)i++;i=Math.max(0,i-1);let a=i;for(;a<e.length&&e[a]<t+1;)a++;a=Math.min(e.length-1,a);const s=e[i],o=e[a];return "composite"===r.kind?{kind:"composite",minZoom:s,maxZoom:o,interpolationType:n}:{kind:"camera",minZoom:s,maxZoom:o,minSize:r.evaluate(new li(s)),maxSize:r.evaluate(new li(o)),interpolationType:n}}}function Vu(t,e,r){let n="never";const i=t.get(e);return i?n=i:t.get(r)&&(n="always"),n}const Eu=Ro.VectorTileFeature.types,Fu=[{name:"a_fade_opacity",components:1,type:"Uint8",offset:0}];function Tu(t,e,r,n,i,a,s,o,l,u,c,h,p){const f=o?Math.min(Bu,Math.round(o[0])):0,d=o?Math.min(Bu,Math.round(o[1])):0;t.emplaceBack(e,r,Math.round(32*n),Math.round(32*i),a,s,(f<<1)+(l?1:0),d,16*u,16*c,256*h,256*p);}function $u(t,e,r){t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r);}function Lu(t){for(const e of t.sections)if(Xn(e.text))return !0;return !1}class Du{constructor(t){this.layoutVertexArray=new xa,this.indexArray=new Aa,this.programConfigurations=t,this.segments=new za,this.dynamicLayoutVertexArray=new va,this.opacityVertexArray=new ba,this.hasVisibleVertices=!1,this.placedSymbolArray=new ra;}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.indexArray.length&&0===this.dynamicLayoutVertexArray.length&&0===this.opacityVertexArray.length}upload(t,e,r,n){this.isEmpty()||(r&&(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,kl.members),this.indexBuffer=t.createIndexBuffer(this.indexArray,e),this.dynamicLayoutVertexBuffer=t.createVertexBuffer(this.dynamicLayoutVertexArray,Il.members,!0),this.opacityVertexBuffer=t.createVertexBuffer(this.opacityVertexArray,Fu,!0),this.opacityVertexBuffer.itemSize=1),(r||n)&&this.programConfigurations.upload(t));}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy());}}$n("SymbolBuffers",Du);class Ou{constructor(t,e,r){this.layoutVertexArray=new t,this.layoutAttributes=e,this.indexArray=new r,this.segments=new za,this.collisionVertexArray=new _a;}upload(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=t.createVertexBuffer(this.collisionVertexArray,zl.members,!0);}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy());}}$n("CollisionBuffers",Ou);class Uu{constructor(e){this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Ms([]),this.placementViewportMatrix=Ms([]);const r=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Pu(this.zoom,r["text-size"]),this.iconSizeData=Pu(this.zoom,r["icon-size"]);const n=this.layers[0].layout,i=n.get("symbol-sort-key"),a=n.get("symbol-z-order");this.canOverlap="never"!==Vu(n,"text-overlap","text-allow-overlap")||"never"!==Vu(n,"icon-overlap","icon-allow-overlap")||n.get("text-ignore-placement")||n.get("icon-ignore-placement"),this.sortFeaturesByKey="viewport-y"!==a&&!i.isConstant(),this.sortFeaturesByY=("viewport-y"===a||"auto"===a&&!this.sortFeaturesByKey)&&this.canOverlap,"point"===n.get("symbol-placement")&&(this.writingModes=n.get("text-writing-mode").map((e=>t.ai[e]))),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.sourceID=e.sourceID;}createArrays(){this.text=new Du(new Qa(this.layers,this.zoom,(t=>/^text/.test(t)))),this.icon=new Du(new Qa(this.layers,this.zoom,(t=>/^icon/.test(t)))),this.glyphOffsetArray=new aa,this.lineVertexArray=new sa,this.symbolInstances=new ia,this.textAnchorOffsets=new la;}calculateGlyphDependencies(t,e,r,n,i){for(let a=0;a<t.length;a++)if(e[t.charCodeAt(a)]=!0,(r||n)&&i){const r=Pl[t.charAt(a)];r&&(e[r.charCodeAt(0)]=!0);}}populate(e,r,n){const i=this.layers[0],a=i.layout,s=a.get("text-font"),o=a.get("text-field"),l=a.get("icon-image"),u=("constant"!==o.value.kind||o.value.value instanceof Qt&&!o.value.value.isEmpty()||o.value.value.toString().length>0)&&("constant"!==s.value.kind||s.value.value.length>0),c="constant"!==l.value.kind||!!l.value.value||Object.keys(l.parameters).length>0,h=a.get("symbol-sort-key");if(this.features=[],!u&&!c)return;const p=r.iconDependencies,f=r.glyphDependencies,d=r.availableImages,y=new li(this.zoom);for(const{feature:r,id:o,index:l,sourceLayerIndex:m}of e){const e=i._featureFilter.needGeometry,g=ss(r,e);if(!i._featureFilter.filter(y,g,n))continue;let x,v;if(e||(g.geometry=as(r)),u){const t=i.getValueAndResolveTokens("text-field",g,n,d),e=Qt.factory(t);Lu(e)&&(this.hasRTLText=!0),(!this.hasRTLText||"unavailable"===ai()||this.hasRTLText&&oi.isParsed())&&(x=Bl(e,i,g));}if(c){const t=i.getValueAndResolveTokens("icon-image",g,n,d);v=t instanceof ne?t:ne.fromString(t);}if(!x&&!v)continue;const b=this.sortFeaturesByKey?h.evaluate(g,{},n):void 0;if(this.features.push({id:o,text:x,icon:v,index:l,sourceLayerIndex:m,geometry:g.geometry,properties:r.properties,type:Eu[r.type],sortKey:b}),v&&(p[v.name]=!0),x){const e=s.evaluate(g,{},n).join(","),r="viewport"!==a.get("text-rotation-alignment")&&"point"!==a.get("symbol-placement");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(t.ai.vertical)>=0;for(const t of x.sections)if(t.image)p[t.image.name]=!0;else {const n=qn(x.toString()),i=t.fontStack||e,a=f[i]=f[i]||{};this.calculateGlyphDependencies(t.text,a,r,this.allowVerticalPlacement,n);}}}"line"===a.get("symbol-placement")&&(this.features=function(t){const e={},r={},n=[];let i=0;function a(e){n.push(t[e]),i++;}function s(t,e,i){const a=r[t];return delete r[t],r[e]=a,n[a].geometry[0].pop(),n[a].geometry[0]=n[a].geometry[0].concat(i[0]),a}function o(t,r,i){const a=e[r];return delete e[r],e[t]=a,n[a].geometry[0].shift(),n[a].geometry[0]=i[0].concat(n[a].geometry[0]),a}function l(t,e,r){const n=r?e[0][e[0].length-1]:e[0][0];return `${t}:${n.x}:${n.y}`}for(let u=0;u<t.length;u++){const c=t[u],h=c.geometry,p=c.text?c.text.toString():null;if(!p){a(u);continue}const f=l(p,h),d=l(p,h,!0);if(f in r&&d in e&&r[f]!==e[d]){const t=o(f,d,h),i=s(f,d,n[t].geometry);delete e[f],delete r[d],r[l(p,n[i].geometry,!0)]=i,n[t].geometry=null;}else f in r?s(f,d,h):d in e?o(f,d,h):(a(u),e[f]=i-1,r[d]=i-1);}return n.filter((t=>t.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((t,e)=>t.sortKey-e.sortKey));}update(t,e,r){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,r),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,r));}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return !this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0;}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy();}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData();}addToLineVertexArray(t,e){const r=this.lineVertexArray.length;if(void 0!==t.segment){let r=t.dist(e[t.segment+1]),n=t.dist(e[t.segment]);const i={};for(let n=t.segment+1;n<e.length;n++)i[n]={x:e[n].x,y:e[n].y,tileUnitDistanceFromAnchor:r},n<e.length-1&&(r+=e[n+1].dist(e[n]));for(let r=t.segment||0;r>=0;r--)i[r]={x:e[r].x,y:e[r].y,tileUnitDistanceFromAnchor:n},r>0&&(n+=e[r-1].dist(e[r]));for(let t=0;t<e.length;t++){const e=i[t];this.lineVertexArray.emplaceBack(e.x,e.y,e.tileUnitDistanceFromAnchor);}}return {lineStartIndex:r,lineLength:this.lineVertexArray.length-r}}addSymbols(e,r,n,i,a,s,o,l,u,c,h,p){const f=e.indexArray,d=e.layoutVertexArray,y=e.segments.prepareSegment(4*r.length,d,f,this.canOverlap?s.sortKey:void 0),m=this.glyphOffsetArray.length,g=y.vertexLength,x=this.allowVerticalPlacement&&o===t.ai.vertical?Math.PI/2:0,v=s.text&&s.text.sections;for(let t=0;t<r.length;t++){const{tl:i,tr:a,bl:o,br:u,tex:c,pixelOffsetTL:h,pixelOffsetBR:m,minFontScaleX:g,minFontScaleY:b,glyphOffset:w,isSDF:_,sectionIndex:A}=r[t],S=y.vertexLength,k=w[1];Tu(d,l.x,l.y,i.x,k+i.y,c.x,c.y,n,_,h.x,h.y,g,b),Tu(d,l.x,l.y,a.x,k+a.y,c.x+c.w,c.y,n,_,m.x,h.y,g,b),Tu(d,l.x,l.y,o.x,k+o.y,c.x,c.y+c.h,n,_,h.x,m.y,g,b),Tu(d,l.x,l.y,u.x,k+u.y,c.x+c.w,c.y+c.h,n,_,m.x,m.y,g,b),$u(e.dynamicLayoutVertexArray,l,x),f.emplaceBack(S,S+1,S+2),f.emplaceBack(S+1,S+2,S+3),y.vertexLength+=4,y.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(w[0]),t!==r.length-1&&A===r[t+1].sectionIndex||e.programConfigurations.populatePaintArrays(d.length,s,s.index,{},p,v&&v[A]);}e.placedSymbolArray.emplaceBack(l.x,l.y,m,this.glyphOffsetArray.length-m,g,u,c,l.segment,n?n[0]:0,n?n[1]:0,i[0],i[1],o,0,!1,0,h);}_addCollisionDebugVertex(t,e,r,n,i,a){return e.emplaceBack(0,0),t.emplaceBack(r.x,r.y,n,i,Math.round(a.x),Math.round(a.y))}addCollisionDebugVertices(t,e,r,n,i,s,o){const l=i.segments.prepareSegment(4,i.layoutVertexArray,i.indexArray),u=l.vertexLength,c=i.layoutVertexArray,h=i.collisionVertexArray,p=o.anchorX,f=o.anchorY;this._addCollisionDebugVertex(c,h,s,p,f,new a(t,e)),this._addCollisionDebugVertex(c,h,s,p,f,new a(r,e)),this._addCollisionDebugVertex(c,h,s,p,f,new a(r,n)),this._addCollisionDebugVertex(c,h,s,p,f,new a(t,n)),l.vertexLength+=4;const d=i.indexArray;d.emplaceBack(u,u+1),d.emplaceBack(u+1,u+2),d.emplaceBack(u+2,u+3),d.emplaceBack(u+3,u),l.primitiveLength+=4;}addDebugCollisionBoxes(t,e,r,n){for(let i=t;i<e;i++){const t=this.collisionBoxArray.get(i);this.addCollisionDebugVertices(t.x1,t.y1,t.x2,t.y2,n?this.textCollisionBox:this.iconCollisionBox,t.anchorPoint,r);}}generateCollisionDebugBuffers(){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new Ou(wa,Ml.members,Sa),this.iconCollisionBox=new Ou(wa,Ml.members,Sa);for(let t=0;t<this.symbolInstances.length;t++){const e=this.symbolInstances.get(t);this.addDebugCollisionBoxes(e.textBoxStartIndex,e.textBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.verticalTextBoxStartIndex,e.verticalTextBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.iconBoxStartIndex,e.iconBoxEndIndex,e,!1),this.addDebugCollisionBoxes(e.verticalIconBoxStartIndex,e.verticalIconBoxEndIndex,e,!1);}}_deserializeCollisionBoxesForSymbol(t,e,r,n,i,a,s,o,l){const u={};for(let n=e;n<r;n++){const e=t.get(n);u.textBox={x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,anchorPointX:e.anchorPointX,anchorPointY:e.anchorPointY},u.textFeatureIndex=e.featureIndex;break}for(let e=n;e<i;e++){const r=t.get(e);u.verticalTextBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,anchorPointX:r.anchorPointX,anchorPointY:r.anchorPointY},u.verticalTextFeatureIndex=r.featureIndex;break}for(let e=a;e<s;e++){const r=t.get(e);u.iconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,anchorPointX:r.anchorPointX,anchorPointY:r.anchorPointY},u.iconFeatureIndex=r.featureIndex;break}for(let e=o;e<l;e++){const r=t.get(e);u.verticalIconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,anchorPointX:r.anchorPointX,anchorPointY:r.anchorPointY},u.verticalIconFeatureIndex=r.featureIndex;break}return u}deserializeCollisionBoxes(t){this.collisionArrays=[];for(let e=0;e<this.symbolInstances.length;e++){const r=this.symbolInstances.get(e);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(t,r.textBoxStartIndex,r.textBoxEndIndex,r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r.iconBoxStartIndex,r.iconBoxEndIndex,r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex));}}hasTextData(){return this.text.segments.get().length>0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(t,e){const r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs;for(let e=r.vertexStartIndex;e<n;e+=4)t.indexArray.emplaceBack(e,e+1,e+2),t.indexArray.emplaceBack(e+1,e+2,e+3);}getSortedSymbolIndexes(t){if(this.sortedAngle===t&&void 0!==this.symbolInstanceIndexes)return this.symbolInstanceIndexes;const e=Math.sin(t),r=Math.cos(t),n=[],i=[],a=[];for(let t=0;t<this.symbolInstances.length;++t){a.push(t);const s=this.symbolInstances.get(t);n.push(0|Math.round(e*s.anchorX+r*s.anchorY)),i.push(s.featureIndex);}return a.sort(((t,e)=>n[t]-n[e]||i[e]-i[t])),a}addToSortKeyRanges(t,e){const r=this.sortKeyRanges[this.sortKeyRanges.length-1];r&&r.sortKey===e?r.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1});}sortFeatures(t){if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const t of this.symbolInstanceIndexes){const e=this.symbolInstances.get(t);this.featureSortOrder.push(e.featureIndex),[e.rightJustifiedTextSymbolIndex,e.centerJustifiedTextSymbolIndex,e.leftJustifiedTextSymbolIndex].forEach(((t,e,r)=>{t>=0&&r.indexOf(t)===e&&this.addIndicesForPlacedSymbol(this.text,t);})),e.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,e.verticalPlacedTextSymbolIndex),e.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.placedIconSymbolIndex),e.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.verticalPlacedIconSymbolIndex);}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}}}let Ru,qu;$n("SymbolBucket",Uu,{omit:["layers","collisionBoxArray","features","compareText"]}),Uu.MAX_GLYPHS=65535,Uu.addDynamicAttributes=$u;var ju={get paint(){return qu=qu||new _i({"icon-opacity":new xi(X.paint_symbol["icon-opacity"]),"icon-color":new xi(X.paint_symbol["icon-color"]),"icon-halo-color":new xi(X.paint_symbol["icon-halo-color"]),"icon-halo-width":new xi(X.paint_symbol["icon-halo-width"]),"icon-halo-blur":new xi(X.paint_symbol["icon-halo-blur"]),"icon-translate":new gi(X.paint_symbol["icon-translate"]),"icon-translate-anchor":new gi(X.paint_symbol["icon-translate-anchor"]),"text-opacity":new xi(X.paint_symbol["text-opacity"]),"text-color":new xi(X.paint_symbol["text-color"],{runtimeType:yt,getOverride:t=>t.textColor,hasOverride:t=>!!t.textColor}),"text-halo-color":new xi(X.paint_symbol["text-halo-color"]),"text-halo-width":new xi(X.paint_symbol["text-halo-width"]),"text-halo-blur":new xi(X.paint_symbol["text-halo-blur"]),"text-translate":new gi(X.paint_symbol["text-translate"]),"text-translate-anchor":new gi(X.paint_symbol["text-translate-anchor"])})},get layout(){return Ru=Ru||new _i({"symbol-placement":new gi(X.layout_symbol["symbol-placement"]),"symbol-spacing":new gi(X.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new gi(X.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new xi(X.layout_symbol["symbol-sort-key"]),"symbol-z-order":new gi(X.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new gi(X.layout_symbol["icon-allow-overlap"]),"icon-overlap":new gi(X.layout_symbol["icon-overlap"]),"icon-ignore-placement":new gi(X.layout_symbol["icon-ignore-placement"]),"icon-optional":new gi(X.layout_symbol["icon-optional"]),"icon-rotation-alignment":new gi(X.layout_symbol["icon-rotation-alignment"]),"icon-size":new xi(X.layout_symbol["icon-size"]),"icon-text-fit":new gi(X.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new gi(X.layout_symbol["icon-text-fit-padding"]),"icon-image":new xi(X.layout_symbol["icon-image"]),"icon-rotate":new xi(X.layout_symbol["icon-rotate"]),"icon-padding":new xi(X.layout_symbol["icon-padding"]),"icon-keep-upright":new gi(X.layout_symbol["icon-keep-upright"]),"icon-offset":new xi(X.layout_symbol["icon-offset"]),"icon-anchor":new xi(X.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new gi(X.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new gi(X.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new gi(X.layout_symbol["text-rotation-alignment"]),"text-field":new xi(X.layout_symbol["text-field"]),"text-font":new xi(X.layout_symbol["text-font"]),"text-size":new xi(X.layout_symbol["text-size"]),"text-max-width":new xi(X.layout_symbol["text-max-width"]),"text-line-height":new gi(X.layout_symbol["text-line-height"]),"text-letter-spacing":new xi(X.layout_symbol["text-letter-spacing"]),"text-justify":new xi(X.layout_symbol["text-justify"]),"text-radial-offset":new xi(X.layout_symbol["text-radial-offset"]),"text-variable-anchor":new gi(X.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new xi(X.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new xi(X.layout_symbol["text-anchor"]),"text-max-angle":new gi(X.layout_symbol["text-max-angle"]),"text-writing-mode":new gi(X.layout_symbol["text-writing-mode"]),"text-rotate":new xi(X.layout_symbol["text-rotate"]),"text-padding":new gi(X.layout_symbol["text-padding"]),"text-keep-upright":new gi(X.layout_symbol["text-keep-upright"]),"text-transform":new xi(X.layout_symbol["text-transform"]),"text-offset":new xi(X.layout_symbol["text-offset"]),"text-allow-overlap":new gi(X.layout_symbol["text-allow-overlap"]),"text-overlap":new gi(X.layout_symbol["text-overlap"]),"text-ignore-placement":new gi(X.layout_symbol["text-ignore-placement"]),"text-optional":new gi(X.layout_symbol["text-optional"])})}};class Nu{constructor(t){if(void 0===t.property.overrides)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=t.property.overrides?t.property.overrides.runtimeType:ht,this.defaultValue=t;}evaluate(t){if(t.formattedSection){const e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default}eachChild(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression);}outputDefined(){return !1}serialize(){return null}}$n("FormatSectionOverride",Nu,{omit:["defaultValue"]});class Zu extends Si{constructor(t){super(t,ju);}recalculate(t,e){if(super.recalculate(t,e),"auto"===this.layout.get("icon-rotation-alignment")&&(this.layout._values["icon-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-rotation-alignment")&&(this.layout._values["text-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]="map"===this.layout.get("text-rotation-alignment")?"map":"viewport"),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),"point"===this.layout.get("symbol-placement")){const t=this.layout.get("text-writing-mode");if(t){const e=[];for(const r of t)e.indexOf(r)<0&&e.push(r);this.layout._values["text-writing-mode"]=e;}else this.layout._values["text-writing-mode"]=["horizontal"];}this._setPaintOverrides();}getValueAndResolveTokens(t,e,r,n){const i=this.layout.get(t).evaluate(e,{},r,n),a=this._unevaluatedLayout._values[t];return a.isDataDriven()||Tr(a.value)||!i?i:function(t,e){return e.replace(/{([^{}]+)}/g,((e,r)=>t&&r in t?String(t[r]):""))}(e.properties,i)}createBucket(t){return new Uu(t)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(const t of ju.paint.overridableProperties){if(!
vendor: 4,128 bytes, line 37
37Zu.hasPaintOverride(this.layout,t))continue;const e=this.paint.get(t),r=new Nu(e),n=new Fr(r,e.property.specification);let i=null;i="constant"===e.value.kind||"source"===e.value.kind?new Lr("source",n):new Dr("composite",n,e.value.zoomStops),this.paint._values[t]=new yi(e.property,i,e.parameters);}}_handleOverridablePaintPropertyUpdate(t,e,r){return !(!this.layout||e.isDataDriven()||r.isDataDriven())&&Zu.hasPaintOverride(this.layout,t)}static hasPaintOverride(t,e){const r=t.get("text-field"),n=ju.paint.properties[e];let i=!1;const a=t=>{for(const e of t)if(n.overrides&&n.overrides.hasOverride(e))return void(i=!0)};if("constant"===r.value.kind&&r.value.value instanceof Qt)a(r.value.value.sections);else if("source"===r.value.kind){const t=e=>{i||(e instanceof le&&se(e.value)===vt?a(e.value.sections):e instanceof pr?a(e.sections):e.eachChild(t));},e=r.value;e._styleExpression&&t(e._styleExpression.expression);}return i}}let Ku;var Gu={get paint(){return Ku=Ku||new _i({"background-color":new gi(X.paint_background["background-color"]),"background-pattern":new bi(X.paint_background["background-pattern"]),"background-opacity":new gi(X.paint_background["background-opacity"])})}};class Ju extends Si{constructor(t){super(t,Gu);}}let Xu;var Yu={get paint(){return Xu=Xu||new _i({"raster-opacity":new gi(X.paint_raster["raster-opacity"]),"raster-hue-rotate":new gi(X.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new gi(X.paint_raster["raster-brightness-min"]),"raster-brightness-max":new gi(X.paint_raster["raster-brightness-max"]),"raster-saturation":new gi(X.paint_raster["raster-saturation"]),"raster-contrast":new gi(X.paint_raster["raster-contrast"]),"raster-resampling":new gi(X.paint_raster["raster-resampling"]),"raster-fade-duration":new gi(X.paint_raster["raster-fade-duration"])})}};class Hu extends Si{constructor(t){super(t,Yu);}}class Wu extends Si{constructor(t){super(t,{}),this.onAdd=t=>{this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);},this.onRemove=t=>{this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl);},this.implementation=t;}is3D(){return "3d"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return !1}serialize(){throw new Error("Custom layers cannot be serialized")}}class Qu{constructor(t){this._callback=t,this._triggered=!1,"undefined"!=typeof MessageChannel&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback();});}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._callback();}),0));}remove(){delete this._channel,this._callback=()=>{};}}const tc=6371008.8;class ec{constructor(t,e){if(isNaN(t)||isNaN(e))throw new Error(`Invalid LngLat object: (${t}, ${e})`);if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new ec(m(this.lng,-180,180),this.lat)}toArray(){return [this.lng,this.lat]}toString(){return `LngLat(${this.lng}, ${this.lat})`}distanceTo(t){const e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return tc*Math.acos(Math.min(i,1))}static convert(t){if(t instanceof ec)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new ec(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&"object"==typeof t&&null!==t)return new ec(Number("lng"in t?t.lng:t.lon),Number(t.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]")}}const rc=2*Math.PI*tc;function nc(t){return rc*Math.cos(t*Math.PI/180)}function ic(t){return (180+t)/360}function ac(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function sc(t,e){return t/nc(e)}function oc(t){return 360*t-180}function lc(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180)
vendor: 12,509 bytes, line 37
37)-90}class uc{constructor(t,e,r=0){this.x=+t,this.y=+e,this.z=+r;}static fromLngLat(t,e=0){const r=ec.convert(t);return new uc(ic(r.lng),ac(r.lat),sc(e,r.lat))}toLngLat(){return new ec(oc(this.x),lc(this.y))}toAltitude(){return this.z*nc(lc(this.y))}meterInMercatorCoordinateUnits(){return 1/rc*(t=lc(this.y),1/Math.cos(t*Math.PI/180));var t;}}function cc(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return [t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}class hc{constructor(t,e,r){if(t<0||t>25||r<0||r>=Math.pow(2,t)||e<0||e>=Math.pow(2,t))throw new Error(`x=${e}, y=${r}, z=${t} outside of bounds. 0<=x<${Math.pow(2,t)}, 0<=y<${Math.pow(2,t)} 0<=z<=25 `);this.z=t,this.x=e,this.y=r,this.key=dc(0,t,t,e,r);}equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}url(t,e,r){const n=(a=this.y,s=this.z,o=cc(256*(i=this.x),256*(a=Math.pow(2,s)-a-1),s),l=cc(256*(i+1),256*(a+1),s),o[0]+","+o[1]+","+l[0]+","+l[1]);var i,a,s,o,l;const u=function(t,e,r){let n,i="";for(let a=t;a>0;a--)n=1<<a-1,i+=(e&n?1:0)+(r&n?2:0);return i}(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(/{prefix}/g,(this.x%16).toString(16)+(this.y%16).toString(16)).replace(/{z}/g,String(this.z)).replace(/{x}/g,String(this.x)).replace(/{y}/g,String("tms"===r?Math.pow(2,this.z)-this.y-1:this.y)).replace(/{ratio}/g,e>1?"@2x":"").replace(/{quadkey}/g,u).replace(/{bbox-epsg-3857}/g,n)}isChildOf(t){const e=this.z-t.z;return e>0&&t.x===this.x>>e&&t.y===this.y>>e}getTilePoint(t){const e=Math.pow(2,this.z);return new a((t.x*e-this.x)*rs,(t.y*e-this.y)*rs)}toString(){return `${this.z}/${this.x}/${this.y}`}}class pc{constructor(t,e){this.wrap=t,this.canonical=e,this.key=dc(t,e.z,e.z,e.x,e.y);}}class fc{constructor(t,e,r,n,i){if(t<r)throw new Error(`overscaledZ should be >= z; overscaledZ = ${t}; z = ${r}`);this.overscaledZ=t,this.wrap=e,this.canonical=new hc(r,+n,+i),this.key=dc(e,t,r,n,i);}clone(){return new fc(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)}scaledTo(t){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const e=this.canonical.z-t;return t>this.canonical.z?new fc(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new fc(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)}calculateScaledKey(t,e){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const r=this.canonical.z-t;return t>this.canonical.z?dc(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):dc(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)}isChildOf(t){if(t.wrap!==this.wrap)return !1;const e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ<this.overscaledZ&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e}children(t){if(this.overscaledZ>=t)return [new fc(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return [new fc(e,this.wrap,e,r,n),new fc(e,this.wrap,e,r+1,n),new fc(e,this.wrap,e,r,n+1),new fc(e,this.wrap,e,r+1,n+1)]}isLessThan(t){return this.wrap<t.wrap||!(this.wrap>t.wrap)&&(this.overscaledZ<t.overscaledZ||!(this.overscaledZ>t.overscaledZ)&&(this.canonical.x<t.canonical.x||!(this.canonical.x>t.canonical.x)&&this.canonical.y<t.canonical.y))}wrapped(){return new fc(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(t){return new fc(this.overscaledZ,t,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}toUnwrapped(){return new pc(this.wrap,this.canonical)}toString(){return `${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}getTilePoint(t){return this.canonical.getTilePoint(new uc(t.x-this.wrap,t.y))}}function dc(t,e,r,n,i){(t*=2)<0&&(t=-1*t-1);const a=1<<r;return (a*a*t+a*i+n).toString(36)+r.toString(36)+e.toString(36)}$n("CanonicalTileID",hc),$n("OverscaledTileID",fc,{omit:["posMatrix"]});class yc{constructor(t,e,r,n=1,i=1,a=1,s=0){if(this.uid=t,e.height!==e.width)throw new RangeError("DEM tiles must be square");if(r&&!["mapbox","terrarium","custom"].includes(r))return void A(`"${r}" is not a valid encoding type. Valid types include "mapbox", "terrarium" and "custom".`);this.stride=e.height;const o=this.dim=e.height-2;switch(this.data=new Uint32Array(e.data.buffer),r){case"terrarium":this.redFactor=256,this.greenFactor=1,this.blueFactor=1/256,this.baseShift=32768;break;case"custom":this.redFactor=n,this.greenFactor=i,this.blueFactor=a,this.baseShift=s;break;default:this.redFactor=6553.6,this.greenFactor=25.6,this.blueFactor=.1,this.baseShift=1e4;}for(let t=0;t<o;t++)this.data[this._idx(-1,t)]=this.data[this._idx(0,t)],this.data[this._idx(o,t)]=this.data[this._idx(o-1,t)],this.data[this._idx(t,-1)]=this.data[this._idx(t,0)],this.data[this._idx(t,o)]=this.data[this._idx(t,o-1)];this.data[this._idx(-1,-1)]=this.data[this._idx(0,0)],this.data[this._idx(o,-1)]=this.data[this._idx(o-1,0)],this.data[this._idx(-1,o)]=this.data[this._idx(0,o-1)],this.data[this._idx(o,o)]=this.data[this._idx(o-1,o-1)],this.min=Number.MAX_SAFE_INTEGER,this.max=Number.MIN_SAFE_INTEGER;for(let t=0;t<o;t++)for(let e=0;e<o;e++){const r=this.get(t,e);r>this.max&&(this.max=r),r<this.min&&(this.min=r);}}get(t,e){const r=new Uint8Array(this.data.buffer),n=4*this._idx(t,e);return this.unpack(r[n],r[n+1],r[n+2])}getUnpackVector(){return [this.redFactor,this.greenFactor,this.blueFactor,this.baseShift]}_idx(t,e){if(t<-1||t>=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return (e+1)*this.stride+(t+1)}unpack(t,e,r){return t*this.redFactor+e*this.greenFactor+r*this.blueFactor-this.baseShift}getPixels(){return new qs({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(t,e,r){if(this.dim!==t.dim)throw new Error("dem dimension mismatch");let n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,s=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1;}switch(r){case-1:a=s-1;break;case 1:s=a+1;}const o=-e*this.dim,l=-r*this.dim;for(let e=a;e<s;e++)for(let r=n;r<i;r++)this.data[this._idx(r,e)]=t.data[this._idx(r+o,e+l)];}}$n("DEMData",yc);class mc{constructor(t){this._stringToNumber={},this._numberToString=[];for(let e=0;e<t.length;e++){const r=t[e];this._stringToNumber[r]=e,this._numberToString[e]=r;}}encode(t){return this._stringToNumber[t]}decode(t){if(t>=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${t} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[t]}}class gc{constructor(t,e,r,n,i){this.type="Feature",this._vectorTileFeature=t,t._z=e,t._x=r,t._y=n,this.properties=t.properties,this.id=i;}get geometry(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(t){this._geometry=t;}toJSON(){const t={geometry:this.geometry};for(const e in this)"_geometry"!==e&&"_vectorTileFeature"!==e&&(t[e]=this[e]);return t}}class xc{constructor(t,e){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=new Fn(rs,16,0),this.grid3D=new Fn(rs,16,0),this.featureIndexArray=new ca,this.promoteId=e;}insert(t,e,r,n,i,a){const s=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,n,i);const o=a?this.grid3D:this.grid;for(let t=0;t<e.length;t++){const r=e[t],n=[1/0,1/0,-1/0,-1/0];for(let t=0;t<r.length;t++){const e=r[t];n[0]=Math.min(n[0],e.x),n[1]=Math.min(n[1],e.y),n[2]=Math.max(n[2],e.x),n[3]=Math.max(n[3],e.y);}n[0]<rs&&n[1]<rs&&n[2]>=0&&n[3]>=0&&o.insert(s,n[0],n[1],n[2],n[3]);}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new Ro.VectorTile(new eu(this.rawTileData)).layers,this.sourceLayerCoder=new mc(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(t,e,r,n){this.loadVTLayers();const i=t.params||{},s=rs/t.tileSize/t.scale,o=Nr(i.filter),l=t.queryGeometry,u=t.queryPadding*s,c=bc(l),h=this.grid.query(c.minX-u,c.minY-u,c.maxX+u,c.maxY+u),p=bc(t.cameraQueryGeometry),f=this.grid3D.query(p.minX-u,p.minY-u,p.maxX+u,p.maxY+u,((e,r,n,i)=>function(t,e,r,n,i){for(const a of t)if(e<=a.x&&r<=a.y&&n>=a.x&&i>=a.y)return !0;const s=[new a(e,r),new a(e,i),new a(n,i),new a(n,r)];if(t.length>2)for(const e of s)if(xs(t,e))return !0;for(let e=0;e<t.length-1;e++)if(vs(t[e],t[e+1],s))return !0;return !1}(t.cameraQueryGeometry,e-u,r-u,n+u,i+u)));for(const t of f)h.push(t);h.sort(wc);const d={};let y;for(let a=0;a<h.length;a++){const u=h[a];if(u===y)continue;y=u;const c=this.featureIndexArray.get(u);let p=null;this.loadMatchingFeature(d,c.bucketIndex,c.sourceLayerIndex,c.featureIndex,o,i.layers,i.availableImages,e,r,n,((e,r,n)=>(p||(p=as(e)),r.queryIntersectsFeature(l,e,n,p,this.z,t.transform,s,t.pixelPosMatrix))));}return d}loadMatchingFeature(t,e,r,n,i,a,s,o,l,u,c){const h=this.bucketLayerIDs[e];if(a&&!function(t,e){for(let r=0;r<t.length;r++)if(e.indexOf(t[r])>=0)return !0;return !1}(a,h))return;const p=this.sourceLayerCoder.decode(r),f=this.vtLayers[p].feature(n);if(i.needGeometry){const t=ss(f,!0);if(!i.filter(new li(this.tileID.overscaledZ),t,this.tileID.canonical))return}else if(!i.filter(new li(this.tileID.overscaledZ),f))return;const d=this.getId(f,p);for(let e=0;e<h.length;e++){const r=h[e];if(a&&a.indexOf(r)<0)continue;const i=o[r];if(!i)continue;let p={};d&&u&&(p=u.getState(i.sourceLayer||"_geojsonTileLayer",d));const y=g({},l[r]);y.paint=vc(y.paint,i.paint,f,p,s),y.layout=vc(y.layout,i.layout,f,p,s);const m=!c||c(f,i,p);if(!m)continue;const x=new gc(f,this.z,this.x,this.y,d);x.layer=y;let v=t[r];void 0===v&&(v=t[r]=[]),v.push({featureIndex:n,feature:x,intersectionZ:m});}}lookupSymbolFeatures(t,e,r,n,i,a,s,o){const l={};this.loadVTLayers();const u=Nr(i);for(const i of t)this.loadMatchingFeature(l,r,n,i,u,a,s,o,e);return l}hasLayer(t){for(const e of this.bucketLayerIDs)for(const r of e)if(t===r)return !0;return !1}getId(t,e){let r=t.id;return this.promoteId&&(r=t.properties["string"==typeof this.promoteId?this.promoteId:this.promoteId[e]],"boolean"==typeof r&&(r=Number(r))),r}}function vc(t,e,r,n,i){return v(t,((t,a)=>{const s=e instanceof mi?e.get(a):null;return s&&s.evaluate?s.evaluate(r,n,i):s}))}function bc(t){let e=1/0,r=1/0,n=-1/0,i=-1/0;for(const a of t)e=Math.min(e,a.x),r=Math.min(r,a.y),n=Math.max(n,a.x),i=Math.max(i,a.y);return {minX:e,minY:r,maxX:n,maxY:i}}function wc(t,e){return e-t}function _c(t,e,r,n,i){const s=[];for(let o=0;o<t.length;o++){const l=t[o];let u;for(let t=0;t<l.length-1;t++){let o=l[t],c=l[t+1];o.x<e&&c.x<e||(o.x<e?o=new a(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x<e&&(c=new a(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y<r&&c.y<r||(o.y<r?o=new a(o.x+(r-o.y)/(c.y-o.y)*(c.x-o.x),r)._round():c.y<r&&(c=new a(o.x+(r-o.y)/(c.y-o.y)*(c.x-o.x),r)._round()),o.x>=n&&c.x>=n||(o.x>=n?o=new a(n,o.y+(n-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x>=n&&(c=new a(n,o.y+(n-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y>=i&&c.y>=i||(o.y>=i?o=new a(o.x+(i-o.y)/(c.y-o.y)*(c.x-o.x),i)._round():c.y>=i&&(c=new a(o.x+(i-o.y)/(c.y-o.y)*(c.x-o.x),i)._round()),u&&o.equals(u[u.length-1])||(u=[o],s.push(u)),u.push(c)))));}}return s}$n("FeatureIndex",xc,{omit:["rawTileData","sourceLayerCoder"]});class Ac extends a{constructor(t,e,r,n){super(t,e),this.angle=r,void 0!==n&&(this.segment=n);}clone(){return new Ac(this.x,this.y,this.angle,this.segment)}}function Sc(t,e,r,n,i){if(void 0===e.segment||0===r)return !0;let a=e,s=e.segment+1,o=0;for(;o>-r/2;){if(s--,s<0)return !1;o-=t[s].dist(a),a=t[s];}o+=t[s].dist(t[s+1]),s++;const l=[];let u=0;for(;o<r/2;){const e=t[s],r=t[s+1];if(!r)return !1;let a=t[s-1].angleTo(e)-e.angleTo(r);for(a=Math.abs((a+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:o,angleDelta:a}),u+=a;o-l[0].distance>n;)u-=l.shift().angleDelta;if(u>i)return !1;s++,o+=e.dist(r);}return !0}function kc(t){let e=0;for(let r=0;r<t.length-1;r++)e+=t[r].dist(t[r+1]);return e}function Ic(t,e,r){return t?.6*e*r:0}function zc(t,e){return Math.max(t?t.right-t.left:0,e?e.right-e.left:0)}function Mc(t,e,r,n,i,a){const s=Ic(r,i,a),o=zc(r,n)*a;let l=0;const u=kc(t)/2;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1],a=n.dist(i);if(l+a>
37u){const c=(u-l)/a,h=Ze.number(n.x,i.x,c),p=Ze.number(n.y,i.y,c),f=new Ac(h,p,i.angleTo(n),r);return f._round(),!s||Sc(t,f,o,s,e)?f:void 0}l+=a;}}function Cc(t,e,r,n,i,a,s,o,l){const u=Ic(n,a,s),c=zc(n,i),h=c*s,p=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-h<e/4&&(e=h+e/4),Bc(t,p?e/2*o%e:(c/2+2*a)*s*o%e,e,u,r,h,p,!1,l)}function Bc(t,e,r,n,i,a,s,o,l){const u=a/2,c=kc(t);let h=0,p=e-r,f=[];for(let e=0;e<t.length-1;e++){const s=t[e],o=t[e+1],d=s.dist(o),y=o.angleTo(s);for(;p+r<h+d;){p+=r;const m=(p-h)/d,g=Ze.number(s.x,o.x,m),x=Ze.number(s.y,o.y,m);if(g>=0&&g<l&&x>=0&&x<l&&p-u>=0&&p+u<=c){const r=new Ac(g,x,y,e);r._round(),n&&!Sc(t,r,a,n,i)||f.push(r);}}h+=d;}return o||f.length||s||(f=Bc(t,h/2,r,n,i,a,s,!0,l)),f}$n("Anchor",Ac);const Pc=lu;function Vc(t,e,r,n){const i=[],s=t.image,o=s.pixelRatio,l=s.paddedRect.w-2*Pc,u=s.paddedRect.h-2*Pc,c=t.right-t.left,h=t.bottom-t.top,p=s.stretchX||[[0,l]],f=s.stretchY||[[0,u]],d=(t,e)=>t+e[1]-e[0],y=p.reduce(d,0),m=f.reduce(d,0),g=l-y,x=u-m;let v=0,b=y,w=0,_=m,A=0,S=g,k=0,I=x;if(s.content&&n){const t=s.content;v=Ec(p,0,t[0]),w=Ec(f,0,t[1]),b=Ec(p,t[0],t[2]),_=Ec(f,t[1],t[3]),A=t[0]-v,k=t[1]-w,S=t[2]-t[0]-b,I=t[3]-t[1]-_;}const z=(n,i,l,u)=>{const p=Tc(n.stretch-v,b,c,t.left),f=$c(n.fixed-A,S,n.stretch,y),d=Tc(i.stretch-w,_,h,t.top),g=$c(i.fixed-k,I,i.stretch,m),x=Tc(l.stretch-v,b,c,t.left),z=$c(l.fixed-A,S,l.stretch,y),M=Tc(u.stretch-w,_,h,t.top),C=$c(u.fixed-k,I,u.stretch,m),B=new a(p,d),P=new a(x,d),V=new a(x,M),E=new a(p,M),F=new a(f/o,g/o),T=new a(z/o,C/o),$=e*Math.PI/180;if($){const t=Math.sin($),e=Math.cos($),r=[e,-t,t,e];B._matMult(r),P._matMult(r),E._matMult(r),V._matMult(r);}const L=n.stretch+n.fixed,D=i.stretch+i.fixed;return {tl:B,tr:P,bl:E,br:V,tex:{x:s.paddedRect.x+Pc+L,y:s.paddedRect.y+Pc+D,w:l.stretch+l.fixed-L,h:u.stretch+u.fixed-D},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:F,pixelOffsetBR:T,minFontScaleX:S/o/c,minFontScaleY:I/o/h,isSDF:r}};if(n&&(s.stretchX||s.stretchY)){const t=Fc(p,g,y),e=Fc(f,x,m);for(let r=0;r<t.length-1;r++){const n=t[r],a=t[r+1];for(let t=0;t<e.length-1;t++)i.push(z(n,e[t],a,e[t+1]));}}else i.push(z({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:l+1},{fixed:0,stretch:u+1}));return i}function Ec(t,e,r){let n=0;for(const i of t)n+=Math.max(e,Math.min(r,i[1]))-Math.max(e,Math.min(r,i[0]));return n}function Fc(t,e,r){const n=[{fixed:-Pc,stretch:0}];for(const[e,r]of t){const t=n[n.length-1];n.push({fixed:e-t.stretch,stretch:t.stretch}),n.push({fixed:e-t.stretch,stretch:t.stretch+(r-e)});}return n.push({fixed:e+Pc,stretch:r}),n}function Tc(t,e,r,n){return t/e*r+n}function $c(t,e,r,n){return t-e*r/n}class Lc{constructor(t,e,r,n,i,s,o,l,u,c){if(this.boxStartIndex=t.length,u){let t=s.top,e=s.bottom;const r=s.collisionPadding;r&&(t-=r[1],e+=r[3]);let n=e-t;n>0&&(n=Math.max(10,n),this.circleDiameter=n);}else {let u=s.top*o-l[0],h=s.bottom*o+l[2],p=s.left*o-l[3],f=s.right*o+l[1];const d=s.collisionPadding;if(d&&(p-=d[0]*o,u-=d[1]*o,f+=d[2]*o,h+=d[3]*o),c){const t=new a(p,u),e=new a(f,u),r=new a(p,h),n=new a(f,h),i=c*Math.PI/180;t._rotate(i),e._rotate(i),r._rotate(i),n._rotate(i),p=Math.min(t.x,e.x,r.x,n.x),f=Math.max(t.x,e.x,r.x,n.x),u=Math.min(t.y,e.y,r.y,n.y),h=Math.max(t.y,e.y,r.y,n.y);}t.emplaceBack(e.x,e.y,p,u,f,h,r,n,i);}this.boxEndIndex=t.length;}}class Dc{constructor(t=[],e=Oc){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this.length++,this._up(this.length-1);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:r}=this,n=e[t];for(;t>0;){const i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i;}e[t]=n;}_down(t){const{data:e,compare:r}=this,n=this.length>>1,i=e[t];for(;t<n;){let n=1+(t<<1),a=e[n];const s=n+1;if(s<this.length&&r(e[s],a)<0&&(n=s,a=e[s]),r(a,i)>=0)break;e[t]=a,t=n;}e[t]=i;}}function Oc(t,e){return t<e?-1:t>e?1:0}function Uc(t,e=1,r=!1){let n=1/0,i=1/0,s=-1/0,o=-1/0;const l=t[0];for(let t=0;t<l.length;t++){const e=l[t];
vendor: 5,979 bytes, line 37
37(!t||e.x<n)&&(n=e.x),(!t||e.y<i)&&(i=e.y),(!t||e.x>s)&&(s=e.x),(!t||e.y>o)&&(o=e.y);}const u=Math.min(s-n,o-i);let c=u/2;const h=new Dc([],Rc);if(0===u)return new a(n,i);for(let e=n;e<s;e+=u)for(let r=i;r<o;r+=u)h.push(new qc(e+c,r+c,c,t));let p=function(t){let e=0,r=0,n=0;const i=t[0];for(let t=0,a=i.length,s=a-1;t<a;s=t++){const a=i[t],o=i[s],l=a.x*o.y-o.x*a.y;r+=(a.x+o.x)*l,n+=(a.y+o.y)*l,e+=3*l;}return new qc(r/e,n/e,0,t)}(t),f=h.length;for(;h.length;){const n=h.pop();(n.d>p.d||!p.d)&&(p=n,r&&console.log("found best %d after %d probes",Math.round(1e4*n.d)/1e4,f)),n.max-p.d<=e||(c=n.h/2,h.push(new qc(n.p.x-c,n.p.y-c,c,t)),h.push(new qc(n.p.x+c,n.p.y-c,c,t)),h.push(new qc(n.p.x-c,n.p.y+c,c,t)),h.push(new qc(n.p.x+c,n.p.y+c,c,t)),f+=4);}return r&&(console.log(`num probes: ${f}`),console.log(`best distance: ${p.d}`)),p.p}function Rc(t,e){return e.max-t.max}function qc(t,e,r,n){this.p=new a(t,e),this.h=r,this.d=function(t,e){let r=!1,n=1/0;for(let i=0;i<e.length;i++){const a=e[i];for(let e=0,i=a.length,s=i-1;e<i;s=e++){const i=a[e],o=a[s];i.y>t.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(r=!r),n=Math.min(n,ms(t,i,o));}}return (r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2;}var jc;t.aq=void 0,(jc=t.aq||(t.aq={}))[jc.center=1]="center",jc[jc.left=2]="left",jc[jc.right=3]="right",jc[jc.top=4]="top",jc[jc.bottom=5]="bottom",jc[jc["top-left"]=6]="top-left",jc[jc["top-right"]=7]="top-right",jc[jc["bottom-left"]=8]="bottom-left",jc[jc["bottom-right"]=9]="bottom-right";const Nc=7,Zc=Number.POSITIVE_INFINITY;function Kc(t,e){return e[1]!==Zc?function(t,e,r){let n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case"top-right":case"top-left":case"top":i=r-Nc;break;case"bottom-right":case"bottom-left":case"bottom":i=-r+Nc;}switch(t){case"top-right":case"bottom-right":case"right":n=-e;break;case"top-left":case"bottom-left":case"left":n=e;}return [n,i]}(t,e[0],e[1]):function(t,e){let r=0,n=0;e<0&&(e=0);const i=e/Math.SQRT2;switch(t){case"top-right":case"top-left":n=i-Nc;break;case"bottom-right":case"bottom-left":n=-i+Nc;break;case"bottom":n=-e+Nc;break;case"top":n=e-Nc;}switch(t){case"top-right":case"bottom-right":r=-i;break;case"top-left":case"bottom-left":r=i;break;case"left":r=e;break;case"right":r=-e;}return [r,n]}(t,e[0])}function Gc(t,e,r){var n;const i=t.layout,a=null===(n=i.get("text-variable-anchor-offset"))||void 0===n?void 0:n.evaluate(e,{},r);if(a){const t=a.values,e=[];for(let r=0;r<t.length;r+=2){const n=e[r]=t[r],i=t[r+1].map((t=>t*Vl));n.startsWith("top")?i[1]-=Nc:n.startsWith("bottom")&&(i[1]+=Nc),e[r+1]=i;}return new re(e)}const s=i.get("text-variable-anchor");if(s){let n;n=void 0!==t._unevaluatedLayout.getValue("text-radial-offset")?[i.get("text-radial-offset").evaluate(e,{},r)*Vl,Zc]:i.get("text-offset").evaluate(e,{},r).map((t=>t*Vl));const a=[];for(const t of s)a.push(t,Kc(t,n));return new re(a)}return null}function Jc(t){switch(t){case"right":case"top-right":case"bottom-right":return "right";case"left":case"top-left":case"bottom-left":return "left"}return "center"}function Xc(e,r,n,i,a,s,o,l,u,c,h){let p=s.textMaxSize.evaluate(r,{});void 0===p&&(p=o);const f=e.layers[0].layout,d=f.get("icon-offset").evaluate(r,{},h),y=Hc(n.horizontal),m=o/24,g=e.tilePixelRatio*m,x=e.tilePixelRatio*p/24,v=e.tilePixelRatio*l,b=e.tilePixelRatio*f.get("symbol-spacing"),w=f.get("text-padding")*e.tilePixelRatio,_=function(t,e,r,n=1){const i=t.get("icon-padding").evaluate(e,{},r),a=i&&i.values;return [a[0]*n,a[1]*n,a[2]*n,a[3]*n]}(f,r,h,e.tilePixelRatio),S=f.get("text-max-angle")/180*Math.PI,k="viewport"!==f.get("text-rotation-alignment")&&"point"!==f.get("symbol-placement"),I="map"===f.get("icon-rotation-alignment")&&"point"!==f.get("symbol-placement"),z=f.get("symbol-placement"),M=b/2,C=f.get("icon-text-fit");let B;i&&"none"!==C&&(e.allowVerticalPlacement&&n.vertical&&(B=zu(i,n.vertical,C,f.get("icon-text-fit-padding"),d,m)),y&&(i=zu(i,y,C,f.get("icon-text-fit-padding"),d,m)));const P=(l,p)=>{p.x<0||p.x>=rs||p.y<0||p.y>=rs||function(e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,k,I){const z=e.addToLineVertexArray(r,n);let M,C,B,P,V=0,E=0,F=0,T=0,$=-1,L=-1;const D={};let O=$a("");if(e.allowVerticalPlacement&&i.vertical){const t=l.layout.get("text-rotate").evaluate(w,{},k)+90;B=new Lc(u,r,c,h,p,i.vertical,f,d,y,t),o&&(P=new Lc(u,r,c,h,p,o,g,x,y,t));}if(a){const n=l.layout.get("icon-rotate").evaluate(w,{}),i="none"!==l.layout.get("icon-text-fit"),s=Vc(a,n,S,i),f=o?Vc(o,n,S,i):void 0;C=new Lc(u,r,c,h,p,a,g,x,!1,n),V=4*s.length;const d=e.iconSizeData;let y=null;"source"===d.kind?(y=[Cu*l.layout.get("icon-size").evaluate(w,{})],y[0]>Bu&&A(`${e.layerIds[0]}: Value for "icon-size" is >= ${Mu}. Reduce your "icon-size".`)):"composite"===d.kind&&(y=[Cu*_.compositeIconSizes[0].evaluate(w,{},k),Cu*_.compositeIconSizes[1].evaluate(w,{},k)],(y[0]>Bu||y[1]>Bu)&&A(`${e.layerIds[0]}: Value for "icon-size" is >= ${Mu}. Reduce your "icon-size".`)),e.addSymbols(e.icon,s,y,b,v,w,t.ai.none,r,z.lineStartIndex,z.lineLength,-1,k),$=e.icon.placedSymbolArray.length-1,f&&(E=4*f.length,e.addSymbols(e.icon,f,y,b,v,w,t.ai.vertical,r,z.lineStartIndex,z.lineLength,-1,k),L=e.icon.placedSymbolArray.length-1);}const U=Object.keys(i.horizontal);for(const n of U){const a=i.horizontal[n];if(!M){O=$a(a.text);const t=l.layout.get("text-rotate").evaluate(w,{},k);M=new Lc(u,r,c,h,p,a,f,d,y,t);}const o=1===a.positionedLines.length;if(F+=Yc(e,r,a,s,l,y,w,m,z,i.vertical?t.ai.horizontal:t.ai.horizontalOnly,o?U:[n],D,$,_,k),o)break}i.vertical&&(T+=Yc(e,r,i.vertical,s,l,y,w,m,z,t.ai.vertical,["vertical"],D,L,_,k));const R=M?M.boxStartIndex:e.collisionBoxArray.length,q=M?M.boxEndIndex:e.collisionBoxArray.length,j=B?B.boxStartIndex:e.collisionBoxArray.length,N=B?B.boxEndIndex:e.collisionBoxArray.length,Z=C?C.boxStartIndex:e.collisionBoxArray.length,K=C?C.boxEndIndex:e.collisionBoxArray.length,G=P?P.boxStartIndex:e.collisionBoxArray.length,J=P?P.boxEndIndex:e.collisionBoxArray.length;let X=-1;const Y=(t,e)=>
vendor: 2,465 bytes, line 37
37t&&t.circleDiameter?Math.max(t.circleDiameter,e):e;X=Y(M,X),X=Y(B,X),X=Y(C,X),X=Y(P,X);const H=X>-1?1:0;H&&(X*=I/Vl),e.glyphOffsetArray.length>=Uu.MAX_GLYPHS&&A("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==w.sortKey&&e.addToSortKeyRanges(e.symbolInstances.length,w.sortKey);const W=Gc(l,w,k),[Q,tt]=function(e,r){const n=e.length,i=null==r?void 0:r.values;if((null==i?void 0:i.length)>0)for(let r=0;r<i.length;r+=2){const n=i[r+1];e.emplaceBack(t.aq[i[r]],n[0],n[1]);}return [n,e.length]}(e.textAnchorOffsets,W);e.symbolInstances.emplaceBack(r.x,r.y,D.right>=0?D.right:-1,D.center>=0?D.center:-1,D.left>=0?D.left:-1,D.vertical||-1,$,L,O,R,q,j,N,Z,K,G,J,c,F,T,V,E,H,0,f,X,Q,tt);}(e,p,l,n,i,a,B,e.layers[0],e.collisionBoxArray,r.index,r.sourceLayerIndex,e.index,g,[w,w,w,w],k,u,v,_,I,d,r,s,c,h,o);};if("line"===z)for(const t of _c(r.geometry,0,0,rs,rs)){const r=Cc(t,b,S,n.vertical||y,i,24,x,e.overscaling,rs);for(const n of r)y&&Wc(e,y.text,M,n)||P(t,n);}else if("line-center"===z){for(const t of r.geometry)if(t.length>1){const e=Mc(t,S,n.vertical||y,i,24,x);e&&P(t,e);}}else if("Polygon"===r.type)for(const t of Co(r.geometry,0)){const e=Uc(t,16);P(t[0],new Ac(e.x,e.y,0));}else if("LineString"===r.type)for(const t of r.geometry)P(t,new Ac(t[0].x,t[0].y,0));else if("Point"===r.type)for(const t of r.geometry)for(const e of t)P([e],new Ac(e.x,e.y,0));}function Yc(t,e,r,n,i,s,o,l,u,c,h,p,f,d,y){const m=function(t,e,r,n,i,s,o,l){const u=n.layout.get("text-rotate").evaluate(s,{})*Math.PI/180,c=[];for(const t of e.positionedLines)for(const n of t.positionedGlyphs){if(!n.rect)continue;const s=n.rect||{};let h=su+1,p=!0,f=1,d=0;const y=(i||l)&&n.vertical,m=n.metrics.advance*n.scale/2;if(l&&e.verticalizable&&(d=t.lineOffset/2-(n.imageName?-(Vl-n.metrics.width*n.scale)/2:(n.scale-1)*Vl)),n.imageName){const t=o[n.imageName];p=t.sdf,f=t.pixelRatio,h=lu/f;}const g=i?[n.x+m,n.y]:[0,0];let x=i?[0,0]:[n.x+m+r[0],n.y+r[1]-d],v=[0,0];y&&(v=x,x=[0,0]);const b=n.metrics.isDoubleResolution?2:1,w=(n.metrics.left-h)*n.scale-m+x[0],_=(-n.metrics.top-h)*n.scale+x[1],A=w+s.w/b*n.scale/f,S=_+s.h/b*n.scale/f,k=new a(w,_),I=new a(A,_),z=new a(w,S),M=new a(A,S);if(y){const t=new a(-m,m-pu),e=-Math.PI/2,r=Vl/2-m,i=new a(5-pu-r,-(n.imageName?r:0)),s=new a(...v);k._rotateAround(e,t)._add(i)._add(s),I._rotateAround(e,t)._add(i)._add(s),z._rotateAround(e,t)._add(i)._add(s),M._rotateAround(e,t)._add(i)._add(s);}
vendor: 6,318 bytes, line 37
37if(u){const t=Math.sin(u),e=Math.cos(u),r=[e,-t,t,e];k._matMult(r),I._matMult(r),z._matMult(r),M._matMult(r);}const C=new a(0,0),B=new a(0,0);c.push({tl:k,tr:I,bl:z,br:M,tex:s,writingMode:e.writingMode,glyphOffset:g,sectionIndex:n.sectionIndex,isSDF:p,pixelOffsetTL:C,pixelOffsetBR:B,minFontScaleX:0,minFontScaleY:0});}return c}(0,r,l,i,s,o,n,t.allowVerticalPlacement),g=t.textSizeData;let x=null;"source"===g.kind?(x=[Cu*i.layout.get("text-size").evaluate(o,{})],x[0]>Bu&&A(`${t.layerIds[0]}: Value for "text-size" is >= ${Mu}. Reduce your "text-size".`)):"composite"===g.kind&&(x=[Cu*d.compositeTextSizes[0].evaluate(o,{},y),Cu*d.compositeTextSizes[1].evaluate(o,{},y)],(x[0]>Bu||x[1]>Bu)&&A(`${t.layerIds[0]}: Value for "text-size" is >= ${Mu}. Reduce your "text-size".`)),t.addSymbols(t.text,m,x,l,s,o,c,e,u.lineStartIndex,u.lineLength,f,y);for(const e of h)p[e]=t.text.placedSymbolArray.length-1;return 4*m.length}function Hc(t){for(const e in t)return t[e];return null}function Wc(t,e,r,n){const i=t.compareText;if(e in i){const t=i[e];for(let e=t.length-1;e>=0;e--)if(n.dist(t[e])<r)return !0}else i[e]=[];return i[e].push(n),!1}const Qc=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class th{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");const[e,r]=new Uint8Array(t,0,2);if(219!==e)throw new Error("Data does not appear to be in a KDBush format.");const n=r>>4;if(1!==n)throw new Error(`Got v${n} data when expected v1.`);const i=Qc[15&r];if(!i)throw new Error("Unrecognized array type.");const[a]=new Uint16Array(t,2,1),[s]=new Uint32Array(t,4,1);return new th(s,a,i,t)}constructor(t,e=64,r=Float64Array,n){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+e,2),65535),this.ArrayType=r,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;const i=Qc.indexOf(this.ArrayType),a=2*t*this.ArrayType.BYTES_PER_ELEMENT,s=t*this.IndexArrayType.BYTES_PER_ELEMENT,o=(8-s%8)%8;if(i<0)throw new Error(`Unexpected typed array class: ${r}.`);n&&n instanceof ArrayBuffer?(this.data=n,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+s+o,2*t),this._pos=2*t,this._finished=!0):(this.data=new ArrayBuffer(8+a+s+o),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+s+o,2*t),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+i]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t);}add(t,e){const r=this._pos>>1;return this.ids[r]=r,this.coords[this._pos++]=t,this.coords[this._pos++]=e,r}finish(){const t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return eh(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,e,r,n){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:i,coords:a,nodeSize:s}=this,o=[0,i.length-1,0],l=[];for(;o.length;){const u=o.pop()||0,c=o.pop()||0,h=o.pop()||0;if(c-h<=s){for(let s=h;s<=c;s++){const o=a[2*s],u=a[2*s+1];o>=t&&o<=r&&u>=e&&u<=n&&l.push(i[s]);}continue}const p=h+c>>1,f=a[2*p],d=a[2*p+1];f>=t&&f<=r&&d>=e&&d<=n&&l.push(i[p]),(0===u?t<=f:e<=d)&&(o.push(h),o.push(p-1),o.push(1-u)),(0===u?r>=f:n>=d)&&(o.push(p+1),o.push(c),o.push(1-u));}return l}within(t,e,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:n,coords:i,nodeSize:a}=this,s=[0,n.length-1,0],o=[],l=r*r;for(;s.length;){const u=s.pop()||0,c=s.pop()||0,h=s.pop()||0;if(c-h<=a){for(let r=h;r<=c;r++)ah(i[2*r],i[2*r+1],t,e)<=l&&o.push(n[r]);continue}const p=h+c>>1,f=i[2*p],d=i[2*p+1];ah(f,d,t,e)<=l&&o.push(n[p]),(0===u?t-r<=f:e-r<=d)&&(s.push(h),s.push(p-1),s.push(1-u)),(0===u?t+r>=f:e+r>=d)&&(s.push(p+1),s.push(c),s.push(1-u));}return o}}function eh(t,e,r,n,i,a){if(i-n<=r)return;const s=n+i>>1;rh(t,e,s,n,i,a),eh(t,e,r,n,s-1,1-a),eh(t,e,r,s+1,i,1-a);}function rh(t,e,r,n,i,a){for(;i>n;){if(i-n>600){const s=i-n+1,o=r-n+1,l=Math.log(s),u=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*u*(s-u)/s)*(o-s/2<0?-1:1);rh(t,e,r,Math.max(n,Math.floor(r-o*u/s+c)),Math.min(i,Math.floor(r+(s-o)*u/s+c)),a);}const s=e[2*r+a];let o=n,l=i;for(nh(t,e,n,r),e[2*i+a]>s&&nh(t,e,n,i);o<l;){for(nh(t,e,o,l),o++,l--;e[2*o+a]<s;)o++;for(;e[2*l+a]>s;)l--;}e[2*n+a]===s?nh(t,e,n,l):(l++,nh(t,e,l,i)),l<=r&&(n=l+1),r<=l&&(i=l-1);}}function nh(t,e,r,n){ih(t,r,n),ih(e,2*r,2*n),ih(e,2*r+1,2*n+1);}function ih(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}function ah(t,e,r,n){const i=t-r,a=e-n;return i*i+a*a}var sh;t.bh=void 0,(sh=t.bh||(t.bh={})).create="create",sh.load="load",sh.fullLoad="fullLoad";let oh=null,lh=[];const uh=1e3/60,ch="loadTime",hh="fullLoadTime",ph={mark(t){performance.mark(t);},frame(t){const e=t;null!=oh&&lh.push(e-oh),oh=e;},clearMetrics(){oh=null,lh=[],performance.clearMeasures(ch),performance.clearMeasures(hh);for(const e in t.bh)performance.clearMarks(t.bh[e]);},getPerformanceMetrics(){performance.measure(ch,t.bh.create,t.bh.load),performance.measure(hh,t.bh.create,t.bh.fullLoad);const e=performance.getEntriesByName(ch)[0].duration,r=performance.getEntriesByName(hh)[0].duration,n=lh.length,i=1/(lh.reduce(((t,e)=>t+e),0)/n/1e3),a=lh.filter((t=>t>uh)).reduce(((t,e)=>t+(e-uh)/uh),0);return {loadTime:e,fullLoadTime:r,fps:i,percentDroppedFrames:a/(n+a)*100,totalFrames:n}}};t.$=function(t,e,r){var n,i,a,s,o,l,u,c,h,p,f,d,y=r[0],m=r[1],g=r[2];return e===t?(t[12]=e[0]*y+e[4]*m+e[8]*g+e[12],t[13]=e[1]*y+e[5]*m+e[9]*g+e[13],t[14]=e[2]*y+e[6]*m+e[10]*g+e[14],t[15]=e[3]*y+e[7]*m+e[11]*g+e[15]):(i=e[1],a=e[2],s=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],t[0]=n=e[0],t[1]=i,t[2]=a,t[3]=s,t[4]=o,t[5]=l,t[6]=u,t[7]=c,t[8]=h,t[9]=p,t[10]=f,t[11]=d,t[12]=n*y+o*m+h*g+e[12],t[13]=i*y+l*m+p*g+e[13],t[14]=a*y+u*m+f*g+e[14],t[15]=s*y+c*m+d*g+e[15]),t},t.A=zs,t.B=Ze,t.C=class{constructor(t,e,r){this.receive=t=>{const e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if("<cancel>"===e.type){delete this.tasks[r];const t=this.cancelCallbacks[r];delete this.cancelCallbacks[r],t&&t();}else I()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e);},this.process=()=>
37{if(!this.taskQueue.length)return;const t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e);},this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},this.invoker=new Qu(this.process),this.target.addEventListener("message",this.receive,!1),this.globalScope=I()?t:window;}send(t,e,r,n,i=!1){const a=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(this.callbacks[a]=r);const s=[],o={id:a,type:t,hasCallback:!!r,targetMapId:n,mustQueue:i,sourceMapId:this.mapId,data:Dn(e,s)};return this.target.postMessage(o,{transfer:s}),{cancel:()=>{r&&delete this.callbacks[a],this.target.postMessage({id:a,type:"<cancel>",targetMapId:n,sourceMapId:this.mapId});}}}processTask(t,e){if("<response>"===e.type){const r=this.callbacks[t];delete this.callbacks[t],r&&(e.error?r(On(e.error)):r(null,On(e.data)));}else {let r=!1;const n=[],i=e.hasCallback?(e,i)=>{r=!0,delete this.cancelCallbacks[t];const a={id:t,type:"<response>",sourceMapId:this.mapId,error:e?Dn(e):null,data:Dn(i,n)};this.target.postMessage(a,{transfer:n});}:t=>{r=!0;};let a=null;const s=On(e.data);if(this.parent[e.type])a=this.parent[e.type](e.sourceMapId,s,i);else if("getWorkerSource"in this.parent){const t=e.type.split(".");a=this.parent.getWorkerSource(e.sourceMapId,t[0],s.source)[t[1]](s,i);}else i(new Error(`Could not find function ${e.type}`));!r&&a&&a.cancel&&(this.cancelCallbacks[t]=a.cancel);}}remove(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1);}},t.D=gi,t.E=J,t.F=function(t,e){const r={};for(let n=0;n<e.length;n++){const i=e[n];i in t&&(r[i]=t[i]);}return r},t.G=ic,t.H=ac,t.I=uu,t.J=h,t.K=p,t.L=ec,t.M=B,t.N=rs,t.O=fc,t.P=a,t.Q=Mi,t.R=qs,t.S=za,t.T=hi,t.U=uc,t.V=class extends Vi{},t.W=hc,t.X=function(t,e){const r=window.document.createElement("video");r.muted=!0,r.onloadstart=function(){e(null,r);};for(let e=0;e<t.length;e++){const n=window.document.createElement("source");j(t[e])||(r.crossOrigin="Anonymous"),n.src=t[e],r.appendChild(n);}return {cancel:()=>{}}},t.Y=ot,t.Z=function(){var t=new zs(16);return zs!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t._=e,t.a=M,t.a$=class extends Hi{},t.a0=function(t,e,r){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11]*a,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.a1=Cs,t.a2=function(){return x++},t.a3=ta,t.a4=Uu,t.a5=function(){oi.isLoading()||oi.isLoaded()||"deferred"!==ai()||si();},t.a6=Nr,t.a7=ss,t.a8=li,t.a9=gc,t.aA=ri,t.aB=function(t){t=t.slice();const e=Object.create(null);for(let r=0;r<t.length;r++)e[t[r].id]=t[r];for(let r=0;r<t.length;r++)"ref"in t[r]&&(t[r]=H(t[r],e[t[r].ref]));return t},t.aC=function(t){if("custom"===t.type)return new Wu(t);switch(t.type){case"background":return new Ju(t);case"circle":return new Es(t);case"fill":return new Lo(t);case"fill-extrusion":return new ol(t);case"heatmap":return new Ns(t);case"hillshade":return new Gs(t);case"line":return new Al(t);case"raster":return new Hu(t);case"symbol":return new Zu(t)}},t.aD=w,t.aE=function(t,e){if(!t)return [{command:Q.setStyle,args:[e]}];let r=[];try{if(!W(t.version,e.version))return [{command:Q.setStyle,args:[e]}];W(t.center,e.center)||r.push({command:Q.setCenter,args:[e.center]}),W(t.zoom,e.zoom)||r.push({command:Q.setZoom,args:[e.zoom]}),W(t.bearing,e.bearing)||r.push({command:Q.setBearing,args:[e.bearing]}),W(t.pitch,e.pitch)||r.push({command:Q.setPitch,args:[e.pitch]}),W(t.sprite,e.sprite)||r.push({command:Q.setSprite,args:[e.sprite]}),W(t.glyphs,e.glyphs)||r.push({command:Q.setGlyphs,args:[e.glyphs]}),W(t.transition,e.transition)||r.push({command:Q.setTransition,args:[e.transition]}),W(t.light,e.light)||r.push({command:Q.setLight,args:[e.light]});const n={},i=[];!function(t,e,r,n){let i;for(i in e=e||{},t=t||{})Object.prototype.hasOwnProperty.call(t,i)&&(Object.prototype.hasOwnProperty.call(e,i)||et(i,r,n));for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&(Object.prototype.hasOwnProperty.call(t,i)?W(t[i],e[i])||("geojson"===t[i].type&&"geojson"===e[i].type&&nt
37(t,e,i)?r.push({command:Q.setGeoJSONSourceData,args:[i,e[i].data]}):rt(i,e,r,n)):tt(i,e,r));}(t.sources,e.sources,i,n);const a=[];t.layers&&t.layers.forEach((t=>{n[t.source]?r.push({command:Q.removeLayer,args:[t.id]}):a.push(t);})),r=r.concat(i),function(t,e,r){e=e||[];const n=(t=t||[]).map(at),i=e.map(at),a=t.reduce(st,{}),s=e.reduce(st,{}),o=n.slice(),l=Object.create(null);let u,c,h,p,f,d,y;for(u=0,c=0;u<n.length;u++)h=n[u],Object.prototype.hasOwnProperty.call(s,h)?c++:(r.push({command:Q.removeLayer,args:[h]}),o.splice(o.indexOf(h,c),1));for(u=0,c=0;u<i.length;u++)h=i[i.length-1-u],o[o.length-1-u]!==h&&(Object.prototype.hasOwnProperty.call(a,h)?(r.push({command:Q.removeLayer,args:[h]}),o.splice(o.lastIndexOf(h,o.length-c),1)):c++,d=o[o.length-u],r.push({command:Q.addLayer,args:[s[h],d]}),o.splice(o.length-u,0,h),l[h]=!0);for(u=0;u<i.length;u++)if(h=i[u],p=a[h],f=s[h],!l[h]&&!W(p,f))if(W(p.source,f.source)&&W(p["source-layer"],f["source-layer"])&&W(p.type,f.type)){for(y in it(p.layout,f.layout,r,h,null,Q.setLayoutProperty),it(p.paint,f.paint,r,h,null,Q.setPaintProperty),W(p.filter,f.filter)||r.push({command:Q.setFilter,args:[h,f.filter]}),W(p.minzoom,f.minzoom)&&W(p.maxzoom,f.maxzoom)||r.push({command:Q.setLayerZoomRange,args:[h,f.minzoom,f.maxzoom]}),p)Object.prototype.hasOwnProperty.call(p,y)&&"layout"!==y&&"paint"!==y&&"filter"!==y&&"metadata"!==y&&"minzoom"!==y&&"maxzoom"!==y&&(0===y.indexOf("paint.")?it(p[y],f[y],r,h,y.slice(6),Q.setPaintProperty):W(p[y],f[y])||r.push({command:Q.setLayerProperty,args:[h,y,f[y]]}));for(y in f)Object.prototype.hasOwnProperty.call(f,y)&&!Object.prototype.hasOwnProperty.call(p,y)&&"layout"!==y&&"paint"!==y&&"filter"!==y&&"metadata"!==y&&"minzoom"!==y&&"maxzoom"!==y&&(0===y.indexOf("paint.")?it(p[y],f[y],r,h,y.slice(6),Q.setPaintProperty):W(p[y],f[y])||r.push({command:Q.setLayerProperty,args:[h,y,f[y]]}));}else r.push({command:Q.removeLayer,args:[h]}),d=o[o.lastIndexOf(h)+1],r.push({command:Q.addLayer,args:[f,d]});}(a,e.layers,r);}catch(t){console.warn("Unable to compute style diff:",t),r=[{command:Q.setStyle,args:[e]}];}return r},t.aF=function(t){const e=[],r=t.id;return void 0===r&&e.push({message:`layers.${r}: missing required property "id"`}),void 0===t.render&&e.push({message:`layers.${r}: missing required method "render"`}),t.renderingMode&&"2d"!==t.renderingMode&&"3d"!==t.renderingMode&&e.push({message:`layers.${r}: property "renderingMode" must be either "2d" or "3d"`}),e},t.aG=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return !1;for(let n=0;n<e.length;n++)if(!t(e[n],r[n]))return !1;return !0}if("object"==typeof e&&null!==e&&null!==r){if("object"!=typeof r)return !1;if(Object.keys(e).length!==Object.keys(r).length)return !1;for(const n in e)if(!t(e[n],r[n]))return !1;return !0}return e===r},t.aH=v,t.aI=b,t.aJ=ii,t.aK=function(t){return t({pluginStatus:ti,pluginURL:ei}),ii.on("pluginStateChange",t),t},t.aL=class extends Ra{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1i(this.location,t));}},t.aM=qa,t.aN=class extends Ra{constructor(t,e){super(t,e),this.current=Za;}set(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(let e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}}},t.aO=ja,t.aP=class extends Ra{constructor(t,e){super(t,e),this.current=[0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]));}},t.aQ=class extends Ra{constructor(t,e){super(t,e),this.current=[0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));}},t.aR=Na,t.aS=function(t,e,r,n,i,a,s){var o=1/(e-r),l=1/(n-i),u=1/(a-s);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*o,t[13]=(i+n)*l,t[14]=(s+a)*u,t[15]=1,t},t.aT=Yt,t.aU=Ps,t.aV=class extends qi{},t.aW=Cl,t.aX=class extends Ni{},t.aY=function(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},t.aZ=js,t.a_=ha,t.aa=function(t){const e={};if(t.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,((t,r,n,i)=>{const a=n||i;return e[r]=!a||a.toLowerCase(),""})),e["max-age"]){const t=parseInt(e["max-age"],10);isNaN(t)?delete e["max-age"]:e["max-age"]=t;}return e},t.ab=function(t,e){const r=[];for(const n in t)n in e||r.push(n);return r},t.ac=function(t){if(null==z){const e=t.navigator?t.navigator.userAgent:null;z=!!t.safari||!(!e||!(/\b(iPad|iPhone|iPod)\b/.test(e)||e.match("Safari")&&!e.match("Chrome")));}return z},t.ad=y,t.ae=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],s=e[1],o=e[2],l=e[3],u=e[4],c=e[5],h=e[6],p=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=a*i+u*n,t[1]=s*i+c*n,t[2]=o*i+h*n,t[3]=l*i+p*n,t[4]=u*i-a*n,t[5]=c*i-s*n,t[6]=h*i-o*n,t[7]=p*i-l*n,t},t.af=function(t){var e=new zs(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.ag=Vs,t.ah=function(t,e){let r=0,n=0;if("constant"===t.kind)n=t.layoutSize;else if("source"!==t.kind){const{interpolationType:i,minZoom:a,maxZoom:s}=t,o=i?y(Ke.interpolationFactor(i,e,a,s),0,1):0;"camera"===t.kind?n=Ze.number(t.minSize,t.maxSize,o):r=o;}return {uSizeT:r,uSize:n}},t.aj=function(t,{uSize:e,uSizeT:r},{lowerSize:n,upperSize:i}){return "source"===t.kind?n/Cu:"composite"===t.kind?Ze.number(n/Cu,i/Cu,r):e},t.ak=$u,t.al=function(t,e,r,n){const i=e.y-t.y,s=e.x-t.x,o=n.y-r.y,l=n.x-r.x,u=o*s-l*i;if(0===u)return null;
vendor: 5,729 bytes, line 37
37const c=(l*(t.y-r.y)-o*(t.x-r.x))/u;return new a(t.x+c*s,t.y+c*i)},t.am=_c,t.an=us,t.ao=Ms,t.ap=Vl,t.ar=Vu,t.as=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],s=e[4],o=e[5],l=e[6],u=e[7],c=e[8],h=e[9],p=e[10],f=e[11],d=e[12],y=e[13],m=e[14],g=e[15],x=r*o-n*s,v=r*l-i*s,b=r*u-a*s,w=n*l-i*o,_=n*u-a*o,A=i*u-a*l,S=c*y-h*d,k=c*m-p*d,I=c*g-f*d,z=h*m-p*y,M=h*g-f*y,C=p*g-f*m,B=x*C-v*M+b*z+w*I-_*k+A*S;return B?(t[0]=(o*C-l*M+u*z)*(B=1/B),t[1]=(i*M-n*C-a*z)*B,t[2]=(y*A-m*_+g*w)*B,t[3]=(p*_-h*A-f*w)*B,t[4]=(l*I-s*C-u*k)*B,t[5]=(r*C-i*I+a*k)*B,t[6]=(m*b-d*A-g*v)*B,t[7]=(c*A-p*b+f*v)*B,t[8]=(s*M-o*I+u*S)*B,t[9]=(n*I-r*M-a*S)*B,t[10]=(d*_-y*b+g*x)*B,t[11]=(h*b-c*_-f*x)*B,t[12]=(o*k-s*z-l*S)*B,t[13]=(r*z-n*k+i*S)*B,t[14]=(y*v-d*w-m*x)*B,t[15]=(c*w-h*v+p*x)*B,t):null},t.at=Jc,t.au=Su,t.av=th,t.aw=function(){const t={},e=X.$version;for(const r in X.$root){const n=X.$root[r];if(n.required){let i=null;i="version"===r?e:"array"===n.type?[]:{},null!=i&&(t[r]=i);}}return t},t.ax=Q,t.ay=Un,t.az=D,t.b=function(t,e){const r=new Blob([new Uint8Array(t)],{type:"image/png"});createImageBitmap(r).then((t=>{e(null,t);})).catch((t=>{e(new Error(`Could not load image because of ${t.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`));}));},t.b0=Aa,t.b1=function(t,e){var r=t[0],n=t[1],i=t[2],a=t[3],s=t[4],o=t[5],l=t[6],u=t[7],c=t[8],h=t[9],p=t[10],f=t[11],d=t[12],y=t[13],m=t[14],g=t[15],x=e[0],v=e[1],b=e[2],w=e[3],_=e[4],A=e[5],S=e[6],k=e[7],I=e[8],z=e[9],M=e[10],C=e[11],B=e[12],P=e[13],V=e[14],E=e[15];return Math.abs(r-x)<=Is*Math.max(1,Math.abs(r),Math.abs(x))&&Math.abs(n-v)<=Is*Math.max(1,Math.abs(n),Math.abs(v))&&Math.abs(i-b)<=Is*Math.max(1,Math.abs(i),Math.abs(b))&&Math.abs(a-w)<=Is*Math.max(1,Math.abs(a),Math.abs(w))&&Math.abs(s-_)<=Is*Math.max(1,Math.abs(s),Math.abs(_))&&Math.abs(o-A)<=Is*Math.max(1,Math.abs(o),Math.abs(A))&&Math.abs(l-S)<=Is*Math.max(1,Math.abs(l),Math.abs(S))&&Math.abs(u-k)<=Is*Math.max(1,Math.abs(u),Math.abs(k))&&Math.abs(c-I)<=Is*Math.max(1,Math.abs(c),Math.abs(I))&&Math.abs(h-z)<=Is*Math.max(1,Math.abs(h),Math.abs(z))&&Math.abs(p-M)<=Is*Math.max(1,Math.abs(p),Math.abs(M))&&Math.abs(f-C)<=Is*Math.max(1,Math.abs(f),Math.abs(C))&&Math.abs(d-B)<=Is*Math.max(1,Math.abs(d),Math.abs(B))&&Math.abs(y-P)<=Is*Math.max(1,Math.abs(y),Math.abs(P))&&Math.abs(m-V)<=Is*Math.max(1,Math.abs(m),Math.abs(V))&&Math.abs(g-E)<=Is*Math.max(1,Math.abs(g),Math.abs(E))},t.b2=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.b3=function(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t},t.b4=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]},t.b5=m,t.b6=pc,t.b7=sc,t.b8=function(t,e,r,n,i){var a,s=1/Math.tan(e/2);return t[0]=s/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=s,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(t[10]=(i+n)*(a=1/(n-i)),t[14]=2*i*n*a):(t[10]=-1,t[14]=-2*n),t},t.b9=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=a*i+u*n,t[5]=s*i+c*n,t[6]=o*i+h*n,t[7]=l*i+p*n,t[8]=u*i-a*n,t[9]=c*i-s*n,t[10]=h*i-o*n,t[11]=p*i-l*n,t},t.bA=n,t.bB=El,t.bC=$r,t.bD=oi,t.ba=f,t.bb=d,t.bc=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},t.bd=class extends Pi{},t.be=tc,t.bf=oc,t.bg=ph,t.bi=L,t.bj=function(t,e,r=!1){if(ti===Yn||ti===Hn||ti===Wn)throw new Error("setRTLTextPlugin cannot be called multiple times.");ei=T.resolveURL(t),ti=Yn,Qn=e,ni(),r||si();},t.bk=ai,t.bl=function(t,e){const r={};for(let n=0;n<t.length;n++){const i=e&&e[t[n].id]||Qr(t[n]);e&&(e[t[n].id]=i);let a=r[i];a||(a=r[i]=[]),a.push(t[n]);}const n=[];for(const t in r)n.push(r[t]);return n},t.bm=$n,t.bn=mc,t.bo=xc,t.bp=cu,t.bq=function(e){e.bucket.createArrays(),e.bucket.tilePixelRatio=rs/(512*e.bucket.overscaling),e.bucket.compareText={},e.bucket.iconsNeedLinear=!1;const r=e.bucket.layers[0],n=r.layout,i=r._unevaluatedLayout._values,a={layoutIconSize:i["icon-size"].possiblyEvaluate(new li(e.bucket.zoom+1),e.canonical),layoutTextSize:i["text-size"].possiblyEvaluate(new li(e.bucket.zoom+1),e.canonical),textMaxSize:i["text-size"].possiblyEvaluate(new li(18))};if("composite"===e.bucket.textSizeData.kind){const{minZoom:t,maxZoom:r}=e.bucket.textSizeData;a.compositeTextSizes=[i["text-size"].possiblyEvaluate(new li(t),e.canonical),i["text-size"].possiblyEvaluate(new li(r),e.canonical)];}if("composite"===e.bucket.iconSizeData.kind){const{minZoom:t,maxZoom:r}=e.bucket.iconSizeData;a.compositeIconSizes=[i["icon-size"].possiblyEvaluate(new li(t),e.canonical),i["icon-size"].possiblyEvaluate(new li(r),e.canonical)];}const s=n.get("text-line-height")*Vl,o="viewport"!==n.get("text-rotation-alignment")&&"point"!==n.get("symbol-placement"),l=n.get("text-keep-upright"),u=n.get("text-size");for(const i of e.bucket.features){const c=n.get("text-font").evaluate(i,{},e.canonical).join(","),h=u.evaluate(i,{},e.canonical),p=a.layoutTextSize.evaluate(i,{},e.canonical),f=a.layoutIconSize.evaluate(i,{},e.canonical),d={horizontal:{},vertical:void 0},y=i.text;let m,g=[0,0];if(y){const a=y.toString(),u=n.get("text-letter-spacing").evaluate(i,{},e.canonical)*Vl,f=jn(a)?u:0,m=n.get("text-anchor").evaluate(i,{},e.canonical),x=Gc(r,i,e.canonical);if(!x){const t=n.get("text-radial-offset").evaluate(i,{},e.canonical);g=t?Kc(m,[t*Vl,Zc]):n.get("text-offset").evaluate(i,{},e.canonical).map((t=>t*Vl));}
37let v=o?"center":n.get("text-justify").evaluate(i,{},e.canonical);const b=n.get("symbol-placement"),w="point"===b?n.get("text-max-width").evaluate(i,{},e.canonical)*Vl:0,_=()=>{e.bucket.allowVerticalPlacement&&qn(a)&&(d.vertical=yu(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,w,s,m,"left",f,g,t.ai.vertical,!0,b,p,h));};if(!o&&x){const r=new Set;if("auto"===v)for(let t=0;t<x.values.length;t+=2)r.add(Jc(x.values[t]));else r.add(v);let n=!1;for(const i of r)if(!d.horizontal[i])if(n)d.horizontal[i]=d.horizontal[0];else {const r=yu(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,w,s,"center",i,f,g,t.ai.horizontal,!1,b,p,h);r&&(d.horizontal[i]=r,n=1===r.positionedLines.length);}_();}else {"auto"===v&&(v=Jc(m));const r=yu(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,w,s,m,v,f,g,t.ai.horizontal,!1,b,p,h);r&&(d.horizontal[v]=r),_(),qn(a)&&o&&l&&(d.vertical=yu(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,w,s,m,v,f,g,t.ai.vertical,!1,b,p,h));}}let x=!1;if(i.icon&&i.icon.name){const t=e.imageMap[i.icon.name];t&&(m=Iu(e.imagePositions[i.icon.name],n.get("icon-offset").evaluate(i,{},e.canonical),n.get("icon-anchor").evaluate(i,{},e.canonical)),x=!!t.sdf,void 0===e.bucket.sdfIcons?e.bucket.sdfIcons=x:e.bucket.sdfIcons!==x&&A("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"),(t.pixelRatio!==e.bucket.pixelRatio||0!==n.get("icon-rotate").constantOr(1))&&(e.bucket.iconsNeedLinear=!0));}const v=Hc(d.horizontal)||d.vertical;e.bucket.iconsInText=!!v&&v.iconsInText,(v||m)&&Xc(e.bucket,i,d,m,e.imageMap,a,p,f,g,x,e.canonical);}e.showCollisionBoxes&&e.bucket.generateCollisionDebugBuffers();},t.br=gl,t.bs=Eo,t.bt=rl,t.bu=class{constructor(t){this._marks={start:[t.url,"start"].join("#"),end:[t.url,"end"].join("#"),measure:t.url.toString()},performance.mark(this._marks.start);}finish(){performance.mark(this._marks.end);let t=performance.getEntriesByName(this._marks.measure);return 0===t.length&&(performance.measure(this._marks.measure,this._marks.start,this._marks.end),t=performance.getEntriesByName(this._marks.measure),performance.clearMarks(this._marks.start),performance.clearMarks(this._marks.end),performance.clearMeasures(this._marks.measure)),t}},t.bv=eu,t.bw=Ro,t.bx=function(t,r,n,i,a){return e(this,void 0,void 0,(function*(){if(p())try{return yield B(t,r,n,i,a)}catch(t){}return function(t,e,r,n,i){const a=t.width,s=t.height;P&&V||(P=new OffscreenCanvas(a,s),V=P.getContext("2d",{willReadFrequently:!0})),P.width=a,P.height=s,V.drawImage(t,0,0,a,s);const o=V.getImageData(e,r,n,i);return V.clearRect(0,0,a,s),o.data}(t,r,n,i,a)}))},t.by=yc,t.bz=r,t.c=$,t.d=function(t,e){const r=new Image;r.onload=()=>{e(null,r),URL.revokeObjectURL(r.src),r.onload=null,window.requestAnimationFrame((()=>{r.src=C;}));},r.onerror=()=>e(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const n=new Blob([new Uint8Array(t)],{type:"image/png"});r.src=t.byteLength?URL.createObjectURL(n):C;},t.e=g,t.f=function(t,e){return R(g(t,{type:"json"}),e)},t.g=O,t.h=T,t.i=I,t.j=G,t.k=K,t.l=q,t.m=R,t.n=function(t){return new eu(t).readFields(nu,[])},t.o=function(t,e,r){if(!t.length)return r(null,[]);let n=t.length;const i=new Array(t.length);let a=null;t.forEach(((t,s)=>{e(t,((t,e)=>{t&&(a=t),i[s]=e,0==--n&&r(a,i);}));}));},t.p=ou,t.q=Rs,t.r=_i,t.s=j,t.t=Bn,t.u=Rn,t.v=X,t.w=A,t.x=En,t.y=Cn,t.z=function([t,e,r]){return e+=90,e*=Math.PI/180,r*=Math.PI/180,{x:t*Math.cos(e)*Math.sin(r),y:t*Math.sin(e)*Math.sin(r),z:t*Math.cos(r)}};})); 38 39define(["./shared"],(function(e){"use strict";class t{constructor(e){this.keyCache={},e&&this.replace(e);}replace(e){this._layerConfigs={},this._layers={},this.update(e,[]);}update(t,i){for(const i of t){this._layerConfigs[i.id]=i;const t=this._layers[i.id]=e.aC(i);t._featureFilter=e.a6(t.filter),this.keyCache[i.id]&&delete this.keyCache[i.id];}for(const e of i)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const o=e.bl(Object.values(this._layerConfigs),this.keyCache);for(const e of o){const t=e.map((e=>this._layers[e.id])),i=t[0];if("none"===i.visibility)continue;const o=i.source||"";let r=this.familiesBySource[o];r||(r=this.familiesBySource[o]={});const s=i.sourceLayer||"_geojsonTileLayer";let n=r[s];
39n||(n=r[s]=[]),n.push(t);}}}class i{constructor(t){const i={},o=[];for(const e in t){const r=t[e],s=i[e]={};for(const e in r){const t=r[+e];if(!t||0===t.bitmap.width||0===t.bitmap.height)continue;const i={x:0,y:0,w:t.bitmap.width+2,h:t.bitmap.height+2};o.push(i),s[e]={rect:i,metrics:t.metrics};}}const{w:r,h:s}=e.p(o),n=new e.q({width:r||1,height:s||1});for(const o in t){const r=t[o];for(const t in r){const s=r[+t];if(!s||0===s.bitmap.width||0===s.bitmap.height)continue;const a=i[o][t].rect;e.q.copy(s.bitmap,n,{x:0,y:0},{x:a.x+1,y:a.y+1},s.bitmap);}}this.image=n,this.positions=i;}}e.bm("GlyphAtlas",i);class o{constructor(t){this.tileID=new e.O(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.uid=t.uid,this.zoom=t.zoom,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId,this.inFlightDependencies=[],this.dependencySentinel=-1;}parse(t,o,s,n,a){this.status="parsing",this.data=t,this.collisionBoxArray=new e.a3;const l=new e.bn(Object.keys(t.layers).sort()),c=new e.bo(this.tileID,this.promoteId);c.bucketLayerIDs=[];const h={},u={featureIndex:c,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:s},d=o.familiesBySource[this.source];for(const i in d){const o=t.layers[i];if(!o)continue;1===o.version&&e.w(`Vector tile source "${this.source}" layer "${i}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const n=l.encode(i),a=[];for(let e=0;e<o.length;e++){const t=o.feature(e),r=c.getId(t,i);a.push({feature:t,id:r,index:e,sourceLayerIndex:n});}for(const t of d[i]){const i=t[0];i.source!==this.source&&e.w(`layer.source = ${i.source} does not equal this.source = ${this.source}`),i.minzoom&&this.zoom<Math.floor(i.minzoom)||i.maxzoom&&this.zoom>=i.maxzoom||"none"!==i.visibility&&(r(t,this.zoom,s),(h[i.id]=i.createBucket({index:c.bucketLayerIDs.length,layers:t,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:n,sourceID:this.source})).populate(a,u,this.tileID.canonical),c.bucketLayerIDs.push(t.map((e=>e.id))));}}let p,f,g,m;const y=e.aH(u.glyphDependencies,(e=>Object.keys(e).map(Number)));this.inFlightDependencies.forEach((e=>null==e?void 0:e.cancel())),this.inFlightDependencies=[];const v=++this.dependencySentinel;Object.keys(y).length?this.inFlightDependencies.push(n.send("getGlyphs",{uid:this.uid,stacks:y,source:this.source,tileID:this.tileID,type:"glyphs"},((e,t)=>{v===this.dependencySentinel&&(p||(p=e,f=t,b.call(this)));}))):f={};const w=Object.keys(u.iconDependencies);w.length?this.inFlightDependencies.push(n.send("getImages",{icons:w,source:this.source,tileID:this.tileID,type:"icons"},((e,t)=>{v===this.dependencySentinel&&(p||(p=e,g=t,b.call(this)));}))):g={};const x=Object.keys(u.patternDependencies);function b(){if(p)return a(p);if(f&&g&&m){const t=new i(f),o=new e.bp(g,m);for(const i in h){const n=h[i];n instanceof e.a4?(r(n.layers,this.zoom,s),e.bq({bucket:n,glyphMap:f,glyphPositions:t.positions,imageMap:g,imagePositions:o.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):n.hasPattern&&(n instanceof e.br||n instanceof e.bs||n instanceof e.bt)&&(r(n.layers,this.zoom,s),n.addFeatures(u,this.tileID.canonical,o.patternPositions));}this.status="done",a(null,{buckets:Object.values(h).filter((e=>!e.isEmpty())),featureIndex:c,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:t.image,imageAtlas:o,glyphMap:this.returnDependencies?f:null,iconMap:this.returnDependencies?g:null,glyphPositions:this.returnDependencies?t.positions:null});}}x.length?this.inFlightDependencies.push(n.send("getImages",{icons:x,source:this.source,tileID:this.tileID,type:"patterns"},((e,t)=>{v===this.dependencySentinel&&(p||(p=e,m=t,b.call(this)));}))):m={},b.call(this);}}function r(t,i,o){const r=new e.a8(i);for(const e of t)e.recalculate(r,o);}function s(t,i){const o=e.l(t.request,((o,r,s,n)=>{if(o)i(o);else if(r)try{const t=new e.bw.VectorTile(new e.bv(r));i(null,{vectorTile:t,rawData:r,cacheControl:s,expires:n});}catch(e){const o=new Uint8Array(r);let s=`Unable to parse the tile at ${t.request.url}, `;s+=31===o[0]&&139===o[1]?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${e.messge}`,i(new Error(s));}}));return ()=>{o.cancel(),i();}}class n{constructor(e,t,i,o){this.actor=e,this.layerIndex=t,this.availableImages=i,this.loadVectorData=o||s,this.fetching={},this.loading={},this.loaded={};}loadTile(t,i){const r=t.uid;this.loading||(this.loading={});const s=!!(t&&t.request&&t.request.collectResourceTiming)&&new e.bu(t.request),n=this.loading[r]=new o(t);n.abort=this.loadVectorData(t,((t,o)=>{if(delete this.loading[r],t||!o)return n.status="done",this.loaded[r]=n,i(t);const a=o.rawData,l={};o.expires&&(l.expires=o.expires),o.cacheControl&&(l.cacheControl=o.c
39acheControl);const c={};if(s){const e=s.finish();e&&(c.resourceTiming=JSON.parse(JSON.stringify(e)));}n.vectorTile=o.vectorTile,n.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,((t,o)=>{if(delete this.fetching[r],t||!o)return i(t);i(null,e.e({rawTileData:a.slice(0)},o,l,c));})),this.loaded=this.loaded||{},this.loaded[r]=n,this.fetching[r]={rawTileData:a,cacheControl:l,resourceTiming:c};}));}reloadTile(t,i){const o=this.loaded,r=t.uid;if(o&&o[r]){const s=o[r];s.showCollisionBoxes=t.showCollisionBoxes,"parsing"===s.status?s.parse(s.vectorTile,this.layerIndex,this.availableImages,this.actor,((t,o)=>{if(t||!o)return i(t,o);let s;if(this.fetching[r]){const{rawTileData:t,cacheControl:i,resourceTiming:n}=this.fetching[r];delete this.fetching[r],s=e.e({rawTileData:t.slice(0)},o,i,n);}else s=o;i(null,s);})):"done"===s.status&&(s.vectorTile?s.parse(s.vectorTile,this.layerIndex,this.availableImages,this.actor,i):i());}}abortTile(e,t){const i=this.loading,o=e.uid;i&&i[o]&&i[o].abort&&(i[o].abort(),delete i[o]),t();}removeTile(e,t){const i=this.loaded,o=e.uid;i&&i[o]&&delete i[o],t();}}class a{constructor(){this.loaded={};}loadTile(t,i){return e._(this,void 0,void 0,(function*(){const{uid:o,encoding:r,rawImageData:s,redFactor:n,greenFactor:a,blueFactor:l,baseShift:c}=t,h=s.width+2,u=s.height+2,d=e.a(s)?new e.R({width:h,height:u},yield e.bx(s,-1,-1,h,u)):s,p=new e.by(o,d,r,n,a,l,c);this.loaded=this.loaded||{},this.loaded[o]=p,i(null,p);}))}removeTile(e){const t=this.loaded,i=e.uid;t&&t[i]&&delete t[i];}}function l(e,t){if(0!==e.length){c(e[0],t);for(var i=1;i<e.length;i++)c(e[i],!t);}}function c(e,t){for(var i=0,o=0,r=0,s=e.length,n=s-1;r<s;n=r++){var a=(e[r][0]-e[n][0])*(e[n][1]+e[r][1]),l=i+a;o+=Math.abs(i)>=Math.abs(a)?i-l+a:a-l+i,i=l;}i+o>=0!=!!t&&e.reverse();}var h=e.bz((function e(t,i){var o,r=t&&t.type;if("FeatureCollection"===r)for(o=0;o<t.features.length;o++)e(t.features[o],i);else if("GeometryCollection"===r)for(o=0;o<t.geometries.length;o++)e(t.geometries[o],i);else if("Feature"===r)e(t.geometry,i);else if("Polygon"===r)l(t.coordinates,i);else if("MultiPolygon"===r)for(o=0;o<t.coordinates.length;o++)l(t.coordinates[o],i);return t}));const u=e.bw.VectorTileFeature.prototype.toGeoJSON;var d={exports:{}},p=e.bA,f=e.bw.VectorTileFeature,g=m;function m(e,t){this.options=t||{},this.features=e,this.length=e.length;}function y(e,t){this.id="number"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=t||4096;}m.prototype.feature=function(e){return new y(this.features[e],this.options.extent)},y.prototype.loadGeometry=function(){var e=this.rawGeometry;this.geometry=[];for(var t=0;t<e.length;t++){for(var i=e[t],o=[],r=0;r<i.length;r++)o.push(new p(i[r][0],i[r][1]));this.geometry.push(o);}return this.geometry},y.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var e=this.geometry,t=1/0,i=-1/0,o=1/0,r=-1/0,s=0;s<e.length;s++)for(var n=e[s],a=0;a<n.length;a++){var l=n[a];t=Math.min(t,l.x),i=Math.max(i,l.x),o=Math.min(o,l.y),r=Math.max(r,l.y);}return [t,o,i,r]},y.prototype.toGeoJSON=f.prototype.toGeoJSON;var v=e.bB,w=g;function x(e){var t=new v;return function(e,t){for(var i in e.layers)t.writeMessage(3,b,e.layers[i]);}(e,t),t.finish()}function b(e,t){var i;t.writeVarintField(15,e.version||1),t.writeStringField(1,e.name||""),t.writeVarintField(5,e.extent||4096);var o={keys:[],values:[],keycache:{},valuecache:{}};for(i=0;i<e.length;i++)o.feature=e.feature(i),t.writeMessage(2,S,o);var r=o.keys;for(i=0;i<r.length;i++)t.writeStringField(3,r[i]);var s=o.values;for(i=0;i<s.length;i++)t.writeMessage(4,_,s[i]);}function S(e,t){var i=e.feature;void 0!==i.id&&t.writeVarintField(1,i.id),t.writeMessage(2,M,e),t.writeVarintField(3,i.type),t.writeMessage(4,T,i);}function M(e,t){var i=e.feature,o=e.keys,r=e.values,s=e.keycache,n=e.valuecache;for(var a in i.properties){var l=i.properties[a],c=s[a];if(null!==l){void 0===c&&(o.push(a),s[a]=c=o.length-1),t.writeVarint(c);var h=typeof l;"string"!==h&&"boolean"!==h&&"number"!==h&&(l=JSON.stringify(l));var u=h+":"+l,d=n[u];void 0===d&&(r.push(l),n[u]=d=r.length-1),t.writeVarint(d);}}}function I(e,t){return (t<<3)+(7&e)}function P(e){return e<<1^e>>31}function T(e,t){for(var i=e.loadGeometry(),o=e.type,r=0,s=0,n=i.length,a=0;a<n;a++){var l=i[a],c=1;1===o&&(c=l.length),t.writeVarint(I(1,c));for(var h=3===o?l.length-1:l.length,u=0;u<h;u++){1===u&&1!==o&&t.writeVarint(I(2,h-1));var d=l[u].x-r,p=l[u].y-s;t.writeVarint(P(d)),t.writeVarint(P(p)),r+=d,s+=p;}3===o&&t.writeVarint(I(7,1));}}function _(e,t){var i=typeof e;"string"===i?t.writeStringField(1,e):"boolean"===i?t.writeBooleanField(7,e):"number"===i&&(e%1!=0?t.writeDoubleField(3,e):e<0?t.writeSVarintField(6,e):t.writeVarintField(5,e));}d.exports=x,d.exports.fromVectorTileJs=x,d.exports.fromGeojsonVt=function(e,t){t=t||{};var i={};for(var o in e)i[o]=new w(e[o].features,t),i[o].name=o,i[o].version=t.version,i[o].extent=t.extent;return x({layers:i})},d.exports.GeoJSONWrapper=w;
vendor: 4,920 bytes, line 39
39var k=e.bz(d.exports);const D={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:e=>e},O=Math.fround||(C=new Float32Array(1),e=>(C[0]=+e,C[0]));var C;const L=3,F=5,z=6;class N{constructor(e){this.options=Object.assign(Object.create(D),e),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[];}load(e){const{log:t,minZoom:i,maxZoom:o}=this.options;t&&console.time("total time");const r=`prepare ${e.length} points`;t&&console.time(r),this.points=e;const s=[];for(let t=0;t<e.length;t++){const i=e[t];if(!i.geometry)continue;const[o,r]=i.geometry.coordinates,n=O(Z(o)),a=O(G(r));s.push(n,a,1/0,t,-1,1),this.options.reduce&&s.push(0);}let n=this.trees[o+1]=this._createTree(s);t&&console.timeEnd(r);for(let e=o;e>=i;e--){const i=+Date.now();n=this.trees[e]=this._createTree(this._cluster(n,e)),t&&console.log("z%d: %d clusters in %dms",e,n.numItems,+Date.now()-i);}return t&&console.timeEnd("total time"),this}getClusters(e,t){let i=((e[0]+180)%360+360)%360-180;const o=Math.max(-90,Math.min(90,e[1]));let r=180===e[2]?180:((e[2]+180)%360+360)%360-180;const s=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)i=-180,r=180;else if(i>r){const e=this.getClusters([i,o,180,s],t),n=this.getClusters([-180,o,r,s],t);return e.concat(n)}const n=this.trees[this._limitZoom(t)],a=n.range(Z(i),G(s),Z(r),G(o)),l=n.data,c=[];for(const e of a){const t=this.stride*e;c.push(l[t+F]>1?E(l,t,this.clusterProps):this.points[l[t+L]]);}return c}getChildren(e){const t=this._getOriginId(e),i=this._getOriginZoom(e),o="No cluster with the specified id.",r=this.trees[i];if(!r)throw new Error(o);const s=r.data;if(t*this.stride>=s.length)throw new Error(o);const n=this.options.radius/(this.options.extent*Math.pow(2,i-1)),a=r.within(s[t*this.stride],s[t*this.stride+1],n),l=[];for(const t of a){const i=t*this.stride;s[i+4]===e&&l.push(s[i+F]>1?E(s,i,this.clusterProps):this.points[s[i+L]]);}if(0===l.length)throw new Error(o);return l}getLeaves(e,t,i){const o=[];return this._appendLeaves(o,e,t=t||10,i=i||0,0),o}getTile(e,t,i){const o=this.trees[this._limitZoom(e)],r=Math.pow(2,e),{extent:s,radius:n}=this.options,a=n/s,l=(i-a)/r,c=(i+1+a)/r,h={features:[]};return this._addTileFeatures(o.range((t-a)/r,l,(t+1+a)/r,c),o.data,t,i,r,h),0===t&&this._addTileFeatures(o.range(1-a/r,l,1,c),o.data,r,i,r,h),t===r-1&&this._addTileFeatures(o.range(0,l,a/r,c),o.data,-1,i,r,h),h.features.length?h:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const i=this.getChildren(e);if(t++,1!==i.length)break;e=i[0].properties.cluster_id;}return t}_appendLeaves(e,t,i,o,r){const s=this.getChildren(t);for(const t of s){const s=t.properties;if(s&&s.cluster?r+s.point_count<=o?r+=s.point_count:r=this._appendLeaves(e,s.cluster_id,i,o,r):r<o?r++:e.push(t),e.length===i)break}return r}_createTree(t){const i=new e.av(t.length/this.stride|0,this.options.nodeSize,Float32Array);for(let e=0;e<t.length;e+=this.stride)i.add(t[e],t[e+1]);return i.finish(),i.data=t,i}_addTileFeatures(e,t,i,o,r,s){for(const n of e){const e=n*this.stride,a=t[e+F]>1;let l,c,h;if(a)l=j(t,e,this.clusterProps),c=t[e],h=t[e+1];else {const i=this.points[t[e+L]];l=i.properties;const[o,r]=i.geometry.coordinates;c=Z(o),h=G(r);}const u={type:1,geometry:[[Math.round(this.options.extent*(c*r-i)),Math.round(this.options.extent*(h*r-o))]],tags:l};let d;d=a||this.options.generateId?t[e+L]:this.points[t[e+L]].id,void 0!==d&&(u.id=d),s.features.push(u);}}_limitZoom(e){return Math.max(this.options.minZoom,Math.min(Math.floor(+e),this.options.maxZoom+1))}_cluster(e,t){const{radius:i,extent:o,reduce:r,minPoints:s}=this.options,n=i/(o*Math.pow(2,t)),a=e.data,l=[],c=this.stride;for(let i=0;i<a.length;i+=c){if(a[i+2]<=t)continue;a[i+2]=t;const o=a[i],h=a[i+1],u=e.within(a[i],a[i+1],n),d=a[i+F];let p=d;for(const e of u){const i=e*c;a[i+2]>t&&(p+=a[i+F]);}if(p>d&&p>=s){let e,s=o*d,n=h*d,f=-1;const g=((i/c|0)<<5)+(t+1)+this.points.length;for(const o of u){const l=o*c;if(a[l+2]<=t)continue;a[l+2]=t;const h=a[l+F];s+=a[l]*h,n+=a[l+1]*h,a[l+4]=g,r&&(e||(e=this._map(a,i,!0),f=this.clusterProps.length,this.clusterProps.push(e)),r(e,this._map(a,l)));}a[i+4]=g,l.push(s/p,n/p,1/0,g,-1,p),r&&l.push(f);}else {for(let e=0;e<c;e++)l.push(a[i+e]);if(p>1)for(const e of u){const i=e*c;if(!(a[i+2]<=t)){a[i+2]=t;for(let e=0;e<c;e++)l.push(a[i+e]);}}}}return l}_getOriginId(e){return e-this.points.length>>5}_getOriginZoom(e){return (e-this.points.length)%32}_map(e,t,i){if(e[t+F]>1){const o=this.clusterProps[e[t+z]];return i?Object.assign({},o):o}const o=this.points[e[t+L]].properties,r=this.options.map(o);return i&&r===o?Object.assign({},r):r}}function E(e,t,i){return {type:"Feature",id:e[t+L],properties:j(e,t,i),geometry:{type:"Point",coordinates:[(o=e[t],360*(o-.5)),J(e[t+1])]}};var o;}function j(e,t,i){const o=e[t+F],r=o>=1e4?`${Math.round(o/1e3)}
39k`:o>=1e3?Math.round(o/100)/10+"k":o,s=e[t+z],n=-1===s?{}:Object.assign({},i[s]);return Object.assign(n,{cluster:!0,cluster_id:e[t+L],point_count:o,point_count_abbreviated:r})}function Z(e){return e/360+.5}function G(e){const t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function J(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function Y(e,t,i,o){for(var r,s=o,n=i-t>>1,a=i-t,l=e[t],c=e[t+1],h=e[i],u=e[i+1],d=t+3;d<i;d+=3){var p=A(e[d],e[d+1],l,c,h,u);if(p>s)r=d,s=p;else if(p===s){var f=Math.abs(d-n);f<a&&(r=d,a=f);}}s>o&&(r-t>3&&Y(e,t,r,o),e[r+2]=s,i-r>3&&Y(e,r,i,o));}function A(e,t,i,o,r,s){var n=r-i,a=s-o;if(0!==n||0!==a){var l=((e-i)*n+(t-o)*a)/(n*n+a*a);l>1?(i=r,o=s):l>0&&(i+=n*l,o+=a*l);}return (n=e-i)*n+(a=t-o)*a}function V(e,t,i,o){var r={id:void 0===e?null:e,type:t,geometry:i,tags:o,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,i=e.type;if("Point"===i||"MultiPoint"===i||"LineString"===i)B(e,t);else if("Polygon"===i||"MultiLineString"===i)for(var o=0;o<t.length;o++)B(e,t[o]);else if("MultiPolygon"===i)for(o=0;o<t.length;o++)for(var r=0;r<t[o].length;r++)B(e,t[o][r]);}(r),r}function B(e,t){for(var i=0;i<t.length;i+=3)e.minX=Math.min(e.minX,t[i]),e.minY=Math.min(e.minY,t[i+1]),e.maxX=Math.max(e.maxX,t[i]),e.maxY=Math.max(e.maxY,t[i+1]);}function X(e,t,i,o){if(t.geometry){var r=t.geometry.coordinates,s=t.geometry.type,n=Math.pow(i.tolerance/((1<<i.maxZoom)*i.extent),2),a=[],l=t.id;if(i.promoteId?l=t.properties[i.promoteId]:i.generateId&&(l=o||0),"Point"===s)q(r,a);else if("MultiPoint"===s)for(var c=0;c<r.length;c++)q(r[c],a);else if("LineString"===s)R(r,a,n,!1);else if("MultiLineString"===s){if(i.lineMetrics){for(c=0;c<r.length;c++)R(r[c],a=[],n,!1),e.push(V(l,"LineString",a,t.properties));return}W(r,a,n,!1);}else if("Polygon"===s)W(r,a,n,!0);else {if("MultiPolygon"!==s){if("GeometryCollection"===s){for(c=0;c<t.geometry.geometries.length;c++)X(e,{id:l,geometry:t.geometry.geometries[c],properties:t.properties},i,o);return}throw new Error("Input data is not a valid GeoJSON object.")}for(c=0;c<r.length;c++){var h=[];W(r[c],h,n,!0),a.push(h);}}e.push(V(l,s,a,t.properties));}}function q(e,t){t.push($(e[0])),t.push(U(e[1])),t.push(0);}function R(e,t,i,o){for(var r,s,n=0,a=0;a<e.length;a++){var l=$(e[a][0]),c=U(e[a][1]);t.push(l),t.push(c),t.push(0),a>0&&(n+=o?(r*c-l*s)/2:Math.sqrt(Math.pow(l-r,2)+Math.pow(c-s,2))),r=l,s=c;}var h=t.length-3;t[2]=1,Y(t,0,h,i),t[h+2]=1,t.size=Math.abs(n),t.start=0,t.end=t.size;}function W(e,t,i,o){for(var r=0;r<e.length;r++){var s=[];R(e[r],s,i,o),t.push(s);}}function $(e){return e/360+.5}function U(e){var t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function H(e,t,i,o,r,s,n,a){if(o/=t,s>=(i/=t)&&n<o)return e;if(n<i||s>=o)return null;for(var l=[],c=0;c<e.length;c++){var h=e[c],u=h.geometry,d=h.type,p=0===r?h.minX:h.minY,f=0===r?h.maxX:h.maxY;if(p>=i&&f<o)l.push(h);else if(!(f<i||p>=o)){var g=[];if("Point"===d||"MultiPoint"===d)K(u,g,i,o,r);else if("LineString"===d)Q(u,g,i,o,r,!1,a.lineMetrics);else if("MultiLineString"===d)te(u,g,i,o,r,!1);else if("Polygon"===d)te(u,g,i,o,r,!0);else if("MultiPolygon"===d)for(var m=0;m<u.length;m++){var y=[];te(u[m],y,i,o,r,!0),y.length&&g.push(y);}if(g.length){if(a.lineMetrics&&"LineString"===d){for(m=0;m<g.length;m++)l.push(V(h.id,d,g[m],h.tags));continue}"LineString"!==d&&"MultiLineString"!==d||(1===g.length?(d="LineString",g=g[0]):d="MultiLineString"),"Point"!==d&&"MultiPoint"!==d||(d=3===g.length?"Point":"MultiPoint"),l.push(V(h.id,d,g,h.tags));}}}return l.length?l:null}function K(e,t,i,o,r){for(var s=0;s<e.length;s+=3){var n=e[s+r];n>=i&&n<=o&&(t.push(e[s]),t.push(e[s+1]),t.push(e[s+2]));}}function Q(e,t,i,o,r,s,n){for(var a,l,c=ee(e),h=0===r?oe:re,u=e.start,d=0;d<e.length-3;d+=3){var p=e[d],f=e[d+1],g=e[d+2],m=e[d+3],y=e[d+4],v=0===r?p:f,w=0===r?m:y,x=!1;n&&(a=Math.sqrt(Math.pow(p-m,2)+Math.pow(f-y,2))),v<i?w>i&&(l=h(c,p,f,m,y,i),n&&(c.start=u+a*l)):v>o?w<o&&(l=h(c,p,f,m,y,o),n&&(c.start=u+a*l)):ie(c,p,f,g),w<i&&v>=i&&(l=h(c,p,f,m,y,i),x=!0),w>
vendor: 4,213 bytes, line 39
39o&&v<=o&&(l=h(c,p,f,m,y,o),x=!0),!s&&x&&(n&&(c.end=u+a*l),t.push(c),c=ee(e)),n&&(u+=a);}var b=e.length-3;p=e[b],f=e[b+1],g=e[b+2],(v=0===r?p:f)>=i&&v<=o&&ie(c,p,f,g),b=c.length-3,s&&b>=3&&(c[b]!==c[0]||c[b+1]!==c[1])&&ie(c,c[0],c[1],c[2]),c.length&&t.push(c);}function ee(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function te(e,t,i,o,r,s){for(var n=0;n<e.length;n++)Q(e[n],t,i,o,r,s,!1);}function ie(e,t,i,o){e.push(t),e.push(i),e.push(o);}function oe(e,t,i,o,r,s){var n=(s-t)/(o-t);return e.push(s),e.push(i+(r-i)*n),e.push(1),n}function re(e,t,i,o,r,s){var n=(s-i)/(r-i);return e.push(t+(o-t)*n),e.push(s),e.push(1),n}function se(e,t){for(var i=[],o=0;o<e.length;o++){var r,s=e[o],n=s.type;if("Point"===n||"MultiPoint"===n||"LineString"===n)r=ne(s.geometry,t);else if("MultiLineString"===n||"Polygon"===n){r=[];for(var a=0;a<s.geometry.length;a++)r.push(ne(s.geometry[a],t));}else if("MultiPolygon"===n)for(r=[],a=0;a<s.geometry.length;a++){for(var l=[],c=0;c<s.geometry[a].length;c++)l.push(ne(s.geometry[a][c],t));r.push(l);}i.push(V(s.id,n,r,s.tags));}return i}function ne(e,t){var i=[];i.size=e.size,void 0!==e.start&&(i.start=e.start,i.end=e.end);for(var o=0;o<e.length;o+=3)i.push(e[o]+t,e[o+1],e[o+2]);return i}function ae(e,t){if(e.transformed)return e;var i,o,r,s=1<<e.z,n=e.x,a=e.y;for(i=0;i<e.features.length;i++){var l=e.features[i],c=l.geometry,h=l.type;if(l.geometry=[],1===h)for(o=0;o<c.length;o+=2)l.geometry.push(le(c[o],c[o+1],t,s,n,a));else for(o=0;o<c.length;o++){var u=[];for(r=0;r<c[o].length;r+=2)u.push(le(c[o][r],c[o][r+1],t,s,n,a));l.geometry.push(u);}}return e.transformed=!0,e}function le(e,t,i,o,r,s){return [Math.round(i*(e*o-r)),Math.round(i*(t*o-s))]}function ce(e,t,i,o,r){for(var s=t===r.maxZoom?0:r.tolerance/((1<<t)*r.extent),n={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:i,y:o,z:t,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},a=0;a<e.length;a++){n.numFeatures++,he(n,e[a],s,r);var l=e[a].minX,c=e[a].minY,h=e[a].maxX,u=e[a].maxY;l<n.minX&&(n.minX=l),c<n.minY&&(n.minY=c),h>n.maxX&&(n.maxX=h),u>n.maxY&&(n.maxY=u);}return n}function he(e,t,i,o){var r=t.geometry,s=t.type,n=[];if("Point"===s||"MultiPoint"===s)for(var a=0;a<r.length;a+=3)n.push(r[a]),n.push(r[a+1]),e.numPoints++,e.numSimplified++;else if("LineString"===s)ue(n,r,e,i,!1,!1);else if("MultiLineString"===s||"Polygon"===s)for(a=0;a<r.length;a++)ue(n,r[a],e,i,"Polygon"===s,0===a);else if("MultiPolygon"===s)for(var l=0;l<r.length;l++){var c=r[l];for(a=0;a<c.length;a++)ue(n,c[a],e,i,!0,0===a);}if(n.length){var h=t.tags||null;if("LineString"===s&&o.lineMetrics){for(var u in h={},t.tags)h[u]=t.tags[u];h.mapbox_clip_start=r.start/r.size,h.mapbox_clip_end=r.end/r.size;}var d={geometry:n,type:"Polygon"===s||"MultiPolygon"===s?3:"LineString"===s||"MultiLineString"===s?2:1,tags:h};null!==t.id&&(d.id=t.id),e.features.push(d);}}function ue(e,t,i,o,r,s){var n=o*o;if(o>0&&t.size<(r?n:o))i.numPoints+=t.length/3;else {for(var a=[],l=0;l<t.length;l+=3)(0===o||t[l+2]>n)&&(i.numSimplified++,a.push(t[l]),a.push(t[l+1])),i.numPoints++;r&&function(e,t){for(var i=0,o=0,r=e.length,s=r-2;o<r;s=o,o+=2)i+=(e[o]-e[s])*(e[o+1]+e[s+1]);if(i>0===t)for(o=0,r=e.length;o<r/2;o+=2){var n=e[o],a=e[o+1];e[o]=e[r-2-o],e[o+1]=e[r-1-o],e[r-2-o]=n,e[r-1-o]=a;}}(a,s),e.push(a);}}function de(e,t){var i=(t=this.options=function(e,t){for(var i in t)e[i]=t[i];return e}(Object.create(this.options),t)).debug;if(i&&console.time("preprocess data"),t.maxZoom<0||t.maxZoom>24)throw new Error("maxZoom should be in the 0-24 range");if(t.promoteId&&t.generateId)throw new Error("promoteId and generateId cannot be used together.");var o=function(e,t){var i=[];if("FeatureCollection"===e.type)for(var o=0;o<e.features.length;o++)X(i,e.features[o],t,o);else X(i,"Feature"===e.type?e:{geometry:e},t);return i}(e,t);this.tiles={},this.tileCoords=[],i&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",t.indexMaxZoom,t.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),o=function(e,t){var i=t.buffer/t.extent,o=e,r=H(e,1,-1-i,i,0,-1,2,t),s=H(e,1,1-i,2+i,0,-1,2,t);return (r||s)&&(o=H(e,1,-i,1+i,0,-1,2,t)||[],r&&(o=se(r,1).concat(o)),s&&(o=o.c
39oncat(se(s,-1)))),o}(o,t),o.length&&this.splitTile(o,0,0,0),i&&(o.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)));}function pe(e,t,i){return 32*((1<<e)*i+t)+e}function fe(e,t){return t?e.properties[t]:e.id}function ge(e,t){if(null==e)return !0;if("Feature"===e.type)return null!=fe(e,t);if("FeatureCollection"===e.type){const i=new Set;for(const o of e.features){const e=fe(o,t);if(null==e)return !1;if(i.has(e))return !1;i.add(e);}return !0}return !1}function me(e,t){const i=new Map;if(null==e);else if("Feature"===e.type)i.set(fe(e,t),e);else for(const o of e.features)i.set(fe(o,t),o);return i}de.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},de.prototype.splitTile=function(e,t,i,o,r,s,n){for(var a=[e,t,i,o],l=this.options,c=l.debug;a.length;){o=a.pop(),i=a.pop(),t=a.pop(),e=a.pop();var h=1<<t,u=pe(t,i,o),d=this.tiles[u];if(!d&&(c>1&&console.time("creation"),d=this.tiles[u]=ce(e,t,i,o,l),this.tileCoords.push({z:t,x:i,y:o}),c)){c>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",t,i,o,d.numFeatures,d.numPoints,d.numSimplified),console.timeEnd("creation"));var p="z"+t;this.stats[p]=(this.stats[p]||0)+1,this.total++;}if(d.source=e,r){if(t===l.maxZoom||t===r)continue;var f=1<<r-t;if(i!==Math.floor(s/f)||o!==Math.floor(n/f))continue}else if(t===l.indexMaxZoom||d.numPoints<=l.indexMaxPoints)continue;if(d.source=null,0!==e.length){c>1&&console.time("clipping");var g,m,y,v,w,x,b=.5*l.buffer/l.extent,S=.5-b,M=.5+b,I=1+b;g=m=y=v=null,w=H(e,h,i-b,i+M,0,d.minX,d.maxX,l),x=H(e,h,i+S,i+I,0,d.minX,d.maxX,l),e=null,w&&(g=H(w,h,o-b,o+M,1,d.minY,d.maxY,l),m=H(w,h,o+S,o+I,1,d.minY,d.maxY,l),w=null),x&&(y=H(x,h,o-b,o+M,1,d.minY,d.maxY,l),v=H(x,h,o+S,o+I,1,d.minY,d.maxY,l),x=null),c>1&&console.timeEnd("clipping"),a.push(g||[],t+1,2*i,2*o),a.push(m||[],t+1,2*i,2*o+1),a.push(y||[],t+1,2*i+1,2*o),a.push(v||[],t+1,2*i+1,2*o+1);}}},de.prototype.getTile=function(e,t,i){var o=this.options,r=o.extent,s=o.debug;if(e<0||e>24)return null;var n=1<<e,a=pe(e,t=(t%n+n)%n,i);if(this.tiles[a])return ae(this.tiles[a],r);s>1&&console.log("drilling down to z%d-%d-%d",e,t,i);for(var l,c=e,h=t,u=i;!l&&c>0;)c--,h=Math.floor(h/2),u=Math.floor(u/2),l=this.tiles[pe(c,h,u)];return l&&l.source?(s>1&&console.log("found parent tile z%d-%d-%d",c,h,u),s>1&&console.time("drilling down"),this.splitTile(l.source,c,h,u,e,t,i),s>1&&console.timeEnd("drilling down"),this.tiles[a]?ae(this.tiles[a],r):null):null};class ye extends n{constructor(t,i,o,r){super(t,i,o),this._dataUpdateable=new Map,this.loadGeoJSON=(t,i)=>{const{promoteId:o}=t;if(t.request)return e.f(t.request,((e,t,r,s)=>{this._dataUpdateable=ge(t,o)?me(t,o):void 0,i(e,t,r,s);}));if("string"==typeof t.data)try{const e=JSON.parse(t.data);this._dataUpdateable=ge(e,o)?me(e,o):void 0,i(null,e);}catch(e){i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));}else t.dataDiff?this._dataUpdateable?(function(e,t,i){var o,r,s,n;if(t.removeAll&&e.clear(),t.remove)for(const i of t.remove)e.delete(i);if(t.add)for(const o of t.add){const t=fe(o,i);null!=t&&e.set(t,o);}if(t.update)for(const i of t.update){let t=e.get(i.id);if(null==t)continue;const a=!i.removeAllProperties&&((null===(o=i.removeProperties)||void 0===o?void 0:o.length)>0||(null===(r=i.addOrUpdateProperties)||void 0===r?void 0:r.length)>0);if((i.newGeometry||i.removeAllProperties||a)&&(t=Object.assign({},t),e.set(i.id,t),a&&(t.properties=Object.assign({},t.properties))),i.newGeometry&&(t.geometry=i.newGeometry),i.removeAllProperties)t.properties={};else if((null===(s=i.removeProperties)||void 0===s?void 0:s.length)>0)for(const e of i.removeProperties)Object.prototype.hasOwnProperty.call(t.properties,e)&&delete t.properties[e];if((null===(n=i.addOrUpdateProperties)||void 0===n?void 0:n.length)>0)for(const{key:e,value:o}of i.addOrUpdateProperties)t.properties[e]=o;}}(this._dataUpdateable,t.dataDiff,o),i(null,{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())})):i(new Error(`Cannot update existing geojson data in ${t.source}`)):i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));return {cancel:()=>{}}},this.loadVectorData=this.loadGeoJSONTile,r&&(this.loadGeoJSON=r);}loadGeoJSONTile(t,i){const o=t.tileID.canonical;if(!this._geoJSONIndex)return i(null,null);const r=this._geoJSONIndex.getTile(o.z,o.x,o.y);if(!r)return i(null,null);const s=new class{constructor(t){this.layers={_geojsonTileLayer:this},this.name="_geojsonTileLayer",this.extent=e.N,this.length=t.length,this._features=t;}feature(t){return new class{constructor(t){this._feature=t,this.extent=e.N,this.type=t.type,this.properties=t.tags,"id"in t&&!isNaN(t.id)&&(this.id=p
39arseInt(t.id,10));}loadGeometry(){if(1===this._feature.type){const t=[];for(const i of this._feature.geometry)t.push([new e.P(i[0],i[1])]);return t}{const t=[];for(const i of this._feature.geometry){const o=[];for(const t of i)o.push(new e.P(t[0],t[1]));t.push(o);}return t}}toGeoJSON(e,t,i){return u.call(this,e,t,i)}}(this._features[t])}}(r.features);let n=k(s);0===n.byteOffset&&n.byteLength===n.buffer.byteLength||(n=new Uint8Array(n)),i(null,{vectorTile:s,rawData:n.buffer});}loadData(t,i){var o;null===(o=this._pendingRequest)||void 0===o||o.cancel(),this._pendingCallback&&this._pendingCallback(null,{abandoned:!0});const r=!!(t&&t.request&&t.request.collectResourceTiming)&&new e.bu(t.request);this._pendingCallback=i,this._pendingRequest=this.loadGeoJSON(t,((o,s)=>{if(delete this._pendingCallback,delete this._pendingRequest,o||!s)return i(o);if("object"!=typeof s)return i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));{h(s,!0);try{if(t.filter){const i=e.bC(t.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if("error"===i.result)throw new Error(i.value.map((e=>`${e.key}: ${e.message}`)).join(", "));const o=s.features.filter((e=>i.value.evaluate({zoom:0},e)));s={type:"FeatureCollection",features:o};}this._geoJSONIndex=t.cluster?new N(function({superclusterOptions:t,clusterProperties:i}){if(!i||!t)return t;const o={},r={},s={accumulated:null,zoom:0},n={properties:null},a=Object.keys(i);for(const t of a){const[s,n]=i[t],a=e.bC(n),l=e.bC("string"==typeof s?[s,["accumulated"],["get",t]]:s);o[t]=a.value,r[t]=l.value;}return t.map=e=>{n.properties=e;const t={};for(const e of a)t[e]=o[e].evaluate(s,n);return t},t.reduce=(e,t)=>{n.properties=t;for(const t of a)s.accumulated=e[t],e[t]=r[t].evaluate(s,n);},t}(t)).load(s.features):function(e,t){return new de(e,t)}(s,t.geojsonVtOptions);}catch(o){return i(o)}this.loaded={};const n={};if(r){const e=r.finish();e&&(n.resourceTiming={},n.resourceTiming[t.source]=JSON.parse(JSON.stringify(e)));}i(null,n);}}));}reloadTile(e,t){const i=this.loaded;return i&&i[e.uid]?super.reloadTile(e,t):this.loadTile(e,t)}removeSource(e,t){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),t();}getClusterExpansionZoom(e,t){try{t(null,this._geoJSONIndex.getClusterExpansionZoom(e.clusterId));}catch(e){t(e);}}getClusterChildren(e,t){try{t(null,this._geoJSONIndex.getChildren(e.clusterId));}catch(e){t(e);}}getClusterLeaves(e,t){try{t(null,this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset));}catch(e){t(e);}}}class ve{constructor(t){this.self=t,this.actor=new e.C(t,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:n,geojson:ye},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(e,t)=>{if(this.workerSourceTypes[e])throw new Error(`Worker source with name "${e}" already registered.`);this.workerSourceTypes[e]=t;},this.self.registerRTLTextPlugin=t=>{if(e.bD.isParsed())throw new Error("RTL text plugin already registered.");e.bD.applyArabicShaping=t.applyArabicShaping,e.bD.processBidirectionalText=t.processBidirectionalText,e.bD.processStyledBidirectionalText=t.processStyledBidirectionalText;};}setReferrer(e,t){this.referrer=t;}setImages(e,t,i){this.availableImages[e]=t;for(const i in this.workerSources[e]){const o=this.workerSources[e][i];for(const e in o)o[e].availableImages=t;}i();}setLayers(e,t,i){this.getLayerIndex(e).replace(t),i();}updateLayers(e,t,i){this.getLayerIndex(e).update(t.layers,t.removedIds),i();}loadTile(e,t,i){this.getWorkerSource(e,t.type,t.source).loadTile(t,i);}loadDEMTile(e,t,i){this.getDEMWorkerSource(e,t.source).loadTile(t,i);}reloadTile(e,t,i){this.getWorkerSource(e,t.type,t.source).reloadTile(t,i);}abortTile(e,t,i){this.getWorkerSource(e,t.type,t.source).abortTile(t,i);}removeTile(e,t,i){this.getWorkerSource(e,t.type,t.source).removeTile(t,i);}removeDEMTile(e,t){this.getDEMWorkerSource(e,t.source).removeTile(t);}removeSource(e,t,i){if(!this.workerSources[e]||!this.workerSources[e][t.type]||!this.workerSources[e][t.type][t.source])return;const o=this.workerSources[e][t.type][t.source];delete this.workerSources[e][t.type][t.source],void 0!==o.removeSource?o.removeSource(t,i):i();}loadWorkerSource(e,t,i){try{this.self.importScripts(t.url),i();}catch(e){i(e.toString());}}syncRTLPluginState(t,i,o){try{e.bD.setState(i);const t=e.bD.getPluginURL();if(e.bD.isLoaded()&&!e.bD.isParsed()&&null!=t){this.self.importScripts(t);const i=e.bD.isParsed();o(i?void 0:new Error(`RTL Text Plugin failed to import scripts from ${t}`),i);}}catch(e){o(e.toString());}}getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}getLayerIndex(e){let i=this.layerIndexes[e];
39return i||(i=this.layerIndexes[e]=new t),i}getWorkerSource(e,t,i){return this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),this.workerSources[e][t][i]||(this.workerSources[e][t][i]=new this.workerSourceTypes[t]({send:(t,i,o)=>{this.actor.send(t,i,o,e);}},this.getLayerIndex(e),this.getAvailableImages(e))),this.workerSources[e][t][i]}getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new a),this.demWorkerSources[e][t]}}return e.i()&&(self.worker=new ve(self)),ve})); 40 41define(["./shared"],(function(t){"use strict";var e="3.6.2";class i{static testProp(t){if(!i.docStyle)return t[0];for(let e=0;e<t.length;e++)if(t[e]in i.docStyle)return t[e];return t[0]}static create(t,e,i){const s=window.document.createElement(t);return void 0!==e&&(s.className=e),i&&i.appendChild(s),s}static createNS(t,e){return window.document.createElementNS(t,e)}static disableDrag(){i.docStyle&&i.selectProp&&(i.userSelect=i.docStyle[i.selectProp],i.docStyle[i.selectProp]="none");}static enableDrag(){i.docStyle&&i.selectProp&&(i.docStyle[i.selectProp]=i.userSelect);}static setTransform(t,e){t.style[i.transformProp]=e;}static addEventListener(t,e,i,s={}){t.addEventListener(e,i,"passive"in s?s:s.capture);}static removeEventListener(t,e,i,s={}){t.removeEventListener(e,i,"passive"in s?s:s.capture);}static suppressClickInternal(t){t.preventDefault(),t.stopPropagation(),window.removeEventListener("click",i.suppressClickInternal,!0);}static suppressClick(){window.addEventListener("click",i.suppressClickInternal,!0),window.setTimeout((()=>{window.removeEventListener("click",i.suppressClickInternal,!0);}),0);}static mousePos(e,i){const s=e.getBoundingClientRect();return new t.P(i.clientX-s.left-e.clientLeft,i.clientY-s.top-e.clientTop)}static touchPos(e,i){const s=e.getBoundingClientRect(),a=[];for(let o=0;o<i.length;o++)a.push(new t.P(i[o].clientX-s.left-e.clientLeft,i[o].clientY-s.top-e.clientTop));return a}static mouseButton(t){return t.button}static remove(t){t.parentNode&&t.parentNode.removeChild(t);}}i.docStyle="undefined"!=typeof window&&window.document&&window.document.documentElement.style,i.selectProp=i.testProp(["userSelect","MozUserSelect","WebkitUserSelect","msUserSelect"]),i.transformProp=i.testProp(["transform","WebkitTransform"]);const s={supported:!1,testSupport:function(t){!r&&o&&(n?l(t):a=t);}};let a,o,r=!1,n=!1;function l(t){const e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,o),t.isContextLost())return;s.supported=!0;}catch(t){}t.deleteTexture(e),r=!0;}var h,c;"undefined"!=typeof document&&(o=document.createElement("img"),o.onload=function(){a&&l(a),a=null,n=!0;},o.onerror=function(){r=!0,a=null;},o.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(e){let i,a,o,r;e.resetRequestQueue=()=>{i=[],a=0,o=0,r={};},e.addThrottleControl=t=>{const e=o++;return r[e]=t,e},e.removeThrottleControl=t=>{delete r[t],h();},e.getImage=(t,e,o=!0)=>{s.supported&&(t.headers||(t.headers={}),t.headers.accept="image/webp,*/*");const r={requestParameters:t,supportImageRefresh:o,callback:e,cancelled:!1,completed:!1,cancel:()=>{r.completed||r.cancelled||(r.cancelled=!0,r.innerRequest&&(r.innerRequest.cancel(),a--),h());}};return i.push(r),h(),r};const n=e=>{const{requestParameters:i,supportImageRefresh:s,callback:a}=e;return t.e(i,{type:"image"}),(!1!==s||t.i()||t.g(i.url)||i.headers&&!Object.keys(i.headers).reduce(((t,e)=>t&&"accept"===e),!0)?t.m:c)(i,((t,i,s,o)=>{l(e,a,t,i,s,o);}))},l=(e,i,s,o,r,n)=>{s?i(s):o instanceof HTMLImageElement||t.a(o)?i(null,o):o&&((e,i)=>{"function"==typeof createImageBitmap?t.b(e,i):t.d(e,i);})(o,((t,e)=>{null!=t?i(t):null!=e&&i(null,e,{cacheControl:r,expires:n});})),e.cancelled||(e.completed=!0,a--,h());},h=()=>{const e=(()=>{const t=Object.keys(r);let e=!1;if(t.length>0)for(const i of t)if(e=r[i](),e)break;return e})()?t.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:t.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let t=a;t<e&&i.length>0;t++){const e=i.shift();if(e.cancelled){t--;continue}const s=n(e);a++,e.innerRequest=s;}},c=(e,i)=>{const s=new Image,a=e.url;let o=!1;const r=e.credentials;return r&&"include"===r?s.crossOrigin="use-credentials":(r&&"same-origin"===r||!t.s(a))&&(s.crossOrigin="anonymous"),s.fetchPriority="high",s.onload=()=>{i(null,s),s.onerror=s.onload=null;},s.onerror=()=>{o||i(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.")),s.onerror=s.onload=null;},s.src=a,{cancel:()=>{o=!0,s.src="";}}};}(h||(h={})),h.resetRequestQueue(),function(t){t.Glyphs="Glyphs",t.Image="Image",t.Source="Source",t.SpriteImage="SpriteImage",t.SpriteJSON="SpriteJSON",t.Style="Style",t.Tile="Tile",t.Unknown="Unknown";}(c||(c={}));class u{constructor(t){this._transformRequestFn=t;}transformRequest(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}}
41normalizeSpriteURL(t,e,i){const s=function(t){const e=t.match(d);if(!e)throw new Error(`Unable to parse URL "${t}"`);return {protocol:e[1],authority:e[2],path:e[3]||"/",params:e[4]?e[4].split("&"):[]}}(t);return s.path+=`${e}${i}`,function(t){const e=t.params.length?`?${t.params.join("&")}`:"";return `${t.protocol}://${t.authority}${t.path}${e}`}(s)}setTransformRequest(t){this._transformRequestFn=t;}}const d=/^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;function _(e){var i=new t.A(3);return i[0]=e[0],i[1]=e[1],i[2]=e[2],i}var p,m=function(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t[2]=e[2]-i[2],t};p=new t.A(3),t.A!=Float32Array&&(p[0]=0,p[1]=0,p[2]=0);var f=function(t){var e=t[0],i=t[1];return e*e+i*i};function g(t){const e=[];if("string"==typeof t)e.push({id:"default",url:t});else if(t&&t.length>0){const i=[];for(const{id:s,url:a}of t){const t=`${s}${a}`;-1===i.indexOf(t)&&(i.push(t),e.push({id:s,url:a}));}}return e}function v(e,i,s,a,o){if(a)return void e(a);if(o!==Object.values(i).length||o!==Object.values(s).length)return;const r={};for(const e in i){r[e]={};const a=t.h.getImageCanvasContext(s[e]),o=i[e];for(const t in o){const{width:i,height:s,x:n,y:l,sdf:h,pixelRatio:c,stretchX:u,stretchY:d,content:_}=o[t];r[e][t]={data:null,pixelRatio:c,sdf:h,stretchX:u,stretchY:d,content:_,spriteData:{width:i,height:s,x:n,y:l,context:a}};}}e(null,r);}!function(){var e=new t.A(2);t.A!=Float32Array&&(e[0]=0,e[1]=0);}();class x{constructor(t,e,i,s){this.context=t,this.format=i,this.texture=t.gl.createTexture(),this.update(e,s);}update(e,i,s){const{width:a,height:o}=e,r=!(this.size&&this.size[0]===a&&this.size[1]===o||s),{context:n}=this,{gl:l}=n;if(this.useMipmap=Boolean(i&&i.useMipmap),l.bindTexture(l.TEXTURE_2D,this.texture),n.pixelStoreUnpackFlipY.set(!1),n.pixelStoreUnpack.set(1),n.pixelStoreUnpackPremultiplyAlpha.set(this.format===l.RGBA&&(!i||!1!==i.premultiply)),r)this.size=[a,o],e instanceof HTMLImageElement||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement||e instanceof ImageData||t.a(e)?l.texImage2D(l.TEXTURE_2D,0,this.format,this.format,l.UNSIGNED_BYTE,e):l.texImage2D(l.TEXTURE_2D,0,this.format,a,o,0,this.format,l.UNSIGNED_BYTE,e.data);else {const{x:i,y:r}=s||{x:0,y:0};e instanceof HTMLImageElement||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement||e instanceof ImageData||t.a(e)?l.texSubImage2D(l.TEXTURE_2D,0,i,r,l.RGBA,l.UNSIGNED_BYTE,e):l.texSubImage2D(l.TEXTURE_2D,0,i,r,a,o,l.RGBA,l.UNSIGNED_BYTE,e.data);}this.useMipmap&&this.isSizePowerOfTwo()&&l.generateMipmap(l.TEXTURE_2D);}bind(t,e,i){const{context:s}=this,{gl:a}=s;a.bindTexture(a.TEXTURE_2D,this.texture),i!==a.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(i=a.LINEAR),t!==this.filter&&(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,t),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,i||t),this.filter=t),e!==this.wrap&&(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,e),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,e),this.wrap=e);}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){const{gl:t}=this.context;t.deleteTexture(this.texture),this.texture=null;}}function y(t){const{userImage:e}=t;return !!(e&&e.render&&e.render())&&(t.data.replace(new Uint8Array(e.data.buffer)),!0)}class b extends t.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0;}isLoaded(){return this.loaded}setLoaded(t){if(this.loaded!==t&&(this.loaded=t,t)){for(const{ids:t,callback:e}of this.requestors)this._notify(t,e);this.requestors=[];}}getImage(e){const i=this.images[e];if(i&&!i.data&&i.spriteData){const e=i.spriteData;i.data=new t.R({width:e.width,height:e.height},e.context.getImageData(e.x,e.y,e.width,e.height).data),i.spriteData=null;}return i}addImage(t,e){if(this.images[t])throw new Error(`Image id ${t} already exist, use updateImage instead`);this._validate(t,e)&&(this.images[t]=e);}_validate(e,i){let s=!0;const a=i.data||i.spriteData;return this._validateStretch(i.stretchX,a&&a.width)||(this.fire(new t.j(new Error(`Image "${e}
41" has invalid "stretchX" value`))),s=!1),this._validateStretch(i.stretchY,a&&a.height)||(this.fire(new t.j(new Error(`Image "${e}" has invalid "stretchY" value`))),s=!1),this._validateContent(i.content,i)||(this.fire(new t.j(new Error(`Image "${e}" has invalid "content" value`))),s=!1),s}_validateStretch(t,e){if(!t)return !0;let i=0;for(const s of t){if(s[0]<i||s[1]<s[0]||e<s[1])return !1;i=s[1];}return !0}_validateContent(t,e){if(!t)return !0;if(4!==t.length)return !1;const i=e.spriteData,s=i&&i.width||e.data.width,a=i&&i.height||e.data.height;return !(t[0]<0||s<t[0]||t[1]<0||a<t[1]||t[2]<0||s<t[2]||t[3]<0||a<t[3]||t[2]<t[0]||t[3]<t[1])}updateImage(t,e,i=!0){const s=this.getImage(t);if(i&&(s.data.width!==e.data.width||s.data.height!==e.data.height))throw new Error(`size mismatch between old image (${s.data.width}x${s.data.height}) and new image (${e.data.width}x${e.data.height}).`);e.version=s.version+1,this.images[t]=e,this.updatedImages[t]=!0;}removeImage(t){const e=this.images[t];delete this.images[t],delete this.patterns[t],e.userImage&&e.userImage.onRemove&&e.userImage.onRemove();}listImages(){return Object.keys(this.images)}getImages(t,e){let i=!0;if(!this.isLoaded())for(const e of t)this.images[e]||(i=!1);this.isLoaded()||i?this._notify(t,e):this.requestors.push({ids:t,callback:e});}_notify(e,i){const s={};for(const i of e){let e=this.getImage(i);e||(this.fire(new t.k("styleimagemissing",{id:i})),e=this.getImage(i)),e?s[i]={data:e.data.clone(),pixelRatio:e.pixelRatio,sdf:e.sdf,version:e.version,stretchX:e.stretchX,stretchY:e.stretchY,content:e.content,hasRenderCallback:Boolean(e.userImage&&e.userImage.render)}:t.w(`Image "${i}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`);}i(null,s);}getPixelSize(){const{width:t,height:e}=this.atlasImage;return {width:t,height:e}}getPattern(e){const i=this.patterns[e],s=this.getImage(e);if(!s)return null;if(i&&i.position.version===s.version)return i.position;if(i)i.position.version=s.version;else {const i={w:s.data.width+2,h:s.data.height+2,x:0,y:0},a=new t.I(i,s);this.patterns[e]={bin:i,position:a};}return this._updatePatternAtlas(),this.patterns[e].position}bind(t){const e=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new x(t,this.atlasImage,e.RGBA),this.atlasTexture.bind(e.LINEAR,e.CLAMP_TO_EDGE);}_updatePatternAtlas(){const e=[];for(const t in this.patterns)e.push(this.patterns[t].bin);const{w:i,h:s}=t.p(e),a=this.atlasImage;a.resize({width:i||1,height:s||1});for(const e in this.patterns){const{bin:i}=this.patterns[e],s=i.x+1,o=i.y+1,r=this.getImage(e).data,n=r.width,l=r.height;t.R.copy(r,a,{x:0,y:0},{x:s,y:o},{width:n,height:l}),t.R.copy(r,a,{x:0,y:l-1},{x:s,y:o-1},{width:n,height:1}),t.R.copy(r,a,{x:0,y:0},{x:s,y:o+l},{width:n,height:1}),t.R.copy(r,a,{x:n-1,y:0},{x:s-1,y:o},{width:1,height:l}),t.R.copy(r,a,{x:0,y:0},{x:s+n,y:o},{width:1,height:l});}this.dirty=!0;}beginFrame(){this.callbackDispatchedThisFrame={};}dispatchRenderCallbacks(e){for(const i of e){if(this.callbackDispatchedThisFrame[i])continue;this.callbackDispatchedThisFrame[i]=!0;const e=this.getImage(i);e||t.w(`Image with ID: "${i}" was not found`),y(e)&&this.updateImage(i,e);}}}const w=1e20;function T(t,e,i,s,a,o,r,n,l){for(let h=e;h<e+s;h++)I(t,i*o+h,o,a,r,n,l);for(let h=i;h<i+a;h++)I(t,h*o+e,1,s,r,n,l);}function I(t,e,i,s,a,o,r){o[0]=0,r[0]=-w,r[1]=w,a[0]=t[e];for(let n=1,l=0,h=0;n<s;n++){a[n]=t[e+n*i];const s=n*n;do{const t=o[l];h=(a[n]-a[t]+s-t*t)/(n-t)/2;}while(h<=r[l]&&--l>-1);l++,o[l]=n,r[l]=h,r[l+1]=w;}for(let n=0,l=0;n<s;n++){for(;r[l+1]<n;)l++;const s=o[l],h=n-s;t[e+n*i]=a[s]+h*h;}}class E{constructor(t,e){this.requestManager=t,this.localIdeographFontFamily=e,this.entries={};}setURL(t){this.url=t;}getGlyphs(e,i){const s=[];for(const t in e)for(const i of e[t])s.push({stack:t,id:i});t.o(s,(({stack:t,id:e},i)=>{let s=this.entries[t];s||(s=this.entries[t]={glyphs:{},requests:{},ranges:{}});let a=s.glyphs[e];if(void 0!==a)return void i(null,{stack:t,id:e,glyph:a});if(a=this._tinySDF(s,t,e),a)return s.glyphs[e]=a,void i(null,{stack:t,id:e,glyph:a});const o=Math.floor(e/256);if(256*o>65535)return void i(new Error("glyphs > 65535 not supported"));if(s.ranges[o])return void i(null,{stack:t,id:e,glyph:a});if(!this.url)return void i(new Error("glyphsUrl is not set"));let r=s.requests[o];r||(r=s.requests[o]=[],E.loadGlyphRange(t,o,this.url,this.requestManager,((t,e)=>{if(e){for(const t in e)this._doesCharSupportLocalGlyph(+t)||(s.glyphs[+t]=e[+t]);s.ranges[o]=!0;}for(const i of r)i(t,e);delete s.requests[o];}))),r.push(((s,a)=>{s?i(s):a&&i(null,{stack:t,id:e,glyph:a[e]||null});}));}),((t,e)=>{if(t)i(t);else if(e){const t={};for(const{stack:i,id:s,glyph:a}of e)(t[i]||(t[i]={}))[s]=a&&{id:a.id,bitmap:a.bitmap.clone(),metrics:a.metrics};i(null,t);}}));}_doesCharSupportLocalGlyph(e){return !!this.localIdeographFontFamily&&
vendor: 9,003 bytes, line 41
41(t.u["CJK Unified Ideographs"](e)||t.u["Hangul Syllables"](e)||t.u.Hiragana(e)||t.u.Katakana(e))}_tinySDF(e,i,s){const a=this.localIdeographFontFamily;if(!a)return;if(!this._doesCharSupportLocalGlyph(s))return;let o=e.tinySDF;if(!o){let t="400";/bold/i.test(i)?t="900":/medium/i.test(i)?t="500":/light/i.test(i)&&(t="200"),o=e.tinySDF=new E.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:a,fontWeight:t});}const r=o.draw(String.fromCharCode(s));return {id:s,bitmap:new t.q({width:r.width||60,height:r.height||60},r.data),metrics:{width:r.glyphWidth/2||24,height:r.glyphHeight/2||24,left:r.glyphLeft/2+.5||0,top:r.glyphTop/2-27.5||-8,advance:r.glyphAdvance/2||24,isDoubleResolution:!0}}}}E.loadGlyphRange=function(e,i,s,a,o){const r=256*i,n=r+255,l=a.transformRequest(s.replace("{fontstack}",e).replace("{range}",`${r}-${n}`),c.Glyphs);t.l(l,((e,i)=>{if(e)o(e);else if(i){const e={};for(const s of t.n(i))e[s.id]=s;o(null,e);}}));},E.TinySDF=class{constructor({fontSize:t=24,buffer:e=3,radius:i=8,cutoff:s=.25,fontFamily:a="sans-serif",fontWeight:o="normal",fontStyle:r="normal"}={}){this.buffer=e,this.cutoff=s,this.radius=i;const n=this.size=t+4*e,l=this._createCanvas(n),h=this.ctx=l.getContext("2d",{willReadFrequently:!0});h.font=`${r} ${o} ${t}px ${a}`,h.textBaseline="alphabetic",h.textAlign="left",h.fillStyle="black",this.gridOuter=new Float64Array(n*n),this.gridInner=new Float64Array(n*n),this.f=new Float64Array(n),this.z=new Float64Array(n+1),this.v=new Uint16Array(n);}_createCanvas(t){const e=document.createElement("canvas");return e.width=e.height=t,e}draw(t){const{width:e,actualBoundingBoxAscent:i,actualBoundingBoxDescent:s,actualBoundingBoxLeft:a,actualBoundingBoxRight:o}=this.ctx.measureText(t),r=Math.ceil(i),n=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(o-a))),l=Math.min(this.size-this.buffer,r+Math.ceil(s)),h=n+2*this.buffer,c=l+2*this.buffer,u=Math.max(h*c,0),d=new Uint8ClampedArray(u),_={data:d,width:h,height:c,glyphWidth:n,glyphHeight:l,glyphTop:r,glyphLeft:0,glyphAdvance:e};if(0===n||0===l)return _;const{ctx:p,buffer:m,gridInner:f,gridOuter:g}=this;p.clearRect(m,m,n,l),p.fillText(t,m,m+r);const v=p.getImageData(m,m,n,l);g.fill(w,0,u),f.fill(0,0,u);for(let t=0;t<l;t++)for(let e=0;e<n;e++){const i=v.data[4*(t*n+e)+3]/255;if(0===i)continue;const s=(t+m)*h+e+m;if(1===i)g[s]=0,f[s]=w;else {const t=.5-i;g[s]=t>0?t*t:0,f[s]=t<0?t*t:0;}}T(g,0,0,h,c,h,this.f,this.v,this.z),T(f,m,m,n,l,h,this.f,this.v,this.z);for(let t=0;t<u;t++){const e=Math.sqrt(g[t])-Math.sqrt(f[t]);d[t]=Math.round(255-255*(e/this.radius+this.cutoff));}return _}};class S{constructor(){this.specification=t.v.light.position;}possiblyEvaluate(e,i){return t.z(e.expression.evaluate(i))}interpolate(e,i,s){return {x:t.B.number(e.x,i.x,s),y:t.B.number(e.y,i.y,s),z:t.B.number(e.z,i.z,s)}}}let C;class P extends t.E{constructor(e){super(),C=C||new t.r({anchor:new t.D(t.v.light.anchor),position:new S,color:new t.D(t.v.light.color),intensity:new t.D(t.v.light.intensity)}),this._transitionable=new t.T(C),this.setLight(e),this._transitioning=this._transitionable.untransitioned();}getLight(){return this._transitionable.serialize()}setLight(e,i={}){if(!this._validate(t.t,e,i))for(const t in e){const i=e[t];t.endsWith("-transition")?this._transitionable.setTransition(t.slice(0,-11),i):this._transitionable.setValue(t,i);}}updateTransitions(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(t){this.properties=this._transitioning.possiblyEvaluate(t);}_validate(e,i,s){return (!s||!1!==s.validate)&&t.x(this,e.call(t.y,t.e({value:i,style:{glyphs:!0,sprite:!0},styleSpec:t.v})))}}class D{constructor(t,e){this.width=t,this.height=e,this.nextRow=0,this.data=new Uint8Array(this.width*this.height),this.dashEntry={};}getDash(t,e){const i=t.join(",")+String(e);return this.dashEntry[i]||(this.dashEntry[i]=this.addDash(t,e)),this.dashEntry[i]}getDashRanges(t,e,i){const s=[];let a=t.length%2==1?-t[t.length-1]*i:0,o=t[0]*i,r=!0;s.push({left:a,right:o,isDash:r,zeroLength:0===t[0]});let n=t[0];for(let e=1;e<t.length;e++){r=!r;const l=t[e];a=n*i,n+=l,o=n*i,s.push({left:a,right:o,isDash:r,zeroLength:0===l});}return s}addRoundDash(t,e,i){const s=e/2;for(let e=-i;e<=i;e++){const a=this.width*(this.nextRow+i+e);let o=0,r=t[o];for(let n=0;n<this.width;n++){n/r.right>1&&(r=t[++o]);const l=Math.abs(n-r.left),h=Math.abs(n-r.right),c=Math.min(l,h);let u;const d=e/i*(s+1);if(r.isDash){const t=s-Math.abs(d);u=Math.sqrt(c*c+t*t);}else u=s-Math.sqrt(c*c+d*d);this.data[a+n]=Math.max(0,Math.min(255,u+128));}}}addRegularDash(t){for(let e=t.length-1;e>=0;--e){const i=t[e],s=t[e+1];i.zeroLength?t.splice(e,1):s&&s.isDash===i.isDash&&(s.left=i.left,t.splice(e,1));}const e=t[0],i=t[t.length-1];e.isDash===i.isDash&&(e.left=i.left-this.width,i.right=e.right+this.width);const s=this.width*this.nextRow;let a=0,o=t[a];for(let e=0;e<this.width;e++){e/o.right>1&&(o=t[++a]);const i=Math.abs(e-o.left),r=Math.abs(e-o.right),n=Math.min(i,r);this.data[s+e]=Math.max(0,Math.min(255,(o.isDash?n:-n)+128));}}addDash(e,i){const s=i?7:0,a=2*s+1;if(this.nextRow+a>this.height)return t.w("LineAtlas out of space"),null;let o=0;for(let t=0;t<e.length;t++)o+=e[t];if(0!==o){const t=this.width/o,a=this.getDashRanges(e,this.width,t);i?this.addRoundDash(a,t,s):this.addRegularDash(a);}const r={y:(this.nextRow+s+.5)/this.height,height:2*s/this.height,width:o};return this.nextRow+=a,this.dirty=!0,r}bind(t){const e=t.gl;this.texture?(e.bindTexture(e.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,e.texSubImage2D(e.TEXTURE_2D,0,0,0,this.width,this.height,e.ALPHA,e.UNSIGNED_BYTE,this.data))):(this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texImage2D(e.TEXTURE_2D,0,e.ALPHA,this.width,this.height,0,e.ALPHA,e.UNSIGNED_BYTE,this.data));}}class M{constructor(e,i,s){this.workerPool=e,this.actors=[],this.currentActor=0,this.id=s;const a=this.workerPool.acquire(s);for(let e=0;e<a.length;e++){const o=new t.C(a[e],i,s);o.name=`Worker ${e}`,this.actors.push(o);}if(!this.actors.length)throw new Error("No actors found")}broadcast(e,i,s){t.o(this.actors,((t,s)=>{t.send(e,i,s);}),s=s||function(){});}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(t=!0){this.actors.forEach((t=>{t.remove();})),this.actors=[],t&&this.workerPool.release(this.id);}}function z(e,i,s){const a=function(i,a){if(i)return s(i);if(a){const i=t.F(t.e(a,e),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);a.vector_layers&&(i.vectorLayers=a.vector_layers,i.vectorLayerIds=i.vectorLayers.map((t=>t.id))),s(null,i);}};return e.url?t.f(i.transformRequest(e.url,c.Source),a):t.h.frame((()=>a(null,e)))}class L{constructor(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):Array.isArray(t)&&(4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1])));}setNorthEast(e){return this._ne=e instanceof t.L?new t.L(e.lng,e.lat):t.L.convert(e),this}setSouthWest(e){return this._sw=e instanceof t.L?new t.L(e.lng,e.lat):t.L.convert(e),this}extend(e){const i=this._sw,s=this._ne;let a,o;if(e instanceof t.L)a=e,o=e;else {if(!(e instanceof L))return Array.isArray(e)?4===e.length||e.every(Array.isArray)?this.extend(L.convert(e)):this.extend(t.L.convert(e)):e&&("lng"in e||"lon"in e)&&"lat"in e?this.extend(t.L.convert(e)):this;if(a=e._sw,o=e._ne,!a||!o)return this}return i||s?(i.lng=Math.min(a.lng,i.lng),i.lat=Math.min(a.lat,i.lat),s.lng=Math.max(o.lng,s.lng),s.lat=Math.max(o.lat,s.lat)):(this._sw=new t.L(a.lng,a.lat),this._ne=new t.L(o.lng,o.lat)),this}getCenter(){return new t.L((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new t.L(this.getWest(),this.getNorth())}getSouthEast(){return new t.L(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return [this._sw.toArray(),this._ne.toArray()]}toString(){return `LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return !(this._sw&&this._ne)}contains(e){const{lng:i,lat:s}=t.L.convert(e);let a=this._sw.lng<=i&&i<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=i&&i>=this._ne.lng),this._sw.lat<=s&&s<=this._ne.lat&&a}static convert(t){return t instanceof L?t:t?new L(t):t}static fromLngLat(e,i=0){const s=360*i/40075017,a=s/Math.cos(Math.PI/180*e.lat);return new L(new t.L(e.lng-a,e.lat-s),new t.L(e.lng+a,e.lat+s))}}class A{constructor(t,e,i){this.bounds=L.convert(this.validateBounds(t)),this.minzoom=e||0,this.maxzoom=i||24;}
41validateBounds(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]}contains(e){const i=Math.pow(2,e.z),s=Math.floor(t.G(this.bounds.getWest())*i),a=Math.floor(t.H(this.bounds.getNorth())*i),o=Math.ceil(t.G(this.bounds.getEast())*i),r=Math.ceil(t.H(this.bounds.getSouth())*i);return e.x>=s&&e.x<o&&e.y>=a&&e.y<r}}class R extends t.E{constructor(e,i,s,a){if(super(),this.load=()=>{this._loaded=!1,this.fire(new t.k("dataloading",{dataType:"source"})),this._tileJSONRequest=z(this._options,this.map._requestManager,((e,i)=>{this._tileJSONRequest=null,this._loaded=!0,this.map.style.sourceCaches[this.id].clearTiles(),e?this.fire(new t.j(e)):i&&(t.e(this,i),i.bounds&&(this.tileBounds=new A(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new t.k("data",{dataType:"source",sourceDataType:"content"})));}));},this.serialize=()=>t.e({},this._options),this.id=e,this.dispatcher=s,this.type="vector",this.minzoom=0,this.maxzoom=22,this.scheme="xyz",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,t.e(this,t.F(i,["url","scheme","tileSize","promoteId"])),this._options=t.e({type:"vector"},i),this._collectResourceTiming=i.collectResourceTiming,512!==this.tileSize)throw new Error("vector tile sources must have a tileSize of 512");this.setEventedParent(a);}loaded(){return this._loaded}hasTile(t){return !this.tileBounds||this.tileBounds.contains(t.canonical)}onAdd(t){this.map=t,this.load();}setSourceProperty(t){this._tileJSONRequest&&this._tileJSONRequest.cancel(),t(),this.load();}setTiles(t){return this.setSourceProperty((()=>{this._options.tiles=t;})),this}setUrl(t){return this.setSourceProperty((()=>{this.url=t,this._options.url=t;})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}loadTile(t,e){const i=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),s={request:this.map._requestManager.transformRequest(i,c.Tile),uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.t
41ype,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function a(i,s){return delete t.request,t.aborted?e(null):i&&404!==i.status?e(i):(s&&s.resourceTiming&&(t.resourceTiming=s.resourceTiming),this.map._refreshExpiredTiles&&s&&t.setExpiryData(s),t.loadVectorData(s,this.map.painter),e(null),void(t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)))}s.request.collectResourceTiming=this._collectResourceTiming,t.actor&&"expired"!==t.state?"loading"===t.state?t.reloadCallback=e:t.request=t.actor.send("reloadTile",s,a.bind(this)):(t.actor=this.dispatcher.getActor(),t.request=t.actor.send("loadTile",s,a.bind(this)));}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.actor&&t.actor.send("abortTile",{uid:t.uid,type:this.type,source:this.id},void 0);}unloadTile(t){t.unloadVectorData(),t.actor&&t.actor.send("removeTile",{uid:t.uid,type:this.type,source:this.id},void 0);}hasTransition(){return !1}}class k extends t.E{constructor(e,i,s,a){super(),this.id=e,this.dispatcher=s,this.setEventedParent(a),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=t.e({type:"raster"},i),t.e(this,t.F(i,["url","scheme","tileSize"]));}load(){this._loaded=!1,this.fire(new t.k("dataloading",{dataType:"source"})),this._tileJSONRequest=z(this._options,this.map._requestManager,((e,i)=>{this._tileJSONRequest=null,this._loaded=!0,e?this.fire(new t.j(e)):i&&(t.e(this,i),i.bounds&&(this.tileBounds=new A(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new t.k("data",{dataType:"source",sourceDataType:"content"})));}));}loaded(){return this._loaded}onAdd(t){this.map=t,this.load();}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}setSourceProperty(t){this._tileJSONRequest&&this._tileJSONRequest.cancel(),t(),this.load();}setTiles(t){return this.setSourceProperty((()=>{this._options.tiles=t;})),this}serialize(){return t.e({},this._options)}hasTile(t){return !this.tileBounds||this.tileBounds.contains(t.canonical)}loadTile(t,e){const i=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);t.request=h.getImage(this.map._requestManager.transformRequest(i,c.Tile),((i,s,a)=>{if(delete t.request,t.aborted)t.state="unloaded",e(null);else if(i)t.state="errored",e(i);else if(s){this.map._refreshExpiredTiles&&a&&t.setExpiryData(a);const i=this.map.painter.context,o=i.gl;t.texture=this.map.painter.getTileTexture(s.width),t.texture?t.texture.update(s,{useMipmap:!0}):(t.texture=new x(i,s,o.RGBA,{useMipmap:!0}),t.texture.bind(o.LINEAR,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST),i.extTextureFilterAnisotropic&&o.texParameterf(o.TEXTURE_2D,i.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,i.extTextureFilterAnisotropicMax)),t.state="loaded",e(null);}}),this.map._refreshExpiredTiles);}abortTile(t,e){t.request&&(t.request.cancel(),delete t.request),e();}unloadTile(t,e){t.texture&&this.map.painter.saveTileTexture(t.texture),e();}hasTransition(){return !1}}class F extends k{constructor(e,i,s,a){super(e,i,s,a),this.type="raster-dem",this.maxzoom=22,this._options=t.e({type:"raster-dem"},i),this.encoding=i.encoding||"mapbox",this.redFactor=i.redFactor,this.greenFactor=i.greenFactor,this.blueFactor=i.blueFactor,this.baseShift=i.baseShift;}loadTile(e,i){const s=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),a=this.map._requestManager.transformRequest(s,c.Tile);function o(t,s){t&&(e.state="errored",i(t)),s&&(e.dem=s,e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0,e.state="loaded",i(null));}e.neighboringTiles=this._getNeighboringTiles(e.tileID),e.request=h.getImage(a,((s,a,r)=>t._(this,void 0,void 0,(function*(){if(delete e.request,e.aborted)e.state="unloaded",i(null);else if(s)e.state="errored",i(s);else if(a){this.map._refreshExpiredTiles&&e.setExpiryData(r);const i=t.a(a)&&t.J()?a:yield function(e){return t._(this,void 0,void 0,(function*(){if("undefined"!=typeof VideoFrame&&t.K()){const i=e.width+2,s=e.height+2;try{return new t.R({width:i,height:s},yield t.M(e,-1,-1,i,s))}catch(t){}}return t.h.getImageData(e,1)}))}(a),s={uid:e.uid,coord:e.tileID,source:this.id,rawImageData:i,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};e.actor&&"expired"!==e.state||(e.actor=this.dispatcher.getActor(),e.actor.send("loadDEMTile",s,o));}}))),this.map._refreshExpiredTiles);}_getNeighboringTiles(e){const i=e.canonical,s=Math.pow(2,i.z),a=(i.x-1+s)%s,o=0===i.x?e.wrap-1:e.wrap,r=(i.x+1+s)%s,n=i.x+1===s?e.wrap+1:e.wrap,l={};return l[new t.O(e.overscaledZ,o,i.z,a,i.y).key]={backfilled:!1},l[new t.O(e.overscaledZ,n,i.z,r,i.y).key]={backfilled:!1},i.y>0&&(l[new t.O(e.overscaledZ,o,i.z,a,i.y-1).key]={backfilled:!1},l[new t.O(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.O(e.overscaledZ,n,i.z,r,i.y-1).key]={backfilled:!1}),i.y+1<s&&(l[new t.O(e.overscaledZ,o,i.z,a,i.y+1).key]={backfilled:!1},l[new t.O(e.overscaledZ,e.wrap,i.z,i.x,i.y+1).key]={backfilled:!1},l[new t.O(e.overscaledZ,n,i.z,r,i.y+1).key]={backfilled:!1}),l}unloadTile(t){t.demTexture&&this.map.painter.saveTileTexture(t.demTexture),t.fbo&&(t.fbo.destroy(),delete t.fbo),t.dem&&delete t.dem,delete t.neighboringTiles,t.state="unloaded",t.actor&&t.actor.send("removeDEMTile",{uid:t.uid,source:this.id});}}class B extends t.E{constructor(e,i,s,a){super(),this.load=()=>{this._updateWorkerData();},this.serialize=()=>t.e({}
41,this._options,{type:this.type,data:this._data}),this.id=e,this.type="geojson",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._pendingLoads=0,this.actor=s.getActor(),this.setEventedParent(a),this._data=i.data,this._options=t.e({},i),this._collectResourceTiming=i.collectResourceTiming,void 0!==i.maxzoom&&(this.maxzoom=i.maxzoom),i.type&&(this.type=i.type),i.attribution&&(this.attribution=i.attribution),this.promoteId=i.promoteId;const o=t.N/this.tileSize;this.workerOptions=t.e({source:this.id,cluster:i.cluster||!1,geojsonVtOptions:{buffer:(void 0!==i.buffer?i.buffer:128)*o,tolerance:(void 0!==i.tolerance?i.tolerance:.375)*o,extent:t.N,maxZoom:this.maxzoom,lineMetrics:i.lineMetrics||!1,generateId:i.generateId||!1},superclusterOptions:{maxZoom:void 0!==i.clusterMaxZoom?i.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,i.clusterMinPoints||2),extent:t.N,radius:(i.clusterRadius||50)*o,log:!1,generateId:i.generateId||!1},clusterProperties:i.clusterProperties,filter:i.filter},i.workerOptions),"string"==typeof this.promoteId&&(this.workerOptions.promoteId=this.promoteId);}onAdd(t){this.map=t,this.load();}setData(t){return this._data=t,this._updateWorkerData(),this}updateData(t){return this._updateWorkerData(t),this}setClusterOptions(t){return this.workerOptions.cluster=t.cluster,t&&(void 0!==t.clusterRadius&&(this.workerOptions.superclusterOptions.radius=t.clusterRadius),void 0!==t.clusterMaxZoom&&(this.workerOptions.superclusterOptions.maxZoom=t.clusterMaxZoom)),this._updateWorkerData(),this}getClusterExpansionZoom(t,e){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:t,source:this.id},e),this}getClusterChildren(t,e){return this.actor.send("geojson.getClusterChildren",{clusterId:t,source:this.id},e),this}getClusterLeaves(t,e,i,s){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:t,limit:e,offset:i},s),this}_updateWorkerData(e){const i=t.e({},this.workerOptions);e?i.dataDiff=e:"string"==typeof this._data?(i.request=this.map._requestManager.transformRequest(t.h.resolveURL(this._data),c.Source),i.request.collectResourceTiming=this._collectResourceTiming):i.data=JSON.stringify(this._data),this._pendingLoads++,this.fire(new t.k("dataloading",{dataType:"source"})),this.actor.send(`${this.type}.loadData`,i,((e,i)=>{if(this._pendingLoads--,this._removed||i&&i.abandoned)return void this.fire(new t.k("dataabort",{dataType:"source"}));let s=null;if(i&&i.resourceTiming&&i.resourceTiming[this.id]&&(s=i.resourceTiming[this.id].slice(0)),e)return void this.fire(new t.j(e));const a={dataType:"source"};this._collectResourceTiming&&s&&s.length>0&&t.e(a,{resourceTiming:s}),this.fire(new t.k("data",Object.assign(Object.assign({},a),{sourceDataType:"metadata"}))),this.fire(new t.k("data",Object.assign(Object.assign({},a),{sourceDataType:"content"})));}));}loaded(){return 0===this._pendingLoads}loadTile(t,e){const i=t.actor?"reloadTile":"loadTile";t.actor=this.actor;const s={type:this.type,uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};t.request=this.actor.send(i,s,((s,a)=>(delete t.request,t.unloadVectorData(),t.aborted?e(null):s?e(s):(t.loadVectorData(a,this.map.painter,"reloadTile"===i),e(null)))));}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0;}unloadTile(t){t.unloadVectorData(),this.actor.send("removeTile",{uid:t.uid,type:this.t
41ype,source:this.id});}onRemove(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id});}hasTransition(){return !1}}var O=t.Q([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class N extends t.E{constructor(e,i,s,a){super(),this.load=(e,i)=>{this._loaded=!1,this.fire(new t.k("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=h.getImage(this.map._requestManager.transformRequest(this.url,c.Image),((s,a)=>{this._request=null,this._loaded=!0,s?this.fire(new t.j(s)):a&&(this.image=a,e&&(this.coordinates=e),i&&i(),this._finishLoading());}));},this.prepare=()=>{if(0===Object.keys(this.tiles).length||!this.image)return;const e=this.map.painter.context,i=e.gl;this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,O.members)),this.boundsSegments||(this.boundsSegments=t.S.simpleSegment(0,0,4,2)),this.texture||(this.texture=new x(e,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let s=!1;for(const t in this.tiles){const e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,s=!0);}s&&this.fire(new t.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}));},this.serialize=()=>({type:"image",url:this.options.url,coordinates:this.coordinates}),this.id=e,this.dispatcher=s,this.coordinates=i.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(a),this.options=i;}loaded(){return this._loaded}updateImage(t){return t.url?(this._request&&(this._request.cancel(),this._request=null),this.options.url=t.url,this.load(t.coordinates,(()=>{this.texture=null;})),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.k("data",{dataType:"source",sourceDataType:"metadata"})));}onAdd(t){this.map=t,this.load();}onRemove(){this._request&&(this._request.cancel(),this._request=null);}setCoordinates(e){this.coordinates=e;const i=e.map(t.U.fromLngLat);this.tileID=function(e){let i=1/0,s=1/0,a=-1/0,o=-1/0;for(const t of e)i=Math.min(i,t.x),s=Math.min(s,t.y),a=Math.max(a,t.x),o=Math.max(o,t.y);const r=Math.max(a-i,o-s),n=Math.max(0,Math.floor(-Math.log(r)/Math.LN2)),l=Math.pow(2,n);return new t.W(n,Math.floor((i+a)/2*l),Math.floor((s+o)/2*l))}(i),this.minzoom=this.maxzoom=this.tileID.z;const s=i.map((t=>this.tileID.getTilePoint(t)._round()));return this._boundsArray=new t.V,this._boundsArray.emplaceBack(s[0].x,s[0].y,0,0),this._boundsArray.emplaceBack(s[1].x,s[1].y,t.N,0),this._boundsArray.emplaceBack(s[3].x,s[3].y,0,t.N),this._boundsArray.emplaceBack(s[2].x,s[2].y,t.N,t.N),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new t.k("data",{dataType:"source",sourceDataType:"content"})),this}loadTile(t,e){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={},e(null)):(t.state="errored",e(null));}hasTransition(){return !1}}class U extends N{constructor(e,i,s,a){super(e,i,s,a),this.load=()=>{this._loaded=!1;const e=this.options;this.urls=[];for(const t of e.urls)this.urls.push(this.map._requestManager.transformRequest(t,c.Source).url);t.X(this.urls,((e,i)=>{this._loaded=!0,e?this.fire(new t.j(e)):i&&(this.video=i,this.video.loop=!0,this.video.addEventListener("playing",(()=>{this.map.triggerRepaint();})),this.map&&this.video.play(),this._finishLoading());}));},this.prepare=()=>{if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const e=this.map.painter.context,i=e.gl;this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,O.members)),this.boundsSegments||(this.boundsSegments=t.S.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new x(e,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let s=!1;for(const t in this.tiles){const e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,s=!0);}s&&this.fire(new t.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}));},this.serialize=()=>({type:"video",urls:this.urls,coordinates:this.coordinates}),this.roundZoom=!0,this.type="video",this.options=i;}pause(){this.video&&this.video.pause();}play(){this.video&&this.video.play();}seek(e){if(this.video){const i=this.video.seekable;e<i.start(0)||e>i.end(0)?this.fire(new t.j(new t.Y(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=e;}}getVideo(){return this.video}
vendor: 9,551 bytes, line 41
41onAdd(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)));}hasTransition(){return this.video&&!this.video.paused}}class Z extends N{constructor(e,i,s,a){super(e,i,s,a),this.load=()=>{this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.j(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint();},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1);},this._finishLoading());},this.prepare=()=>{let e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context,s=i.gl;this.boundsBuffer||(this.boundsBuffer=i.createVertexBuffer(this._boundsArray,O.members)),this.boundsSegments||(this.boundsSegments=t.S.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new x(i,this.canvas,s.RGBA,{premultiply:!0});let a=!1;for(const t in this.tiles){const e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,a=!0);}a&&this.fire(new t.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}));},this.serialize=()=>({type:"canvas",coordinates:this.coordinates}),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some((t=>!Array.isArray(t)||2!==t.length||t.some((t=>"number"!=typeof t))))||this.fire(new t.j(new t.Y(`sources.${e}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.j(new t.Y(`sources.${e}`,null,'missing required property "coordinates"'))),i.animate&&"boolean"!=typeof i.animate&&this.fire(new t.j(new t.Y(`sources.${e}`,null,'optional "animate" property must be a boolean value'))),i.canvas?"string"==typeof i.canvas||i.canvas instanceof HTMLCanvasElement||this.fire(new t.j(new t.Y(`sources.${e}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.j(new t.Y(`sources.${e}`,null,'missing required property "canvas"'))),this.options=i,this.animate=void 0===i.animate||i.animate;}getCanvas(){return this.canvas}onAdd(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play();}onRemove(){this.pause();}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const t of [this.canvas.width,this.canvas.height])if(isNaN(t)||t<=0)return !0;return !1}}const G={},j=t=>{switch(t){case"geojson":return B;case"image":return N;case"raster":return k;case"raster-dem":return F;case"vector":return R;case"video":return U;case"canvas":return Z}return G[t]};function V(e,i){const s=t.Z();return t.$(s,s,[1,1,0]),t.a0(s,s,[.5*e.width,.5*e.height,1]),t.a1(s,s,e.calculatePosMatrix(i.toUnwrapped()))}function q(t,e,i,s,a,o){const r=function(t,e,i){if(t)for(const s of t){const t=e[s];if(t&&t.source===i&&"fill-extrusion"===t.type)return !0}else for(const t in e){const s=e[t];if(s.source===i&&"fill-extrusion"===s.type)return !0}return !1}(a&&a.layers,e,t.id),n=o.maxPitchScaleFactor(),l=t.tilesIn(s,n,r);l.sort($);const h=[];for(const s of l)h.push({wrappedTileID:s.tileID.wrapped().key,queryResults:s.tile.queryRenderedFeatures(e,i,t._state,s.queryGeometry,s.cameraQueryGeometry,s.scale,a,o,n,V(t.transform,s.tileID))});const c=function(t){const e={},i={};for(const s of t){const t=s.queryResults,a=s.wrappedTileID,o=i[a]=i[a]||{};for(const i in t){const s=t[i],a=o[i]=o[i]||{},r=e[i]=e[i]||[];for(const t of s)a[t.featureIndex]||(a[t.featureIndex]=!0,r.push(t));}}return e}(h);for(const e in c)c[e].forEach((e=>{const i=e.feature,s=t.getFeatureState(i.layer["source-layer"],i.id);i.source=i.layer.source,i.layer["source-layer"]&&(i.sourceLayer=i.layer["source-layer"]),i.state=s;}));return c}function $(t,e){const i=t.tileID,s=e.tileID;return i.overscaledZ-s.overscaledZ||i.canonical.y-s.canonical.y||i.wrap-s.wrap||i.canonical.x-s.canonical.x}class W{constructor(e,i){this.timeAdded=0,this.fadeEndTime=0,this.tileID=e,this.uid=t.a2(),this.uses=0,this.tileSize=i,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading";}registerFadeDuration(t){const e=t+this.timeAdded;e<this.fadeEndTime||(this.fadeEndTime=e);}wasRequested(){return "errored"===this.state||"loaded"===this.state||"reloading"===this.state}clearTextures(t){this.demTexture&&t.saveTileTexture(this.demTexture),this.demTexture=null;}loadVectorData(e,i,s){if(this.hasData()&&this.unloadVectorData(),this.state="loaded",e){e.featureIndex&&(this.latestFeatureIndex=e.featureIndex,e.rawTileData?(this.latestRawTileData=e.rawTileData,this.latestFeatureIndex.rawTileData=e.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=e.collisionBoxArray,this.buckets=function(t,e){const i={};if(!e)return i;for(const s of t){const t=s.layerIds.map((t=>e.getLayer(t))).filter(Boolean);if(0!==t.length){s.layers=t,s.stateDependentLayerIds&&(s.stateDependentLayers=s.stateDependentLayerIds.map((e=>t.filter((t=>t.id===e))[0])));for(const e of t)i[e.id]=s;}}return i}(e.buckets,i.style),this.hasSymbolBuckets=!1;for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.a4){if(this.hasSymbolBuckets=!0,!s)break;i.justReloaded=!0;}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.a4&&i.hasRTLText){this.hasRTLText=!0,t.a5();break}}this.queryPadding=0;for(const t in this.buckets){const e=this.buckets[t];this.queryPadding=Math.max(this.queryPadding,i.style.getLayer(t).queryRadius(e));}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage);}else this.collisionBoxArray=new t.a3;}unloadVectorData(){for(const t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded";}getBucket(t){return this.buckets[t.id]}upload(t){for(const e in this.buckets){const i=this.buckets[e];i.uploadPending()&&i.upload(t);}const e=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new x(t,this.imageAtlas.image,e.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new x(t,this.glyphAtlasImage,e.ALPHA),this.glyphAtlasImage=null);}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture);}queryRenderedFeatures(t,e,i,s,a,o,r,n,l,h){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:s,cameraQueryGeometry:a,scale:o,tileSize:this.tileSize,pixelPosMatrix:h,transform:n,params:r,queryPadding:this.queryPadding*l},t,e,i):{}}querySourceFeatures(e,i){const s=this.latestFeatureIndex;if(!s||!s.rawTileData)return;const a=s.loadVTLayers(),o=i&&i.sourceLayer?i.sourceLayer:"",r=a._geojsonTileLayer||a[o];if(!r)return;const n=t.a6(i&&i.filter),{z:l,x:h,y:c}=this.tileID.canonical,u={z:l,x:h,y:c};for(let i=0;i<r.length;i++){const a=r.feature(i);if(n.needGeometry){const e=t.a7(a,!0);if(!n.filter(new t.a8(this.tileID.overscaledZ),e,this.tileID.canonical))continue}else if(!n.filter(new t.a8(this.tileID.overscaledZ),a))continue;const d=s.getId(a,o),_=new t.a9(a,l,h,c,d);_.tile=u,e.push(_);}}hasData(){return "loaded"===this.state||"reloading"===this.state||"expired"===this.state}patternsLoaded(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(e){const i=this.expirationTime;if(e.cacheControl){const i=t.aa(e.cacheControl);i["max-age"]&&(this.expirationTime=Date.now()+1e3*i["max-age"]);}else e.expires&&(this.expirationTime=new Date(e.expires).getTime());if(this.expirationTime){const t=Date.now();let e=!1;if(this.expirationTime>t)e=!1;else if(i)if(this.expirationTime<i)e=!0;else {const s=this.expirationTime-i;s?this.expirationTime=t+Math.max(s,3e4):e=!0;}else e=!0;e?(this.expiredRequestCount++,this.state="expired"):this.expiredRequestCount=0;}}getExpiryTimeout(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)}setFeatureState(t,e){if(!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData||0===Object.keys(t).length)return;const i=this.latestFeatureIndex.loadVTLayers();for(const s in this.buckets){if(!e.style.hasLayer(s))continue;const a=this.buckets[s],o=a.layers[0].sourceLayer||"_geojsonTileLayer",r=i[o],n=t[o];if(!r||!n||0===Object.keys(n).length)continue;a.update(n,r,this.imageAtlas&&this.imageAtlas.patternPositions||{});const l=e&&e.style&&e.style.getLayer(s);l&&(this.queryPadding=Math.max(this.queryPadding,l.queryRadius(a)));}}holdingForFade(){return void 0!==this.symbolFadeHoldUntil}symbolFadeFinished(){return !this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<t.h.now()}clearFadeHold(){this.symbolFadeHoldUntil=void 0;}setHoldDuration(e){this.symbolFadeHoldUntil=t.h.now()+e;}
vendor: 4,792 bytes, line 41
41setDependencies(t,e){const i={};for(const t of e)i[t]=!0;this.dependencies[t]=i;}hasDependency(t,e){for(const i of t){const t=this.dependencies[i];if(t)for(const i of e)if(t[i])return !0}return !1}}class H{constructor(t,e){this.max=t,this.onRemove=e,this.reset();}reset(){for(const t in this.data)for(const e of this.data[t])e.timeout&&clearTimeout(e.timeout),this.onRemove(e.value);return this.data={},this.order=[],this}add(t,e,i){const s=t.wrapped().key;void 0===this.data[s]&&(this.data[s]=[]);const a={value:e,timeout:void 0};if(void 0!==i&&(a.timeout=setTimeout((()=>{this.remove(t,a);}),i)),this.data[s].push(a),this.order.push(s),this.order.length>this.max){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){const e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value}getByKey(t){const e=this.data[t];return e?e[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,e){if(!this.has(t))return this;const i=t.wrapped().key,s=void 0===e?0:this.data[i].indexOf(e),a=this.data[i][s];return this.data[i].splice(s,1),a.timeout&&clearTimeout(a.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(a.value),this.order.splice(this.order.indexOf(i),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}filter(t){const e=[];for(const i in this.data)for(const s of this.data[i])t(s.value)||e.push(s);for(const t of e)this.remove(t.value.tileID,t);}}class X{constructor(){this.state={},this.stateChanges={},this.deletedStates={};}updateState(e,i,s){const a=String(i);if(this.stateChanges[e]=this.stateChanges[e]||{},this.stateChanges[e][a]=this.stateChanges[e][a]||{},t.e(this.stateChanges[e][a],s),null===this.deletedStates[e]){this.deletedStates[e]={};for(const t in this.state[e])t!==a&&(this.deletedStates[e][t]=null);}else if(this.deletedStates[e]&&null===this.deletedStates[e][a]){this.deletedStates[e][a]={};for(const t in this.state[e][a])s[t]||(this.deletedStates[e][a][t]=null);}else for(const t in s)this.deletedStates[e]&&this.deletedStates[e][a]&&null===this.deletedStates[e][a][t]&&delete this.deletedStates[e][a][t];}removeFeatureState(t,e,i){if(null===this.deletedStates[t])return;const s=String(e);if(this.deletedStates[t]=this.deletedStates[t]||{},i&&void 0!==e)null!==this.deletedStates[t][s]&&(this.deletedStates[t][s]=this.deletedStates[t][s]||{},this.deletedStates[t][s][i]=null);else if(void 0!==e)if(this.stateChanges[t]&&this.stateChanges[t][s])for(i in this.deletedStates[t][s]={},this.stateChanges[t][s])this.deletedStates[t][s][i]=null;else this.deletedStates[t][s]=null;else this.deletedStates[t]=null;}getState(e,i){const s=String(i),a=t.e({},(this.state[e]||{})[s],(this.stateChanges[e]||{})[s]);if(null===this.deletedStates[e])return {};if(this.deletedStates[e]){const t=this.deletedStates[e][i];if(null===t)return {};for(const e in t)delete a[e];}return a}initializeTileState(t,e){t.setFeatureState(this.state,e);}coalesceChanges(e,i){const s={};for(const e in this.stateChanges){this.state[e]=this.state[e]||{};const i={};for(const s in this.stateChanges[e])this.state[e][s]||(this.state[e][s]={}),t.e(this.state[e][s],this.stateChanges[e][s]),i[s]=this.state[e][s];s[e]=i;}for(const e in this.deletedStates){this.state[e]=this.state[e]||{};const i={};if(null===this.deletedStates[e])for(const t in this.state[e])i[t]={},this.state[e][t]={};else for(const t in this.deletedStates[e]){if(null===this.deletedStates[e][t])this.state[e][t]={};else for(const i of Object.keys(this.deletedStates[e][t]))delete this.state[e][t][i];i[t]=this.state[e][t];}s[e]=s[e]||{},t.e(s[e],i);}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(s).length)for(const t in e)e[t].setFeatureState(s,i);}}class K extends t.E{constructor(t,e,i){super(),this.id=t,this.dispatcher=i,this.on("data",(t=>{"source"===t.dataType&&"metadata"===t.sourceDataType&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&"source"===t.dataType&&"content"===t.sourceDataType&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0);})),this.on("dataloading",(()=>{this._sourceErrored=!1;})),this.on("error",(()=>{this._sourceErrored=this._source.loaded();})),this._source=((t,e,i,s)=>{const a=new(j(e.type))(t,e,i,s);if(a.id!==t)throw new Error(`Expected Source id to be ${t} instead of ${a.id}`);return a})(t,e,i,this),this._tiles={},this._cache=new H(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={}
vendor: 4,460 bytes, line 41
41,this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new X,this._didEmitContent=!1,this._updated=!1;}onAdd(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._maxTileCacheZoomLevels=t?t._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(t);}onRemove(t){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(t);}loaded(){if(this._sourceErrored)return !0;if(!this._sourceLoaded)return !1;if(!this._source.loaded())return !1;if(!(void 0===this.used&&void 0===this.usedForTerrain||this.used||this.usedForTerrain))return !0;if(!this._updated)return !1;for(const t in this._tiles){const e=this._tiles[t];if("loaded"!==e.state&&"errored"!==e.state)return !1}return !0}getSource(){return this._source}pause(){this._paused=!0;}resume(){if(!this._paused)return;const t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform,this.terrain);}_loadTile(t,e){return this._source.loadTile(t,e)}_unloadTile(t){if(this._source.unloadTile)return this._source.unloadTile(t,(()=>{}))}_abortTile(e){this._source.abortTile&&this._source.abortTile(e,(()=>{})),this._source.fire(new t.k("dataabort",{tile:e,coord:e.tileID,dataType:"source"}));}serialize(){return this._source.serialize()}prepare(t){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const e in this._tiles){const i=this._tiles[e];i.upload(t),i.prepare(this.map.style.imageManager);}}getIds(){return Object.values(this._tiles).map((t=>t.tileID)).sort(Q).map((t=>t.key))}getRenderableIds(e){const i=[];for(const t in this._tiles)this._isIdRenderable(t,e)&&i.push(this._tiles[t]);return e?i.sort(((e,i)=>{const s=e.tileID,a=i.tileID,o=new t.P(s.canonical.x,s.canonical.y)._rotate(this.transform.angle),r=new t.P(a.canonical.x,a.canonical.y)._rotate(this.transform.angle);return s.overscaledZ-a.overscaledZ||r.y-o.y||r.x-o.x})).map((t=>t.tileID.key)):i.map((t=>t.tileID)).sort(Q).map((t=>t.key))}hasRenderableParent(t){const e=this.findLoadedParent(t,0);return !!e&&this._isIdRenderable(e.tileID.key)}_isIdRenderable(t,e){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(e||!this._tiles[t].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else {this._cache.reset();for(const t in this._tiles)"errored"!==this._tiles[t].state&&this._reloadTile(t,"reloading");}}_reloadTile(t,e){const i=this._tiles[t];i&&("loading"!==i.state&&(i.state=e),this._loadTile(i,this._tileLoaded.bind(this,i,t,e)));}_tileLoaded(e,i,s,a){if(a)return e.state="errored",void(404!==a.status?this._source.fire(new t.j(a,{tile:e})):this.update(this.transform,this.terrain));e.timeAdded=t.h.now(),"expired"===s&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(i,e),"raster-dem"===this.getSource().type&&e.dem&&this._backfillDEM(e),this._state.initializeTileState(e,this.map?this.map.painter:null),e.aborted||this._source.fire(new t.k("data",{dataType:"source",tile:e,coord:e.tileID}));}_backfillDEM(t){const e=this.getRenderableIds();for(let s=0;s<e.length;s++){const a=e[s];if(t.neighboringTiles&&t.neighboringTiles[a]){const e=this.getTileByID(a);i(t,e),i(e,t);}}function i(t,e){t.needsHillshadePrepare=!0,t.needsTerrainPrepare=!0;let i=e.tileID.canonical.x-t.tileID.canonical.x;const s=e.tileID.canonical.y-t.tileID.canonical.y,a=Math.pow(2,t.tileID.canonical.z),o=e.tileID.key;0===i&&0===s||Math.abs(s)>1||(Math.abs(i)>1&&(1===Math.abs(i+a)?i+=a:1===Math.abs(i-a)&&(i-=a)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,i,s),t.neighboringTiles&&t.neighboringTiles[o]&&(t.neighboringTiles[o].backfilled=!0)));}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,e,i,s){for(const a in this._tiles){let o=this._tiles[a];if(s[a]||!o.hasData()||o.tileID.overscaledZ<=e||o.tileID.overscaledZ>i)continue;let r=o.tileID;for(;o&&o.tileID.overscaledZ>e+1;){const t=o.tileID.scaledTo(o.tileID.overscaledZ-1);o=this._tiles[t.key],o&&o.hasData()&&(r=t);}let n=r;for(;n.overscaledZ>e;)if(n=n.scaledTo(n.overscaledZ-1),t[n.key]){s[r.key]=r;break}}}findLoadedParent(t,e){if(t.key in this._loadedParentTiles){const i=this._loadedParentTiles[t.key];return i&&i.tileID.overscaledZ>=e?i:null}for(let i=t.overscaledZ-1;i>=e;i--){const e=t.scaledTo(i),s=this._getLoadedTile(e);
vendor: 4,100 bytes, line 41
41if(s)return s}}_getLoadedTile(t){const e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)}updateCacheSize(e){const i=Math.ceil(e.width/this._source.tileSize)+1,s=Math.ceil(e.height/this._source.tileSize)+1,a=Math.floor(i*s*(null===this._maxTileCacheZoomLevels?t.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),o="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,a):a;this._cache.setMaxSize(o);}handleWrapJump(t){const e=Math.round((t-(void 0===this._prevLng?t:this._prevLng))/360);if(this._prevLng=t,e){const t={};for(const i in this._tiles){const s=this._tiles[i];s.tileID=s.tileID.unwrapTo(s.tileID.wrap+e),t[s.tileID.key]=s;}this._tiles=t;for(const t in this._timers)clearTimeout(this._timers[t]),delete this._timers[t];for(const t in this._tiles)this._setTileReloadTimer(t,this._tiles[t]);}}update(e,i){if(this.transform=e,this.terrain=i,!this._sourceLoaded||this._paused)return;let s;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?s=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((e=>new t.O(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y))):(s=e.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:i}),this._source.hasTile&&(s=s.filter((t=>this._source.hasTile(t))))):s=[];const a=e.coveringZoomLevel(this._source),o=Math.max(a-K.maxOverzooming,this._source.minzoom),r=Math.max(a+K.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){const t={};for(const e of s)if(e.canonical.z>this._source.minzoom){const i=e.scaledTo(e.canonical.z-1);t[i.key]=i;const s=e.scaledTo(Math.max(this._source.minzoom,Math.min(e.canonical.z,5)));t[s.key]=s;}s=s.concat(Object.values(t));}const n=0===s.length&&!this._updated&&this._didEmitContent;this._updated=!0,n&&this.fire(new t.k("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));const l=this._updateRetainedTiles(s,a);if(Y(this._source.type)){const e={},n={},h=Object.keys(l),c=t.h.now();for(const t of h){const i=l[t],s=this._tiles[t];if(!s||0!==s.fadeEndTime&&s.fadeEndTime<=c)continue;const a=this.findLoadedParent(i,o);a&&(this._addTile(a.tileID),e[a.tileID.key]=a.tileID),n[t]=i;}this._retainLoadedChildren(n,a,r,l);for(const t in e)l[t]||(this._coveredTiles[t]=!0,l[t]=e[t]);if(i){const t={},e={};for(const i of s)this._tiles[i.key].hasData()?t[i.key]=i:e[i.key]=i;for(const i in e){const s=e[i].children(this._source.maxzoom);this._tiles[s[0].key]&&this._tiles[s[1].key]&&this._tiles[s[2].key]&&this._tiles[s[3].key]&&(t[s[0].key]=l[s[0].key]=s[0],t[s[1].key]=l[s[1].key]=s[1],t[s[2].key]=l[s[2].key]=s[2],t[s[3].key]=l[s[3].key]=s[3],delete e[i]);}for(const i in e){const s=this.findLoadedParent(e[i],this._source.minzoom);if(s){t[s.tileID.key]=l[s.tileID.key]=s.tileID;for(const e in t)t[e].isChildOf(s.tileID)&&delete t[e];}}for(const e in this._tiles)t[e]||(this._coveredTiles[e]=!0);}}for(const t in l)this._tiles[t].clearFadeHold();const h=t.ab(this._tiles,l);for(const t of h){const e=this._tiles[t];e.hasSymbolBuckets&&!e.holdingForFade()?e.setHoldDuration(this.map._fadeDuration):e.hasSymbolBuckets&&!e.symbolFadeFinished()||this._removeTile(t);}this._updateLoadedParentTileCache();}releaseSymbolFadeTiles(){for(const t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(t);}_updateRetainedTiles(t,e){const i={},s={},a=Math.max(e-K.maxOverzooming,this._source.minzoom),o=Math.max(e+K.maxUnderzooming,this._source.minzoom),r={};for(const s of t){const t=this._addTile(s);i[s.key]=s,t.hasData()||e<this._source.maxzoom&&(r[s.key]=s);}this._retainLoadedChildren(r,e,o,i);for(const o of t){let t=this._tiles[o.key];if(t.hasData())continue;if(e+1>this._source.maxzoom){const t=o.children(this._source.maxzoom)[0],e=this.getTile(t);if(e&&e.hasData()){i[t.key]=t;continue}}else {const t=o.children(this._source.maxzoom);
vendor: 10,438 bytes, line 41
41if(i[t[0].key]&&i[t[1].key]&&i[t[2].key]&&i[t[3].key])continue}let r=t.wasRequested();for(let e=o.overscaledZ-1;e>=a;--e){const a=o.scaledTo(e);if(s[a.key])break;if(s[a.key]=!0,t=this.getTile(a),!t&&r&&(t=this._addTile(a)),t){const e=t.hasData();if((r||e)&&(i[a.key]=a),r=t.wasRequested(),e)break}}}return i}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const t in this._tiles){const e=[];let i,s=this._tiles[t].tileID;for(;s.overscaledZ>0;){if(s.key in this._loadedParentTiles){i=this._loadedParentTiles[s.key];break}e.push(s.key);const t=s.scaledTo(s.overscaledZ-1);if(i=this._getLoadedTile(t),i)break;s=t;}for(const t of e)this._loadedParentTiles[t]=i;}}_addTile(e){let i=this._tiles[e.key];if(i)return i;i=this._cache.getAndRemove(e),i&&(this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null),this._cacheTimers[e.key]&&(clearTimeout(this._cacheTimers[e.key]),delete this._cacheTimers[e.key],this._setTileReloadTimer(e.key,i)));const s=i;return i||(i=new W(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,this._tileLoaded.bind(this,i,e.key,i.state))),i.uses++,this._tiles[e.key]=i,s||this._source.fire(new t.k("dataloading",{tile:i,coord:i.tileID,dataType:"source"})),i}_setTileReloadTimer(t,e){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);const i=e.getExpiryTimeout();i&&(this._timers[t]=setTimeout((()=>{this._reloadTile(t,"expired"),delete this._timers[t];}),i));}_removeTile(t){const e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()&&"reloading"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))));}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const t in this._tiles)this._removeTile(t);this._cache.reset();}tilesIn(e,i,s){const a=[],o=this.transform;if(!o)return a;const r=s?o.getCameraQueryGeometry(e):e,n=e.map((t=>o.pointCoordinate(t,this.terrain))),l=r.map((t=>o.pointCoordinate(t,this.terrain))),h=this.getIds();let c=1/0,u=1/0,d=-1/0,_=-1/0;for(const t of l)c=Math.min(c,t.x),u=Math.min(u,t.y),d=Math.max(d,t.x),_=Math.max(_,t.y);for(let e=0;e<h.length;e++){const s=this._tiles[h[e]];if(s.holdingForFade())continue;const r=s.tileID,p=Math.pow(2,o.zoom-s.tileID.overscaledZ),m=i*s.queryPadding*t.N/s.tileSize/p,f=[r.getTilePoint(new t.U(c,u)),r.getTilePoint(new t.U(d,_))];if(f[0].x-m<t.N&&f[0].y-m<t.N&&f[1].x+m>=0&&f[1].y+m>=0){const t=n.map((t=>r.getTilePoint(t))),e=l.map((t=>r.getTilePoint(t)));a.push({tile:s,tileID:r,queryGeometry:t,cameraQueryGeometry:e,scale:p});}}return a}getVisibleCoordinates(t){const e=this.getRenderableIds(t).map((t=>this._tiles[t].tileID));for(const t of e)t.posMatrix=this.transform.calculatePosMatrix(t.toUnwrapped());return e}hasTransition(){if(this._source.hasTransition())return !0;if(Y(this._source.type)){const e=t.h.now();for(const t in this._tiles)if(this._tiles[t].fadeEndTime>=e)return !0}return !1}setFeatureState(t,e,i){this._state.updateState(t=t||"_geojsonTileLayer",e,i);}removeFeatureState(t,e,i){this._state.removeFeatureState(t=t||"_geojsonTileLayer",e,i);}getFeatureState(t,e){return this._state.getState(t=t||"_geojsonTileLayer",e)}setDependencies(t,e,i){const s=this._tiles[t];s&&s.setDependencies(e,i);}reloadTilesForDependencies(t,e){for(const i in this._tiles)this._tiles[i].hasDependency(t,e)&&this._reloadTile(i,"reloading");this._cache.filter((i=>!i.hasDependency(t,e)));}}function Q(t,e){const i=Math.abs(2*t.wrap)-+(t.wrap<0),s=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||s-i||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function Y(t){return "raster"===t||"image"===t||"video"===t}K.maxOverzooming=10,K.maxUnderzooming=3;const J="mapboxgl_preloaded_worker_pool";class tt{constructor(){this.active={};}acquire(e){if(!this.workers)for(this.workers=[];this.workers.length<tt.workerCount;)this.workers.push(new Worker(t.c.WORKER_URL));return this.active[e]=!0,this.workers.slice()}release(t){delete this.active[t],0===this.numActive()&&(this.workers.forEach((t=>{t.terminate();})),this.workers=null);}isPreloaded(){return !!this.active[J]}numActive(){return Object.keys(this.active).length}}const et=Math.floor(t.h.hardwareConcurrency/2);let it;function st(){return it||(it=new tt),it}tt.workerCount=t.ac(globalThis)?Math.max(Math.min(et,3),1):1;class at{constructor(t,e){this.reset(t,e);}reset(t,e){this.points=t||[],this._distances=[0];for(let t=1;t<this.points.length;t++)this._distances[t]=this._distances[t-1]+this.points[t].dist(this.points[t-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(e||0,.5*this.length),this.paddedLength=this.length-2*this.padding;}lerp(e){if(1===this.points.length)return this.points[0];e=t.ad(e,0,1);let i=1,s=this._distances[i];const a=e*this.paddedLength+this.padding;for(;s<a&&i<this._distances.length;)s=this._distances[++i];const o=i-1,r=this._distances[o],n=s-r,l=n>0?(a-r)/n:0;return this.points[o].mult(1-l).add(this.points[i].mult(l))}}function ot(t,e){let i=!0;return "always"===t||"never"!==t&&"never"!==e||(i=!1),i}class rt{constructor(t,e,i){const s=this.boxCells=[],a=this.circleCells=[];this.xCellCount=Math.ceil(t/i),this.yCellCount=Math.ceil(e/i);for(let t=0;t<this.xCellCount*this.yCellCount;t++)s.push([]),a.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=t,this.height=e,this.xScale=this.xCellCount/t,this.yScale=this.yCellCount/e,this.boxUid=0,this.circleUid=0;}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(t,e,i,s,a){this._forEachCell(e,i,s,a,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(i),this.bboxes.push(s),this.bboxes.push(a);}insertCircle(t,e,i,s){this._forEachCell(e-s,i-s,e+s,i+s,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(i),this.circles.push(s);}_insertBoxCell(t,e,i,s,a,o){this.boxCells[a].push(o);}_insertCircleCell(t,e,i,s,a,o){this.circleCells[a].push(o);}_query(t,e,i,s,a,o,r){if(i<0||t>this.width||s<0||e>this.height)return [];const n=[];if(t<=0&&e<=0&&this.width<=i&&this.height<=s){if(a)return [{key:null,x1:t,y1:e,x2:i,y2:s}];for(let t=0;t<this.boxKeys.length;t++)n.push({key:this.boxKeys[t],x1:this.bboxes[4*t],y1:this.bboxes[4*t+1],x2:this.bboxes[4*t+2],y2:this.bboxes[4*t+3]});for(let t=0;t<this.circleKeys.length;t++){const e=this.circles[3*t],i=this.circles[3*t+1],s=this.circles[3*t+2];n.push({key:this.circleKeys[t],x1:e-s,y1:i-s,x2:e+s,y2:i+s});}}else this._forEachCell(t,e,i,s,this._queryCell,n,{hitTest:a,overlapMode:o,seenUids:{box:{},circle:{}}},r);return n}query(t,e,i,s){return this._query(t,e,i,s,!1,null)}hitTest(t,e,i,s,a,o){return this._query(t,e,i,s,!0,a,o).length>0}hitTestCircle(t,e,i,s,a){const o=t-i,r=t+i,n=e-i,l=e+i;if(r<0||o>this.width||l<0||n>this.height)return !1;const h=[];return this._forEachCell(o,n,r,l,this._queryCellCircle,h,{hitTest:!0,overlapMode:s,circle:{x:t,y:e,radius:i},seenUids:{box:{},circle:{}}},a),h.length>0}_queryCell(t,e,i,s,a,o,r,n){const{seenUids:l,hitTest:h,overlapMode:c}=r,u=this.boxCells[a];if(null!==u){const a=this.bboxes;for(const r of u)if(!l.box[r]){l.box[r]=!0;const u=4*r,d=this.boxKeys[r];if(t<=a[u+2]&&e<=a[u+3]&&i>=a[u+0]&&s>=a[u+1]&&(!n||n(d))&&(!h||!ot(c,d.overlapMode))&&(o.push({key:d,x1:a[u],y1:a[u+1],x2:a[u+2],y2:a[u+3]}),h))return !0}}const d=this.circleCells[a];if(null!==d){const a=this.circles;for(const r of d)if(!l.circle[r]){l.circle[r]=!0;const u=3*r,d=this.circleKeys[r];if(this._circleAndRectCollide(a[u],a[u+1],a[u+2],t,e,i,s)&&(!n||n(d))&&(!h||!ot(c,d.overlapMode))){const t=a[u],e=a[u+1],i=a[u+2];if(o.push({key:d,x1:t-i,y1:e-i,x2:t+i,y2:e+i}),h)return !0}}}return !1}_queryCellCircle(t,e,i,s,a,o,r,n){const{circle:l,seenUids:h,overlapMode:c}=r,u=this.boxCells[a];if(null!==u){const t=this.bboxes;for(const e of u)if(!h.box[e]){h.box[e]=!0;const i=4*e,s=this.boxKeys[e];if(this._circleAndRectCollide(l.x,l.y,l.radius,t[i+0],t[i+1],t[i+2],t[i+3])&&(!n||n(s))&&!ot(c,s.overlapMode))return o.push(!0),!0}}const d=this.circleCells[a];if(null!==d){const t=this.circles;for(const e of d)if(!h.circle[e]){h.circle[e]=!0;const i=3*e,s=this.circleKeys[e];if(this._circlesCollide(t[i],t[i+1],t[i+2],l.x,l.y,l.radius)&&(!n||n(s))&&!ot(c,s.overlapMode))return o.push(!0),!0}}}_forEachCell(t,e,i,s,a,o,r,n){const l=this._convertToXCellCoord(t),h=this._convertToYCellCoord(e),c=this._convertToXCellCoord(i),u=this._convertToYCellCoord(s);for(let d=l;d<=c;d++)for(let l=h;l<=u;l++)if(a.call(this,t,e,i,s,this.xCellCount*l+d,o,r,n))return}_convertToXCellCoord(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))}_convertToYCellCoord(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))}_circlesCollide(t,e,i,s,a,o){const r=s-t,n=a-e,l=i+o;return l*l>r*r+n*n}_circleAndRectCollide(t,e,i,s,a,o,r){const n=(o-s)/2,l=Math.abs(t-(s+n));if(l>n+i)return !1;const h=(r-a)/2,c=Math.abs(e-(a+h));if(c>h+i)return !1;if(l<=n||c<=h)return !0;const u=l-n,d=c-h;return u*u+d*d<=i*i}}function nt(e,i,s,a,o){const r=t.Z();return i?(t.a0(r,r,[1/o,1/o,1]),s||t.ae(r,r,a.angle)):t.a1(r,a.labelPlaneMatrix,e),r}function lt(e,i,s,a,o){if(i){const i=t.af(e);return t.a0(i,i,[o,o,1]),s||t.ae(i,i,-a.angle),i}return a.glCoordMatrix}function ht(e,i,s){let a;s?(a=[e.x,e.y,s(e.x,e.y),1],t.ag(a,a,i)):(a=[e.x,e.y,0,1],Tt(a,a,i));const o=a[3];return {point:new t.P(a[0]/o,a[1]/o),signedDistanceFromCamera:o}}function ct(t,e){return .5+t/e*.5}function ut(t,e){const i=t[0]/t[3],s=t[1]/t[3];return i>=-e[0]&&i<=e[0]&&s>=-e[1]&&s<=e[1]}function dt(e,i,s,a,o,r,n,l,h,c){const u=a?e.textSizeData:e.iconSizeData,d=t.ah(u,s.transform.zoom),_=[256/s.width*2+1,256/s.height*2+1],p=a?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;p.clear();const m=e.lineVertexArray,f=a?e.text.placedSymbolArray:e.icon.placedSymbolArray,g=s.transform.width/s.transform.height;let v=!1;for(let a=0;a<f.length;a++){const x=f.get(a);if(x.hidden||x.writingMode===t.ai.vertical&&!v){wt(x.numGlyphs,p);continue}let y;if(v=!1,c?(y=[x.anchorX,x.anchorY,c(x.anchorX,x.anchorY),1],t.ag(y,y,i)):(y=[x.anchorX,x.anchorY,0,1],Tt(y,y,i)),!ut(y,_)){wt(x.numGlyphs,p);continue}const b=ct(s.transform.cameraToCenterDistance,y[3]),w=t.aj(u,d,x),T=n?w/b:w*b,I=new t.P(x.anchorX,x.anchorY),E=ht(I,o,
41c).point,S={projections:{},offsets:{}},C=mt(x,T,!1,l,i,o,r,e.glyphOffsetArray,m,p,E,I,S,g,h,c);v=C.useVertical,(C.notEnoughRoom||v||C.needsFlipping&&mt(x,T,!0,l,i,o,r,e.glyphOffsetArray,m,p,E,I,S,g,h,c).notEnoughRoom)&&wt(x.numGlyphs,p);}a?e.text.dynamicLayoutVertexBuffer.updateData(p):e.icon.dynamicLayoutVertexBuffer.updateData(p);}function _t(t,e,i,s,a,o,r,n,l,h,c,u,d){const _=n.glyphStartIndex+n.numGlyphs,p=n.lineStartIndex,m=n.lineStartIndex+n.lineLength,f=e.getoffsetX(n.glyphStartIndex),g=e.getoffsetX(_-1),v=yt(t*f,i,s,a,o,r,n.segment,p,m,l,h,c,u,d);if(!v)return null;const x=yt(t*g,i,s,a,o,r,n.segment,p,m,l,h,c,u,d);return x?{first:v,last:x}:null}function pt(e,i,s,a){return e===t.ai.horizontal&&Math.abs(s.y-i.y)>Math.abs(s.x-i.x)*a?{useVertical:!0}:(e===t.ai.vertical?i.y<s.y:i.x>s.x)?{needsFlipping:!0}:null}function mt(e,i,s,a,o,r,n,l,h,c,u,d,_,p,m,f){const g=i/24,v=e.lineOffsetX*g,x=e.lineOffsetY*g;let y;if(e.numGlyphs>1){const t=e.glyphStartIndex+e.numGlyphs,i=e.lineStartIndex,o=e.lineStartIndex+e.lineLength,c=_t(g,l,v,x,s,u,d,e,h,r,_,m,f);if(!c)return {notEnoughRoom:!0};const b=ht(c.first.point,n,f).point,w=ht(c.last.point,n,f).point;if(a&&!s){const t=pt(e.writingMode,b,w,p);if(t)return t}y=[c.first];for(let a=e.glyphStartIndex+1;a<t-1;a++)y.push(yt(g*l.getoffsetX(a),v,x,s,u,d,e.segment,i,o,h,r,_,m,f));y.push(c.last);}else {if(a&&!s){const i=ht(d,o,f).point,s=e.lineStartIndex+e.segment+1,a=new t.P(h.getx(s),h.gety(s)),r=ht(a,o,f),n=r.signedDistanceFromCamera>0?r.point:ft(d,a,i,1,o,f),l=pt(e.writingMode,i,n,p);if(l)return l}const i=yt(g*l.getoffsetX(e.glyphStartIndex),v,x,s,u,d,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,h,r,_,m,f);if(!i)return {notEnoughRoom:!0};y=[i];}for(const e of y)t.ak(c,e.point,e.angle);return {}}function ft(t,e,i,s,a,o){const r=ht(t.add(t.sub(e)._unit()),a,o).point,n=i.sub(r);return i.add(n._mult(s/n.mag()))}
41function gt(e,i){const{projectionCache:s,lineVertexArray:a,labelPlaneMatrix:o,tileAnchorPoint:r,distanceFromAnchor:n,getElevation:l,previousVertex:h,direction:c,absOffsetX:u}=i;if(s.projections[e])return s.projections[e];const d=new t.P(a.getx(e),a.gety(e)),_=ht(d,o,l);if(_.signedDistanceFromCamera>0)return s.projections[e]=_.point,_.point;const p=e-c;return ft(0===n?r:new t.P(a.getx(p),a.gety(p)),d,h,u-n+1,o,l)}function vt(t,e,i){return t._unit()._perp()._mult(e*i)}function xt(e,i,s,a,o,r,n,l){const{projectionCache:h,direction:c}=l;if(h.offsets[e])return h.offsets[e];const u=s.add(i);if(e+c<a||e+c>=o)return h.offsets[e]=u,u;const d=gt(e+c,l),_=vt(d.sub(s),n,c),p=s.add(_),m=d.add(_);return h.offsets[e]=t.al(r,u,p,m)||u,h.offsets[e]}function yt(t,e,i,s,a,o,r,n,l,h,c,u,d,_){const p=s?t-e:t+e;let m=p>0?1:-1,f=0;s&&(m*=-1,f=Math.PI),m<0&&(f+=Math.PI);let g,v,x=m>0?n+r:n+r+1,y=a,b=a,w=0,T=0;const I=Math.abs(p),E=[];let S;for(;w+T<=I;){if(x+=m,x<n||x>=l)return null;w+=T,b=y,v=g;const t={projectionCache:u,lineVertexArray:h,labelPlaneMatrix:c,tileAnchorPoint:o,distanceFromAnchor:w,getElevation:_,previousVertex:b,direction:m,absOffsetX:I};if(y=gt(x,t),0===i)E.push(b),S=y.sub(b);else {let e;const s=y.sub(b);e=0===s.mag()?vt(gt(x+m,t).sub(y),i,m):vt(s,i,m),v||(v=b.add(e)),g=xt(x,e,y,n,l,v,i,t),E.push(v),S=g.sub(v);}T=S.mag();}const C=S._mult((I-w)/T)._add(v||b),P=f+Math.atan2(y.y-b.y,y.x-b.x);return E.push(C),{point:C,angle:d?P:0,path:E}}const bt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function wt(t,e){for(let i=0;i<t;i++){const t=e.length;e.resize(t+4),e.float32.set(bt,3*t);}}function Tt(t,e,i){const s=e[0],a=e[1];return t[0]=i[0]*s+i[4]*a+i[12],t[1]=i[1]*s+i[5]*a+i[13],t[3]=i[3]*s+i[7]*a+i[15],t}const It=100;class Et{constructor(t,e=new rt(t.width+200,t.height+200,25),i=new rt(t.width+200,t.height+200,25)){this.transform=t,this.grid=e,this.ignoredGrid=i,this.pitchfactor=Math.cos(t._pitch)*t.cameraToCenterDistance,this.screenRightBoundary=t.width+It,this.screenBottomBoundary=t.height+It,this.gridRightBoundary=t.width+200,this.gridBottomBoundary=t.height+200,this.perspectiveRatioCutoff=.6;}placeCollisionBox(t,e,i,s,a,o){const r=this.projectAndGetPerspectiveRatio(s,t.anchorPointX,t.anchorPointY,o),n=i*r.perspectiveRatio,l=t.x1*n+r.point.x,h=t.y1*n+r.point.y,c=t.x2*n+r.point.x,u=t.y2*n+r.point.y;return !this.isInsideGrid(l,h,c,u)||"always"!==e&&this.grid.hitTest(l,h,c,u,e,a)||r.perspectiveRatio<this.perspectiveRatioCutoff?{box:[],offscreen:!1}:{box:[l,h,c,u],offscreen:this.isOffscreen(l,h,c,u)}}placeCollisionCircles(e,i,s,a,o,r,n,l,h,c,u,d,_,p){const m=[],f=new t.P(i.anchorX,i.anchorY),g=ht(f,r,p),v=ct(this.transform.cameraToCenterDistance,g.signedDistanceFromCamera),x=(c?o/v:o*v)/t.ap,y=ht(f,n,p).point,b=_t(x,a,i.lineOffsetX*x,i.lineOffsetY*x,!1,y,f,i,s,n,{projections:{},offsets:{}},!1,p);let w=!1,T=!1,I=!0;if(b){const i=.5*d*v+_,s=new t.P(-100,-100),a=new t.P(this.screenRightBoundary,this.screenBottomBoundary),o=new at,r=b.first,n=b.last;let c=[];for(let t=r.path.length-1;t>=1;t--)c.push(r.path[t]);for(let t=1;t<n.path.length;t++)c.push(n.path[t]);const f=2.5*i;if(l){const t=c.map((t=>ht(t,l,p)));c=t.some((t=>t.signedDistanceFromCamera<=0))?[]:t.map((t=>t.point));}let g=[];if(c.length>0){const e=c[0].clone(),i=c[0].clone();for(let t=1;t<c.length;t++)e.x=Math.min(e.x,c[t].x),e.y=Math.min(e.y,c[t].y),i.x=Math.max(i.x,c[t].x),i.y=Math.max(i.y,c[t].y);g=e.x>=s.x&&i.x<=a.x&&e.y>=s.y&&i.y<=a.y?[c]:i.x<s.x||e.x>a.x||i.y<s.y||e.y>a.y?[]:t.am([c],s.x,s.y,a.x,a.y);}for(const t of g){o.reset(t,.25*i);let s=0;s=o.length<=.5*i?1:Math.ceil(o.paddedLength/f)+1;for(let t=0;t<s;t++){const a=t/Math.max(s-1,1),r=o.lerp(a),n=r.x+It,l=r.y+It;m.push(n,l,i,0);const c=n-i,d=l-i,_=n+i,p=l+i;if(I=I&&this.isOffscreen(c,d,_,p),T=T||this.isInsideGrid(c,d,_,p),"always"!==e&&this.grid.hitTestCircle(n,l,i,e,u)&&(w=!0,!h))return {circles:[],offscreen:!1,collisionDetected:w}}}}return {circles:!h&&w||!T||v<this.perspectiveRatioCutoff?[]:m,offscreen:I,collisionDetected:w}}queryRenderedSymbols(e){if(0===e.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return {};const i=[];let s=1/0,a=1/0,o=-1/0,r=-1/0;for(const n of e){const e=new t.P(n.x+It,n.y+It);s=Math.min(s,e.x),a=Math.min(a,e.y),o=Math.max(o,e.x),r=Math.max(r,e.y),i.push(e);}const n=this.grid.query(s,a,o,r).concat(this.ignoredGrid.query(s,a,o,r)),l={},h={};for(const e of n){const s=e.key;if(void 0===l[s.bucketInstanceId]&&(l[s.bucketInstanceId]={}),l[s.bucketInstanceId][s.featureIndex])continue;const a=[new t.P(e.x1,e.y1),new t.P(e.x2,e.y1),new t.P(e.x2,e.y2),new t.P(e.x1,e.y2)];t.an(i,a)&&(l[s.bucketInstanceId][s.featureIndex]=!0,void 0===h[s.bucketInstanceId]&&(h[s.bucketInstanceId]=[]),h[s.bucketInstanceId].push(s.featureIndex));}return h}insertCollisionBox(t,e,i,s,a,o){(i?this.ignoredGrid:this.grid).insert({bucketInstanceId:s,featureIndex:a,collisionGroupID:o,overlapMode:e},t[0],t[1],t[2],t[3]);}insertCollisionCircles(t,e,i,s,a,o){const r=i?this.ignoredGrid:this.grid,n={bucketInstanceId:s,featureIndex:a,collisionGroupID:o,overlapMode:e};for(let e=0;e<t.length;
41e+=4)r.insertCircle(n,t[e],t[e+1],t[e+2]);}projectAndGetPerspectiveRatio(e,i,s,a){let o;return a?(o=[i,s,a(i,s),1],t.ag(o,o,e)):(o=[i,s,0,1],Tt(o,o,e)),{point:new t.P((o[0]/o[3]+1)/2*this.transform.width+It,(-o[1]/o[3]+1)/2*this.transform.height+It),perspectiveRatio:.5+this.transform.cameraToCenterDistance/o[3]*.5}}isOffscreen(t,e,i,s){return i<It||t>=this.screenRightBoundary||s<It||e>this.screenBottomBoundary}isInsideGrid(t,e,i,s){return i>=0&&t<this.gridRightBoundary&&s>=0&&e<this.gridBottomBoundary}getViewportMatrix(){const e=t.ao([]);return t.$(e,e,[-100,-100,0]),e}}function St(e,i,s){return i*(t.N/(e.tileSize*Math.pow(2,s-e.tileID.overscaledZ)))}class Ct{constructor(t,e,i,s){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?e:-e))):s&&i?1:0,this.placed=i;}isHidden(){return 0===this.opacity&&!this.placed}}class Pt{constructor(t,e,i,s,a){this.text=new Ct(t?t.text:null,e,i,a),this.icon=new Ct(t?t.icon:null,e,s,a);}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class Dt{constructor(t,e,i){this.text=t,this.icon=e,this.skipFade=i;}}class Mt{constructor(){this.invProjMatrix=t.Z(),this.viewportMatrix=t.Z(),this.circles=[];}}class zt{constructor(t,e,i,s,a){this.bucketInstanceId=t,this.featureIndex=e,this.sourceLayerIndex=i,this.bucketIndex=s,this.tileID=a;}}class Lt{constructor(t){this.crossSourceCollisions=t,this.maxGroupID=0,this.collisionGroups={};}get(t){if(this.crossSourceCollisions)return {ID:0,predicate:null};if(!this.collisionGroups[t]){const e=++this.maxGroupID;this.collisionGroups[t]={ID:e,predicate:t=>t.collisionGroupID===e};}return this.collisionGroups[t]}}function At(e,i,s,a,o){const{horizontalAlign:r,verticalAlign:n}=t.au(e);return new t.P(-(r-.5)*i+a[0]*o,-(n-.5)*s+a[1]*o)}function Rt(e,i,s,a,o,r){const{x1:n,x2:l,y1:h,y2:c,anchorPointX:u,anchorPointY:d}=e,_=new t.P(i,s);return a&&_._rotate(o?r:-r),{x1:n+_.x,y1:h+_.y,x2:l+_.x,y2:c+_.y,anchorPointX:u,anchorPointY:d}}class kt{constructor(t,e,i,s,a){this.transform=t.clone(),this.terrain=e,this.collisionIndex=new Et(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=i,this.retainedQueryData={},this.collisionGroups=new Lt(s),this.collisionCircleArrays={},this.prevPlacement=a,a&&(a.prevPlacement=void 0),this.placedOrientations={};}getBucketParts(e,i,s,a){const o=s.getBucket(i),r=s.latestFeatureIndex;if(!o||!r||i.id!==o.layerIds[0])return;const n=s.collisionBoxArray,l=o.layers[0].layout,h=Math.pow(2,this.transform.zoom-s.tileID.overscaledZ),c=s.tileSize/t.N,u=this.transform.calculatePosMatrix(s.tileID.toUnwrapped()),d="map"===l.get("text-pitch-alignment"),_="map"===l.get("text-rotation-alignment"),p=St(s,1,this.transform.zoom),m=nt(u,d,_,this.transform,p);let f=null;if(d){const e=lt(u,d,_,this.transform,p);f=t.a1([],this.transform.labelPlaneMatrix,e);}this.retainedQueryData[o.bucketInstanceId]=new zt(o.bucketInstanceId,r,o.sourceLayerIndex,o.index,s.tileID);const g={bucket:o,layout:l,posMatrix:u,textLabelPlaneMatrix:m,labelToScreenMatrix:f,scale:h,textPixelRatio:c,holdingForFade:s.holdingForFade(),collisionBoxArray:n,partiallyEvaluatedTextSize:t.ah(o.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(o.sourceID)};if(a)for(const t of o.sortKeyRanges){const{sortKey:i,symbolInstanceStart:s,symbolInstanceEnd:a}=t;e.push({sortKey:i,symbolInstanceStart:s,symbolInstanceEnd:a,parameters:g});}else e.push({symbolInstanceStart:0,symbolInstanceEnd:o.symbolInstances.length,parameters:g});}attemptAnchorPlacement(e,i,s,a,o,r,n,l,h,c,u,d,_,p,m,f){const g=t.aq[e.textAnchor],v=[e.textOffset0,e.textOffset1],x=At(g,s,a,v,o),y=this.collisionIndex.placeCollisionBox(Rt(i,x.x,x.y,r,n,this.transform.angle),u,l,h,c.predicate,f);if((!m||0!==this.collisionIndex.placeCollisionBox(Rt(m,x.x,x.y,r,n,this.transform.angle),u,l,h,c.predicate,f).box.length)&&y.box.length>0){let t;if(this.prevPlacement&&this.prevPlacement.variableOffsets[d.crossTileID]&&this.prevPlacement.placements[d.crossTileID]&&this.prevPlacement.placements[d.crossTileID].text&&(t=this.prevPlacement.variableOffsets[d.crossTileID].anchor),0===d.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[d.crossTileID]={textOffset:v,width:s,height:a,anchor:g,textBoxScale:o,prevAnchor:t},this.markUsedJustification(_,g,d,p),_.allowVerticalPlacement&&(this.markUsedOrientation(_,p,d),this.placedOrientations[d.crossTileID]=p),{shift:x,placedGlyphBoxes:y}}}placeLayerBucketPart(e,i,s){const{bucket:a,layout:o,posMatrix:r,textLabelPlaneMatr
41ix:n,labelToScreenMatrix:l,textPixelRatio:h,holdingForFade:c,collisionBoxArray:u,partiallyEvaluatedTextSize:d,collisionGroup:_}=e.parameters,p=o.get("text-optional"),m=o.get("icon-optional"),f=t.ar(o,"text-overlap","text-allow-overlap"),g="always"===f,v=t.ar(o,"icon-overlap","icon-allow-overlap"),x="always"===v,y="map"===o.get("text-rotation-alignment"),b="map"===o.get("text-pitch-alignment"),w="none"!==o.get("icon-text-fit"),T="viewport-y"===o.get("symbol-z-order"),I=g&&(x||!a.hasIconData()||m),E=x&&(g||!a.hasTextData()||p);!a.collisionArrays&&u&&a.deserializeCollisionBoxes(u);const S=this.retainedQueryData[a.bucketInstanceId].tileID,C=this.terrain?(t,e)=>this.terrain.getElevation(S,t,e):null,P=(e,u)=>{var x,T;if(i[e.crossTileID])return;if(c)return void(this.placements[e.crossTileID]=new Dt(!1,!1,!1));let S=!1,P=!1,D=!0,M=null,z={box:null,offscreen:null},L={box:null,offscreen:null},A=null,R=null,k=null,F=0,B=0,O=0;u.textFeatureIndex?F=u.textFeatureIndex:e.useRuntimeCollisionCircles&&(F=e.featureIndex),u.verticalTextFeatureIndex&&(B=u.verticalTextFeatureIndex);const N=u.textBox;if(N){const i=i=>{let s=t.ai.horizontal;if(a.allowVerticalPlacement&&!i&&this.prevPlacement){const t=this.prevPlacement.placedOrientations[e.crossTileID];t&&(this.placedOrientations[e.crossTileID]=t,s=t,this.markUsedOrientation(a,s,e));}return s},s=(i,s)=>{if(a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&u.verticalTextBox){for(const e of a.writingModes)if(e===t.ai.vertical?(z=s(),L=z):z=i(),z&&z.box&&z.box.length)break}else z=i();},o=e.textAnchorOffsetStartIndex,n=e.textAnchorOffsetEndIndex;if(n===o){const o=(t,i)=>{const s=this.collisionIndex.placeCollisionBox(t,f,h,r,_.predicate,C);return s&&s.box&&s.box.length&&(this.markUsedOrientation(a,i,e),this.placedOrientations[e.crossTileID]=i),s};s((()=>o(N,t.ai.horizontal)),(()=>{const i=u.verticalTextBox;return a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&i?o(i,t.ai.vertical):{box:null,offscreen:null}})),i(z&&z.box&&z.box.length);}else {let l=t.aq[null===(T=null===(x=this.prevPlacement)||void 0===x?void 0:x.variableOffsets[e.crossTileID])||void 0===T?void 0:T.anchor];const c=(t,i,s)=>{const c=t.x2-t.x1,u=t.y2-t.y1,d=e.textBoxScale,p=w&&"never"===v?i:null;let m={box:[],offscreen:!1},g="never"===f?1:2,x="never";l&&g++;for(let i=0;i<g;i++){for(let i=o;i<n;i++){const o=a.textAnchorOffsets.get(i);if(l&&o.textAnchor!==l)continue;const n=this.attemptAnchorPlacement(o,t,c,u,d,y,b,h,r,_,x,e,a,s,p,C);if(n&&(m=n.placedGlyphBoxes,m&&m.box&&m.box.length))return S=!0,M=n.shift,m}l?l=null:x=f;}return m};s((()=>c(N,u.iconBox,t.ai.horizontal)),(()=>{const i=u.verticalTextBox;return a.allowVerticalPlacement&&!(z&&z.box&&z.box.length)&&e.numVerticalGlyphVertices>0&&i?c(i,u.verticalIconBox,t.ai.vertical):{box:null,offscreen:null}})),z&&(S=z.box,D=z.offscreen);const d=i(z&&z.box);if(!S&&this.prevPlacement){const t=this.prevPlacement.variableOffsets[e.crossTileID];t&&(this.variableOffsets[e.crossTileID]=t,this.markUsedJustification(a,t.anchor,e,d));}}}if(A=z,S=A&&A.box&&A.box.length>0,D=A&&A.offscreen,e.useRuntimeCollisionCircles){const i=a.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),h=t.aj(a.textSizeData,d,i),c=o.get("text-padding");R=this.collisionIndex.placeCollisionCircles(f,i,a.lineVertexArray,a.glyphOffsetArray,h,r,n,l,s,b,_.predicate,e.collisionCircleDiameter,c,C),R.circles.length&&R.collisionDetected&&!s&&t.w("Collisions detected, but collision boxes are not shown"),S=g||R.circles.length>0&&!R.collisionDetected,D=D&&R.offscreen;}if(u.iconFeatureIndex&&(O=u.iconFeatureIndex),u.iconBox){const t=t=>{const e=w&&M?Rt(t,M.x,M.y,y,b,this.transform.angle):t;return this.collisionIndex.placeCollisionBox(e,v,h,r,_.predicate,C)};L&&L.box&&L.box.length&&u.verticalIconBox?(k=t(u.verticalIconBox),P=k.box.length>0):(k=t(u.iconBox),P=k.box.length>0),D=D&&k.offscreen;}const U=p||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,Z=m||0===e.numIconVertices;if(U||Z?Z?U||(P=P&&S):S=P&&S:P=S=P&&S,S&&A&&A.box&&this.collisionIndex.insertCollisionBox(A.box,f,o.get("text-ignore-placement"),a.bucketInstanceId,L&&L.box&&B?B:F,_.ID),P&&k&&this.collisionIndex.insertCollisionBox(k.box,v,o.get("icon-ignore-placement"),a.bucketInstanceId,O,_.ID),R&&(S&&this.collisionIndex.insertCollisionCircles(R.circles,f,o.get("text-ignore-placement"),a.bucketInstanceId,F,_.ID),s)){const t=a.bucketInstanceId;let e=this.collisionCircleArrays[t];void 0===e&&(e=this.collisionCircleArrays[t]=new Mt);for(let t=0;t<R.circles.length;t+=4)e.circles.push(R.circles[t+0]),e.circles.push(R.circles[t+1]),e.circles.push(R.circles[t+2]),e.circles.push(R.collisionDetected?1:0);}if(0===e.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");if(0===a.bucketInstanceId)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[e.crossTileID]=new Dt(S||I,P||E,D||a.justReloaded),i[e.crossTileID]=!0;};
vendor: 10,613 bytes, line 41
41if(T){if(0!==e.symbolInstanceStart)throw new Error("bucket.bucketInstanceId should be 0");const t=a.getSortedSymbolIndexes(this.transform.angle);for(let e=t.length-1;e>=0;--e){const i=t[e];P(a.symbolInstances.get(i),a.collisionArrays[i]);}}else for(let t=e.symbolInstanceStart;t<e.symbolInstanceEnd;t++)P(a.symbolInstances.get(t),a.collisionArrays[t]);if(s&&a.bucketInstanceId in this.collisionCircleArrays){const e=this.collisionCircleArrays[a.bucketInstanceId];t.as(e.invProjMatrix,r),e.viewportMatrix=this.collisionIndex.getViewportMatrix();}a.justReloaded=!1;}markUsedJustification(e,i,s,a){let o;o=a===t.ai.vertical?s.verticalPlacedTextSymbolIndex:{left:s.leftJustifiedTextSymbolIndex,center:s.centerJustifiedTextSymbolIndex,right:s.rightJustifiedTextSymbolIndex}[t.at(i)];const r=[s.leftJustifiedTextSymbolIndex,s.centerJustifiedTextSymbolIndex,s.rightJustifiedTextSymbolIndex,s.verticalPlacedTextSymbolIndex];for(const t of r)t>=0&&(e.text.placedSymbolArray.get(t).crossTileID=o>=0&&t!==o?0:s.crossTileID);}markUsedOrientation(e,i,s){const a=i===t.ai.horizontal||i===t.ai.horizontalOnly?i:0,o=i===t.ai.vertical?i:0,r=[s.leftJustifiedTextSymbolIndex,s.centerJustifiedTextSymbolIndex,s.rightJustifiedTextSymbolIndex];for(const t of r)e.text.placedSymbolArray.get(t).placedOrientation=a;s.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(s.verticalPlacedTextSymbolIndex).placedOrientation=o);}commit(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;const e=this.prevPlacement;let i=!1;this.prevZoomAdjustment=e?e.zoomAdjustment(this.transform.zoom):0;const s=e?e.symbolFadeChange(t):1,a=e?e.opacities:{},o=e?e.variableOffsets:{},r=e?e.placedOrientations:{};for(const t in this.placements){const e=this.placements[t],o=a[t];o?(this.opacities[t]=new Pt(o,s,e.text,e.icon),i=i||e.text!==o.text.placed||e.icon!==o.icon.placed):(this.opacities[t]=new Pt(null,s,e.text,e.icon,e.skipFade),i=i||e.text||e.icon);}for(const t in a){const e=a[t];if(!this.opacities[t]){const a=new Pt(e,s,!1,!1);a.isHidden()||(this.opacities[t]=a,i=i||e.text.placed||e.icon.placed);}}for(const t in o)this.variableOffsets[t]||!this.opacities[t]||this.opacities[t].isHidden()||(this.variableOffsets[t]=o[t]);for(const t in r)this.placedOrientations[t]||!this.opacities[t]||this.opacities[t].isHidden()||(this.placedOrientations[t]=r[t]);if(e&&void 0===e.lastPlacementChangeTime)throw new Error("Last placement time for previous placement is not defined");i?this.lastPlacementChangeTime=t:"number"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=e?e.lastPlacementChangeTime:t);}updateLayerOpacities(t,e){const i={};for(const s of e){const e=s.getBucket(t);e&&s.latestFeatureIndex&&t.id===e.layerIds[0]&&this.updateBucketOpacities(e,i,s.collisionBoxArray);}}updateBucketOpacities(e,i,s){e.hasTextData()&&(e.text.opacityVertexArray.clear(),e.text.hasVisibleVertices=!1),e.hasIconData()&&(e.icon.opacityVertexArray.clear(),e.icon.hasVisibleVertices=!1),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear();const a=e.layers[0],o=a.layout,r=new Pt(null,0,!1,!1,!0),n=o.get("text-allow-overlap"),l=o.get("icon-allow-overlap"),h=a._unevaluatedLayout.hasValue("text-variable-anchor")||a._unevaluatedLayout.hasValue("text-variable-anchor-offset"),c="map"===o.get("text-rotation-alignment"),u="map"===o.get("text-pitch-alignment"),d="none"!==o.get("icon-text-fit"),_=new Pt(null,0,n&&(l||!e.hasIconData()||o.get("icon-optional")),l&&(n||!e.hasTextData()||o.get("text-optional")),!0);!e.collisionArrays&&s&&(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData())&&e.deserializeCollisionBoxes(s);const p=(t,e,i)=>{for(let s=0;s<e/4;s++)t.opacityVertexArray.emplaceBack(i);t.hasVisibleVertices=t.hasVisibleVertices||i!==qt;};for(let s=0;s<e.symbolInstances.length;s++){const a=e.symbolInstances.get(s),{numHorizontalGlyphVertices:o,numVerticalGlyphVertices:n,crossTileID:l}=a;let m=this.opacities[l];i[l]?m=r:m||(m=_,this.opacities[l]=m),i[l]=!0;const f=a.numIconVertices>0,g=this.placedOrientations[a.crossTileID],v=g===t.ai.vertical,x=g===t.ai.horizontal||g===t.ai.horizontalOnly;if(o>0||n>0){const t=Vt(m.text);p(e.text,o,v?qt:t),p(e.text,n,x?qt:t);const i=m.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((t=>{t>=0&&(e.text.placedSymbolArray.get(t).hidden=i||v?1:0);})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=i||x?1:0);const s=this.variableOffsets[a.crossTileID];s&&this.markUsedJustification(e,s.anchor,a,g);const r=this.placedOrientations[a.crossTileID];r&&(this.markUsedJustification(e,"left",a,r),this.markUsedOrientation(e,r,a));}if(f){const t=Vt(m.icon),i=!(d&&a.verticalPlacedIconSymbolIndex&&v);a.placedIconSymbolIndex>=0&&(p(e.icon,a.numIconVertices,i?t:qt),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=m.icon.isHidden()),a.verticalPlacedIconSymbolIndex>=0&&(p(e.icon,a.numVerticalIconVertices,i?qt:t),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=m.icon.isHidden());}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){const i=e.collisionArrays[s];if(i){let s=new t.P(0,0);if(i.textBox||i.verticalTextBox){let t=!0;if(h){const e=this.variableOffsets[l];e?(s=At(e.anchor,e.width,e.height,e.textOffset,e.textBoxScale),c&&s._rotate(u?this.transform.angle:-this.transform.angle)):t=!1;}i.textBox&&Ft(e.textCollisionBox.collisionVertexArray,m.text.placed,!t||v,s.x,s.y),i.verticalTextBox&&Ft(e.textCollisionBox.collisionVertexArray,m.text.placed,!t||x,s.x,s.y);}const a=Boolean(!x&&i.verticalIconBox);i.iconBox&&Ft(e.iconCollisionBox.collisionVertexArray,m.icon.placed,a,d?s.x:0,d?s.y:0),i.verticalIconBox&&Ft(e.iconCollisionBox.collisionVertexArray,m.icon.placed,!a,d?s.x:0,d?s.y:0);}}}if(e.sortFeatures(this.transform.angle),this.retainedQueryData[e.bucketInstanceId]&&(this.retainedQueryData[e.bucketInstanceId].featureSortOrder=e.featureSortOrder),e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.text.opacityVertexArray.length!==e.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${e.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${e.text.layoutVertexArray.length}) / 4`);if(e.icon.opacityVertexArray.length!==e.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${e.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${e.icon.layoutVertexArray.length}) / 4`);if(e.bucketInstanceId in this.collisionCircleArrays){const t=this.collisionCircleArrays[e.bucketInstanceId];e.placementInvProjMatrix=t.invProjMatrix,e.placementViewportMatrix=t.viewportMatrix,e.collisionCircleArray=t.circles,delete this.collisionCircleArrays[e.bucketInstanceId];}}symbolFadeChange(t){return 0===this.fadeDuration?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(t){return Math.max(0,(this.transform.zoom-t)/1.5)}hasTransitions(t){return this.stale||t-this.lastPlacementChangeTime<this.fadeDuration}stillRecent(t,e){const i=this.zoomAtLastRecencyCheck===e?1-this.zoomAdjustment(e):1;return this.zoomAtLastRecencyCheck=e,this.commitTime+this.fadeDuration*i>t}setStale(){this.stale=!0;}}function Ft(t,e,i,s,a){t.emplaceBack(e?1:0,i?1:0,s||0,a||0),t.emplaceBack(e?1:0,i?1:0,s||0,a||0),t.emplaceBack(e?1:0,i?1:0,s||0,a||0),t.emplaceBack(e?1:0,i?1:0,s||0,a||0);}const Bt=Math.pow(2,25),Ot=Math.pow(2,24),Nt=Math.pow(2,17),Ut=Math.pow(2,16),Zt=Math.pow(2,9),Gt=Math.pow(2,8),jt=Math.pow(2,1);function Vt(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;const e=t.placed?1:0,i=Math.floor(127*t.opacity);return i*Bt+e*Ot+i*Nt+e*Ut+i*Zt+e*Gt+i*jt+e}const qt=0;class $t{constructor(t){this._sortAcrossTiles="viewport-y"!==t.layout.get("symbol-z-order")&&!t.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[];}continuePlacement(t,e,i,s,a){const o=this._bucketParts;for(;this._currentTileIndex<t.length;)if(e.getBucketParts(o,s,t[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,a())return !0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,o.sort(((t,e)=>t.sortKey-e.sortKey)));this._currentPartIndex<o.length;)if(e.placeLayerBucketPart(o[this._currentPartIndex],this._seenCrossTileIDs,i),this._currentPartIndex++,a())return !0;return !1}}class Wt{constructor(t,e,i,s,a,o,r,n){this.placement=new kt(t,e,o,r,n),this._currentPlacementIndex=i.length-1,this._forceFullPlacement=s,this._showCollisionBoxes=a,this._done=!1;}isDone(){return this._done}continuePlacement(e,i,s){const a=t.h.now(),o=()=>!this._forceFullPlacement&&t.h.now()-a>2;for(;this._currentPlacementIndex>=0;){const t=i[e[this._currentPlacementIndex]],a=this.placement.collisionIndex.transform.zoom;if("symbol"===t.type&&(!t.minzoom||t.minzoom<=a)&&(!t.maxzoom||t.maxzoom>a)){if(this._inProgressLayer||(this._inProgressLayer=new $t(t)),this._inProgressLayer.continuePlacement(s[t.source],this.placement,this._showCollisionBoxes,t,o))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;}commit(t){return this.placement.commit(t),this.placement}}const Ht=512/t.N/2;class Xt{constructor(e,i,s){this.tileID=e,this.bucketInstanceId=s,this._symbolsByKey={};const a=new Map;for(let t=0;t<i.length;t++){const e=i.get(t),s=e.key,o=a.get(s);o?o.push(e):a.set(s,[e]);}for(const[e,i]of a){const s={positions:i.map((t=>({x:Math.floor(t.anchorX*Ht),y:Math.floor(t.anchorY*Ht)}))),crossTileIDs:i.map((t=>t.crossTileID))};if(s.positions.length>128){const e=new t.av(s.positions.length,16,Uint16Array);for(const{x:t,y:i}of s.positions)e.add(t,i);e.finish(),delete s.positions,s.index=e;}this._symbolsByKey[e]=s;}}getScaledCoordinates(e,i){const{x:s,y:a,z:o}=this.tileID.canonical,{x:r,y:n,z:l}=i.canonical,h=Ht/Math.pow(2,l-o),c=(n*t.N+e.anchorY)*h,u=a*t.N*Ht;return {x:Math.floor((r*t.N+e.anchorX)*h-s*t.N*Ht),y:Math.floor(c-u)}}
41findMatches(t,e,i){const s=this.tileID.canonical.z<e.canonical.z?1:Math.pow(2,this.tileID.canonical.z-e.canonical.z);for(let a=0;a<t.length;a++){const o=t.get(a);if(o.crossTileID)continue;const r=this._symbolsByKey[o.key];if(!r)continue;const n=this.getScaledCoordinates(o,e);if(r.index){const t=r.index.range(n.x-s,n.y-s,n.x+s,n.y+s).sort();for(const e of t){const t=r.crossTileIDs[e];if(!i[t]){i[t]=!0,o.crossTileID=t;break}}}else if(r.positions)for(let t=0;t<r.positions.length;t++){const e=r.positions[t],a=r.crossTileIDs[t];if(Math.abs(e.x-n.x)<=s&&Math.abs(e.y-n.y)<=s&&!i[a]){i[a]=!0,o.crossTileID=a;break}}}}getCrossTileIDsLists(){return Object.values(this._symbolsByKey).map((({crossTileIDs:t})=>t))}}class Kt{constructor(){this.maxCrossTileID=0;}generate(){return ++this.maxCrossTileID}}class Qt{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0;}handleWrapJump(t){const e=Math.round((t-this.lng)/360);if(0!==e)for(const t in this.indexes){const i=this.indexes[t],s={};for(const t in i){const a=i[t];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+e),s[a.tileID.key]=a;}this.indexes[t]=s;}this.lng=t;}addBucket(t,e,i){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===e.bucketInstanceId)return !1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key]);}for(let t=0;t<e.symbolInstances.length;t++)e.symbolInstances.get(t).crossTileID=0;this.usedCrossTileIDs[t.overscaledZ]||(this.usedCrossTileIDs[t.overscaledZ]={});const s=this.usedCrossTileIDs[t.overscaledZ];for(const i in this.indexes){const a=this.indexes[i];if(Number(i)>t.overscaledZ)for(const i in a){const o=a[i];o.tileID.isChildOf(t)&&o.findMatches(e.symbolInstances,t,s);}else {const o=a[t.scaledTo(Number(i)).key];o&&o.findMatches(e.symbolInstances,t,s);}}for(let t=0;t<e.symbolInstances.length;t++){const a=e.symbolInstances.get(t);a.crossTileID||(a.crossTileID=i.generate(),s[a.crossTileID]=!0);}return void 0===this.indexes[t.overscaledZ]&&(this.indexes[t.overscaledZ]={}),this.indexes[t.overscaledZ][t.key]=new Xt(t,e.symbolInstances,e.bucketInstanceId),!0}removeBucketCrossTileIDs(t,e){for(const i of e.getCrossTileIDsLists())for(const e of i)delete this.usedCrossTileIDs[t][e];}removeStaleBuckets(t){let e=!1;for(const i in this.indexes){const s=this.indexes[i];for(const a in s)t[s[a].bucketInstanceId]||(this.removeBucketCrossTileIDs(i,s[a]),delete s[a],e=!0);}return e}}class Yt{constructor(){this.layerIndexes={},this.crossTileIDs=new Kt,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={};}addLayer(t,e,i){let s=this.layerIndexes[t.id];void 0===s&&(s=this.layerIndexes[t.id]=new Qt);let a=!1;const o={};s.handleWrapJump(i);for(const i of e){const e=i.getBucket(t);e&&t.id===e.layerIds[0]&&(e.bucketInstanceId||(e.bucketInstanceId=++this.maxBucketInstanceId),s.addBucket(i.tileID,e,this.crossTileIDs)&&(a=!0),o[e.bucketInstanceId]=!0);}return s.removeStaleBuckets(o)&&(a=!0),a}pruneUnusedLayers(t){const e={};t.forEach((t=>{e[t]=!0;}));for(const t in this.layerIndexes)e[t]||delete this.layerIndexes[t];}}const Jt=(e,i)=>t.x(e,i&&i.filter((t=>"source.canvas"!==t.identifier))),te=t.F(t.ax,["addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setLayerZoomRange","setLight","setTransition","setGeoJSONSourceData","setGlyphs","setSprite"]),ee=t.F(t.ax,["setCenter","setZoom","setBearing","setPitch"]),ie=t.aw();class se extends t.E{constructor(e,i={}){super(),this.map=e,this.dispatcher=new M(st(),this,e._getMapId()),this.imageManager=new b,this.imageManager.setEventedParent(this),this.glyphManager=new E(e._requestManager,i.localIdeographFontFamily),this.lineAtlas=new D(256,512),this.crossTileSymbolIndex=new Yt,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new t.ay,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("setReferrer",t.az());const s=this;this._rtlTextPluginCallback=se.registerForPluginStateChange((e=>{s.dispatcher.broadcast("syncRTLPluginState",{pluginStatus:e.pluginStatus,pluginURL:e.pluginURL},((e,i)=>{if(t.aA(e),i&&i.every((t=>t)))for(const t in s.sourceCaches){const e=s.sourceCaches[t].getSource().type;"vector"!==e&&"geojson"!==e||s.sourceCaches[t].reload();}}));})),this.on("data",(t=>{if("source"!==t.dataType||"metadata"!==t.sourceDataType)return;const e=this.sourceCaches[t.sourceId];if(!e)return;const i=e.getSource();if(i&&i.vectorLayerIds)for(const t in this._layers){const e=this._layers[t];
41e.source===i.id&&this._validateLayer(e);}}));}loadURL(e,i={},s){this.fire(new t.k("dataloading",{dataType:"style"})),i.validate="boolean"!=typeof i.validate||i.validate;const a=this.map._requestManager.transformRequest(e,c.Style);this._request=t.f(a,((e,a)=>{this._request=null,e?this.fire(new t.j(e)):a&&this._load(a,i,s);}));}loadJSON(e,i={},s){this.fire(new t.k("dataloading",{dataType:"style"})),this._request=t.h.frame((()=>{this._request=null,i.validate=!1!==i.validate,this._load(e,i,s);}));}loadEmpty(){this.fire(new t.k("dataloading",{dataType:"style"})),this._load(ie,{validate:!1});}_load(e,i,s){var a;const o=i.transformStyle?i.transformStyle(s,e):e;if(!i.validate||!Jt(this,t.y(o))){this._loaded=!0,this.stylesheet=o;for(const t in o.sources)this.addSource(t,o.sources[t],{validate:!1});o.sprite?this._loadSprite(o.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(o.glyphs),this._createLayers(),this.light=new P(this.stylesheet.light),this.map.setTerrain(null!==(a=this.stylesheet.terrain)&&void 0!==a?a:null),this.fire(new t.k("data",{dataType:"style"})),this.fire(new t.k("style.load"));}}_createLayers(){const e=t.aB(this.stylesheet.layers);this.dispatcher.broadcast("setLayers",e),this._order=e.map((t=>t.id)),this._layers={},this._serializedLayers=null;for(const i of e){const e=t.aC(i);e.setEventedParent(this,{layer:{id:i.id}}),this._layers[i.id]=e;}}_loadSprite(e,i=!1,s=void 0){this.imageManager.setLoaded(!1),this._spriteRequest=function(e,i,s,a){const o=g(e),r=o.length,n=s>1?"@2x":"",l={},u={},d={};for(const{id:e,url:s}of o){const o=i.transformRequest(i.normalizeSpriteURL(s,n,".json"),c.SpriteJSON),_=`${e}_${o.url}`;l[_]=t.f(o,((t,i)=>{delete l[_],u[e]=i,v(a,u,d,t,r);}));const p=i.transformRequest(i.normalizeSpriteURL(s,n,".png"),c.SpriteImage),m=`${e}_${p.url}`;l[m]=h.getImage(p,((t,i)=>{delete l[m],d[e]=i,v(a,u,d,t,r);}));}return {cancel(){for(const t of Object.values(l))t.cancel();}}}(e,this.map._requestManager,this.map.getPixelRatio(),((e,a)=>{if(this._spriteRequest=null,e)this.fire(new t.j(e));else if(a)for(const t in a){this._spritesImagesIds[t]=[];const e=this._spritesImagesIds[t]?this._spritesImagesIds[t].filter((t=>!(t in a))):[];for(const t of e)this.imageManager.removeImage(t),this._changedImages[t]=!0;for(const e in a[t]){const s="default"===t?e:`${t}:${e}`;this._spritesImagesIds[t].push(s),s in this.imageManager.images?this.imageManager.updateImage(s,a[t][e],!1):this.imageManager.addImage(s,a[t][e]),i&&(this._changedImages[s]=!0);}}this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),i&&(this._changed=!0),this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new t.k("data",{dataType:"style"})),s&&s(e);}));}_unloadSprite(){for(const t of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(t),this._changedImages[t]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new t.k("data",{dataType:"style"}));}_validateLayer(e){const i=this.sourceCaches[e.source];if(!i)return;const s=e.sourceLayer;if(!s)return;const a=i.getSource();("geojson"===a.type||a.vectorLayerIds&&-1===a.vectorLayerIds.indexOf(s))&&this.fire(new t.j(new Error(`Source layer "${s}" does not exist on source "${a.id}" as specified by style layer "${e.id}".`)));}loaded(){if(!this._loaded)return !1;if(Object.keys(this._updatedSources).length)return !1;for(const t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return !1;return !!this.imageManager.isLoaded()}_serializeByIds(t){const e=this._serializedAllLayers();if(!t||0===t.length)return Object.values(e);const i=[];for(const s of t)e[s]&&i.push(e[s]);return i}_serializedAllLayers(){let t=this._serializedLayers;if(t)return t;t=this._serializedLayers={};const e=Object.keys(this._layers);for(const i of e){const e=this._layers[i];"custom"!==e.type&&(t[i]=e.serialize());}return t}hasTransitions(){if(this.light&&this.light.hasTransition())return !0;for(const t in this.sourceCaches)if(this.sourceCaches[t].hasTransition())return !0;for(const t in this._layers)if(this._layers[t].hasTransition())return !0;return !1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(e){if(!this._loaded)return;const i=this._changed;if(this._changed){const t=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(t.length||i.length)&&this._updateWorkerLayers(t,i);for(const t in this._updatedSources){const e=this._updatedSources[t];if("reload"===e)this._reloadSource(t);else {if("clear"!==e)throw new Error(`Invalid action ${e}`);this._clearSource(t);}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(const t in this._updatedPaintProps)this._layers[t].updateTransitions(e);this.light.updateTransitions(e),this._resetUpdates();}const s={};for(const t in this.sourceCaches){const e=this.sourceCaches[t];s[t]=e.used,e.used=!1;}for(const t of this._order){const i=this._layers[t];
41i.recalculate(e,this._availableImages),!i.isHidden(e.zoom)&&i.source&&(this.sourceCaches[i.source].used=!0);}for(const e in s){const i=this.sourceCaches[e];s[e]!==i.used&&i.fire(new t.k("data",{sourceDataType:"visibility",dataType:"source",sourceId:e}));}this.light.recalculate(e),this.z=e.zoom,i&&this.fire(new t.k("data",{dataType:"style"}));}_updateTilesForChangedImages(){const t=Object.keys(this._changedImages);if(t.length){for(const e in this.sourceCaches)this.sourceCaches[e].reloadTilesForDependencies(["icons","patterns"],t);this._changedImages={};}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(const t in this.sourceCaches)this.sourceCaches[t].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1;}}_updateWorkerLayers(t,e){this.dispatcher.broadcast("updateLayers",{layers:this._serializeByIds(t),removedIds:e});}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1;}setState(e,i={}){this._checkLoaded();const s=this.serialize();if(e=i.transformStyle?i.transformStyle(s,e):e,Jt(this,t.y(e)))return !1;(e=t.aD(e)).layers=t.aB(e.layers);const a=t.aE(s,e).filter((t=>!(t.command in ee)));if(0===a.length)return !1;const o=a.filter((t=>!(t.command in te)));if(o.length>0)throw new Error(`Unimplemented: ${o.map((t=>t.command)).join(", ")}.`);for(const t of a)"setTransition"!==t.command&&this[t.command].apply(this,t.args);return this.stylesheet=e,this._serializedLayers=null,!0}addImage(e,i){if(this.getImage(e))return this.fire(new t.j(new Error(`An image named "${e}" already exists.`)));this.imageManager.addImage(e,i),this._afterImageUpdated(e);}updateImage(t,e){this.imageManager.updateImage(t,e);}getImage(t){return this.imageManager.getImage(t)}removeImage(e){if(!this.getImage(e))return this.fire(new t.j(new Error(`An image named "${e}" does not exist.`)));this.imageManager.removeImage(e),this._afterImageUpdated(e);}_afterImageUpdated(e){this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new t.k("data",{dataType:"style"}));}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(e,i,s={}){if(this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(`Source "${e}" already exists.`);if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(i.type)>=0&&this._validate(t.y.source,`sources.${e}`,i,null,s))return;this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);const a=this.sourceCaches[e]=new K(e,i,this.dispatcher);a.style=this,a.setEventedParent(this,(()=>({isSourceLoaded:a.loaded(),source:a.serialize(),sourceId:e}))),a.onAdd(this.map),this._changed=!0;}removeSource(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error("There is no source with this ID");for(const i in this._layers)if(this._layers[i].source===e)return this.fire(new t.j(new Error(`Source "${e}" cannot be removed while layer "${i}" is using it.`)));const i=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],i.fire(new t.k("data",{sourceDataType:"metadata",dataType:"source",sourceId:e})),i.setEventedParent(null),i.onRemove(this.map),this._changed=!0;}setGeoJSONSourceData(t,e){if(this._checkLoaded(),void 0===this.sourceCaches[t])throw new Error(`There is no source with this ID=${t}`);const i=this.sourceCaches[t].getSource();if("geojson"!==i.type)throw new Error(`geojsonSource.type is ${i.type}, which is !== 'geojson`);i.setData(e),this._changed=!0;}getSource(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()}addLayer(e,i,s={}){this._checkLoaded();const a=e.id;if(this.getLayer(a))return void this.fire(new t.j(new Error(`Layer "${a}" already exists on this map.`)));let o;if("custom"===e.type){if(Jt(this,t.aF(e)))return;o=t.aC(e);}else {if("source"in e&&"object"==typeof e.source&&(this.addSource(a,e.source),e=t.aD(e),e=t.e(e,{source:a}
vendor: 6,055 bytes, line 41
41)),this._validate(t.y.layer,`layers.${a}`,e,{arrayIndex:-1},s))return;o=t.aC(e),this._validateLayer(o),o.setEventedParent(this,{layer:{id:a}});}const r=i?this._order.indexOf(i):this._order.length;if(i&&-1===r)this.fire(new t.j(new Error(`Cannot add layer "${a}" before non-existing layer "${i}".`)));else {if(this._order.splice(r,0,a),this._layerOrderChanged=!0,this._layers[a]=o,this._removedLayers[a]&&o.source&&"custom"!==o.type){const t=this._removedLayers[a];delete this._removedLayers[a],t.type!==o.type?this._updatedSources[o.source]="clear":(this._updatedSources[o.source]="reload",this.sourceCaches[o.source].pause());}this._updateLayer(o),o.onAdd&&o.onAdd(this.map);}}moveLayer(e,i){if(this._checkLoaded(),this._changed=!0,!this._layers[e])return void this.fire(new t.j(new Error(`The layer '${e}' does not exist in the map's style and cannot be moved.`)));if(e===i)return;const s=this._order.indexOf(e);this._order.splice(s,1);const a=i?this._order.indexOf(i):this._order.length;i&&-1===a?this.fire(new t.j(new Error(`Cannot move layer "${e}" before non-existing layer "${i}".`))):(this._order.splice(a,0,e),this._layerOrderChanged=!0);}removeLayer(e){this._checkLoaded();const i=this._layers[e];if(!i)return void this.fire(new t.j(new Error(`Cannot remove non-existing layer "${e}".`)));i.setEventedParent(null);const s=this._order.indexOf(e);this._order.splice(s,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],this._serializedLayers&&delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map);}getLayer(t){return this._layers[t]}getLayersOrder(){return [...this._order]}hasLayer(t){return t in this._layers}setLayerZoomRange(e,i,s){this._checkLoaded();const a=this.getLayer(e);a?a.minzoom===i&&a.maxzoom===s||(null!=i&&(a.minzoom=i),null!=s&&(a.maxzoom=s),this._updateLayer(a)):this.fire(new t.j(new Error(`Cannot set the zoom range of non-existing layer "${e}".`)));}setFilter(e,i,s={}){this._checkLoaded();const a=this.getLayer(e);if(a){if(!t.aG(a.filter,i))return null==i?(a.filter=void 0,void this._updateLayer(a)):void(this._validate(t.y.filter,`layers.${a.id}.filter`,i,null,s)||(a.filter=t.aD(i),this._updateLayer(a)))}else this.fire(new t.j(new Error(`Cannot filter non-existing layer "${e}".`)));}getFilter(e){return t.aD(this.getLayer(e).filter)}setLayoutProperty(e,i,s,a={}){this._checkLoaded();const o=this.getLayer(e);o?t.aG(o.getLayoutProperty(i),s)||(o.setLayoutProperty(i,s,a),this._updateLayer(o)):this.fire(new t.j(new Error(`Cannot style non-existing layer "${e}".`)));}getLayoutProperty(e,i){const s=this.getLayer(e);if(s)return s.getLayoutProperty(i);this.fire(new t.j(new Error(`Cannot get style of non-existing layer "${e}".`)));}setPaintProperty(e,i,s,a={}){this._checkLoaded();const o=this.getLayer(e);o?t.aG(o.getPaintProperty(i),s)||(o.setPaintProperty(i,s,a)&&this._updateLayer(o),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.j(new Error(`Cannot style non-existing layer "${e}".`)));}getPaintProperty(t,e){return this.getLayer(t).getPaintProperty(e)}setFeatureState(e,i){this._checkLoaded();const s=e.source,a=e.sourceLayer,o=this.sourceCaches[s];if(void 0===o)return void this.fire(new t.j(new Error(`The source '${s}' does not exist in the map's style.`)));const r=o.getSource().type;"geojson"===r&&a?this.fire(new t.j(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):"vector"!==r||a?(void 0===e.id&&this.fire(new t.j(new Error("The feature id parameter must be provided."))),o.setFeatureState(a,e.id,i)):this.fire(new t.j(new Error("The sourceLayer parameter must be provided for vector source types.")));}removeFeatureState(e,i){this._checkLoaded();const s=e.source,a=this.sourceCaches[s];if(void 0===a)return void this.fire(new t.j(new Error(`The source '${s}' does not exist in the map's style.`)));const o=a.getSource().type,r="vector"===o?e.sourceLayer:void 0;"vector"!==o||r?i&&"string"!=typeof e.id&&"number"!=typeof e.id?this.fire(new t.j(new Error("A feature id is required to remove its specific state property."))):a.removeFeatureState(r,e.id,i):this.fire(new t.j(new Error("The sourceLayer parameter must be provided for vector source types.")));}getFeatureState(e){this._checkLoaded();const i=e.source,s=e.sourceLayer,a=this.sourceCaches[i];if(void 0!==a)return "vector"!==a.getSource().type||s?(void 0===e.id&&this.fire(new t.j(new Error("The feature id parameter must be provided."))),a.getFeatureState(s,e.id)):void this.fire(new t.j(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new t.j(new Error(`The source '${i}' does not exist in the map's style.`)));}getTransition(){return t.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;const e=t.aH(this.sourceCaches,(t=>t.serialize())),i=this._serializeByIds(this._order),s=this.map.getTerrain()||void 0,a=this.stylesheet;return t.aI({version:a.version,name:a.name,metadata:a.metadata,light:a.light,center:a.center,zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,sprite:a.sprite,glyphs:a.glyphs,transition:a.transition,sources:e,layers:i,terrain:s},(t=>void 0!==t))}_updateLayer(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&"raster"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]="reload",this.sourceCaches[t.source].pause()),this._serializedLayers=null,this._changed=!0;}_flattenAndSortRenderedFeatures(t){const e=t=>"fill-extrusion"===this._layers[t].type,i={},s=[];for(let a=this._order.length-1;a>=0;a--){const o=this._order[a];if(e(o)){i[o]=a;for(const e of t){const t=e[o];if(t)for(const e of t)s.push(e);}}}s.sort(((t,e)=>e.intersectionZ-t.intersectionZ));const a=[];for(let o=this._order.length-1;o>=0;o--){const r=this._order[o];if(e(r))for(let t=s.length-1;t>=0;t--){const e=s[t].feature;if(i[e.layer.id]<o)break;a.push(e),s.pop();}else for(const e of t){const t=e[r];if(t)for(const e of t)a.push(e.feature);}}return a}
41queryRenderedFeatures(e,i,s){i&&i.filter&&this._validate(t.y.filter,"queryRenderedFeatures.filter",i.filter,null,i);const a={};if(i&&i.layers){if(!Array.isArray(i.layers))return this.fire(new t.j(new Error("parameters.layers must be an Array."))),[];for(const e of i.layers){const i=this._layers[e];if(!i)return this.fire(new t.j(new Error(`The layer '${e}' does not exist in the map's style and cannot be queried for features.`))),[];a[i.source]=!0;}}const o=[];i.availableImages=this._availableImages;const r=this._serializedAllLayers();for(const t in this.sourceCaches)i.layers&&!a[t]||o.push(q(this.sourceCaches[t],this._layers,r,e,i,s));return this.placement&&o.push(function(t,e,i,s,a,o,r){const n={},l=o.queryRenderedSymbols(s),h=[];for(const t of Object.keys(l).map(Number))h.push(r[t]);h.sort($);for(const i of h){const s=i.featureIndex.lookupSymbolFeatures(l[i.bucketInstanceId],e,i.bucketIndex,i.sourceLayerIndex,a.filter,a.layers,a.availableImages,t);for(const t in s){const e=n[t]=n[t]||[],a=s[t];a.sort(((t,e)=>{const s=i.featureSortOrder;if(s){const i=s.indexOf(t.featureIndex);return s.indexOf(e.featureIndex)-i}return e.featureIndex-t.featureIndex}));for(const t of a)e.push(t);}}for(const e in n)n[e].forEach((s=>{const a=s.feature,o=i[t[e].source].getFeatureState(a.layer["source-layer"],a.id);a.source=a.layer.source,a.layer["source-layer"]&&(a.sourceLayer=a.layer["source-layer"]),a.state=o;}));return n}(this._layers,r,this.sourceCaches,e,i,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(o)}querySourceFeatures(e,i){i&&i.filter&&this._validate(t.y.filter,"querySourceFeatures.filter",i.filter,null,i);const s=this.sourceCaches[e];return s?function(t,e){const i=t.getRenderableIds().map((e=>t.getTileByID(e))),s=[],a={};for(let t=0;t<i.length;t++){const o=i[t],r=o.tileID.canonical.key;a[r]||(a[r]=!0,o.querySourceFeatures(s,e));}return s}(s,i):[]}addSourceType(t,e,i){return j(t)?i(new Error(`A source type called "${t}" already exists.`)):(((t,e)=>{G[t]=e;})(t,e),e.workerSourceURL?void this.dispatcher.broadcast("loadWorkerSource",{name:t,url:e.workerSourceURL},i):i(null,null))}getLight(){return this.light.getLight()}setLight(e,i={}){this._checkLoaded();const s=this.light.getLight();let a=!1;for(const i in e)if(!t.aG(e[i],s[i])){a=!0;break}if(!a)return;const o={now:t.h.now(),transition:t.e({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(e,i),this.light.updateTransitions(o);}_validate(e,i,s,a,o={}){return (!o||!1!==o.validate)&&Jt(this,e.call(t.y,t.e({key:i,style:this.serialize(),value:s,styleSpec:t.v},a)))}_remove(e=!0){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),t.aJ.off("pluginStateChange",this._rtlTextPluginCallback);for(const t in this._layers)this._layers[t].setEventedParent(null);for(const t in this.sourceCaches){const e=this.sourceCaches[t];e.setEventedParent(null),e.onRemove(this.map);}this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove(e);}_clearSource(t){this.sourceCaches[t].clearTiles();}_reloadSource(t){this.sourceCaches[t].resume(),this.sourceCaches[t].reload();}_updateSources(t){for(const e in this.sourceCaches)this.sourceCaches[e].update(t,this.map.terrain);}_generateCollisionBoxes(){for(const t in this.sourceCaches)this._reloadSource(t);}_updatePlacement(e,i,s,a,o=!1){let r=!1,n=!1;const l={};for(const t of this._order){const i=this._layers[t];if("symbol"!==i.type)continue;if(!l[i.source]){const t=this.sourceCaches[i.source];l[i.source]=t.getRenderableIds(!0).map((e=>t.getTileByID(e))).sort(((t,e)=>e.tileID.overscaledZ-t.tileID.overscaledZ||(t.tileID.isLessThan(e.tileID)?-1:1)));}const s=this.crossTileSymbolIndex.addLayer(i,l[i.source],e.center.lng);r=r||s;}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((o=o||this._layerOrderChanged||0===s)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(t.h.now(),e.zoom))&&(this.pauseablePlacement=new Wt(e,this.map.terrain,this._order,o,i,s,a,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,l),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(t.h.now()),n=!0),r&&this.pauseablePlacement.placement.setStale()),n||r)for(const t of this._order){const e=this._layers[t];"symbol"===e.type&&this.placement.updateLayerOpacities(e,l[e.source]);}return !this.pauseablePlacement.isDone()||this.placement.hasTransitions(t.h.now())}_releaseSymbolFadeTiles(){for(const t in this.sourceCaches)this.sourceCaches[t].releaseSymbolFadeTiles();}getImages(t,e,i){this.imageManager.getImages(e.icons,i),this._updateTilesForChangedImages();const s=this.sourceCaches[e.source];s&&s.setDependencies(e.tileID.key,e.type,e.icons);}getGlyphs(t,e,i){this.glyphManager.getGlyphs(e.stacks,i);const s=this.sourceCaches[e.source];s&&s.setDependencies(e.tileID.key,e.type,[""]);}getResource(e,i,s){return t.m(i,s)}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(e,i={}
vendor: 4,984 bytes, line 41
41){this._checkLoaded(),e&&this._validate(t.y.glyphs,"glyphs",e,null,i)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=e,this.glyphManager.entries={},this.glyphManager.setURL(e));}addSprite(e,i,s={},a){this._checkLoaded();const o=[{id:e,url:i}],r=[...g(this.stylesheet.sprite),...o];this._validate(t.y.sprite,"sprite",r,null,s)||(this.stylesheet.sprite=r,this._loadSprite(o,!0,a));}removeSprite(e){this._checkLoaded();const i=g(this.stylesheet.sprite);if(i.find((t=>t.id===e))){if(this._spritesImagesIds[e])for(const t of this._spritesImagesIds[e])this.imageManager.removeImage(t),this._changedImages[t]=!0;i.splice(i.findIndex((t=>t.id===e)),1),this.stylesheet.sprite=i.length>0?i:void 0,delete this._spritesImagesIds[e],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new t.k("data",{dataType:"style"}));}else this.fire(new t.j(new Error(`Sprite "${e}" doesn't exists on this map.`)));}getSprite(){return g(this.stylesheet.sprite)}setSprite(e,i={},s){this._checkLoaded(),e&&this._validate(t.y.sprite,"sprite",e,null,i)||(this.stylesheet.sprite=e,e?this._loadSprite(e,!0,s):(this._unloadSprite(),s&&s(null)));}}se.registerForPluginStateChange=t.aK;var ae=t.Q([{name:"a_pos",type:"Int16",components:2}]),oe="attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_depth;void main() {float extent=8192.0;float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/extent;gl_Position=u_matrix*vec4(a_pos3d.xy,get_elevation(a_pos3d.xy)-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}";const re={prelude:ne("#ifdef GL_ES\nprecision mediump float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\n","#ifdef GL_ES\nprecision highp float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}\n#ifdef TERRAIN3D\nuniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;\n#endif\nconst highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {\n#ifdef TERRAIN3D\nhighp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));\n#else\nreturn 1.0;\n#endif\n}float calculate_visibility(vec4 pos) {\n#ifdef TERRAIN3D\nvec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\n#else\nreturn 1.0;\n#endif\n}float ele(vec2 pos) {\n#ifdef TERRAIN3D\nvec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\n#else\nreturn 0.0;\n#endif\n}float get_elevation(vec2 pos) {\n#ifdef TERRAIN3D\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\n#else\nreturn 0.0;\n#endif\n}"),background:ne("uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),backgroundPattern:ne("uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;
41uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),circle:ne("varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}"),clippingMask:ne("void main() {gl_FragColor=vec4(1.0);}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),heatmap:ne("uniform highp float u_intensity;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}"),heatmapTexture:ne("uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(0.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),collisionBox:ne("varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,get_elevation(a_pos),1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:ne("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),debug:ne("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}"),fill:ne("#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_FragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);}"),fillOutline:ne("varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}"),fillOutlinePattern:ne("uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}"),fillPattern:ne("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}"),fillExtrusion:ne("varying vec4 v_color;void main() {gl_FragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+heig
41ht_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}"),fillExtrusionPattern:ne("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}"),hillshadePrepare:ne("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:ne("uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;
41\n#define PI 3.141592653589793\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}"),line:ne("uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),lineGradient:ne("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),linePattern:ne("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}"),lineSDF:ne("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;
41uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}"),raster:ne("uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:ne("uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),z,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}"),symbolSDF:ne("#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}"),symbolTextAndIcon:ne("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;
41gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}"),terrain:ne("uniform sampler2D u_texture;varying vec2 v_texture_pos;void main() {gl_FragColor=texture2D(u_texture,v_texture_pos);}",oe),terrainDepth:ne("varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}",oe),terrainCoords:ne("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}",oe)};
vendor: 11,103 bytes, line 41
41function ne(t,e){const i=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,s=e.match(/attribute ([\w]+) ([\w]+)/g),a=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),o=e.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),r=o?o.concat(a):a,n={};return {fragmentSource:t=t.replace(i,((t,e,i,s,a)=>(n[a]=!0,"define"===e?`\n#ifndef HAS_UNIFORM_u_${a}\nvarying ${i} ${s} ${a};\n#else\nuniform ${i} ${s} u_${a};\n#endif\n`:`\n#ifdef HAS_UNIFORM_u_${a}\n ${i} ${s} ${a} = u_${a};\n#endif\n`))),vertexSource:e=e.replace(i,((t,e,i,s,a)=>{const o="float"===s?"vec2":"vec4",r=a.match(/color/)?"color":o;return n[a]?"define"===e?`\n#ifndef HAS_UNIFORM_u_${a}\nuniform lowp float u_${a}_t;\nattribute ${i} ${o} a_${a};\nvarying ${i} ${s} ${a};\n#else\nuniform ${i} ${s} u_${a};\n#endif\n`:"vec4"===r?`\n#ifndef HAS_UNIFORM_u_${a}\n ${a} = a_${a};\n#else\n ${i} ${s} ${a} = u_${a};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${a}\n ${a} = unpack_mix_${r}(a_${a}, u_${a}_t);\n#else\n ${i} ${s} ${a} = u_${a};\n#endif\n`:"define"===e?`\n#ifndef HAS_UNIFORM_u_${a}\nuniform lowp float u_${a}_t;\nattribute ${i} ${o} a_${a};\n#else\nuniform ${i} ${s} u_${a};\n#endif\n`:"vec4"===r?`\n#ifndef HAS_UNIFORM_u_${a}\n ${i} ${s} ${a} = a_${a};\n#else\n ${i} ${s} ${a} = u_${a};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${a}\n ${i} ${s} ${a} = unpack_mix_${r}(a_${a}, u_${a}_t);\n#else\n ${i} ${s} ${a} = u_${a};\n#endif\n`})),staticAttributes:s,staticUniforms:r}}class le{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;}bind(t,e,i,s,a,o,r,n,l){this.context=t;let h=this.boundPaintVertexBuffers.length!==s.length;for(let t=0;!h&&t<s.length;t++)this.boundPaintVertexBuffers[t]!==s[t]&&(h=!0);!this.vao||this.boundProgram!==e||this.boundLayoutVertexBuffer!==i||h||this.boundIndexBuffer!==a||this.boundVertexOffset!==o||this.boundDynamicVertexBuffer!==r||this.boundDynamicVertexBuffer2!==n||this.boundDynamicVertexBuffer3!==l?this.freshBind(e,i,s,a,o,r,n,l):(t.bindVertexArray.set(this.vao),r&&r.bind(),a&&a.dynamicDraw&&a.bind(),n&&n.bind(),l&&l.bind());}freshBind(t,e,i,s,a,o,r,n){const l=t.numAttributes,h=this.context,c=h.gl;this.vao&&this.destroy(),this.vao=h.createVertexArray(),h.bindVertexArray.set(this.vao),this.boundProgram=t,this.boundLayoutVertexBuffer=e,this.boundPaintVertexBuffers=i,this.boundIndexBuffer=s,this.boundVertexOffset=a,this.boundDynamicVertexBuffer=o,this.boundDynamicVertexBuffer2=r,this.boundDynamicVertexBuffer3=n,e.enableAttributes(c,t);for(const e of i)e.enableAttributes(c,t);o&&o.enableAttributes(c,t),r&&r.enableAttributes(c,t),n&&n.enableAttributes(c,t),e.bind(),e.setVertexAttribPointers(c,t,a);for(const e of i)e.bind(),e.setVertexAttribPointers(c,t,a);o&&(o.bind(),o.setVertexAttribPointers(c,t,a)),s&&s.bind(),r&&(r.bind(),r.setVertexAttribPointers(c,t,a)),n&&(n.bind(),n.setVertexAttribPointers(c,t,a)),h.currentNumAttributes=l;}destroy(){this.vao&&(this.context.deleteVertexArray(this.vao),this.vao=null);}}function he(t){const e=[];for(let i=0;i<t.length;i++){if(null===t[i])continue;const s=t[i].split(" ");e.push(s.pop());}return e}class ce{constructor(e,i,s,a,o,r){const n=e.gl;this.program=n.createProgram();const l=he(i.staticAttributes),h=s?s.getBinderAttributes():[],c=l.concat(h),u=re.prelude.staticUniforms?he(re.prelude.staticUniforms):[],d=i.staticUniforms?he(i.staticUniforms):[],_=s?s.getBinderUniforms():[],p=u.concat(d).concat(_),m=[];for(const t of p)m.indexOf(t)<0&&m.push(t);const f=s?s.defines():[];o&&f.push("#define OVERDRAW_INSPECTOR;"),r&&f.push("#define TERRAIN3D;");const g=f.concat(re.prelude.fragmentSource,i.fragmentSource).join("\n"),v=f.concat(re.prelude.vertexSource,i.vertexSource).join("\n"),x=n.createShader(n.FRAGMENT_SHADER);if(n.isContextLost())return void(this.failedToCreate=!0);if(n.shaderSource(x,g),n.compileShader(x),!n.getShaderParameter(x,n.COMPILE_STATUS))throw new Error(`Could not compile fragment shader: ${n.getShaderInfoLog(x)}`);n.attachShader(this.program,x);const y=n.createShader(n.VERTEX_SHADER);if(n.isContextLost())return void(this.failedToCreate=!0);if(n.shaderSource(y,v),n.compileShader(y),!n.getShaderParameter(y,n.COMPILE_STATUS))throw new Error(`Could not compile vertex shader: ${n.getShaderInfoLog(y)}`);n.attachShader(this.program,y),this.attributes={};const b={};this.numAttributes=c.length;for(let t=0;t<this.numAttributes;t++)c[t]&&(n.bindAttribLocation(this.program,t,c[t]),this.attributes[c[t]]=t);if(n.linkProgram(this.program),!n.getProgramParameter(this.program,n.LINK_STATUS))throw new Error(`Program failed to link: ${n.getProgramInfoLog(this.program)}`);n.deleteShader(y),n.deleteShader(x);for(let t=0;t<m.length;t++){const e=m[t];if(e&&!b[e]){const t=n.getUniformLocation(this.program,e);t&&(b[e]=t);}}this.fixedUniforms=a(e,b),this.terrainUniforms=((e,i)=>({u_depth:new t.aL(e,i.u_depth),u_terrain:new t.aL(e,i.u_terrain),u_terrain_dim:new t.aM(e,i.u_terrain_dim),u_terrain_matrix:new t.aN(e,i.u_terrain_matrix),u_terrain_unpack:new t.aO(e,i.u_terrain_unpack),u_terrain_exaggeration:new t.aM(e,i.u_terrain_exaggeration)}))(e,b),this.binderUniforms=s?s.getUniforms(e,b):[];}draw(t,e,i,s,a,o,r,n,l,h,c,u,d,_,p,m,f,g){const v=t.gl;if(this.failedToCreate)return;if(t.program.set(this.program),t.setDepthMode(i),t.setStencilMode(s),t.setColorMode(a),t.setCullFace(o),n){t.activeTexture.set(v.TEXTURE2),v.bindTexture(v.TEXTURE_2D,n.depthTexture),t.activeTexture.set(v.TEXTURE3),v.bindTexture(v.TEXTURE_2D,n.texture);for(const t in this.terrainUniforms)this.terrainUniforms[t].set(n[t]);}for(const t in this.fixedUniforms)this.fixedUniforms[t].set(r[t]);p&&p.setUniforms(t,this.binderUniforms,d,{zoom:_});let x=0;switch(e){case v.LINES:x=2;break;case v.TRIANGLES:x=3;break;case v.LINE_STRIP:x=1;}for(const i of u.get()){const s=i.vaos||(i.vaos={});(s[l]||(s[l]=new le)).bind(t,this,h,p?p.getPaintVertexBuffers():[],c,i.vertexOffset,m,f,g),v.drawElements(e,i.primitiveLength*x,v.UNSIGNED_SHORT,i.primitiveOffset*x*2);}}}function ue(t,e,i){const s=1/St(i,1,e.transform.tileZoom),a=Math.pow(2,i.tileID.overscaledZ),o=i.tileSize*Math.pow(2,e.transform.tileZoom)/a,r=o*(i.tileID.canonical.x+i.tileID.wrap*a),n=o*i.tileID.canonical.y;return {u_image:0,u_texsize:i.imageAtlasTexture.size,u_scale:[s,t.fromScale,t.toScale],u_fade:t.t,u_pixel_coord_upper:[r>>16,n>>16],u_pixel_coord_lower:[65535&r,65535&n]}}const de=(e,i,s,a)=>{const o=i.style.light,r=o.properties.get("position"),n=[r.x,r.y,r.z],l=function(){var e=new t.A(9);return t.A!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}();"viewport"===o.properties.get("anchor")&&function(t,e){var i=Math.sin(e),s=Math.cos(e);t[0]=s,t[1]=i,t[2]=0,t[3]=-i,t[4]=s,t[5]=0,t[6]=0,t[7]=0,t[8]=1;}(l,-i.transform.angle),function(t,e,i){var s=e[0],a=e[1],o=e[2];t[0]=s*i[0]+a*i[3]+o*i[6],t[1]=s*i[1]+a*i[4]+o*i[7],t[2]=s*i[2]+a*i[5]+o*i[8];}(n,n,l);const h=o.properties.get("color");return {u_matrix:e,u_lightpos:n,u_lightintensity:o.properties.get("intensity"),u_lightcolor:[h.r,h.g,h.b],u_vertical_gradient:+s,u_opacity:a}},_e=(e,i,s,a,o,r,n)=>t.e(de(e,i,s,a),ue(r,i,n),{u_height_factor:-Math.pow(2,o.overscaledZ)/n.tileSize/8}),pe=t=>({u_matrix:t}),me=(e,i,s,a)=>t.e(pe(e),ue(s,i,a)),fe=(t,e)=>({u_matrix:t,u_world:e}),ge=(e,i,s,a,o)=>t.e(me(e,i,s,a),{u_world:o}),ve=(t,e,i,s)=>{const a=t.transform;let o,r;if("map"===s.paint.get("circle-pitch-alignment")){const t=St(i,1,a.zoom);o=!0,r=[t,t];}else o=!1,r=a.pixelsToGLUnits;return {u_camera_to_center_distance:a.cameraToCenterDistance,u_scale_with_map:+("map"===s.paint.get("circle-pitch-scale")),u_matrix:t.translatePosMatrix(e.posMatrix,i,s.paint.get("circle-translate"),s.paint.get("circle-translate-anchor")),u_pitch_with_map:+o,u_device_pixel_ratio:t.pixelRatio,u_extrude_scale:r}},xe=(t,e,i)=>{const s=St(i,1,e.zoom),a=Math.pow(2,e.zoom-i.tileID.overscaledZ),o=i.tileID.overscaleFactor();return {u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:s,u_extrude_scale:[e.pixelsToGLUnits[0]/(s*a),e.pixelsToGLUnits[1]/(s*a)],u_overscale_factor:o}},ye=(t,e,i=1)=>({u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:i}),be=t=>({u_matrix:t}),we=(t,e,i,s)=>({u_matrix:t,u_extrude_scale:St(e,1,i),u_intensity:s});function Te(e,i){const s=Math.pow(2,i.canonical.z),a=i.canonical.y;return [new t.U(0,a/s).toLngLat().lat,new t.U(0,(a+1)/s).toLngLat().lat]}const Ie=(t,e,i,s)=>{const a=t.transform;return {u_matrix:De(t,e,i,s),u_ratio:1/St(e,1,a.zoom),u_device_pixel_ratio:t.pixelRatio,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Ee=(e,i,s,a,o)=>t.e(Ie(e,i,s,o),{u_image:0,u_image_height:a}),Se=(t,e,i,s,a)=>{const o=t.transform,r=Pe(e,o);return {u_matrix:De(t,e,i,a),u_texsize:e.imageAtlasTexture.size,u_ratio:1/St(e,1,o.zoom),u_device_pixel_ratio:t.pixelRatio,u_image:0,u_scale:[r,s.fromScale,s.toScale],u_fade:s.t,u_units_to_pixels:[1/o.pixelsToGLUnits[0],1/o.pixelsToGLUnits[1]]}},Ce=(e,i,s,a,o,r)=>{const n=e.lineAtlas,l=Pe(i,e.transform),h="round"===s.layout.get("line-cap"),c=n.getDash(a.from,h),u=n.getDash(a.to,h),d=c.width*o.fromScale,_=u.width*o.toScale;return t.e(Ie(e,i,s,r),{u_patternscale_a:[l/d,-c.height/2],u_patternscale_b:[l/_,-u.height/2],u_sdfgamma:n.width/(256*Math.min(d,_)*e.pixelRatio)/2,u_image:0,u_tex_y_a:c.y,u_tex_y_b:u.y,u_mix:o.t})};function Pe(t,e){return 1/St(t,1,e.tileZoom)}function De(t,e,i,s){return t.translatePosMatrix(s?s.posMatrix:e.tileID.posMatrix,e,i.paint.get("line-translate"),i.paint.get("line-translate-anchor"))}const Me=(t,e,i,s,a)=>{return {u_matrix:t,u_tl_parent:e,u_scale_parent:i,u_buffer_scale:1,u_fade_t:s.mix,u_opacity:s.opacity*a.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:a.paint.get("raster-brightness-min"),u_brightness_high:a.paint.get("raster-brightness-max"),u_saturation_factor:(r=a.paint.get("raster-saturation"),r>0?1-1/(1.001-r):-r),u_contrast_factor:(o=a.paint.get("raster-contrast"),o>0?1/(1-o):1+o),u_spin_weights:ze(a.paint.get("raster-hue-rotate"))};var o,r;};function ze(t){t*=Math.PI/180;const e=Math.sin(t),i=Math.cos(t);return [(2*i+1)/3,(-Math.sqrt(3)*e-i+1)/3,(Math.sqrt(3)*e-i+1)/3]}const Le=(t,e,i,s,a,o,r,n,l,h)=>{const c=a.transform;return {u_is_size_zoom_constant:+("constant"===t||"source"===t),u_is_size_feature_constant:+("constant"===t||"camera"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:c.cameraToCenterDistance,u_pitch:c.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:c.width/c.height,u_fade_change:a.options.fadeDuration?a.symbolFadeChange:1,u_matrix:o,u_label_plane_matrix:r,u_coord_matrix:n,u_is_text:+l,u_pitch_with_map:+s,u_texsize:h,u_texture:0}},Ae=(e,i,s,a,o,r,n,l,h,c,u)=>{const d=o.transform;return t.e(Le(e,i,s,a,o,r,n,l,h,c),{u_gamma_scale:a?Math.cos(d._pitch)*d.cameraToCenterDistance:1,u_device_pixel_ratio:o.pixelRatio,u_is_halo:+u})},Re=(e,i,s,a,o,r,n,l,h,c)=>t.e(Ae(e,i,s,a,o,r,n,l,!0,h,!0),{u_texsize_icon:c,u_texture_icon:1}),ke=(t,e,i)=>({u_matrix:t,u_opacity:e,u_color:i}),Fe=(e,i,s,a,o,r)=>
vendor: 6,360 bytes, line 41
41t.e(function(t,e,i,s){const a=i.imageManager.getPattern(t.from.toString()),o=i.imageManager.getPattern(t.to.toString()),{width:r,height:n}=i.imageManager.getPixelSize(),l=Math.pow(2,s.tileID.overscaledZ),h=s.tileSize*Math.pow(2,i.transform.tileZoom)/l,c=h*(s.tileID.canonical.x+s.tileID.wrap*l),u=h*s.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:a.tl,u_pattern_br_a:a.br,u_pattern_tl_b:o.tl,u_pattern_br_b:o.br,u_texsize:[r,n],u_mix:e.t,u_pattern_size_a:a.displaySize,u_pattern_size_b:o.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/St(s,1,i.transform.tileZoom),u_pixel_coord_upper:[c>>16,u>>16],u_pixel_coord_lower:[65535&c,65535&u]}}(a,r,s,o),{u_matrix:e,u_opacity:i}),Be={fillExtrusion:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_lightpos:new t.aP(e,i.u_lightpos),u_lightintensity:new t.aM(e,i.u_lightintensity),u_lightcolor:new t.aP(e,i.u_lightcolor),u_vertical_gradient:new t.aM(e,i.u_vertical_gradient),u_opacity:new t.aM(e,i.u_opacity)}),fillExtrusionPattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_lightpos:new t.aP(e,i.u_lightpos),u_lightintensity:new t.aM(e,i.u_lightintensity),u_lightcolor:new t.aP(e,i.u_lightcolor),u_vertical_gradient:new t.aM(e,i.u_vertical_gradient),u_height_factor:new t.aM(e,i.u_height_factor),u_image:new t.aL(e,i.u_image),u_texsize:new t.aQ(e,i.u_texsize),u_pixel_coord_upper:new t.aQ(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.aQ(e,i.u_pixel_coord_lower),u_scale:new t.aP(e,i.u_scale),u_fade:new t.aM(e,i.u_fade),u_opacity:new t.aM(e,i.u_opacity)}),fill:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix)}),fillPattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_image:new t.aL(e,i.u_image),u_texsize:new t.aQ(e,i.u_texsize),u_pixel_coord_upper:new t.aQ(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.aQ(e,i.u_pixel_coord_lower),u_scale:new t.aP(e,i.u_scale),u_fade:new t.aM(e,i.u_fade)}),fillOutline:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_world:new t.aQ(e,i.u_world)}),fillOutlinePattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_world:new t.aQ(e,i.u_world),u_image:new t.aL(e,i.u_image),u_texsize:new t.aQ(e,i.u_texsize),u_pixel_coord_upper:new t.aQ(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.aQ(e,i.u_pixel_coord_lower),u_scale:new t.aP(e,i.u_scale),u_fade:new t.aM(e,i.u_fade)}),circle:(e,i)=>({u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_scale_with_map:new t.aL(e,i.u_scale_with_map),u_pitch_with_map:new t.aL(e,i.u_pitch_with_map),u_extrude_scale:new t.aQ(e,i.u_extrude_scale),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_matrix:new t.aN(e,i.u_matrix)}),collisionBox:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_pixels_to_tile_units:new t.aM(e,i.u_pixels_to_tile_units),u_extrude_scale:new t.aQ(e,i.u_extrude_scale),u_overscale_factor:new t.aM(e,i.u_overscale_factor)}),collisionCircle:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_inv_matrix:new t.aN(e,i.u_inv_matrix),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_viewport_size:new t.aQ(e,i.u_viewport_size)}),debug:(e,i)=>({u_color:new t.aR(e,i.u_color),u_matrix:new t.aN(e,i.u_matrix),u_overlay:new t.aL(e,i.u_overlay),u_overlay_scale:new t.aM(e,i.u_overlay_scale)}),clippingMask:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix)}),heatmap:(e,i)=>({u_extrude_scale:new t.aM(e,i.u_extrude_scale),u_intensity:new t.aM(e,i.u_intensity),u_matrix:new t.aN(e,i.u_matrix)}),heatmapTexture:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_world:new t.aQ(e,i.u_world),u_image:new t.aL(e,i.u_image),u_color_ramp:new t.aL(e,i.u_color_ramp),u_opacity:new t.aM(e,i.u_opacity)}),hillshade:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_image:new t.aL(e,i.u_image),u_latrange:new t.aQ(e,i.u_latrange),u_light:new t.aQ(e,i.u_light),u_shadow:new t.aR(e,i.u_shadow),u_highlight:new t.aR(e,i.u_highlight),u_accent:new t.aR(e,i.u_accent)}),hillshadePrepare:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_image:new t.aL(e,i.u_image),u_dimension:new t.aQ(e,i.u_dimension),u_zoom:new t.aM(e,i.u_zoom),u_unpack:new t.aO(e,i.u_unpack)}),line:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_ratio:new t.aM(e,i.u_ratio),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.aQ(e,i.u_units_to_pixels)}),lineGradient:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_ratio:new t.aM(e,i.u_ratio),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.aQ(e,i.u_units_to_pixels),u_image:new t.aL(e,i.u_image),u_image_height:new t.aM(e,i.u_image_height)}),linePattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_texsize:new t.aQ(e,i.u_texsize),u_ratio:new t.aM(e,i.u_ratio),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_image:new t.aL(e,i.u_image),u_units_to_pixels:new t.aQ(e,i.u_units_to_pixels),u_scale:new t.aP(e,i.u_scale),u_fade:new t.aM(e,i.u_fade)}),lineSDF:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_ratio:new t.aM(e,i.u_ratio),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.aQ(e,i.u_units_to_pixels),u_patternscale_a:new t.aQ(e,i.u_patternscale_a),u_patternscale_b:new t.aQ(e,i.u_patternscale_b),u_sdfgamma:new t.aM(e,i.u_sdfgamma),u_image:new t.aL(e,i.u_image),u_tex_y_a:new t.aM(e,i.u_tex_y_a),u_tex_y_b:new t.aM(e,i.u_tex_y_b),u_mix:new t.aM(e,i.u_mix)}),raster:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_tl_parent:new t.aQ(e,i.u_tl_parent),u_scale_parent:new t.aM(e,i.u_scale_parent),u_buffer_scale:new t.aM(e,i.u_buffer_scale),u_fade_t:new t.aM(e,i.u_fade_t),u_opacity:new t.aM(e,i.u_opacity),u_image0:new t.aL(e,i.u_image0),u_image1:new t.aL(e,i.u_image1),u_brightness_low:new t.aM(e,i.u_brightness_low),u_brightness_high:new t.aM(e,i.u_brightness_high),u_saturation_factor:new t.aM(e,i.u_saturation_factor),u_contrast_factor:new t.aM(e,i.u_contrast_factor),u_spin_weights:new t.aP(e,i.u_spin_weights)}),symbolIcon:(e,i)=>({u_is_size_zoom_constant:new t.aL(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.aL(e,i.u_is_size_feature_constant),u_size_t:new t.aM(e,i.u_size_t),u_size:new t.aM(e,i.u_size),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_pitch:new t.aM(e,i.u_pitch),u_rotate_symbol:new t.aL(e,i.u_rotate_symbol),u_aspect_ratio:new t.aM(e,i.u_aspect_ratio),u_fade_change:new t.aM(e,i.u_fade_change),u_matrix:new t.aN(e,i.u_matrix),u_label_plane_matrix:new t.aN(e,i.u_label_plane_matrix
vendor: 18,952 bytes, line 41
41),u_coord_matrix:new t.aN(e,i.u_coord_matrix),u_is_text:new t.aL(e,i.u_is_text),u_pitch_with_map:new t.aL(e,i.u_pitch_with_map),u_texsize:new t.aQ(e,i.u_texsize),u_texture:new t.aL(e,i.u_texture)}),symbolSDF:(e,i)=>({u_is_size_zoom_constant:new t.aL(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.aL(e,i.u_is_size_feature_constant),u_size_t:new t.aM(e,i.u_size_t),u_size:new t.aM(e,i.u_size),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_pitch:new t.aM(e,i.u_pitch),u_rotate_symbol:new t.aL(e,i.u_rotate_symbol),u_aspect_ratio:new t.aM(e,i.u_aspect_ratio),u_fade_change:new t.aM(e,i.u_fade_change),u_matrix:new t.aN(e,i.u_matrix),u_label_plane_matrix:new t.aN(e,i.u_label_plane_matrix),u_coord_matrix:new t.aN(e,i.u_coord_matrix),u_is_text:new t.aL(e,i.u_is_text),u_pitch_with_map:new t.aL(e,i.u_pitch_with_map),u_texsize:new t.aQ(e,i.u_texsize),u_texture:new t.aL(e,i.u_texture),u_gamma_scale:new t.aM(e,i.u_gamma_scale),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_is_halo:new t.aL(e,i.u_is_halo)}),symbolTextAndIcon:(e,i)=>({u_is_size_zoom_constant:new t.aL(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.aL(e,i.u_is_size_feature_constant),u_size_t:new t.aM(e,i.u_size_t),u_size:new t.aM(e,i.u_size),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_pitch:new t.aM(e,i.u_pitch),u_rotate_symbol:new t.aL(e,i.u_rotate_symbol),u_aspect_ratio:new t.aM(e,i.u_aspect_ratio),u_fade_change:new t.aM(e,i.u_fade_change),u_matrix:new t.aN(e,i.u_matrix),u_label_plane_matrix:new t.aN(e,i.u_label_plane_matrix),u_coord_matrix:new t.aN(e,i.u_coord_matrix),u_is_text:new t.aL(e,i.u_is_text),u_pitch_with_map:new t.aL(e,i.u_pitch_with_map),u_texsize:new t.aQ(e,i.u_texsize),u_texsize_icon:new t.aQ(e,i.u_texsize_icon),u_texture:new t.aL(e,i.u_texture),u_texture_icon:new t.aL(e,i.u_texture_icon),u_gamma_scale:new t.aM(e,i.u_gamma_scale),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_is_halo:new t.aL(e,i.u_is_halo)}),background:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_opacity:new t.aM(e,i.u_opacity),u_color:new t.aR(e,i.u_color)}),backgroundPattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_opacity:new t.aM(e,i.u_opacity),u_image:new t.aL(e,i.u_image),u_pattern_tl_a:new t.aQ(e,i.u_pattern_tl_a),u_pattern_br_a:new t.aQ(e,i.u_pattern_br_a),u_pattern_tl_b:new t.aQ(e,i.u_pattern_tl_b),u_pattern_br_b:new t.aQ(e,i.u_pattern_br_b),u_texsize:new t.aQ(e,i.u_texsize),u_mix:new t.aM(e,i.u_mix),u_pattern_size_a:new t.aQ(e,i.u_pattern_size_a),u_pattern_size_b:new t.aQ(e,i.u_pattern_size_b),u_scale_a:new t.aM(e,i.u_scale_a),u_scale_b:new t.aM(e,i.u_scale_b),u_pixel_coord_upper:new t.aQ(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.aQ(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.aM(e,i.u_tile_units_to_pixels)}),terrain:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_texture:new t.aL(e,i.u_texture),u_ele_delta:new t.aM(e,i.u_ele_delta)}),terrainDepth:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_ele_delta:new t.aM(e,i.u_ele_delta)}),terrainCoords:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_texture:new t.aL(e,i.u_texture),u_terrain_coords_id:new t.aM(e,i.u_terrain_coords_id),u_ele_delta:new t.aM(e,i.u_ele_delta)})};class Oe{constructor(t,e,i){this.context=t;const s=t.gl;this.buffer=s.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),s.bufferData(s.ELEMENT_ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?s.DYNAMIC_DRAW:s.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;}bind(){this.context.bindElementBuffer.set(this.buffer);}updateData(t){const e=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),e.bufferSubData(e.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer);}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const Ne={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Ue{constructor(t,e,i,s){this.length=e.length,this.attributes=i,this.itemSize=e.bytesPerElement,this.dynamicDraw=s,this.context=t;const a=t.gl;this.buffer=a.createBuffer(),t.bindVertexBuffer.set(this.buffer),a.bufferData(a.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?a.DYNAMIC_DRAW:a.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;}bind(){this.context.bindVertexBuffer.set(this.buffer);}updateData(t){if(t.length!==this.length)throw new Error(`Length of new data is ${t.length}, which doesn't match current length of ${this.length}`);const e=this.context.gl;this.bind(),e.bufferSubData(e.ARRAY_BUFFER,0,t.arrayBuffer);}enableAttributes(t,e){for(let i=0;i<this.attributes.length;i++){const s=e.attributes[this.attributes[i].name];void 0!==s&&t.enableVertexAttribArray(s);}}setVertexAttribPointers(t,e,i){for(let s=0;s<this.attributes.length;s++){const a=this.attributes[s],o=e.attributes[a.name];void 0!==o&&t.vertexAttribPointer(o,a.components,t[Ne[a.type]],!1,this.itemSize,a.offset+this.itemSize*(i||0));}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const Ze=new WeakMap;function Ge(t){var e;if(Ze.has(t))return Ze.get(t);{const i=null===(e=t.getParameter(t.VERSION))||void 0===e?void 0:e.startsWith("WebGL 2.0");return Ze.set(t,i),i}}class je{constructor(t){this.gl=t.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1;}get(){return this.current}set(t){}getDefault(){return this.default}setDefault(){this.set(this.default);}}class Ve extends je{getDefault(){return t.aT.transparent}set(t){const e=this.current;(t.r!==e.r||t.g!==e.g||t.b!==e.b||t.a!==e.a||this.dirty)&&(this.gl.clearColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1);}}class qe extends je{getDefault(){return 1}set(t){(t!==this.current||this.dirty)&&(this.gl.clearDepth(t),this.current=t,this.dirty=!1);}}class $e extends je{getDefault(){return 0}set(t){(t!==this.current||this.dirty)&&(this.gl.clearStencil(t),this.current=t,this.dirty=!1);}}class We extends je{getDefault(){return [!0,!0,!0,!0]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]!==e[3]||this.dirty)&&(this.gl.colorMask(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1);}}class He extends je{getDefault(){return !0}set(t){(t!==this.current||this.dirty)&&(this.gl.depthMask(t),this.current=t,this.dirty=!1);}}class Xe extends je{getDefault(){return 255}set(t){(t!==this.current||this.dirty)&&(this.gl.stencilMask(t),this.current=t,this.dirty=!1);}}class Ke extends je{getDefault(){return {func:this.gl.ALWAYS,ref:0,mask:255}}set(t){const e=this.current;(t.func!==e.func||t.ref!==e.ref||t.mask!==e.mask||this.dirty)&&(this.gl.stencilFunc(t.func,t.ref,t.mask),this.current=t,this.dirty=!1);}}class Qe extends je{getDefault(){const t=this.gl;return [t.KEEP,t.KEEP,t.KEEP]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||this.dirty)&&(this.gl.stencilOp(t[0],t[1],t[2]),this.current=t,this.dirty=!1);}}class Ye extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;t?e.enable(e.STENCIL_TEST):e.disable(e.STENCIL_TEST),this.current=t,this.dirty=!1;}}class Je extends je{getDefault(){return [0,1]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||this.dirty)&&(this.gl.depthRange(t[0],t[1]),this.current=t,this.dirty=!1);}}class ti extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;t?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),this.current=t,this.dirty=!1;}}class ei extends je{getDefault(){return this.gl.LESS}set(t){(t!==this.current||this.dirty)&&(this.gl.depthFunc(t),this.current=t,this.dirty=!1);}}class ii extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;t?e.enable(e.BLEND):e.disable(e.BLEND),this.current=t,this.dirty=!1;}}class si extends je{getDefault(){const t=this.gl;return [t.ONE,t.ZERO]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||this.dirty)&&(this.gl.blendFunc(t[0],t[1]),this.current=t,this.dirty=!1);}}class ai extends je{getDefault(){return t.aT.transparent}set(t){const e=this.current;(t.r!==e.r||t.g!==e.g||t.b!==e.b||t.a!==e.a||this.dirty)&&(this.gl.blendColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1);}}class oi extends je{getDefault(){return this.gl.FUNC_ADD}set(t){(t!==this.current||this.dirty)&&(this.gl.blendEquation(t),this.current=t,this.dirty=!1);}}class ri extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;t?e.enable(e.CULL_FACE):e.disable(e.CULL_FACE),this.current=t,this.dirty=!1;}}class ni extends je{getDefault(){return this.gl.BACK}set(t){(t!==this.current||this.dirty)&&(this.gl.cullFace(t),this.current=t,this.dirty=!1);}}class li extends je{getDefault(){return this.gl.CCW}set(t){(t!==this.current||this.dirty)&&(this.gl.frontFace(t),this.current=t,this.dirty=!1);}}class hi extends je{getDefault(){return null}set(t){(t!==this.current||this.dirty)&&(this.gl.useProgram(t),this.current=t,this.dirty=!1);}}class ci extends je{getDefault(){return this.gl.TEXTURE0}set(t){(t!==this.current||this.dirty)&&(this.gl.activeTexture(t),this.current=t,this.dirty=!1);}}class ui extends je{getDefault(){const t=this.gl;return [0,0,t.drawingBufferWidth,t.drawingBufferHeight]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]!==e[3]||this.dirty)&&(this.gl.viewport(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1);}}class di extends je{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,t),this.current=t,this.dirty=!1;}}class _i extends je{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.bindRenderbuffer(e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}}class pi extends je{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.bindTexture(e.TEXTURE_2D,t),this.current=t,this.dirty=!1;}}class mi extends je{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.bindBuffer(e.ARRAY_BUFFER,t),this.current=t,this.dirty=!1;}}class fi extends je{getDefault(){return null}set(t){const e=this.gl;e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t),this.current=t,this.dirty=!1;}}class gi extends je{getDefault(){return null}set(t){var e;if(t===this.current&&!this.dirty)return;const i=this.gl;Ge(i)?i.bindVertexArray(t):null===(e=i.getExtension("OES_vertex_array_object"))||void 0===e||e.bindVertexArrayOES(t),this.current=t,this.dirty=!1;}}class vi extends je{getDefault(){return 4}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.pixelStorei(e.UNPACK_ALIGNMENT,t),this.current=t,this.dirty=!1;}}class xi extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t),this.current=t,this.dirty=!1;}}class yi extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t),this.current=t,this.dirty=!1;}}class bi extends je{constructor(t,e){super(t),this.context=t,this.parent=e;}getDefault(){return null}}class wi extends bi{setDirty(){this.dirty=!0;}set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const e=this.gl;e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0),this.current=t,this.dirty=!1;}}class Ti extends bi{set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const e=this.gl;e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}}class Ii extends bi{set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const e=this.gl;e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}}class Ei{constructor(t,e,i,s,a){this.context=t,this.width=e,this.height=i;const o=t.gl,r=this.framebuffer=o.createFramebuffer();if(this.colorAttachment=new wi(t,r),s)this.depthAttachment=a?new Ii(t,r):new Ti(t,r);else if(a)throw new Error("Stencil cannot be setted without depth");if(o.checkFramebufferStatus(o.FRAMEBUFFER)!==o.FRAMEBUFFER_COMPLETE)throw new Error("Framebuffer is not complete")}destroy(){const t=this.context.gl,e=this.colorAttachment.get();if(e&&t.deleteTexture(e),this.depthAttachment){const e=this.depthAttachment.get();e&&t.deleteRenderbuffer(e);}t.deleteFramebuffer(this.framebuffer);}}class Si{constructor(t,e,i){this.blendFunction=t,this.blendColor=e,this.mask=i;}}Si.Replace=[1,0],Si.disabled=new Si(Si.Replace,t.aT.transparent,[!1,!1,!1,!1]),Si.unblended=new Si(Si.Replace,t.aT.transparent,[!0,!0,!0,!0]),Si.alphaBlended=new Si([1,771],t.aT.transparent,[!0,!0,!0,!0]);class Ci{constructor(t){var e,i;if(this.gl=t,this.clearColor=new Ve(this),this.clearDepth=new qe(this),this.clearStencil=new $e(this),this.colorMask=new We(this),this.depthMask=new He(this),this.stencilMask=new Xe(this),this.stencilFunc=new Ke(this),this.stencilOp=new Qe(this),this.stencilTest=new Ye(this),this.depthRange=new Je(this),this.depthTest=new ti(this),this.depthFunc=new ei(this),this.blend=new ii(this),this.blendFunc=new si(this),this.blendColor=new ai(this),this.blendEquation=new oi(this),this.cullFace=new ri(this),this.cullFaceSide=new ni(this),this.frontFace=new li(this),this.program=new hi(this),this.activeTexture=new ci(this),this.viewport=new ui(this),this.bindFramebuffer=new di(this),this.bindRenderbuffer=new _i(this),this.bindTexture=new pi(this),this.bindVertexBuffer=new mi(this),this.bindElementBuffer=new fi(this),this.bindVertexArray=new gi(this),this.pixelStoreUnpack=new vi(this),this.pixelStoreUnpackPremultiplyAlpha=new xi(this),this.pixelStoreUnpackFlipY=new yi(this),this.extTextureFilterAnisotropic=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=t.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),Ge(t)){this.HALF_FLOAT=t.HALF_FLOAT;const s=t.getExtension("EXT_color_buffer_half_float");this.RGBA16F=null!==(e=t.RGBA16F)&&void 0!==e?e:null==s?void 0:s.RGBA16F_EXT,this.RGB16F=null!==(i=t.RGB16F)&&void 0!==i?i:null==s?void 0:s.RGB16F_EXT,t.getExtension("EXT_color_buffer_float");}else {t.getExtension("EXT_color_buffer_half_float"),t.getExtension("OES_texture_half_float_linear");const e=t.getExtension("OES_texture_half_float");this.HALF_FLOAT=null==e?void 0:e.HALF_FLOAT_OES;}}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault();}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.bindVertexArray.dirty=!0,this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0;}createIndexBuffer(t,e){return new Oe(this,t,e)}createVertexBuffer(t,e,i){return new Ue(this,t,e,i)}createRenderbuffer(t,e,i){const s=this.gl,a=s.createRenderbuffer();return this.bindRenderbuffer.set(a),s.renderbufferStorage(s.RENDERBUFFER,t,e,i),this.bindRenderbuffer.set(null),a}createFramebuffer(t,e,i,s){return new Ei(this,t,e,i,s)}clear({color:t,depth:e,stencil:i}){const s=this.gl;let a=0;t&&(a|=s.COLOR_BUFFER_BIT,this.clearColor.set(t),this.colorMask.set([!0,!0,!0,!0])),void 0!==e&&(a|=s.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(e),this.depthMask.set(!0)),void 0!==i&&(a|=s.STENCIL_BUFFER_BIT,this.clearStencil.set(i),this.stencilMask.set(255)),s.clear(a);}setCullFace(t){!1===t.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(t.mode),this.frontFace.set(t.frontFace));}setDepthMode(t){t.func!==this.gl.ALWAYS||t.mask?(this.depthTest.set(!0),this.depthFunc.set(t.func),this.depthMask.set(t.mask),this.depthRange.set(t.range)):this.depthTest.set(!1);}setStencilMode(t){t.test.func!==this.gl.ALWAYS||t.mask?(this.stencilTest.set(!0),this.stencilMask.set(t.mask),this.stencilOp.set([t.fail,t.depthFail,t.pass]),this.stencilFunc.set({func:t.test.func,ref:t.ref,mask:t.test.mask})):this.stencilTest.set(!1);}setColorMode(e){t.aG(e.blendFunction,Si.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(e.blendFunction),this.blendColor.set(e.blendColor)),this.colorMask.set(e.mask);}createVertexArray(){var t;return Ge(this.gl)?this.gl.createVertexArray():null===(t=this.gl.getExtension("OES_vertex_array_object"))||void 0===t?void 0:t.createVertexArrayOES()}deleteVertexArray(t){var e;return Ge(this.gl)?this.gl.deleteVertexArray(t):null===(e=this.gl.getExtension("OES_vertex_array_object"))||void 0===e?void 0:e.deleteVertexArrayOES(t)}unbindVAO(){this.bindVertexArray.set(null);}}class Pi{constructor(t,e,i){this.func=t,this.mask=e,this.range=i;}}Pi.ReadOnly=!1,Pi.ReadWrite=!0,Pi.disabled=new Pi(519,Pi.ReadOnly,[0,1]);const Di=7680;class Mi{constructor(t,e,i,s,a,o){this.test=t,this.ref=e,this.mask=i,this.fail=s,this.depthFail=a,this.pass=o;}}Mi.disabled=new Mi({func:519,mask:0},0,0,Di,Di,Di);class zi{constructor(t,e,i){this.enable=t,this.mode=e,this.frontFace=i;}}let Li;function Ai(e,i,s,a,o,r,n){const l=e.context,h=l.gl,c=e.useProgram("collisionBox"),u=[];let d=0,_=0;for(let p=0;p<a.length;p++){const m=a[p],f=i.getTile(m),g=f.getBucket(s);if(!g)continue;let v=m.posMatrix;0===o[0]&&0===o[1]||(v=e.translatePosMatrix(m.posMatrix,f,o,r));const x=n?g.textCollisionBox:g.iconCollisionBox,y=g.collisionCircleArray;
41if(y.length>0){const i=t.Z(),s=v;t.aU(i,g.placementInvProjMatrix,e.transform.glCoordMatrix),t.aU(i,i,g.placementViewportMatrix),u.push({circleArray:y,circleOffset:_,transform:s,invTransform:i,coord:m}),d+=y.length/4,_=d;}x&&c.draw(l,h.LINES,Pi.disabled,Mi.disabled,e.colorModeForRenderPass(),zi.disabled,xe(v,e.transform,f),e.style.map.terrain&&e.style.map.terrain.getTerrainData(m),s.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,e.transform.zoom,null,null,x.collisionVertexBuffer);}if(!n||!u.length)return;const p=e.useProgram("collisionCircle"),m=new t.aV;m.resize(4*d),m._trim();let f=0;for(const t of u)for(let e=0;e<t.circleArray.length/4;e++){const i=4*e,s=t.circleArray[i+0],a=t.circleArray[i+1],o=t.circleArray[i+2],r=t.circleArray[i+3];m.emplace(f++,s,a,o,r,0),m.emplace(f++,s,a,o,r,1),m.emplace(f++,s,a,o,r,2),m.emplace(f++,s,a,o,r,3);}(!Li||Li.length<2*d)&&(Li=function(e){const i=2*e,s=new t.aX;s.resize(i),s._trim();for(let t=0;t<i;t++){const e=6*t;s.uint16[e+0]=4*t+0,s.uint16[e+1]=4*t+1,s.uint16[e+2]=4*t+2,s.uint16[e+3]=4*t+2,s.uint16[e+4]=4*t+3,s.uint16[e+5]=4*t+0;}return s}(d));const g=l.createIndexBuffer(Li,!0),v=l.createVertexBuffer(m,t.aW.members,!0);for(const i of u){const a={u_matrix:i.transform,u_inv_matrix:i.invTransform,u_camera_to_center_distance:(x=e.transform).cameraToCenterDistance,u_viewport_size:[x.width,x.height]};p.draw(l,h.TRIANGLES,Pi.disabled,Mi.disabled,e.colorModeForRenderPass(),zi.disabled,a,e.style.map.terrain&&e.style.map.terrain.getTerrainData(i.coord),s.id,v,g,t.S.simpleSegment(0,2*i.circleOffset,i.circleArray.length,i.circleArray.length/2),null,e.transform.zoom,null,null,null);}var x;v.destroy(),g.destroy();}zi.disabled=new zi(!1,1029,2305),zi.backCCW=new zi(!0,1029,2305);const Ri=t.ao(new Float32Array(16));function ki(e,i,s,a,o,r){const{horizontalAlign:n,verticalAlign:l}=t.au(e);return new t.P((-(n-.5)*i/o+a[0])*r,(-(l-.5)*s/o+a[1])*r)}function Fi(e,i,s,a,o,r,n,l,h,c,u){const d=e.text.placedSymbolArray,_=e.text.dynamicLayoutVertexArray,p=e.icon.dynamicLayoutVertexArray,m={};_.clear();for(let p=0;p<d.length;p++){const f=d.get(p),g=f.hidden||!f.crossTileID||e.allowVerticalPlacement&&!f.placedOrientation?null:a[f.crossTileID];if(g){const a=new t.P(f.anchorX,f.anchorY),d=ht(a,s?n:r,u),p=ct(o.cameraToCenterDistance,d.signedDistanceFromCamera);let v=t.aj(e.textSizeData,h,f)*p/t.ap;s&&(v*=e.tilePixelRatio/l);const{width:x,height:y,anchor:b,textOffset:w,textBoxScale:T}=g,I=ki(b,x,y,w,T,v),E=s?ht(a.add(I),r,u).point:d.point.add(i?I.rotate(-o.angle):I),S=e.allowVerticalPlacement&&f.placedOrientation===t.ai.vertical?Math.PI/2:0;for(let e=0;e<f.numGlyphs;e++)t.ak(_,E,S);c&&f.associatedIconIndex>=0&&(m[f.associatedIconIndex]={shiftedAnchor:E,angle:S});}else wt(f.numGlyphs,_);}if(c){p.clear();const i=e.icon.placedSymbolArray;for(let e=0;e<i.length;e++){const s=i.get(e);if(s.hidden)wt(s.numGlyphs,p);else {const i=m[e];if(i)for(let e=0;e<s.numGlyphs;e++)t.ak(p,i.shiftedAnchor,i.angle);else wt(s.numGlyphs,p);}}e.icon.dynamicLayoutVertexBuffer.updateData(p);}e.text.dynamicLayoutVertexBuffer.updateData(_);}function Bi(t,e,i){return i.iconsInText&&e?"symbolTextAndIcon":t?"symbolSDF":"symbolIcon"}function Oi(e,i,s,a,o,r,n,l,h,c,u,d){const _=e.context,p=_.gl,m=e.transform,f="map"===l,g="map"===h,v="viewport"!==l&&"point"!==s.layout.get("symbol-placement"),x=f&&!g&&!v,y=!s.layout.get("symbol-sort-key").isConstant();let b=!1;const w=e.depthModeForSublayer(0,Pi.ReadOnly),T=s._unevaluatedLayout.hasValue("text-variable-anchor")||s._unevaluatedLayout.hasValue("text-variable-anchor-offset"),I=[];for(const l of a){const a=i.getTile(l),h=a.getBucket(s);if(!h)continue;const u=o?h.text:h.icon;if(!u||!u.segments.get().length||!u.hasVisibleVertices)continue;const d=u.programConfigurations.get(s.id),_=o||h.sdfIcons,w=o?h.textSizeData:h.iconSizeData,E=g||0!==m.pitch,S=e.useProgram(Bi(_,o,h),d),C=t.ah(w,m.zoom),P=e.style.map.terrain&&e.style.map.terrain.getTerrainData(l);let D,M,z,L,A=[0,0],R=null;if(o)M=a.glyphAtlasTexture,z=p.LINEAR,D=a.glyphAtlasTexture.size,h.iconsInText&&(A=a.imageAtlasTexture.size,R=a.imageAtlasTexture,L=E||e.options.rotating||e.options.zooming||"composite"===w.kind||"camera"===w.kind?p.LINEAR:p.NEAREST);else {const t=1!==s.layout.get("icon-size").constantOr(0)||h.iconsNeedLinear;M=a.imageAtlasTexture,z=_||e.options.rotating||e.options.zooming||t||E?p.LINEAR:p.NEAREST,D=a.imageAtlasTexture.size;}const k=St(a,1,e.transform.zoom),F=nt(l.posMatrix,g,f,e.transform,k),B=lt(l.posMatrix,g,f,e.transform,k),O=T&&h.hasTextData(),N="none"!==s.layout.get("icon-text-fit")&&O&&h.hasIconData();if(v){const t=e.style.map.terrain?(t,i)=>e.style.map.terrain.getElevation(l,t,i):null,i="map"===s.layout.get("text-rotation-alignment");dt(h,l.posMatrix,e,o,F,B,g,c,i,t);}const U=e.translatePosMatrix(l.posMatrix,a,r,n),Z=v||o&&T||N?Ri:F,G=e.translatePosMatrix(B,a,r,n,!0),j=_&&0!==s.paint.get(o?"text-halo-width":"icon-halo-width").constantOr(1);let V;V=_?h.iconsInText?Re(w.kind,C,x,g,e,U,Z,G,D,A):Ae(w.kind,C,x,g,e,U,Z,G,o,D,!0):Le(w.kind,C,x,g,e,U,Z,G,o,D);const q={program:S,buffers:u,uniformValues:V,atlasTexture:M,atlasTextureIcon:R,atlasInterpolation:z,atlasInterpolationIcon:L,isSDF:_,hasHalo:j};if(y&&h.canOverlap){b=!0;const e=u.segments.get();for(const i of e)I.push({segments:new t.S([i]),sortKey:i.sortKey,state:q,terrainData:P});}else I.push({segments:u.segments,sortKey:0,state:q,terrainData:P});}b&&I.sort(((t,e)=>t.sortKey-e.sortKey));for(const t of I){const i=t.state;if(_.activeTexture.set(p.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,p.CLAMP_TO_EDGE),i.atlasTextureIcon&&(_.activeTexture.set(p.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,p.CLAMP_TO_EDGE)),i.isSDF){const a=i.uniformValues;i.hasHalo&&(a.u_is_halo=1,Ni(i.buffers,t.segments,s,e,i.program,w,u,d,a,t.terrainData)),a.u_is_halo=0;}Ni(i.buffers,t.segments,s,e,i.program,w,u,d,i.uniformValues,t.terrainData);}}
vendor: 15,784 bytes, line 41
41function Ni(t,e,i,s,a,o,r,n,l,h){const c=s.context;a.draw(c,c.gl.TRIANGLES,o,r,n,zi.disabled,l,h,i.id,t.layoutVertexBuffer,t.indexBuffer,e,i.paint,s.transform.zoom,t.programConfigurations.get(i.id),t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer);}function Ui(t,e,i,s,a){if(!i||!s||!s.imageAtlas)return;const o=s.imageAtlas.patternPositions;let r=o[i.to.toString()],n=o[i.from.toString()];if(!r&&n&&(r=n),!n&&r&&(n=r),!r||!n){const t=a.getPaintProperty(e);r=o[t],n=o[t];}r&&n&&t.setConstantPatternPositions(r,n);}function Zi(t,e,i,s,a,o,r){const n=t.context.gl,l="fill-pattern",h=i.paint.get(l),c=h&&h.constantOr(1),u=i.getCrossfadeParameters();let d,_,p,m,f;r?(_=c&&!i.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",d=n.LINES):(_=c?"fillPattern":"fill",d=n.TRIANGLES);const g=h.constantOr(null);for(const h of s){const s=e.getTile(h);if(c&&!s.patternsLoaded())continue;const v=s.getBucket(i);if(!v)continue;const x=v.programConfigurations.get(i.id),y=t.useProgram(_,x),b=t.style.map.terrain&&t.style.map.terrain.getTerrainData(h);c&&(t.context.activeTexture.set(n.TEXTURE0),s.imageAtlasTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE),x.updatePaintBuffers(u)),Ui(x,l,g,s,i);const w=b?h:null,T=t.translatePosMatrix(w?w.posMatrix:h.posMatrix,s,i.paint.get("fill-translate"),i.paint.get("fill-translate-anchor"));if(r){m=v.indexBuffer2,f=v.segments2;const e=[n.drawingBufferWidth,n.drawingBufferHeight];p="fillOutlinePattern"===_&&c?ge(T,t,u,s,e):fe(T,e);}else m=v.indexBuffer,f=v.segments,p=c?me(T,t,u,s):pe(T);y.draw(t.context,d,a,t.stencilModeForClipping(h),o,zi.disabled,p,b,i.id,v.layoutVertexBuffer,m,f,i.paint,t.transform.zoom,x);}}function Gi(t,e,i,s,a,o,r){const n=t.context,l=n.gl,h="fill-extrusion-pattern",c=i.paint.get(h),u=c.constantOr(1),d=i.getCrossfadeParameters(),_=i.paint.get("fill-extrusion-opacity"),p=c.constantOr(null);for(const c of s){const s=e.getTile(c),m=s.getBucket(i);if(!m)continue;const f=t.style.map.terrain&&t.style.map.terrain.getTerrainData(c),g=m.programConfigurations.get(i.id),v=t.useProgram(u?"fillExtrusionPattern":"fillExtrusion",g);u&&(t.context.activeTexture.set(l.TEXTURE0),s.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),g.updatePaintBuffers(d)),Ui(g,h,p,s,i);const x=t.translatePosMatrix(c.posMatrix,s,i.paint.get("fill-extrusion-translate"),i.paint.get("fill-extrusion-translate-anchor")),y=i.paint.get("fill-extrusion-vertical-gradient"),b=u?_e(x,t,y,_,c,d,s):de(x,t,y,_);v.draw(n,n.gl.TRIANGLES,a,o,r,zi.backCCW,b,f,i.id,m.layoutVertexBuffer,m.indexBuffer,m.segments,i.paint,t.transform.zoom,g,t.style.map.terrain&&m.centroidVertexBuffer);}}function ji(t,e,i,s,a,o,r){const n=t.context,l=n.gl,h=i.fbo;if(!h)return;const c=t.useProgram("hillshade"),u=t.style.map.terrain&&t.style.map.terrain.getTerrainData(e);n.activeTexture.set(l.TEXTURE0),l.bindTexture(l.TEXTURE_2D,h.colorAttachment.get()),c.draw(n,l.TRIANGLES,a,o,r,zi.disabled,((t,e,i,s)=>{const a=i.paint.get("hillshade-shadow-color"),o=i.paint.get("hillshade-highlight-color"),r=i.paint.get("hillshade-accent-color");let n=i.paint.get("hillshade-illumination-direction")*(Math.PI/180);"viewport"===i.paint.get("hillshade-illumination-anchor")&&(n-=t.transform.angle);const l=!t.options.moving;return {u_matrix:s?s.posMatrix:t.transform.calculatePosMatrix(e.tileID.toUnwrapped(),l),u_image:0,u_latrange:Te(0,e.tileID),u_light:[i.paint.get("hillshade-exaggeration"),n],u_shadow:a,u_highlight:o,u_accent:r}})(t,i,s,u?e:null),u,s.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments);}function Vi(e,i,s,a,o,r){const n=e.context,l=n.gl,h=i.dem;if(h&&h.data){const c=h.dim,u=h.stride,d=h.getPixels();if(n.activeTexture.set(l.TEXTURE1),n.pixelStoreUnpackPremultiplyAlpha.set(!1),i.demTexture=i.demTexture||e.getTileTexture(u),i.demTexture){const t=i.demTexture;t.update(d,{premultiply:!1}),t.bind(l.NEAREST,l.CLAMP_TO_EDGE);}else i.demTexture=new x(n,d,l.RGBA,{premultiply:!1}),i.demTexture.bind(l.NEAREST,l.CLAMP_TO_EDGE);n.activeTexture.set(l.TEXTURE0);let _=i.fbo;if(!_){const t=new x(n,{width:c,height:c,data:null},l.RGBA);t.bind(l.LINEAR,l.CLAMP_TO_EDGE),_=i.fbo=n.createFramebuffer(c,c,!0,!1),_.colorAttachment.set(t.texture);}n.bindFramebuffer.set(_.framebuffer),n.viewport.set([0,0,c,c]),e.useProgram("hillshadePrepare").draw(n,l.TRIANGLES,a,o,r,zi.disabled,((e,i)=>{const s=i.stride,a=t.Z();return t.aS(a,0,t.N,-t.N,0,0,1),t.$(a,a,[0,-t.N,0]),{u_matrix:a,u_image:1,u_dimension:[s,s],u_zoom:e.overscaledZ,u_unpack:i.getUnpackVector()}})(i.tileID,h),null,s.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments),i.needsHillshadePrepare=!1;}}function qi(e,i,s,a,o,r){const n=a.paint.get("raster-fade-duration");if(!r&&n>0){const a=t.h.now(),r=(a-e.timeAdded)/n,l=i?(a-i.timeAdded)/n:-1,h=s.getSource(),c=o.coveringZoomLevel({tileSize:h.tileSize,roundZoom:h.roundZoom}),u=!i||Math.abs(i.tileID.overscaledZ-c)>Math.abs(e.tileID.overscaledZ-c),d=u&&e.refreshedUponExpiration?1:t.ad(u?r:1-l,0,1);return e.refreshedUponExpiration&&r>=1&&(e.refreshedUponExpiration=!1),i?{opacity:1,mix:1-d}:{opacity:d,mix:0}}return {opacity:1,mix:0}}const $i=new t.aT(1,0,0,1),Wi=new t.aT(0,1,0,1),Hi=new t.aT(0,0,1,1),Xi=new t.aT(1,0,1,1),Ki=new t.aT(0,1,1,1);function Qi(t,e,i,s){Ji(t,0,e+i/2,t.transform.width,i,s);}function Yi(t,e,i,s){Ji(t,e-i/2,0,i,t.transform.height,s);}function Ji(t,e,i,s,a,o){const r=t.context,n=r.gl;n.enable(n.SCISSOR_TEST),n.scissor(e*t.pixelRatio,i*t.pixelRatio,s*t.pixelRatio,a*t.pixelRatio),r.clear({color:o}),n.disable(n.SCISSOR_TEST);}function ts(e,i,s){const a=e.context,o=a.gl,r=s.posMatrix,n=e.useProgram("debug"),l=Pi.disabled,h=Mi.disabled,c=e.colorModeForRenderPass(),u="$debug",d=e.style.map.terrain&&e.style.map.terrain.getTerrainData(s);a.activeTexture.set(o.TEXTURE0);const _=i.getTileByID(s.key).latestRawTileData,p=Math.floor((_&&_.byteLength||0)/1024),m=i.getTile(s).tileSize,f=512/Math.min(m,512)*(s.overscaledZ/e.transform.zoom)*.5;let g=s.canonical.toString();s.overscaledZ!==s.canonical.z&&(g+=` => ${s.overscaledZ}`),function(t,e){t.initDebugOverlayCanvas();const i=t.debugOverlayCanvas,s=t.context.gl,a=t.debugOverlayCanvas.getContext("2d");a.clearRect(0,0,i.width,i.height),a.shadowColor="white",a.shadowBlur=2,a.lineWidth=1.5,a.strokeStyle="white",a.textBaseline="top",a.font="bold 36px Open Sans, sans-serif",a.fillText(e,5,5),a.strokeText(e,5,5),t.debugOverlayTexture.update(i),t.debugOverlayTexture.bind(s.LINEAR,s.CLAMP_TO_EDGE);}(e,`${g} ${p}kB`),n.draw(a,o.TRIANGLES,l,h,Si.alphaBlended,zi.disabled,ye(r,t.aT.transparent,f),null,u,e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments),n.draw(a,o.LINE_STRIP,l,h,c,zi.disabled,ye(r,t.aT.red),d,u,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);}function es(t,e,i){const s=t.context,a=s.gl,o=t.colorModeForRenderPass(),r=new Pi(a.LEQUAL,Pi.ReadWrite,t.depthRangeFor3D),n=t.useProgram("terrain"),l=e.getTerrainMesh();s.bindFramebuffer.set(null),s.viewport.set([0,0,t.width,t.height]);for(const h of i){const i=t.renderToTexture.getTexture(h),c=e.getTerrainData(h.tileID);s.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,i.texture);const u={u_matrix:t.transform.calculatePosMatrix(h.tileID.toUnwrapped()),u_texture:0,u_ele_delta:e.getMeshFrameDelta(t.transform.zoom)};n.draw(s,a.TRIANGLES,r,Mi.disabled,o,zi.backCCW,u,c,"terrain",l.vertexBuffer,l.indexBuffer,l.segments);}}class is{constructor(e,i){this.context=new Ci(e),this.transform=i,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:t.Z(),renderTime:0},this.setup(),this.numSublayers=K.maxUnderzooming+K.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Yt;}resize(t,e,i){if(this.width=Math.floor(t*i),this.height=Math.floor(e*i),this.pixelRatio=i,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const t of this.style._order)this.style._layers[t].resize();}setup(){const e=this.context,i=new t.a_;i.emplaceBack(0,0),i.emplaceBack(t.N,0),i.emplaceBack(0,t.N),i.emplaceBack(t.N,t.N),this.tileExtentBuffer=e.createVertexBuffer(i,ae.members),this.tileExtentSegments=t.S.simpleSegment(0,0,4,2);const s=new t.a_;s.emplaceBack(0,0),s.emplaceBack(t.N,0),s.emplaceBack(0,t.N),s.emplaceBack(t.N,t.N),this.debugBuffer=e.createVertexBuffer(s,ae.members),this.debugSegments=t.S.simpleSegment(0,0,4,5);const a=new t.V;a.emplaceBack(0,0,0,0),a.emplaceBack(t.N,0,t.N,0),a.emplaceBack(0,t.N,0,t.N),a.emplaceBack(t.N,t.N,t.N,t.N),this.rasterBoundsBuffer=e.createVertexBuffer(a,O.members),this.rasterBoundsSegments=t.S.simpleSegment(0,0,4,2);const o=new t.a_;o.emplaceBack(0,0),o.emplaceBack(1,0),o.emplaceBack(0,1),o.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(o,ae.members),this.viewportSegments=t.S.simpleSegment(0,0,4,2);const r=new t.a$;r.emplaceBack(0),r.emplaceBack(1),r.emplaceBack(3),r.emplaceBack(2),r.emplaceBack(0),this.tileBorderIndexBuffer=e.createIndexBuffer(r);const n=new t.b0;n.emplaceBack(0,1,2),n.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=e.createIndexBuffer(n);const l=this.context.gl;this.stencilClearMode=new Mi({func:l.ALWAYS,mask:0},0,255,l.ZERO,l.ZERO,l.ZERO);}clearStencil(){const e=this.context,i=e.gl;this.nextStencilID=1,this.currentStencilSource=void 0;const s=t.Z();t.aS(s,0,this.width,this.height,0,0,1),t.a0(s,s,[i.drawingBufferWidth,i.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(e,i.TRIANGLES,Pi.disabled,this.stencilClearMode,Si.disabled,zi.disabled,be(s),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments);}_renderTileClippingMasks(t,e){if(this.currentStencilSource===t.source||!t.isTileClipped()||!e||!e.length)return;this.currentStencilSource=t.source;const i=this.context,s=i.gl;this.nextStencilID+e.length>256&&this.clearStencil(),i.setColorMode(Si.disabled),i.setDepthMode(Pi.disabled);const a=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(const t of e){const e=this._tileClippingMaskIDs[t.key]=this.nextStencilID++,o=this.style.map.terrain&&this.style.map.terrain.getTerrainData(t);a.draw(i,s.TRIANGLES,Pi.disabled,new Mi({func:s.ALWAYS,mask:0},e,255,s.KEEP,s.KEEP,s.REPLACE),Si.disabled,zi.disabled,be(t.posMatrix),o,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments);}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,e=this.context.gl;return new Mi({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)}stencilModeForClipping(t){const e=this.context.gl;return new Mi({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)}stencilConfigForOverlap(t){const e=this.context.gl,i=t.sort(((t,e)=>e.overscaledZ-t.overscaledZ)),s=i[i.length-1].overscaledZ,a=i[0].overscaledZ-s+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();const t={};for(let i=0;i<a;i++)t[i+s]=new Mi({func:e.GEQUAL,mask:255},i+this.nextStencilID,255,e.KEEP,e.KEEP,e.REPLACE);return this.nextStencilID+=a,[t,i]}return [{[s]:Mi.disabled},i]}colorModeForRenderPass(){const e=this.context.gl;if(this._showOverdrawInspector){const i=1/8;return new Si([e.CONSTANT_COLOR,e.ONE],new t.aT(i,i,i,0),[!0,!0,!0,!0])}return "opaque"===this.renderPass?Si.unblended:Si.alphaBlended}depthModeForSublayer(t,e,i){if(!this.opaquePassEnabledForLayer())return Pi.disabled;const s=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new Pi(i||this.context.gl.LEQUAL,e,[s,s])}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}render(e,i){this.style=e,this.options=i,this.lineAtlas=e.lineAtlas,this.imageManager=e.imageManager,this.glyphManager=e.glyphManager,this.symbolFadeChange=e.placement.symbolFadeChange(t.h.now()),this.imageManager.beginFrame();const s=this.style._order,a=this.style.sourceCaches,o={},r={},n={};for(const t in a){const e=a[t];e.used&&e.prepare(this.context),o[t]=e.getVisibleCoordinates(),r[t]=o[t].slice().reverse(),n[t]=e.getVisibleCoordinates(!0).reverse();}this.opaquePassCutoff=1/0;for(let t=0;t<s.length;t++)if(this.style._layers[s[t]].is3D()){this.opaquePassCutoff=t;break}if(this.renderToTexture){this.renderToTexture.prepareForRender(this.style,this.transform.zoom),this.opaquePassCutoff=0;const e=this.style.map.terrain.sourceCache.tilesAfterTime(this.terrainFacilitator.renderTime);(this.terrainFacilitator.dirty||!t.b1(this.terrainFacilitator.matrix,this.transform.projMatrix)||e.length)&&(t.b2(this.terrainFacilitator.matrix,this.transform.projMatrix),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(e,i){const s=e.context,a=s.gl,o=Si.unblended,r=new Pi(a.LEQUAL,Pi.ReadWrite,[0,1]),n=i.getTerrainMesh(),l=i.sourceCache.getRenderableTiles(),h=e.useProgram("terrainDepth");s.bindFramebuffer.set(i.getFramebuffer("depth").framebuffer),s.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),s.clear({color:t.aT.transparent,depth:1});for(const t of l){const l=i.getTerrainData(t.tileID),c={u_matrix:e.transform.calculatePosMatrix(t.tileID.toUnwrapped()),u_ele_delta:i.getMeshFrameDelta(e.transform.zoom)};h.draw(s,a.TRIANGLES,r,Mi.disabled,o,zi.backCCW,c,l,"terrain",n.vertexBuffer,n.indexBuffer,n.segments);}s.bindFramebuffer.set(null),s.viewport.set([0,0,e.width,e.height]);}(this,this.style.map.terrain),function(e,i){const s=e.context,a=s.gl,o=Si.unblended,r=new Pi(a.LEQUAL,Pi.ReadWrite,[0,1]),n=i.getTerrainMesh(),l=i.getCoordsTexture(),h=i.sourceCache.getRenderableTiles(),c=e.useProgram("terrainCoords");s.bindFramebuffer.set(i.getFramebuffer("coords").framebuffer),s.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),s.clear({color:t.aT.transparent,depth:1}),i.coordsIndex=[];for(const t of h){const h=i.getTerrainData(t.tileID);s.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,l.texture);const u={u_matrix:e.transform.calculatePosMatrix(t.tileID.toUnwrapped()),u_terrain_coords_id:(255-i.coordsIndex.length)/255,u_texture:0,u_ele_delta:i.getMeshFrameDelta(e.transform.zoom)};c.draw(s,a.TRIANGLES,r,Mi.disabled,o,zi.backCCW,u,h,"terrain",n.vertexBuffer,n.indexBuffer,n.segments),i.coordsIndex.push(t.tileID.key);}s.bindFramebuffer.set(null),s.viewport.set([0,0,e.width,e.height]);}(this,this.style.map.terrain));}this.renderPass="offscreen";for(const t of s){const e=this.style._layers[t];if(!e.hasOffscreenPass()||e.isHidden(this.transform.zoom))continue;const i=r[e.source];("custom"===e.type||i.length)&&this.renderLayer(this,a[e.source],e,i);}if(this.context.bindFramebuffer.set(null),this.context.clear({color:i.showOverdrawInspector?t.aT.black:t.aT.transparent,depth:1}),this.clearStencil(),this._showOverdrawInspector=i.showOverdrawInspector,this.depthRangeFor3D=[0,1-(e._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=s.length-1;this.currentLayer>=0;this.currentLayer--){const t=this.style._layers[s[this.currentLayer]],e=a[t.source],i=o[t.source];this._renderTileClippingMasks(t,i),this.renderLayer(this,e,t,i);}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer<s.length;this.currentLayer++){const t=this.style._layers[s[this.currentLayer]],e=a[t.source];if(this.renderToTexture&&this.renderToTexture.renderLayer(t))continue;const i=("symbol"===t.type?n:r)[t.source];this._renderTileClippingMasks(t,o[t.source]),this.renderLayer(this,e,t,i);}if(this.options.showTileBoundaries){const t=function(t,e){let i=null;const s=Object.values(t._layers).flatMap((i=>i.source&&!i.isHidden(e)?[t.sourceCaches[i.source]]:[])),a=s.filter((t=>"vector"===t.getSource().type)),o=s.filter((t=>"vector"!==t.getSource().type)),r=t=>{(!i||i.getSource().maxzoom<t.getSource().maxzoom)&&(i=t);};return a.forEach((t=>r(t))),i||o.forEach((t=>r(t))),i}(this.style,this.transform.zoom);
41t&&function(t,e,i){for(let s=0;s<i.length;s++)ts(t,e,i[s]);}(this,t,t.getVisibleCoordinates());}this.options.showPadding&&function(t){const e=t.transform.padding;Qi(t,t.transform.height-(e.top||0),3,$i),Qi(t,e.bottom||0,3,Wi),Yi(t,e.left||0,3,Hi),Yi(t,t.transform.width-(e.right||0),3,Xi);const i=t.transform.centerPoint;!function(t,e,i,s){Ji(t,e-1,i-10,2,20,s),Ji(t,e-10,i-1,20,2,s);}(t,i.x,t.transform.height-i.y,Ki);}(this),this.context.setDefault();}renderLayer(e,i,s,a){if(!s.isHidden(this.transform.zoom)&&("background"===s.type||"custom"===s.type||(a||[]).length))switch(this.id=s.id,s.type){case"symbol":!function(e,i,s,a,o){if("translucent"!==e.renderPass)return;const r=Mi.disabled,n=e.colorModeForRenderPass();(s._unevaluatedLayout.hasValue("text-variable-anchor")||s._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(e,i,s,a,o,r,n){const l=i.transform,h="map"===o,c="map"===r;for(const o of e){const e=a.getTile(o),r=e.getBucket(s);if(!r||!r.text||!r.text.segments.get().length)continue;const u=t.ah(r.textSizeData,l.zoom),d=St(e,1,i.transform.zoom),_=nt(o.posMatrix,c,h,i.transform,d),p="none"!==s.layout.get("icon-text-fit")&&r.hasIconData();if(u){const t=Math.pow(2,l.zoom-e.tileID.overscaledZ);Fi(r,h,c,n,l,_,o.posMatrix,t,u,p,i.style.map.terrain?(t,e)=>i.style.map.terrain.getElevation(o,t,e):null);}}}(a,e,s,i,s.layout.get("text-rotation-alignment"),s.layout.get("text-pitch-alignment"),o),0!==s.paint.get("icon-opacity").constantOr(1)&&Oi(e,i,s,a,!1,s.paint.get("icon-translate"),s.paint.get("icon-translate-anchor"),s.layout.get("icon-rotation-alignment"),s.layout.get("icon-pitch-alignment"),s.layout.get("icon-keep-upright"),r,n),0!==s.paint.get("text-opacity").constantOr(1)&&Oi(e,i,s,a,!0,s.paint.get("text-translate"),s.paint.get("text-translate-anchor"),s.layout.get("text-rotation-alignment"),s.layout.get("text-pitch-alignment"),s.layout.get("text-keep-upright"),r,n),i.map.showCollisionBoxes&&(Ai(e,i,s,a,s.paint.get("text-translate"),s.paint.get("text-translate-anchor"),!0),Ai(e,i,s,a,s.paint.get("icon-translate"),s.paint.get("icon-translate-anchor"),!1));}(e,i,s,a,this.style.placement.variableOffsets);break;case"circle":!function(e,i,s,a){if("translucent"!==e.renderPass)return;const o=s.paint.get("circle-opacity"),r=s.paint.get("circle-stroke-width"),n=s.paint.get("circle-stroke-opacity"),l=!s.layout.get("circle-sort-key").isConstant();if(0===o.constantOr(1)&&(0===r.constantOr(1)||0===n.constantOr(1)))return;const h=e.context,c=h.gl,u=e.depthModeForSublayer(0,Pi.ReadOnly),d=Mi.disabled,_=e.colorModeForRenderPass(),p=[];for(let o=0;o<a.length;o++){const r=a[o],n=i.getTile(r),h=n.getBucket(s);if(!h)continue;const c=h.programConfigurations.get(s.id),u=e.useProgram("circle",c),d=h.layoutVertexBuffer,_=h.indexBuffer,m=e.style.map.terrain&&e.style.map.terrain.getTerrainData(r),f={programConfiguration:c,program:u,layoutVertexBuffer:d,indexBuffer:_,uniformValues:ve(e,r,n,s),terrainData:m};if(l){const e=h.segments.get();for(const i of e)p.push({segments:new t.S([i]),sortKey:i.sortKey,state:f});}else p.push({segments:h.segments,sortKey:0,state:f});}l&&p.sort(((t,e)=>t.sortKey-e.sortKey));for(const t of p){const{programConfiguration:i,program:a,layoutVertexBuffer:o,indexBuffer:r,uniformValues:n,terrainData:l}=t.state;a.draw(h,c.TRIANGLES,u,d,_,zi.disabled,n,l,s.id,o,r,t.segments,s.paint,e.transform.zoom,i);}}(e,i,s,a);break;case"heatmap":!function(e,i,s,a){if(0!==s.paint.get("heatmap-opacity"))if("offscreen"===e.renderPass){const o=e.context,r=o.gl,n=Mi.disabled,l=new Si([r.ONE,r.ONE],t.aT.transparent,[!0,!0,!0,!0]);!function(t,e,i){const s=t.gl;t.activeTexture.set(s.TEXTURE1),t.viewport.set([0,0,e.width/4,e.height/4]);let a=i.heatmapFbo;if(a)s.bindTexture(s.TEXTURE_2D,a.colorAttachment.get()),t.bindFramebuffer.set(a.framebuffer);else {const o=s.createTexture();s.bindTexture(s.TEXTURE_2D,o),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),a=i.heatmapFbo=t.createFramebuffer(e.width/4,e.height/4,!1,!1),function(t,e,
41i,s){var a,o;const r=t.gl,n=null!==(a=t.HALF_FLOAT)&&void 0!==a?a:r.UNSIGNED_BYTE,l=null!==(o=t.RGBA16F)&&void 0!==o?o:r.RGBA;r.texImage2D(r.TEXTURE_2D,0,l,e.width/4,e.height/4,0,r.RGBA,n,null),s.colorAttachment.set(i);}(t,e,o,a);}}(o,e,s),o.clear({color:t.aT.transparent});for(let t=0;t<a.length;t++){const h=a[t];if(i.hasRenderableParent(h))continue;const c=i.getTile(h),u=c.getBucket(s);if(!u)continue;const d=u.programConfigurations.get(s.id),_=e.useProgram("heatmap",d),{zoom:p}=e.transform;_.draw(o,r.TRIANGLES,Pi.disabled,n,l,zi.disabled,we(h.posMatrix,c,p,s.paint.get("heatmap-intensity")),null,s.id,u.layoutVertexBuffer,u.indexBuffer,u.segments,s.paint,e.transform.zoom,d);}o.viewport.set([0,0,e.width,e.height]);}else "translucent"===e.renderPass&&(e.context.setColorMode(e.colorModeForRenderPass()),function(e,i){const s=e.context,a=s.gl,o=i.heatmapFbo;if(!o)return;s.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,o.colorAttachment.get()),s.activeTexture.set(a.TEXTURE1);let r=i.colorRampTexture;r||(r=i.colorRampTexture=new x(s,i.colorRamp,a.RGBA)),r.bind(a.LINEAR,a.CLAMP_TO_EDGE),e.useProgram("heatmapTexture").draw(s,a.TRIANGLES,Pi.disabled,Mi.disabled,e.colorModeForRenderPass(),zi.disabled,((e,i,s,a)=>{const o=t.Z();t.aS(o,0,e.width,e.height,0,0,1);const r=e.context.gl;return {u_matrix:o,u_world:[r.drawingBufferWidth,r.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:i.paint.get("heatmap-opacity")}})(e,i),null,i.id,e.viewportBuffer,e.quadTriangleIndexBuffer,e.viewportSegments,i.paint,e.transform.zoom);}(e,s));}(e,i,s,a);break;case"line":!function(e,i,s,a){if("translucent"!==e.renderPass)return;const o=s.paint.get("line-opacity"),r=s.paint.get("line-width");if(0===o.constantOr(1)||0===r.constantOr(1))return;const n=e.depthModeForSublayer(0,Pi.ReadOnly),l=e.colorModeForRenderPass(),h=s.paint.get("line-dasharray"),c=s.paint.get("line-pattern"),u=c.constantOr(1),d=s.paint.get("line-gradient"),_=s.getCrossfadeParameters(),p=u?"linePattern":h?"lineSDF":d?"lineGradient":"line",m=e.context,f=m.gl;let g=!0;for(const o of a){const a=i.getTile(o);if(u&&!a.patternsLoaded())continue;const r=a.getBucket(s);if(!r)continue;const v=r.programConfigurations.get(s.id),y=e.context.program.get(),b=e.useProgram(p,v),w=g||b.program!==y,T=e.style.map.terrain&&e.style.map.terrain.getTerrainData(o),I=c.constantOr(null);if(I&&a.imageAtlas){const t=a.imageAtlas,e=t.patternPositions[I.to.toString()],i=t.patternPositions[I.from.toString()];e&&i&&v.setConstantPatternPositions(e,i);}const E=T?o:null,S=u?Se(e,a,s,_,E):h?Ce(e,a,s,h,_,E):d?Ee(e,a,s,r.lineClipsArray.length,E):Ie(e,a,s,E);if(u)m.activeTexture.set(f.TEXTURE0),a.imageAtlasTexture.bind(f.LINEAR,f.CLAMP_TO_EDGE),v.updatePaintBuffers(_);else if(h&&(w||e.lineAtlas.dirty))m.activeTexture.set(f.TEXTURE0),e.lineAtlas.bind(m);else if(d){const a=r.gradients[s.id];let n=a.texture;if(s.gradientVersion!==a.version){let l=256;if(s.stepInterpolant){const s=i.getSource().maxzoom,a=o.canonical.z===s?Math.ceil(1<<e.transform.maxZoom-o.canonical.z):1;l=t.ad(t.aY(r.maxLineLength/t.N*1024*a),256,m.maxTextureSize);}a.gradient=t.aZ({expression:s.gradientExpression(),evaluationKey:"lineProgress",resolution:l,image:a.gradient||void 0,clips:r.lineClipsArray}),a.texture?a.texture.update(a.gradient):a.texture=new x(m,a.gradient,f.RGBA),a.version=s.gradientVersion,n=a.texture;}m.activeTexture.set(f.TEXTURE0),n.bind(s.stepInterpolant?f.NEAREST:f.LINEAR,f.CLAMP_TO_EDGE);}b.draw(m,f.TRIANGLES,n,e.stencilModeForClipping(o),l,zi.disabled,S,T,s.id,r.layoutVertexBuffer,r.indexBuffer,r.segments,s.paint,e.transform.zoom,v,r.layoutVertexBuffer2),g=!1;}}(e,i,s,a);break;case"fill":!function(e,i,s,a){const o=s.paint.get("fill-color"),r=s.paint.get("fill-opacity");if(0===r.constantOr(1))return;const n=e.colorModeForRenderPass(),l=s.paint.get("fill-pattern"),h=e.opaquePassEnabledForLayer()&&!l.constantOr(1)&&1===o.constantOr(t.aT.transparent).a&&1===r.constantOr(0)?"opaque":"translucent";if(e.renderPass===h){const t=e.depthModeForSublayer(1,"opaque"===e.renderPass?Pi.ReadWrite:Pi.ReadOnly);Zi(e,i,s,a,t,n,!1);}if("translucent"===e.renderPass&&s.paint.get("fill-antialias")){const t=e.depthModeForSublayer(s.getPaintProperty("fill-outline-color")?2:0,Pi.ReadOnly);Zi(e,i,s,a,t,n,!0);}}(e,i,s,a);break;
vendor: 15,501 bytes, line 41
41case"fill-extrusion":!function(t,e,i,s){const a=i.paint.get("fill-extrusion-opacity");if(0!==a&&"translucent"===t.renderPass){const o=new Pi(t.context.gl.LEQUAL,Pi.ReadWrite,t.depthRangeFor3D);if(1!==a||i.paint.get("fill-extrusion-pattern").constantOr(1))Gi(t,e,i,s,o,Mi.disabled,Si.disabled),Gi(t,e,i,s,o,t.stencilModeFor3D(),t.colorModeForRenderPass());else {const a=t.colorModeForRenderPass();Gi(t,e,i,s,o,Mi.disabled,a);}}}(e,i,s,a);break;case"hillshade":!function(t,e,i,s){if("offscreen"!==t.renderPass&&"translucent"!==t.renderPass)return;const a=t.context,o=t.depthModeForSublayer(0,Pi.ReadOnly),r=t.colorModeForRenderPass(),[n,l]="translucent"===t.renderPass?t.stencilConfigForOverlap(s):[{},s];for(const s of l){const a=e.getTile(s);void 0!==a.needsHillshadePrepare&&a.needsHillshadePrepare&&"offscreen"===t.renderPass?Vi(t,a,i,o,Mi.disabled,r):"translucent"===t.renderPass&&ji(t,s,a,i,o,n[s.overscaledZ],r);}a.viewport.set([0,0,t.width,t.height]);}(e,i,s,a);break;case"raster":!function(t,e,i,s){if("translucent"!==t.renderPass)return;if(0===i.paint.get("raster-opacity"))return;if(!s.length)return;const a=t.context,o=a.gl,r=e.getSource(),n=t.useProgram("raster"),l=t.colorModeForRenderPass(),[h,c]=r instanceof N?[{},s]:t.stencilConfigForOverlap(s),u=c[c.length-1].overscaledZ,d=!t.options.moving;for(const s of c){const c=t.depthModeForSublayer(s.overscaledZ-u,1===i.paint.get("raster-opacity")?Pi.ReadWrite:Pi.ReadOnly,o.LESS),_=e.getTile(s);_.registerFadeDuration(i.paint.get("raster-fade-duration"));const p=e.findLoadedParent(s,0),m=qi(_,p,e,i,t.transform,t.style.map.terrain);let f,g;const v="nearest"===i.paint.get("raster-resampling")?o.NEAREST:o.LINEAR;a.activeTexture.set(o.TEXTURE0),_.texture.bind(v,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST),a.activeTexture.set(o.TEXTURE1),p?(p.texture.bind(v,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST),f=Math.pow(2,p.tileID.overscaledZ-_.tileID.overscaledZ),g=[_.tileID.canonical.x*f%1,_.tileID.canonical.y*f%1]):_.texture.bind(v,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST);const x=t.style.map.terrain&&t.style.map.terrain.getTerrainData(s),y=x?s:null,b=y?y.posMatrix:t.transform.calculatePosMatrix(s.toUnwrapped(),d),w=Me(b,g||[0,0],f||1,m,i);r instanceof N?n.draw(a,o.TRIANGLES,c,Mi.disabled,l,zi.disabled,w,x,i.id,r.boundsBuffer,t.quadTriangleIndexBuffer,r.boundsSegments):n.draw(a,o.TRIANGLES,c,h[s.overscaledZ],l,zi.disabled,w,x,i.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments);}}(e,i,s,a);break;case"background":!function(t,e,i,s){const a=i.paint.get("background-color"),o=i.paint.get("background-opacity");if(0===o)return;const r=t.context,n=r.gl,l=t.transform,h=l.tileSize,c=i.paint.get("background-pattern");if(t.isPatternMissing(c))return;const u=!c&&1===a.a&&1===o&&t.opaquePassEnabledForLayer()?"opaque":"translucent";if(t.renderPass!==u)return;const d=Mi.disabled,_=t.depthModeForSublayer(0,"opaque"===u?Pi.ReadWrite:Pi.ReadOnly),p=t.colorModeForRenderPass(),m=t.useProgram(c?"backgroundPattern":"background"),f=s||l.coveringTiles({tileSize:h,terrain:t.style.map.terrain});c&&(r.activeTexture.set(n.TEXTURE0),t.imageManager.bind(t.context));const g=i.getCrossfadeParameters();for(const e of f){const l=s?e.posMatrix:t.transform.calculatePosMatrix(e.toUnwrapped()),u=c?Fe(l,o,t,c,{tileID:e,tileSize:h},g):ke(l,o,a),f=t.style.map.terrain&&t.style.map.terrain.getTerrainData(e);m.draw(r,n.TRIANGLES,_,d,p,zi.disabled,u,f,i.id,t.tileExtentBuffer,t.quadTriangleIndexBuffer,t.tileExtentSegments);}}(e,0,s,a);break;case"custom":!function(t,e,i){const s=t.context,a=i.implementation;if("offscreen"===t.renderPass){const e=a.prerender;e&&(t.setCustomLayerDefaults(),s.setColorMode(t.colorModeForRenderPass()),e.call(a,s.gl,t.transform.customLayerMatrix()),s.setDirty(),t.setBaseState());}else if("translucent"===t.renderPass){t.setCustomLayerDefaults(),s.setColorMode(t.colorModeForRenderPass()),s.setStencilMode(Mi.disabled);const e="3d"===a.renderingMode?new Pi(t.context.gl.LEQUAL,Pi.ReadWrite,t.depthRangeFor3D):t.depthModeForSublayer(0,Pi.ReadOnly);s.setDepthMode(e),a.render(s.gl,t.transform.customLayerMatrix()),s.setDirty(),t.setBaseState(),s.bindFramebuffer.set(null);}}(e,0,s);}}translatePosMatrix(e,i,s,a,o){if(!s[0]&&!s[1])return e;const r=o?"map"===a?this.transform.angle:0:"viewport"===a?-this.transform.angle:0;if(r){const t=Math.sin(r),e=Math.cos(r);s=[s[0]*e-s[1]*t,s[0]*t+s[1]*e];}const n=[o?s[0]:St(i,s[0],this.transform.zoom),o?s[1]:St(i,s[1],this.transform.zoom),0],l=new Float32Array(16);return t.$(l,e,n),l}saveTileTexture(t){const e=this._tileTextures[t.size[0]];e?e.push(t):this._tileTextures[t.size[0]]=[t];}getTileTexture(t){const e=this._tileTextures[t];return e&&e.length>0?e.pop():null}isPatternMissing(t){if(!t)return !1;if(!t.from||!t.to)return !0;const e=this.imageManager.getPattern(t.from.toString()),i=this.imageManager.getPattern(t.to.toString());return !e||!i}useProgram(t,e){this.cache=this.cache||{};const i=t+(e?e.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[i]||(this.cache[i]=new ce(this.context,re[t],e,Be[t],this._showOverdrawInspector,this.style.map.terrain)),this.cache[i]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();}setBaseState(){const t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD);}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new x(this.context,this.debugOverlayCanvas,this.context.gl.RGBA));}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy();}overLimit(){const{drawingBufferWidth:t,drawingBufferHeight:e}=this.context.gl;return this.width!==t||this.height!==e}}class ss{constructor(t,e){this.points=t,this.planes=e;}static fromInvProjectionMatrix(e,i,s){const a=Math.pow(2,s),o=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((s=>{const o=1/(s=t.ag([],s,e))[3]/i*a;return t.b3(s,s,[o,o,1/s[3],o])})),r=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((t=>{const e=function(t,e){var i=e[0],s=e[1],a=e[2],o=i*i+s*s+a*a;return o>0&&(o=1/Math.sqrt(o)),t[0]=e[0]*o,t[1]=e[1]*o,t[2]=e[2]*o,t}([],function(t,e,i){var s=e[0],a=e[1],o=e[2],r=i[0],n=i[1],l=i[2];return t[0]=a*l-o*n,t[1]=o*r-s*l,t[2]=s*n-a*r,t}([],m([],o[t[0]],o[t[1]]),m([],o[t[2]],o[t[1]]))),i=-((s=e)[0]*(a=o[t[1]])[0]+s[1]*a[1]+s[2]*a[2]);var s,a;return e.concat(i)}));return new ss(o,r)}}class as{constructor(t,e){this.min=t,this.max=e,this.center=function(t,e,i){return t[0]=.5*e[0],t[1]=.5*e[1],t[2]=.5*e[2],t}([],function(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t[2]=e[2]+i[2],t}([],this.min,this.max));}quadrant(t){const e=[t%2==0,t<2],i=_(this.min),s=_(this.max);for(let t=0;t<e.length;t++)i[t]=e[t]?this.min[t]:this.center[t],s[t]=e[t]?this.center[t]:this.max[t];return s[2]=this.max[2],new as(i,s)}distanceX(t){return Math.max(Math.min(this.max[0],t[0]),this.min[0])-t[0]}distanceY(t){return Math.max(Math.min(this.max[1],t[1]),this.min[1])-t[1]}intersects(e){const i=[[this.min[0],this.min[1],this.min[2],1],[this.max[0],this.min[1],this.min[2],1],[this.max[0],this.max[1],this.min[2],1],[this.min[0],this.max[1],this.min[2],1],[this.min[0],this.min[1],this.max[2],1],[this.max[0],this.min[1],this.max[2],1],[this.max[0],this.max[1],this.max[2],1],[this.min[0],this.max[1],this.max[2],1]];let s=!0;for(let a=0;a<e.planes.length;a++){const o=e.planes[a];let r=0;for(let e=0;e<i.length;e++)t.b4(o,i[e])>=0&&r++;if(0===r)return 0;r!==i.length&&(s=!1);}if(s)return 2;for(let t=0;t<3;t++){let i=Number.MAX_VALUE,s=-Number.MAX_VALUE;for(let a=0;a<e.points.length;a++){const o=e.points[a][t]-this.min[t];i=Math.min(i,o),s=Math.max(s,o);}if(s<0||i>this.max[t]-this.min[t])return 0}return 1}}class os{constructor(t=0,e=0,i=0,s=0){if(isNaN(t)||t<0||isNaN(e)||e<0||isNaN(i)||i<0||isNaN(s)||s<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=e,this.left=i,this.right=s;}interpolate(e,i,s){return null!=i.top&&null!=e.top&&(this.top=t.B.number(e.top,i.top,s)),null!=i.bottom&&null!=e.bottom&&(this.bottom=t.B.number(e.bottom,i.bottom,s)),null!=i.left&&null!=e.left&&(this.left=t.B.number(e.left,i.left,s)),null!=i.right&&null!=e.right&&(this.right=t.B.number(e.right,i.right,s)),this}getCenter(e,i){const s=t.ad((this.left+e-this.right)/2,0,e),a=t.ad((this.top+i-this.bottom)/2,0,i);return new t.P(s,a)}equals(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right}clone(){return new os(this.top,this.bottom,this.left,this.right)}toJSON(){return {top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}class rs{constructor(e,i,s,a,o){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===o||!!o,this._minZoom=e||0,this._maxZoom=i||22,this._minPitch=null==s?0:s,this._maxPitch=null==a?60:a,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.L(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new os,this._posMatrixCache={},this._alignedPosMatrixCache={},this._minEleveationForCurrentTile=0;}clone(){const t=new rs(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.apply(this),t}apply(t){this.tileSize=t.tileSize,this.latRange=t.latRange,this.width=t.width,this.height=t.height,this._center=t._center,this._elevation=t._elevation,this._minEleveationForCurrentTile=t._minEleveationForCurrentTile,this.zoom=t.zoom,this.angle=t.angle,this._fov=t._fov,this._pitch=t._pitch,this._unmodified=t._unmodified,this._edgeInsets=t._edgeInsets.clone(),this._calcMatrices();}get minZoom(){return this._minZoom}set minZoom(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t));}get maxZoom(){return this._maxZoom}set maxZoom(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t));}get minPitch(){return this._minPitch}set minPitch(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t));}get maxPitch(){return this._maxPitch}set maxPitch(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t));}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t;}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new t.P(this.width,this.height)}get bearing(){return -this.angle/Math.PI*180}set bearing(e){const i=-t.b5(e,-180,180)*Math.PI/180;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=function(){var e=new t.A(4);return t.A!=Float32Array&&(e[1]=0,e[2]=0),e[0]=1,e[3]=1,e}(),function(t,e,i){var s=e[0],a=e[1],o=e[2],r=e[3],n=Math.sin(i),l=Math.cos(i);t[0]=s*l+o*n,t[1]=a*l+r*n,t[2]=s*-n+o*l,t[3]=a*-n+r*l;}(this.rotationMatrix,this.rotationMatrix,this.angle));}get pitch(){return this._pitch/Math.PI*180}set pitch(e){const i=t.ad(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices());}get fov(){return this._fov/Math.PI*180}set fov(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices());}get zoom(){return this._zoom}set zoom(t){const e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.tileZoom=Math.max(0,Math.floor(e)),this.scale=this.zoomScale(e),this._constrain(),this._calcMatrices());}get center(){return this._center}set center(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices());}get elevation(){return this._elevation}set elevation(t){t!==this._elevation&&(this._elevation=t,this._constrain(),this._calcMatrices());}get padding(){return this._edgeInsets.toJSON()}set padding(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices());}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(t){return this._edgeInsets.equals(t)}interpolatePadding(t,e,i){this._unmodified=!1,this._edgeInsets.interpolate(t,e,i),this._constrain(),this._calcMatrices();}coveringZoomLevel(t){const e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)}getVisibleUnwrappedCoordinates(e){const i=[new t.b6(0,e)];if(this._renderWorldCopies){const s=this.pointCoordinate(new t.P(0,0)),a=this.pointCoordinate(new t.P(this.width,0)),o=this.pointCoordinate(new t.P(this.width,this.height)),r=this.pointCoordinate(new t.P(0,this.height)),n=Math.floor(Math.min(s.x,a.x,o.x,r.x)),l=Math.floor(Math.max(s.x,a.x,o.x,r.x)),h=1;for(let s=n-h;s<=l+h;s++)0!==s&&i.push(new t.b6(s,e));}return i}coveringTiles(e){var i,s;let a=this.coveringZoomLevel(e);const o=a;if(void 0!==e.minzoom&&a<e.minzoom)return [];void 0!==e.maxzoom&&a>e.maxzoom&&(a=e.maxzoom);const r=this.pointCoordinate(this.getCameraPoint()),n=t.U.fromLngLat(this.center),l=Math.pow(2,a),h=[l*r.x,l*r.y,0],c=[l*n.x,l*n.y,0],u=ss.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,a);let d=e.minzoom||0;!e.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(d=a);const _=e.terrain?2/Math.min(this.tileSize,e.tileSize)*this.tileSize:3,p=t=>({aabb:new as([t*l,0,0],[(t+1)*l,l,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}),m=[],g=[],v=a,x=e.reparseOverscaled?o:a;if(this._renderWorldCopies)for(let t=1;t<=3;t++)m.push(p(-t)),m.push(p(t));for(m.push(p(0));m.length>0;){const a=m.pop(),o=a.x,r=a.y;let n=a.fullyVisible;if(!n){const t=a.aabb.intersects(u);if(0===t)continue;n=2===t;}const l=e.terrain?h:c,p=a.aabb.distanceX(l),y=a.aabb.distanceY(l),b=Math.max(Math.abs(p),Math.abs(y));if(a.zoom===v||b>_+(1<<v-a.zoom)-2&&a.zoom>=d){const e=v-a.zoom,i=h[0]-.5-(o<<e),s=h[1]-.5-(r<<e);g.push({tileID:new t.O(a.zoom===v?x:a.zoom,a.wrap,a.zoom,o,r),distanceSq:f([c[0]-.5-o,c[1]-.5-r]),tileDistanceToCamera:Math.sqrt(i*i+s*s)});}else for(let l=0;l<4;l++){const h=(o<<1)+l%2,c=(r<<1)+(l>>1),u=a.zoom+1;let d=a.aabb.quadrant(l);if(e.terrain){const o=new t.O(u,a.wrap,u,h,c),r=e.terrain.getMinMaxElevation(o),n=null!==(i=r.minElevation)&&void 0!==i?i:this.elevation,l=null!==(s=r.maxElevation)&&void 0!==s?s:this.elevation;d=new as([d.min[0],d.min[1],n],[d.max[0],d.max[1],l]);}m.push({aabb:d,zoom:u,x:h,y:c,wrap:a.wrap,fullyVisible:n});}}return g.sort(((t,e)=>t.distanceSq-e.distanceSq)).map((t=>t.tileID))}resize(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices();}get unmodified(){return this._unmodified}zoomScale(t){return Math.pow(2,t)}scaleZoom(t){return Math.log(t)/Math.LN2}project(e){const i=t.ad(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.P(t.G(e.lng)*this.worldSize,t.H(i)*this.worldSize)}unproject(e){return new t.U(e.x/this.worldSize,e.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return {lngLat:this.pointLocation(this.getCameraPoint()),alt
41itude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(e){const i=this.pointLocation(this.centerPoint,e),s=e.getElevationForLngLatZoom(i,this.tileZoom);if(!(this.elevation-s))return;const a=this.getCameraPosition(),o=t.U.fromLngLat(a.lngLat,a.altitude),r=t.U.fromLngLat(i,s),n=o.x-r.x,l=o.y-r.y,h=o.z-r.z,c=Math.sqrt(n*n+l*l+h*h),u=this.scaleZoom(this.cameraToCenterDistance/c/this.tileSize);this._elevation=s,this._center=i,this.zoom=u;}setLocationAtPoint(e,i){const s=this.pointCoordinate(i),a=this.pointCoordinate(this.centerPoint),o=this.locationCoordinate(e),r=new t.U(o.x-(s.x-a.x),o.y-(s.y-a.y));this.center=this.coordinateLocation(r),this._renderWorldCopies&&(this.center=this.center.wrap());}locationPoint(t,e){return e?this.coordinatePoint(this.locationCoordinate(t),e.getElevationForLngLatZoom(t,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(t))}pointLocation(t,e){return this.coordinateLocation(this.pointCoordinate(t,e))}locationCoordinate(e){return t.U.fromLngLat(e)}coordinateLocation(t){return t&&t.toLngLat()}pointCoordinate(e,i){if(i){const t=i.pointCoordinate(e);if(null!=t)return t}const s=[e.x,e.y,0,1],a=[e.x,e.y,1,1];t.ag(s,s,this.pixelMatrixInverse),t.ag(a,a,this.pixelMatrixInverse);const o=s[3],r=a[3],n=s[1]/o,l=a[1]/r,h=s[2]/o,c=a[2]/r,u=h===c?0:(0-h)/(c-h);return new t.U(t.B.number(s[0]/o,a[0]/r,u)/this.worldSize,t.B.number(n,l,u)/this.worldSize)}coordinatePoint(e,i=0,s=this.pixelMatrix){const a=[e.x*this.worldSize,e.y*this.worldSize,i,1];return t.ag(a,a,s),new t.P(a[0]/a[3],a[1]/a[3])}getBounds(){const e=Math.max(0,this.height/2-this.getHorizon());return (new L).extend(this.pointLocation(new t.P(0,e))).extend(this.pointLocation(new t.P(this.width,e))).extend(this.pointLocation(new t.P(this.width,this.height))).extend(this.pointLocation(new t.P(0,this.height)))}getMaxBounds(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new L([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude]);}calculatePosMatrix(e,i=!1){const s=e.key,a=i?this._alignedPosMatrixCache:this._posMatrixCache;if(a[s])return a[s];const o=e.canonical,r=this.worldSize/this.zoomScale(o.z),n=o.x+Math.pow(2,o.z)*e.wrap,l=t.ao(new Float64Array(16));return t.$(l,l,[n*r,o.y*r,0]),t.a0(l,l,[r/t.N,r/t.N,1]),t.a1(l,i?this.alignedProjMatrix:this.projMatrix,l),a[s]=new Float32Array(l),a[s]}customLayerMatrix(){return this.mercatorMatrix.slice()}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let e,i,s,a,o=-90,r=90,n=-180,l=180;const h=this.size,c=this._unmodified;if(this.latRange){const i=this.latRange;o=t.H(i[1])*this.worldSize,r=t.H(i[0])*this.worldSize,e=r-o<h.y?h.y/(r-o):0;}if(this.lngRange){const e=this.lngRange;n=t.b5(t.G(e[0])*this.worldSize,0,this.worldSize),l=t.b5(t.G(e[1])*this.worldSize,0,this.worldSize),l<n&&(l+=this.worldSize),i=l-n<h.x?h.x/(l-n):0;}const u=this.point,d=Math.max(i||0,e||0);if(d)return this.center=this.unproject(new t.P(i?(l+n)/2:u.x,e?(r+o)/2:u.y)),this.zoom+=this.scaleZoom(d),this._unmodified=c,void(this._constraining=!1);if(this.latRange){const t=u.y,e=h.y/2;t-e<o&&(a=o+e),t+e>r&&(a=r-e);}if(this.lngRange){const e=(n+l)/2,i=t.b5(u.x,e-this.worldSize/2,e+this.worldSize/2),a=h.x/2;i-a<n&&(s=n+a),i+a>l&&(s=l-a);}void 0===s&&void 0===a||(this.center=this.unproject(new t.P(void 0!==s?s:u.x,void 0!==a?a:u.y)).wrap()),this._unmodified=c,this._constraining=!1;}_calcMatrices(){if(!this.height)return;const e=this.centerOffset,i=this.point.x,s=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=t.b7(1,this.center.lat)*this.worldSize;let a=t.ao(new Float64Array(16));t.a0(a,a,[this.width/2,-this.height/2,1]),t.$(a,a,[1,-1,0]),this.labelPlaneMatr
vendor: 19,454 bytes, line 41
41ix=a,a=t.ao(new Float64Array(16)),t.a0(a,a,[1,-1,1]),t.$(a,a,[-1,-1,0]),t.a0(a,a,[2/this.width,2/this.height,1]),this.glCoordMatrix=a;const o=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),r=Math.min(this.elevation,this._minEleveationForCurrentTile),n=o-r*this._pixelPerMeter/Math.cos(this._pitch),l=r<0?n:o,h=Math.PI/2+this._pitch,c=this._fov*(.5+e.y/this.height),u=Math.sin(c)*l/Math.sin(t.ad(Math.PI-h-c,.01,Math.PI-.01)),d=this.getHorizon(),_=2*Math.atan(d/this.cameraToCenterDistance)*(.5+e.y/(2*d)),p=Math.sin(_)*l/Math.sin(t.ad(Math.PI-h-_,.01,Math.PI-.01)),m=Math.min(u,p),f=1.01*(Math.cos(Math.PI/2-this._pitch)*m+l),g=this.height/50;a=new Float64Array(16),t.b8(a,this._fov,this.width/this.height,g,f),a[8]=2*-e.x/this.width,a[9]=2*e.y/this.height,t.a0(a,a,[1,-1,1]),t.$(a,a,[0,0,-this.cameraToCenterDistance]),t.b9(a,a,this._pitch),t.ae(a,a,this.angle),t.$(a,a,[-i,-s,0]),this.mercatorMatrix=t.a0([],a,[this.worldSize,this.worldSize,this.worldSize]),t.a0(a,a,[1,1,this._pixelPerMeter]),this.pixelMatrix=t.a1(new Float64Array(16),this.labelPlaneMatrix,a),t.$(a,a,[0,0,-this.elevation]),this.projMatrix=a,this.invProjMatrix=t.as([],a),this.pixelMatrix3D=t.a1(new Float64Array(16),this.labelPlaneMatrix,a);const v=this.width%2/2,x=this.height%2/2,y=Math.cos(this.angle),b=Math.sin(this.angle),w=i-Math.round(i)+y*v+b*x,T=s-Math.round(s)+y*x+b*v,I=new Float64Array(a);if(t.$(I,I,[w>.5?w-1:w,T>.5?T-1:T,0]),this.alignedProjMatrix=I,a=t.as(new Float64Array(16),this.pixelMatrix),!a)throw new Error("failed to invert matrix");this.pixelMatrixInverse=a,this._posMatrixCache={},this._alignedPosMatrixCache={};}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;const e=this.pointCoordinate(new t.P(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.ag(i,i,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){const e=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.P(0,e))}getCameraQueryGeometry(e){const i=this.getCameraPoint();if(1===e.length)return [e[0],i];{let s=i.x,a=i.y,o=i.x,r=i.y;for(const t of e)s=Math.min(s,t.x),a=Math.min(a,t.y),o=Math.max(o,t.x),r=Math.max(r,t.y);return [new t.P(s,a),new t.P(o,a),new t.P(o,r),new t.P(s,r),new t.P(s,a)]}}}function ns(t,e){let i,s=!1,a=null,o=null;const r=()=>{a=null,s&&(t.apply(o,i),a=setTimeout(r,e),s=!1);};return (...t)=>(s=!0,o=this,i=t,a||r(),a)}class ls{constructor(t){this._getCurrentHash=()=>{const t=window.location.hash.replace("#","");if(this._hashName){let e;return t.split("&").map((t=>t.split("="))).forEach((t=>{t[0]===this._hashName&&(e=t);})),(e&&e[1]||"").split("/")}return t.split("/")},this._onHashChange=()=>{const t=this._getCurrentHash();if(t.length>=3&&!t.some((t=>isNaN(t)))){const e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return !1},this._updateHashUnthrottled=()=>{const t=window.location.href.replace(/(#.+)?$/,this.getHashString());try{window.history.replaceState(window.history.state,null,t);}catch(t){}},this._updateHash=ns(this._updateHashUnthrottled,300),this._hashName=t&&encodeURIComponent(t);}addTo(t){return this._map=t,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this}getHashString(t){const e=this._map.getCenter(),i=Math.round(100*this._map.getZoom())/100,s=Math.ceil((i*Math.LN2+Math.log(512/360/.5))/Math.LN10),a=Math.pow(10,s),o=Math.round(e.lng*a)/a,r=Math.round(e.lat*a)/a,n=this._map.getBearing(),l=this._map.getPitch();let h="";if(h+=t?`/${o}/${r}/${i}`:`${i}/${r}/${o}`,(n||l)&&(h+="/"+Math.round(10*n)/10),l&&(h+=`/${Math.round(l)}`),this._hashName){const t=this._hashName;let e=!1;const i=window.location.hash.slice(1).split("&").map((i=>{const s=i.split("=")[0];return s===t?(e=!0,`${s}=${h}`):i})).filter((t=>t));return e||i.push(`${t}=${h}`),`#${i.join("&")}`}return `#${h}`}}const hs={linearity:.3,easing:t.ba(0,0,.3,1)},cs=t.e({deceleration:2500,maxSpeed:1400},hs),us=t.e({deceleration:20,maxSpeed:1400},hs),ds=t.e({deceleration:1e3,maxSpeed:360},hs),_s=t.e({deceleration:1e3,maxSpeed:90},hs);class ps{constructor(t){this._map=t,this.clear();}clear(){this._inertiaBuffer=[];}record(e){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:t.h.now(),settings:e});}_drainInertiaBuffer(){const e=this._inertiaBuffer,i=t.h.now();for(;e.length>0&&i-e[0].time>160;)e.shift();}_onMoveEnd(e){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,pan:new t.P(0,0),pinchAround:void 0,around:void 0};for(const{settings:t}of this._inertiaBuffer)i.zoom+=t.zoomDelta||0,i.bearing+=t.bearingDelta||0,i.pitch+=t.pitchDelta||0,t.panDelta&&i.pan._add(t.panDelta),t.around&&(i.around=t.around),t.pinchAround&&(i.pinchAround=t.pinchAround);const s=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,a={};if(i.pan.mag()){const o=fs(i.pan.mag(),s,t.e({},cs,e||{}));a.offset=i.pan.mult(o.amount/i.pan.mag()),a.center=this._map.transform.center,ms(a,o);}if(i.zoom){const t=fs(i.zoom,s,us);a.zoom=this._map.transform.zoom+t.amount,ms(a,t);}if(i.bearing){const e=fs(i.bearing,s,ds);a.bearing=this._map.transform.bearing+t.ad(e.amount,-179,179),ms(a,e);}if(i.pitch){const t=fs(i.pitch,s,_s);a.pitch=this._map.transform.pitch+t.amount,ms(a,t);}if(a.zoom||a.bearing){const t=void 0===i.pinchAround?i.around:i.pinchAround;a.around=t?this._map.unproject(t):this._map.getCenter();}return this.clear(),t.e(a,{noMoveStart:!0})}}function ms(t,e){(!t.duration||t.duration<e.duration)&&(t.duration=e.duration,t.easing=e.easing);}function fs(e,i,s){const{maxSpeed:a,linearity:o,deceleration:r}=s,n=t.ad(e*o/(i/1e3),-a,a),l=Math.abs(n)/(r*o);return {easing:s.easing,duration:1e3*l,amount:n*(l/2)}}class gs extends t.k{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,s,a,o={}){const r=i.mousePos(s.getCanvasContainer(),a),n=s.unproject(r);super(e,t.e({point:r,lngLat:n,originalEvent:a},o)),this._defaultPrevented=!1,this.target=s;}}class vs extends t.k{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,s,a){const o="touchend"===e?a.changedTouches:a.touches,r=i.touchPos(s.getCanvasContainer(),o),n=r.map((t=>s.unproject(t))),l=r.reduce(((t,e,i,s)=>t.add(e.div(s.length))),new t.P(0,0));super(e,{points:r,point:l,lngLats:n,lngLat:s.unproject(l),originalEvent:a}),this._defaultPrevented=!1;}}class xs extends t.k{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(t,e,i){super(t,{originalEvent:i}),this._defaultPrevented=!1;}}class ys{constructor(t,e){this._map=t,this._clickTolerance=e.clickTolerance;}reset(){delete this._mousedownPos;}wheel(t){return this._firePreventable(new xs(t.type,this._map,t))}mousedown(t,e){return this._mousedownPos=e,this._firePreventable(new gs(t.type,this._map,t))}mouseup(t){this._map.fire(new gs(t.type,this._map,t));}click(t,e){this._mousedownPos&&this._mousedownPos.dist(e)>=this._clickTolerance||this._map.fire(new gs(t.type,this._map,t));}dblclick(t){return this._firePreventable(new gs(t.type,this._map,t))}mouseover(t){this._map.fire(new gs(t.type,this._map,t));}mouseout(t){this._map.fire(new gs(t.type,this._map,t));}touchstart(t){return this._firePreventable(new vs(t.type,this._map,t))}touchmove(t){this._map.fire(new vs(t.type,this._map,t));}touchend(t){this._map.fire(new vs(t.type,this._map,t));}touchcancel(t){this._map.fire(new vs(t.type,this._map,t));}_firePreventable(t){if(this._map.fire(t),t.defaultPrevented)return {}}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class bs{constructor(t){this._map=t;}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent;}mousemove(t){this._map.fire(new gs(t.type,this._map,t));}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1;}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new gs("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent);}contextmenu(t){this._delayContextMenu?this._contextMenuEvent=t:this._ignoreContextMenu||this._map.fire(new gs(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault();}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class ws{constructor(t){this._map=t;}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return {lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(e){return this.transform.pointLocation(t.P.convert(e),this._map.terrain)}}class Ts{constructor(t,e){this._map=t,this._tr=new ws(t),this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1;}isEnabled(){return !!this._enabled}isActive(){return !!this._active}enable(){this.isEnabled()||(this._enabled=!0);}disable(){this.isEnabled()&&(this._enabled=!1);}mousedown(t,e){this.isEnabled()&&t.shiftKey&&0===t.button&&(i.disableDrag(),this._startPos=this._lastPos=e,this._active=!0);}mousemoveWindow(t,e){if(!this._active)return;const s=e;if(this._lastPos.equals(s)||!this._box&&s.dist(this._startPos)<this._clickTolerance)return;const a=this._startPos;this._lastPos=s,this._box||(this._box=i.create("div","maplibregl-boxzoom",this._container),this._container.classList.add("maplibregl-crosshair"),this._fireEvent("boxzoomstart",t));const o=Math.min(a.x,s.x),r=Math.max(a.x,s.x),n=Math.min(a.y,s.y),l=Math.max(a.y,s.y);i.setTransform(this._box,`translate(${o}px,${n}px)`),this._box.style.width=r-o+"px",this._box.style.height=l-n+"px";}mouseupWindow(e,s){if(!this._active)return;if(0!==e.button)return;const a=this._startPos,o=s;if(this.reset(),i.suppressClick(),a.x!==o.x||a.y!==o.y)return this._map.fire(new t.k("boxzoomend",{originalEvent:e})),{cameraAnimation:t=>t.fitScreenCoordinates(a,o,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",e);}keydown(t){this._active&&27===t.keyCode&&(this.reset(),this._fireEvent("boxzoomcancel",t));}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(i.remove(this._box),this._box=null),i.enableDrag(),delete this._startPos,delete this._lastPos;}_fireEvent(e,i){return this._map.fire(new t.k(e,{originalEvent:i}))}}function Is(t,e){if(t.length!==e.length)throw new Error(`The number of touches and points are not equal - touches ${t.length}, points ${e.length}`);const i={};for(let s=0;s<t.length;s++)i[t[s].identifier]=e[s];return i}class Es{constructor(t){this.reset(),this.numTouches=t.numTouches;}reset(){delete this.centroid,delete this.startTime,delete this.touches,this.aborted=!1;}touchstart(e,i,s){(this.centroid||s.length>this.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),s.length===this.numTouches&&(this.centroid=function(e){const i=new t.P(0,0);for(const t of e)i._add(t);return i.div(e.length)}(i),this.touches=Is(s,i)));}touchmove(t,e,i){if(this.aborted||!this.centroid)return;const s=Is(i,e);for(const t in this.touches){const e=s[t];(!e||e.dist(this.touches[t])>30)&&(this.aborted=!0);}}touchend(t,e,i){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const t=!this.aborted&&this.centroid;if(this.reset(),t)return t}}}class Ss{constructor(t){this.singleTap=new Es(t),this.numTaps=t.numTaps,this.reset();}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset();}touchstart(t,e,i){this.singleTap.touchstart(t,e,i);}touchmove(t,e,i){this.singleTap.touchmove(t,e,i);}touchend(t,e,i){const s=this.singleTap.touchend(t,e,i);if(s){const e=t.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(s)<30;if(e&&i||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=s,this.count===this.numTaps)return this.reset(),s}}}class Cs{constructor(t){this._tr=new ws(t),this._zoomIn=new Ss({numTouches:1,numTaps:2}),this._zoomOut=new Ss({numTouches:2,numTaps:1}),this.reset();}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset();}touchstart(t,e,i){this._zoomIn.touchstart(t,e,i),this._zoomOut.touchstart(t,e,i);}touchmove(t,e,i){this._zoomIn.touchmove(t,e,i),this._zoomOut.touchmove(t,e,i);}touchend(t,e,i){const s=this._zoomIn.touchend(t,e,i),a=this._zoomOut.touchend(t,e,i),o=this._tr;return s?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:e=>e.easeTo({duration:300,zoom:o.zoom+1,around:o.unproject(s)},{originalEvent:t})}):a?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:e=>e.easeTo({duration:300,zoom:o.zoom-1,around:o.unproject(a)},{originalEvent:t})}):void 0}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Ps{constructor(t){this._enabled=!!t.enable,this._moveStateManager=t.moveStateManager,this._clickTolerance=t.clickTolerance||1,this._moveFunction=t.move,this._activateOnStart=!!t.activateOnStart,t.assignEvents(this),this.reset();}reset(t){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(t);}_move(...t){const e=this._moveFunction(...t);if(e.bearingDelta||e.pitchDelta||e.around||e.panDelta)return this._active=!0,e}dragStart(t,e){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(t)&&(this._moveStateManager.startMove(t),this._lastPoint=e.length?e[0]:e,this._activateOnStart&&this._lastPoint&&(this._active=!0));}dragMove(t,e){if(!this.isEnabled())return;const i=this._lastPoint;if(!i)return;if(t.preventDefault(),!this._moveStateManager.isValidMoveEvent(t))return void this.reset(t);const s=e.length?e[0]:e;return !this._moved&&s.dist(i)<this._clickTolerance?void 0:(this._moved=!0,this._lastPoint=s,this._move(i,s))}dragEnd(t){this.isEnabled()&&this._lastPoint&&this._moveStateManager.isValidEndEvent(t)&&(this._moved&&i.suppressClick(),this.reset(t));}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}getClickTolerance(){return this._clickTolerance}}const Ds={0:1,2:2};class Ms{constructor(t){this._correctEvent=t.checkCorrectEvent;}startMove(t){const e=i.mouseButton(t);this._eventButton=e;}endMove(t){delete this._eventButton;}isValidStartEvent(t){return this._correctEvent(t)}isValidMoveEvent(t){return !function(t,e){const i=Ds[e];return void 0===t.buttons||(t.buttons&i)!==i}(t,this._eventButton)}isValidEndEvent(t){return i.mouseButton(t)===this._eventButton}}class zs{constructor(){this._firstTouch=void 0;}_isOneFingerTouch(t){return 1===t.targetTouches.length}_isSameTouchEvent(t){return t.targetTouches[0].identifier===this._firstTouch}startMove(t){this._firstTouch=t.targetTouches[0].identifier;}endMove(t){delete this._firstTouch;}isValidStartEvent(t){return this._isOneFingerTouch(t)}isValidMoveEvent(t){return this._isOneFingerTouch(t)&&this._isSameTouchEvent(t)}isValidEndEvent(t){return this._isOneFingerTouch(t)&&this._isSameTouchEvent(t)}}const Ls=t=>{t.mousedown=t.dragStart,t.mousemoveWindow=t.dragMove,t.mouseup=t.dragEnd,t.contextmenu=function(t){t.preventDefault();};},As=({enable:t,clickTolerance:e,bearingDegreesPerPixelMoved:s=.8})=>{const a=new Ms({checkCorrectEvent:t=>0===i.mouseButton(t)&&t.ctrlKey||2===i.mouseButton(t)});return new Ps({clickTolerance:e,move:(t,e)=>({bearingDelta:(e.x-t.x)*s}),moveStateManager:a,enable:t,assignEvents:Ls})},Rs=({enable:t,clickTolerance:e,pitchDegreesPerPixelMoved:s=-.5})=>{const a=new Ms({checkCorrectEvent:t=>0===i.mouseButton(t)&&t.ctrlKey||2===i.mouseButton(t)});return new Ps({clickTolerance:e,move:(t,e)=>({pitchDelta:(e.y-t.y)*s}),moveStateManager:a,enable:t,assignEvents:Ls})};class ks{constructor(t,e){this._minTouches=t.cooperativeGestures?2:1,this._clickTolerance=t.clickTolerance||1,this._map=e,this.reset();}reset(){this._active=!1,this._touches={},this._sum=new t.P(0,0),setTimeout((()=>{this._cancelCooperativeMessage=!1;}),200);}touchstart(t,e,i){return this._calculateTransform(t,e,i)}touchmove(t,e,i){if(this._map._cooperativeGestures&&(2===this._minTouches&&i.length<2&&!this._cancelCooperativeMessage?this._map._onCooperativeGesture(t,!1,i.length):this._cancelCooperativeMessage||(this._cancelCooperativeMessage=!0)),this._active&&!(i.length<this._minTouches))return t.preventDefault(),this._calculateTransform(t,e,i)}touchend(t,e,i){this._calculateTransform(t,e,i),this._active&&i.length<this._minTouches&&this.reset();}touchcancel(){this.reset();}_calculateTransform(e,i,s){s.length>0&&(this._active=!0);const a=Is(s,i),o=new t.P(0,0),r=new t.P(0,0);let n=0;for(const t in a){const e=a[t],i=this._touches[t];i&&(o._add(e),r._add(e.sub(i)),n++,a[t]=e);}if(this._touches=a,n<this._minTouches||!r.mag())return;const l=r.div(n);return this._sum._add(l),this._sum.mag()<this._clickTolerance?void 0:{around:o.div(n),panDelta:l}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Fs{constructor(){this.reset();}reset(){this._active=!1,delete this._firstTwoTouches;}touchstart(t,e,i){this._firstTwoTouches||i.length<2||(this._firstTwoTouches=[i[0].identifier,i[1].identifier],this._start([e[0],e[1]]));}touchmove(t,e,i){if(!this._firstTwoTouches)return;t.preventDefault();const[s,a]=this._firstTwoTouches,o=Bs(i,e,s),r=Bs(i,e,a);if(!o||!r)return;const n=this._aroundCenter?null:o.add(r).div(2);return this._move([o,r],n,t)}touchend(t,e,s){if(!this._firstTwoTouches)return;const[a,o]=this._firstTwoTouches,r=Bs(s,e,a),n=Bs(s,e,o);r&&n||(this._active&&i.suppressClick(),this.reset());}touchcancel(){this.reset();}enable(t){this._enabled=!0,this._aroundCenter=!!t&&"center"===t.around;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}function Bs(t,e,i){for(let s=0;s<t.length;s++)if(t[s].identifier===i)return e[s]}function Os(t,e){return Math.log(t/e)/Math.LN2}class Ns extends Fs{reset(){super.reset(),delete this._distance,delete this._startDistance;}_start(t){this._startDistance=this._distance=t[0].dist(t[1]);}_move(t,e){const i=this._distance;if(this._distance=t[0].dist(t[1]),this._active||!(Math.abs(Os(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:Os(this._distance,i),pinchAround:e}}}function Us(t,e){return 180*t.angleWith(e)/Math.PI}class Zs extends Fs{reset(){super.reset(),delete this._minDiameter,delete this._startVector,delete this._vector;}_start(t){this._startVector=this._vector=t[0].sub(t[1]),this._minDiameter=t[0].dist(t[1]);}_move(t,e){const i=this._vector;if(this._vector=t[0].sub(t[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:Us(this._vector,i),pinchAround:e}}_isBelowThreshold(t){this._minDiameter=Math.min(this._minDiameter,t.mag());const e=25/(Math.PI*this._minDiameter)*360,i=Us(t,this._startVector);return Math.abs(i)<e}}function Gs(t){return Math.abs(t.y)>Math.abs(t.x)}class js extends Fs{constructor(t){super(),this._map=t;}
41reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints;}touchstart(t,e,i){super.touchstart(t,e,i),this._currentTouchCount=i.length;}_start(t){this._lastPoints=t,Gs(t[0].sub(t[1]))&&(this._valid=!1);}_move(t,e,i){if(this._map._cooperativeGestures&&this._currentTouchCount<3)return;const s=t[0].sub(this._lastPoints[0]),a=t[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(s,a,i.timeStamp),this._valid?(this._lastPoints=t,this._active=!0,{pitchDelta:(s.y+a.y)/2*-.5}):void 0}gestureBeginsVertically(t,e,i){if(void 0!==this._valid)return this._valid;const s=t.mag()>=2,a=e.mag()>=2;if(!s&&!a)return;if(!s||!a)return void 0===this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const o=t.y>0==e.y>0;return Gs(t)&&Gs(e)&&o}}const Vs={panStep:100,bearingStep:15,pitchStep:10};class qs{constructor(t){this._tr=new ws(t);const e=Vs;this._panStep=e.panStep,this._bearingStep=e.bearingStep,this._pitchStep=e.pitchStep,this._rotationDisabled=!1;}reset(){this._active=!1;}keydown(t){if(t.altKey||t.ctrlKey||t.metaKey)return;let e=0,i=0,s=0,a=0,o=0;switch(t.keyCode){case 61:case 107:case 171:case 187:e=1;break;case 189:case 109:case 173:e=-1;break;case 37:t.shiftKey?i=-1:(t.preventDefault(),a=-1);break;case 39:t.shiftKey?i=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?s=1:(t.preventDefault(),o=-1);break;case 40:t.shiftKey?s=-1:(t.preventDefault(),o=1);break;default:return}return this._rotationDisabled&&(i=0,s=0),{cameraAnimation:r=>{const n=this._tr;r.easeTo({duration:300,easeId:"keyboardHandler",easing:$s,zoom:e?Math.round(n.zoom)+e*(t.shiftKey?2:1):n.zoom,bearing:n.bearing+i*this._bearingStep,pitch:n.pitch+s*this._pitchStep,offset:[-a*this._panStep,-o*this._panStep],center:n.center},{originalEvent:t});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0;}enableRotation(){this._rotationDisabled=!1;}}function $s(t){return t*(2-t)}const Ws=4.000244140625;class Hs{constructor(t,e){this._onTimeout=t=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(t);},this._map=t,this._tr=new ws(t),this._el=t.getCanvasContainer(),this._triggerRenderFrame=e,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222;}setZoomRate(t){this._defaultZoomRate=t;}setWheelZoomRate(t){this._wheelZoomRate=t;}isEnabled(){return !!this._enabled}isActive(){return !!this._active||void 0!==this._finishTimeout}isZooming(){return !!this._zooming}enable(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!t&&"center"===t.around);}disable(){this.isEnabled()&&(this._enabled=!1);}wheel(e){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!e[this._map._metaKey])return;e.preventDefault();}let i=e.deltaMode===WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY;const s=t.h.now(),a=s-(this._lastWheelEventTime||0);this._lastWheelEventTime=s,0!==i&&i%Ws==0?this._type="wheel":0!==i&&Math.abs(i)<4?this._type="trackpad":a>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(a*i)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,i+=this._lastValue)),e.shiftKey&&i&&(i/=4),this._type&&(this._lastWheelEvent=e,this._delta-=i,this._active||this._start(e)),e.preventDefault();}_start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const s=i.mousePos(this._el,e),a=this._tr;this._around=t.L.convert(this._aroundCenter?a.center:a.unproject(s)),this._aroundPoint=a.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame());}renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isActive())return;const e=this._tr.transform;if(0!==this._delta){const t="wheel"===this._type&&Math.abs(this._delta)>Ws?this._wheelZoomRate:this._defaultZoomRate;let i=2/(1+Math.exp(-Math.abs(this._delta*t)));this._delta<0&&0!==i&&(i=1/i);const s="number"==typeof this._targetZoom?e.zoomScale(this._targetZoom):e.scale;this._targetZoom=Math.min(e.maxZoom,Math.max(e.minZoom,e.scaleZoom(s*i))),"wheel"===this._type&&(this._startZoom=e.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0;}const i="number"==typeof this._targetZoom?this._targetZoom:e.zoom,s=this._startZoom,a=this._easing;let o,r=!1;if("wheel"===this._type&&s&&a){const e=Math.min((t.h.now()-this._lastWheelEventTime)/200,1),n=a(e);o=t.B.number(s,i,n),e<1?this._frameId||(this._frameId=!0):r=!0;}else o=i,r=!0;return this._active=!0,r&&(this._active=!1,this._finishTimeout=setTimeout((()=>
41{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout;}),200)),{noInertia:!0,needsRenderFrame:!r,zoomDelta:o-e.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(e){let i=t.bb;if(this._prevEase){const e=this._prevEase,s=(t.h.now()-e.start)/e.duration,a=e.easing(s+.01)-e.easing(s),o=.27/Math.sqrt(a*a+1e-4)*.01,r=Math.sqrt(.0729-o*o);i=t.ba(o,r,.25,1);}return this._prevEase={start:t.h.now(),duration:e,easing:i},i}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);}}class Xs{constructor(t,e){this._clickZoom=t,this._tapZoom=e;}enable(){this._clickZoom.enable(),this._tapZoom.enable();}disable(){this._clickZoom.disable(),this._tapZoom.disable();}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Ks{constructor(t){this._tr=new ws(t),this.reset();}reset(){this._active=!1;}dblclick(t,e){return t.preventDefault(),{cameraAnimation:i=>{i.easeTo({duration:300,zoom:this._tr.zoom+(t.shiftKey?-1:1),around:this._tr.unproject(e)},{originalEvent:t});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Qs{constructor(){this._tap=new Ss({numTouches:1,numTaps:1}),this.reset();}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset();}touchstart(t,e,i){if(!this._swipePoint)if(this._tapTime){const s=e[0],a=t.timeStamp-this._tapTime<500,o=this._tapPoint.dist(s)<30;a&&o?i.length>0&&(this._swipePoint=s,this._swipeTouch=i[0].identifier):this.reset();}else this._tap.touchstart(t,e,i);}touchmove(t,e,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const s=e[0],a=s.y-this._swipePoint.y;return this._swipePoint=s,t.preventDefault(),this._active=!0,{zoomDelta:a/128}}}else this._tap.touchmove(t,e,i);}touchend(t,e,i){if(this._tapTime)this._swipePoint&&0===i.length&&this.reset();else {const s=this._tap.touchend(t,e,i);s&&(this._tapTime=t.timeStamp,this._tapPoint=s);}}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Ys{constructor(t,e,i){this._el=t,this._mousePan=e,this._touchPan=i;}enable(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan");}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan");}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class Js{constructor(t,e,i){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=i;}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable();}disable(){this._mouseRotate.disable(),this._mousePitch.disable();}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class ta{constructor(t,e,i,s){this._el=t,this._touchZoom=e,this._touchRotate=i,this._tapDragZoom=s,this._rotationDisabled=!1,this._enabled=!0;}enable(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate");}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate");}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable();}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable();}}const ea=t=>t.zoom||t.drag||t.pitch||t.rotate;class ia extends t.k{}function sa(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}class aa{constructor(t,e){this.handleWindowEvent=t=>{this.handleEvent(t,`${t.type}Window`);},this.handleEvent=(t,e)=>{if("blur"===t.type)return void this.stop(!0);this._updatingCamera=!0;const s="renderFrame"===t.type?void 0:t,a={needsRenderFrame:!1},o={},r={},n=t.touches,l=n?this._getMapTouches(n):void 0,h=l?i.touchPos(this._el,l):i.mousePos(this._el,t);for(const{handlerName:i,handler:n,allowed:c}of this._handlers){if(!n.isEnabled())continue;let u;this._blockedByActive(r,c,i)?n.reset():n[e||t.type]&&(u=n[e||t.type](t,h,l),this.mergeHandlerResult(a,o,u,i,s),u&&u.needsRenderFrame&&this._triggerRe
vendor: 10,769 bytes, line 41
41nderFrame()),(u||n.isActive())&&(r[i]=n);}const c={};for(const t in this._previousActiveHandlers)r[t]||(c[t]=s);this._previousActiveHandlers=r,(Object.keys(c).length||sa(a))&&(this._changes.push([a,o,c]),this._triggerRenderFrame()),(Object.keys(r).length||sa(a))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:u}=a;u&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],u(this._map));},this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new ps(t),this._bearingSnap=e.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(e);const s=this._el;this._listeners=[[s,"touchstart",{passive:!0}],[s,"touchmove",{passive:!1}],[s,"touchend",void 0],[s,"touchcancel",void 0],[s,"mousedown",void 0],[s,"mousemove",void 0],[s,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[s,"mouseover",void 0],[s,"mouseout",void 0],[s,"dblclick",void 0],[s,"click",void 0],[s,"keydown",{capture:!1}],[s,"keyup",void 0],[s,"wheel",{passive:!1}],[s,"contextmenu",void 0],[window,"blur",void 0]];for(const[t,e,s]of this._listeners)i.addEventListener(t,e,t===document?this.handleWindowEvent:this.handleEvent,s);}destroy(){for(const[t,e,s]of this._listeners)i.removeEventListener(t,e,t===document?this.handleWindowEvent:this.handleEvent,s);}_addDefaultHandlers(t){const e=this._map,s=e.getCanvasContainer();this._add("mapEvent",new ys(e,t));const a=e.boxZoom=new Ts(e,t);this._add("boxZoom",a),t.interactive&&t.boxZoom&&a.enable();const o=new Cs(e),r=new Ks(e);e.doubleClickZoom=new Xs(r,o),this._add("tapZoom",o),this._add("clickZoom",r),t.interactive&&t.doubleClickZoom&&e.doubleClickZoom.enable();const n=new Qs;this._add("tapDragZoom",n);const l=e.touchPitch=new js(e);this._add("touchPitch",l),t.interactive&&t.touchPitch&&e.touchPitch.enable(t.touchPitch);const h=As(t),c=Rs(t);e.dragRotate=new Js(t,h,c),this._add("mouseRotate",h,["mousePitch"]),this._add("mousePitch",c,["mouseRotate"]),t.interactive&&t.dragRotate&&e.dragRotate.enable();const u=(({enable:t,clickTolerance:e})=>{const s=new Ms({checkCorrectEvent:t=>0===i.mouseButton(t)&&!t.ctrlKey});return new Ps({clickTolerance:e,move:(t,e)=>({around:e,panDelta:e.sub(t)}),activateOnStart:!0,moveStateManager:s,enable:t,assignEvents:Ls})})(t),d=new ks(t,e);e.dragPan=new Ys(s,u,d),this._add("mousePan",u),this._add("touchPan",d,["touchZoom","touchRotate"]),t.interactive&&t.dragPan&&e.dragPan.enable(t.dragPan);const _=new Zs,p=new Ns;e.touchZoomRotate=new ta(s,p,_,n),this._add("touchRotate",_,["touchPan","touchZoom"]),this._add("touchZoom",p,["touchPan","touchRotate"]),t.interactive&&t.touchZoomRotate&&e.touchZoomRotate.enable(t.touchZoomRotate);const m=e.scrollZoom=new Hs(e,(()=>this._triggerRenderFrame()));this._add("scrollZoom",m,["mousePan"]),t.interactive&&t.scrollZoom&&e.scrollZoom.enable(t.scrollZoom);const f=e.keyboard=new qs(e);this._add("keyboard",f),t.interactive&&t.keyboard&&e.keyboard.enable(),this._add("blockableMapEvent",new bs(e));}_add(t,e,i){this._handlers.push({handlerName:t,handler:e,allowed:i}),this._handlersById[t]=e;}stop(t){if(!this._updatingCamera){for(const{handler:t}of this._handlers)t.reset();this._inertia.clear(),this._fireEvents({},{},t),this._changes=[];}}isActive(){for(const{handler:t}of this._handlers)if(t.isActive())return !0;return !1}isZooming(){return !!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return !!this._eventsInProgress.rotate}isMoving(){return Boolean(ea(this._eventsInProgress))||this.isZooming()}_blockedByActive(t,e,i){for(const s in t)if(s!==i&&(!e||e.indexOf(s)<0))return !0;return !1}_getMapTouches(t){const e=[];for(const i of t)this._el.contains(i.target)&&e.push(i);return e}mergeHandlerResult(e,i,s,a,o){if(!s)return;t.e(e,s);const r={handlerName:a,originalEvent:s.originalEvent||o};void 0!==s.zoomDelta&&(i.zoom=r),void 0!==s.panDelta&&(i.drag=r),void 0!==s.pitchDelta&&(i.pitch=r),void 0!==s.bearingDelta&&(i.rotate=r);}_applyChanges(){const e={},i={},s={};for(const[a,o,r]of this._changes)a.panDelta&&(e.panDelta=(e.panDelta||new t.P(0,0))._add(a.panDelta)),a.zoomDelta&&(e.zoomDelta=(e.zoomDelta||0)+a.zoomDelta),a.bearingDelta&&(e.bearingDelta=(e.bearingDelta||0)+a.bearingDelta),a.pitchDelta&&(e.pitchDelta=(e.pitchDelta||0)+a.pitchDelta),void 0!==a.around&&(e.around=a.around),void 0!==a.pinchAround&&(e.pinchAround=a.pinchAround),a.noInertia&&(e.noInertia=a.noInertia),t.e(i,o),t.e(s,r);this._updateMapTransform(e,i,s),this._changes=[];}_updateMapTransform(t,e,i){const s=this._map,a=s._getTransformForUpdate(),o=s.terrain;if(!(sa(t)||o&&this._terrainMovement))return this._fireEvents(e,i,!0);let{panDelta:r,zoomDelta:n,bearingDelta:l,pitchDelta:h,around:c,pinchAround:u}=t;void 0!==u&&(c=u),s._stop(!0),c=c||s.transform.centerPoint;const d=a.pointLocation(r?c.sub(r):c);l&&(a.bearing+=l),h&&(a.pitch+=h),n&&(a.zoom+=n),o?this._terrainMovement||!e.drag&&!e.zoom?e.drag&&this._terrainMovement?a.center=a.pointLocation(a.centerPoint.sub(r)):a.setLocationAtPoint(d,c):(this._terrainMovement=!0,this._map._elevationFreeze=!0,a.setLocationAtPoint(d,c),this._map.once("moveend",(()=>{this._map._elevationFreeze=!1,this._terrainMovement=!1,a.recalculateZoom(s.terrain);}))):a.setLocationAtPoint(d,c),s._applyUpdatedTransform(a),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(e,i,!0);}_fireEvents(e,i,s){const a=ea(this._eventsInProgress),o=ea(e),r={};for(const t in e){const{originalEvent:i}=e[t];this._eventsInProgress[t]||(r[`${t}start`]=i),this._eventsInProgress[t]=e[t];}!a&&o&&this._fireEvent("movestart",o.originalEvent);for(const t in r)this._fireEvent(t,r[t]);o&&this._fireEvent("move",o.originalEvent);for(const t in e){const{originalEvent:i}=e[t];this._fireEvent(t,i);}const n={};let l;for(const t in this._eventsInProgress){const{handlerName:e,originalEvent:s}=this._eventsInProgress[t];this._handlersById[e].isActive()||(delete this._eventsInProgress[t],l=i[e]||s,n[`${t}end`]=l);}for(const t in n)this._fireEvent(t,n[t]);const h=ea(this._eventsInProgress);if(s&&(a||o)&&!h){this._updatingCamera=!0;const e=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=t=>0!==t&&-this._bearingSnap<t&&t<this._bearingSnap;!e||!e.essential&&t.h.prefersReducedMotion?(this._map.fire(new t.k("moveend",{originalEvent:l})),i(this._map.getBearing())&&this._map.resetNorth()):(i(e.bearing||this._map.getBearing())&&(e.bearing=0),e.freezeElevation=!0,this._map.easeTo(e,{originalEvent:l})),this._updatingCamera=!1;}}_fireEvent(e,i){this._map.fire(new t.k(e,i?{originalEvent:i}:{}));}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add((t=>{delete this._frameId,this.handleEvent(new ia("renderFrame",{timeStamp:t})),this._applyChanges();}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame());}}class oa extends t.E{constructor(e,i){super(),this._renderFrameCallback=()=>{const e=Math.min((t.h.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();},this._moving=!1,this._zooming=!1,this.transform=e,this._bearingSnap=i.bearingSnap,this.on("moveend",(()=>{delete this._requestedCameraState;}));}getCenter(){return new t.L(this.transform.center.lng,this.transform.center.lat)}setCenter(t,e){return this.jumpTo({center:t},e)}panBy(e,i,s){return e=t.P.convert(e).mult(-1),this.panTo(this.transform.center,t.e({offset:e},i),s)}panTo(e,i,s){return this.easeTo(t.e({center:e},i),s)}getZoom(){return this.transform.zoom}setZoom(t,e){return this.jumpTo({zoom:t},e),this}zoomTo(e,i,s){return this.easeTo(t.e({zoom:e},i),s)}zoomIn(t,e){return this.zoomTo(this.getZoom()+1,t,e),this}zoomOut(t,e){return this.zoomTo(this.getZoom()-1,t,e),this}getBearing(){return this.transform.bearing}setBearing(t,e){return this.jumpTo({bearing:t},e),this}getPadding(){return this.transform.padding}setPadding(t,e){return this.jumpTo({padding:t},e),this}rotateTo(e,i,s){return this.easeTo(t.e({bearing:e},i),s)}resetNorth(e,i){return this.rotateTo(0,t.e({duration:1e3},e),i),this}resetNorthPitch(e,i){return this.easeTo(t.e({bearing:0,pitch:0,duration:1e3},e),i),this}snapToNorth(t,e){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,e):this}getPitch(){return this.transform.pitch}setPitch(t,e){return this.jumpTo({pitch:t},e),this}cameraForBounds(t,e){t=L.convert(t);const i=e&&e.bearing||0;return this._cameraForBoxAndBearing(t.getNorthWest(),t.getSouthEast(),i,e)}_cameraForBoxAndBearing(e,i,s,a){const o={top:0,bottom:0,right:0,left:0};if("number"==typeof(a=t.e({padding:o,offset:[0,0],maxZoom:this.transform.maxZoom},a)).padding){const t=a.padding;a.padding={top:t,bottom:t,right:t,left:t};}a.padding=t.e(o,a.padding);const r=this.transform,n=r.padding,l=r.project(t.L.convert(e)),h=r.project(t.L.convert(i)),c=l.rotate(-s*Math.PI/180),u=h.rotate(-s*Math.PI/180),d=new t.P(Math.max(c.x,u.x),Math.max(c.y,u.y)),_=new t.P(Math.min(c.x,u.x),Math.min(c.y,u.y)),p=d.sub(_),m=(r.width-(n.left+n.right+a.padding.left+a.padding.right))/p.x,f=(r.height-(n.top+n.bottom+a.padding.top+a.padding.bottom))/p.y;if(f<0||m<0)return void t.w("Map cannot fit within canvas with the given bounds, padding, and/or offset.");const g=Math.min(r.scaleZoom(r.scale*Math.min(m,f)),a.maxZoom),v=t.P.convert(a.offset),x=new t.P((a.padding.left-a.padding.right)/2,(a.padding.top-a.padding.bottom)/2).rotate(s*Math.PI/180),y=v.add(x).mult(r.scale/r.zoomScale(g));return {center:r.unproject(l.add(h).div(2).sub(y)),zoom:g,bearing:s}}fitBounds(t,e,i){return this._fitInternal(this.cameraForBounds(t,e),e,i)}fitScreenCoordinates(e,i,s,a,o){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(t.P.convert(e)),this.transform.pointLocation(t.P.convert(i)),s,a),a,o)}_fitInternal(e,i,s){return e?(delete(i=t.e(e,i)).padding,i.linear?this.easeTo(i,s):this.flyTo(i,s)):this}jumpTo(e,i){this.stop();const s=this._getTransformForUpdate();let a=!1,o=!1,r=!1;return "zoom"in e&&s.zoom!==+e.zoom&&(a=!0,s.zoom=+e.zoom),void 0!==e.center&&(s.center=t.L.convert(e.center)),"bearing"in e&&s.bearing!==+e.bearing&&(o=!0,s.bearing=+e.bearing),"pitch"in e&&s.pitch!==+e.pitch&&(r=!0,s.pitch=+e.pitch),null==e.padding||s.isPaddingEqual(e.padding)||(s.padding=e.padding),this._applyUpdatedTransform(s),this.fire(new t.k("movestart",i)).fire(new t.k("move",i)),a&&this.fire(new t.k("zoomstart",i)).fire(new t.k("zoom",i)).fire(new t.k("zoomend",i)),o&&this.fire(new t.k("rotatestart",i)).fire(new t.k("rotate",i)).fire(new t.k("rotateend",i)),r&&this.fire(new t.k("pitchstart",i)).fire(new t.k("pitch",i)).fire(new t.k("pitchend",
41i)),this.fire(new t.k("moveend",i))}calculateCameraOptionsFromTo(e,i,s,a=0){const o=t.U.fromLngLat(e,i),r=t.U.fromLngLat(s,a),n=r.x-o.x,l=r.y-o.y,h=r.z-o.z,c=Math.hypot(n,l,h);if(0===c)throw new Error("Can't calculate camera options with same From and To");const u=Math.hypot(n,l),d=this.transform.scaleZoom(this.transform.cameraToCenterDistance/c/this.transform.tileSize),_=180*Math.atan2(n,-l)/Math.PI;let p=180*Math.acos(u/c)/Math.PI;return p=h<0?90-p:90+p,{center:r.toLngLat(),zoom:d,pitch:p,bearing:_}}easeTo(e,i){this._stop(!1,e.easeId),(!1===(e=t.e({offset:[0,0],duration:500,easing:t.bb},e)).animate||!e.essential&&t.h.prefersReducedMotion)&&(e.duration=0);const s=this._getTransformForUpdate(),a=this.getZoom(),o=this.getBearing(),r=this.getPitch(),n=this.getPadding(),l="zoom"in e?+e.zoom:a,h="bearing"in e?this._normalizeBearing(e.bearing,o):o,c="pitch"in e?+e.pitch:r,u="padding"in e?e.padding:s.padding,d=t.P.convert(e.offset);let _=s.centerPoint.add(d);const p=s.pointLocation(_),m=t.L.convert(e.center||p);this._normalizeCenter(m);const f=s.project(p),g=s.project(m).sub(f),v=s.zoomScale(l-a);let x,y;e.around&&(x=t.L.convert(e.around),y=s.locationPoint(x));const b={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=this._zooming||l!==a,this._rotating=this._rotating||o!==h,this._pitching=this._pitching||c!==r,this._padding=!s.isPaddingEqual(u),this._easeId=e.easeId,this._prepareEase(i,e.noMoveStart,b),this.terrain&&this._prepareElevation(m),this._ease((p=>{if(this._zooming&&(s.zoom=t.B.number(a,l,p)),this._rotating&&(s.bearing=t.B.number(o,h,p)),this._pitching&&(s.pitch=t.B.number(r,c,p)),this._padding&&(s.interpolatePadding(n,u,p),_=s.centerPoint.add(d)),this.terrain&&!e.freezeElevation&&this._updateElevation(p),x)s.setLocationAtPoint(x,y);else {const t=s.zoomScale(s.zoom-a),e=l>a?Math.min(2,v):Math.max(.5,v),i=Math.pow(e,1-p),o=s.unproject(f.add(g.mult(p*i)).mult(t));s.setLocationAtPoint(s.renderWorldCopies?o.wrap():o,_);}this._applyUpdatedTransform(s),this._fireMoveEvents(i);}),(t=>{this.terrain&&this._finalizeElevation(),this._afterEase(i,t);}),e),this}_prepareEase(e,i,s={}){this._moving=!0,i||s.moving||this.fire(new t.k("movestart",e)),this._zooming&&!s.zooming&&this.fire(new t.k("zoomstart",e)),this._rotating&&!s.rotating&&this.fire(new t.k("rotatestart",e)),this._pitching&&!s.pitching&&this.fire(new t.k("pitchstart",e));}_prepareElevation(t){this._elevationCenter=t,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(t,this.transform.tileZoom),this._elevationFreeze=!0;}_updateElevation(e){this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);const i=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(e<1&&i!==this._elevationTarget){const t=this._elevationTarget-this._elevationStart;this._elevationStart+=e*(t-(i-(t*e+this._elevationStart))/(1-e)),this._elevationTarget=i;}this.transform.elevation=t.B.number(this._elevationStart,this._elevationTarget,e);}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain);}_getTransformForUpdate(){return this.transformCameraUpdate?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_applyUpdatedTransform(t){if(!this.transformCameraUpdate)return;const e=t.clone(),{center:i,zoom:s,pitch:a,bearing:o,elevation:r}=this.transformCameraUpdate(e);i&&(e.center=i),void 0!==s&&(e.zoom=s),void 0!==a&&(e.pitch=a),void 0!==o&&(e.bearing=o),void 0!==r&&(e.elevation=r),this.transform.apply(e);}_fireMoveEvents(e){this.fire(new t.k("move",e)),this._zooming&&this.fire(new t.k("zoom",e)),this._rotating&&this.fire(new t.k("rotate",e)),this._pitching&&this.fire(new t.k("pitch",e));}_afterEase(e,i){if(this._easeId&&i&&this._easeId===i)return;delete this._easeId;const s=this._zooming,a=this._rotating,o=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,s&&this.fire(new t.k("zoomend",e)),a&&this.fire(new t.k("rotateend",e)),o&&this.fire(new t.k("pitchend",e)),this.fire(new t.k("moveend",e));}flyTo(e,i){if(!e.essential&&t.h.prefersReducedMotion){const s=t.F(e,["center","zoom","bearing","pitch","around"]);return this.jumpTo(s,i)}
41this.stop(),e=t.e({offset:[0,0],speed:1.2,curve:1.42,easing:t.bb},e);const s=this._getTransformForUpdate(),a=this.getZoom(),o=this.getBearing(),r=this.getPitch(),n=this.getPadding(),l="zoom"in e?t.ad(+e.zoom,s.minZoom,s.maxZoom):a,h="bearing"in e?this._normalizeBearing(e.bearing,o):o,c="pitch"in e?+e.pitch:r,u="padding"in e?e.padding:s.padding,d=s.zoomScale(l-a),_=t.P.convert(e.offset);let p=s.centerPoint.add(_);const m=s.pointLocation(p),f=t.L.convert(e.center||m);this._normalizeCenter(f);const g=s.project(m),v=s.project(f).sub(g);let x=e.curve;const y=Math.max(s.width,s.height),b=y/d,w=v.mag();if("minZoom"in e){const i=t.ad(Math.min(e.minZoom,a,l),s.minZoom,s.maxZoom),o=y/s.zoomScale(i-a);x=Math.sqrt(o/w*2);}const T=x*x;function I(t){const e=(b*b-y*y+(t?-1:1)*T*T*w*w)/(2*(t?b:y)*T*w);return Math.log(Math.sqrt(e*e+1)-e)}function E(t){return (Math.exp(t)-Math.exp(-t))/2}function S(t){return (Math.exp(t)+Math.exp(-t))/2}const C=I(!1);let P=function(t){return S(C)/S(C+x*t)},D=function(t){return y*((S(C)*(E(e=C+x*t)/S(e))-E(C))/T)/w;var e;},M=(I(!0)-C)/x;if(Math.abs(w)<1e-6||!isFinite(M)){if(Math.abs(y-b)<1e-6)return this.easeTo(e,i);const t=b<y?-1:1;M=Math.abs(Math.log(b/y))/x,D=function(){return 0},P=function(e){return Math.exp(t*x*e)};}return e.duration="duration"in e?+e.duration:1e3*M/("screenSpeed"in e?+e.screenSpeed/x:+e.speed),e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=o!==h,this._pitching=c!==r,this._padding=!s.isPaddingEqual(u),this._prepareEase(i,!1),this.terrain&&this._prepareElevation(f),this._ease((d=>{const m=d*M,x=1/P(m);s.zoom=1===d?l:a+s.scaleZoom(x),this._rotating&&(s.bearing=t.B.number(o,h,d)),this._pitching&&(s.pitch=t.B.number(r,c,d)),this._padding&&(s.interpolatePadding(n,u,d),p=s.centerPoint.add(_)),this.terrain&&!e.freezeElevation&&this._updateElevation(d);const y=1===d?f:s.unproject(g.add(v.mult(D(m))).mult(x));s.setLocationAtPoint(s.renderWorldCopies?y.wrap():y,p),this._applyUpdatedTransform(s),this._fireMoveEvents(i);}),(()=>{this.terrain&&this._finalizeElevation(),this._afterEase(i);}),e),this}isEasing(){return !!this._easeFrameId}stop(){return this._stop()}_stop(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const t=this._onEaseEnd;delete this._onEaseEnd,t.call(this,e);}if(!t){const t=this.handlers;t&&t.stop(!1);}return this}_ease(e,i,s){!1===s.animate||0===s.duration?(e(1),i()):(this._easeStart=t.h.now(),this._easeOptions=s,this._onEaseFrame=e,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));}_normalizeBearing(e,i){e=t.b5(e,-180,180);const s=Math.abs(e-i);return Math.abs(e-360-i)<s&&(e-=360),Math.abs(e+360-i)<s&&(e+=360),e}_normalizeCenter(t){const e=this.transform;if(!e.renderWorldCopies||e.lngRange)return;const i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0;}queryTerrainElevation(e){return this.terrain?this.terrain.getElevationForLngLatZoom(t.L.convert(e),this.transform.tileZoom)-this.transform.elevation:null}}class ra{constructor(t={}){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")));},this._updateData=t=>{!t||"metadata"!==t.sourceDataType&&"visibility"!==t.sourceDataType&&"style"!==t.dataType&&"terrain"!==t.type||this._updateAttributions();},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1===this._compact?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"));},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show");},this.options=t;}getDefaultPosition(){return "bottom-right"}onAdd(t){return this._map=t,this._compact=this.options&&this.options.compact,this._container=i.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=i.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=i.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){i.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0;}_setElementTitle(t,e){const i=this._map._getUIString(`AttributionControl.${e}`);t.title=i,t.setAttribute("aria-label",i);}_updateAttributions(){if(!this._map.style)return;let t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map((t=>"string"!=typeof t?"":t))):"string"==typeof this.options.customAttribution&&t.push(this.options.customAttribution)),this._map.style.stylesheet){const t=this._map.style.stylesheet;this.styleOwner=t.owner,this.styleId=t.id;}const e=this._map.style.sourceCaches;for(const i in e){const s=e[i];if(s.used||s.usedForTerrain){const e=s.getSource();e.attribution&&t.indexOf(e.attribution)<0&&t.push(e.attribution);}}t=t.filter((t=>String(t).trim())),t.sort(((t,e)=>t.length-e.length)),t=t.filter(((e,i)=>{for(let s=i+1;s<t.length;s++)if(t[s].indexOf(e)>=0)return !1;return !0}));const i=t.join(" | ");i!==this._attribHTML&&(this._attribHTML=i,t.length?(this._innerContainer.innerHTML=i,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null);}}class na{constructor(t={}){this._updateCompact=()=>{const t=this._container.children;if(t.length){const e=t[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1!==this._compact&&e.classList.add("maplibregl-compact"):e.classList.remove("maplibregl-compact");}},this.options=t;}getDefaultPosition(){return "bottom-left"}onAdd(t){this._map=t,this._compact=this.options&&this.options.compact,this._container=i.create("div","maplibregl-ctrl");const e=i.create("a","maplibregl-ctrl-logo");return e.target="_blank",e.rel="noopener nofollow",e.href="https://maplibre.org/",e.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),e.setAttribute("rel","noopener nofollow"),this._container.appendChild(e),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){i.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0;}}class la{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;}add(t){const e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e}remove(t){const e=this._currentlyRunning,i=e?this._queue.concat(e):this._queue;
vendor: 14,908 bytes, line 41
41for(const e of i)if(e.id===t)return void(e.cancelled=!0)}run(t=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");const e=this._currentlyRunning=this._queue;this._queue=[];for(const i of e)if(!i.cancelled&&(i.callback(t),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1;}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[];}}const ha={"AttributionControl.ToggleAttribution":"Toggle attribution","AttributionControl.MapFeedback":"Map feedback","FullscreenControl.Enter":"Enter fullscreen","FullscreenControl.Exit":"Exit fullscreen","GeolocateControl.FindMyLocation":"Find my location","GeolocateControl.LocationNotAvailable":"Location not available","LogoControl.Title":"Mapbox logo","NavigationControl.ResetBearing":"Reset bearing to north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","ScaleControl.Feet":"ft","ScaleControl.Meters":"m","ScaleControl.Kilometers":"km","ScaleControl.Miles":"mi","ScaleControl.NauticalMiles":"nm","TerrainControl.enableTerrain":"Enable terrain","TerrainControl.disableTerrain":"Disable terrain"};var ca=t.Q([{name:"a_pos3d",type:"Int16",components:3}]);class ua extends t.E{constructor(t){super(),this.sourceCache=t,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,t.usedForTerrain=!0,t.tileSize=this.tileSize*2**this.deltaZoom;}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null;}update(e,i){this.sourceCache.update(e,i),this._renderableTilesKeys=[];const s={};for(const a of e.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:i}))s[a.key]=!0,this._renderableTilesKeys.push(a.key),this._tiles[a.key]||(a.posMatrix=new Float64Array(16),t.aS(a.posMatrix,0,t.N,0,t.N,0,1),this._tiles[a.key]=new W(a,this.tileSize));for(const t in this._tiles)s[t]||delete this._tiles[t];}freeRtt(t){for(const e in this._tiles){const i=this._tiles[e];(!t||i.tileID.equals(t)||i.tileID.isChildOf(t)||t.isChildOf(i.tileID))&&(i.rtt=[]);}}getRenderableTiles(){return this._renderableTilesKeys.map((t=>this.getTileByID(t)))}getTileByID(t){return this._tiles[t]}getTerrainCoords(e){const i={};for(const s of this._renderableTilesKeys){const a=this._tiles[s].tileID;if(a.canonical.equals(e.canonical)){const a=e.clone();a.posMatrix=new Float64Array(16),t.aS(a.posMatrix,0,t.N,0,t.N,0,1),i[s]=a;}else if(a.canonical.isChildOf(e.canonical)){const o=e.clone();o.posMatrix=new Float64Array(16);const r=a.canonical.z-e.canonical.z,n=a.canonical.x-(a.canonical.x>>r<<r),l=a.canonical.y-(a.canonical.y>>r<<r),h=t.N>>r;t.aS(o.posMatrix,0,h,0,h,0,1),t.$(o.posMatrix,o.posMatrix,[-n*h,-l*h,0]),i[s]=o;}else if(e.canonical.isChildOf(a.canonical)){const o=e.clone();o.posMatrix=new Float64Array(16);const r=e.canonical.z-a.canonical.z,n=e.canonical.x-(e.canonical.x>>r<<r),l=e.canonical.y-(e.canonical.y>>r<<r),h=t.N>>r;t.aS(o.posMatrix,0,t.N,0,t.N,0,1),t.$(o.posMatrix,o.posMatrix,[n*h,l*h,0]),t.a0(o.posMatrix,o.posMatrix,[1/2**r,1/2**r,0]),i[s]=o;}}return i}getSourceTile(t,e){const i=this.sourceCache._source;let s=t.overscaledZ-this.deltaZoom;if(s>i.maxzoom&&(s=i.maxzoom),s<i.minzoom)return null;this._sourceTileCache[t.key]||(this._sourceTileCache[t.key]=t.scaledTo(s).key);let a=this.sourceCache.getTileByID(this._sourceTileCache[t.key]);if((!a||!a.dem)&&e)for(;s>=i.minzoom&&(!a||!a.dem);)a=this.sourceCache.getTileByID(t.scaledTo(s--).key);return a}tilesAfterTime(t=Date.now()){return Object.values(this._tiles).filter((e=>e.timeAdded>=t))}}class da{constructor(t,e,i){this.painter=t,this.sourceCache=new ua(e),this.options=i,this.exaggeration="number"==typeof i.exaggeration?i.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024;}getDEMElevation(e,i,s,a=t.N){var o;if(!(i>=0&&i<a&&s>=0&&s<a))return 0;const r=this.getTerrainData(e),n=null===(o=r.tile)||void 0===o?void 0:o.dem;if(!n)return 0;const l=function(t,e,i){var s=e[0],a=e[1];return t[0]=i[0]*s+i[4]*a+i[12],t[1]=i[1]*s+i[5]*a+i[13],t}([],[i/a*t.N,s/a*t.N],r.u_terrain_matrix),h=[l[0]*n.dim,l[1]*n.dim],c=Math.floor(h[0]),u=Math.floor(h[1]),d=h[0]-c,_=h[1]-u;return n.get(c,u)*(1-d)*(1-_)+n.get(c+1,u)*d*(1-_)+n.get(c,u+1)*(1-d)*_+n.get(c+1,u+1)*d*_}getElevationForLngLatZoom(e,i){const{tileID:s,mercatorX:a,mercatorY:o}=this._getOverscaledTileIDFromLngLatZoom(e,i);return this.getElevation(s,a%t.N,o%t.N,t.N)}getElevation(e,i,s,a=t.N){return this.getDEMElevation(e,i,s,a)*this.exaggeration}getTerrainData(e){if(!this._emptyDemTexture){const e=this.painter.context,i=new t.R({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new x(e,i,e.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new x(e,new t.R({width:1,height:1}),e.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=t.ao([]);}const i=this.sourceCache.getSourceTile(e,!0);if(i&&i.dem&&(!i.demTexture||i.needsTerrainPrepare)){const t=this.painter.context;i.demTexture=this.painter.getTileTexture(i.dem.stride),i.demTexture?i.demTexture.update(i.dem.getPixels(),{premultiply:!1}):i.demTexture=new x(t,i.dem.getPixels(),t.gl.RGBA,{premultiply:!1}),i.demTexture.bind(t.gl.NEAREST,t.gl.CLAMP_TO_EDGE),i.needsTerrainPrepare=!1;}const s=i&&i+i.tileID.key+e.key;if(s&&!this._demMatrixCache[s]){const s=this.sourceCache.sourceCache._source.maxzoom;let a=e.canonical.z-i.tileID.canonical.z;e.overscaledZ>e.canonical.z&&(e.canonical.z>=s?a=e.canonical.z-s:t.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));const o=e.canonical.x-(e.canonical.x>>a<<a),r=e.canonical.y-(e.canonical.y>>a<<a),n=t.bc(new Float64Array(16),[1/(t.N<<a),1/(t.N<<a),0]);t.$(n,n,[o*t.N,r*t.N,0]),this._demMatrixCache[e.key]={matrix:n,coord:e};}return {u_depth:2,u_terrain:3,u_terrain_dim:i&&i.dem&&i.dem.dim||1,u_terrain_matrix:s?this._demMatrixCache[e.key].matrix:this._emptyDemMatrix,u_terrain_unpack:i&&i.dem&&i.dem.getUnpackVector()||this._emptyDemUnpack,u_terrain_exaggeration:this.exaggeration,texture:(i&&i.demTexture||this._emptyDemTexture).texture,depthTexture:(this._fboDepthTexture||this._emptyDepthTexture).texture,tile:i}}getFramebuffer(t){const e=this.painter,i=e.width/devicePixelRatio,s=e.height/devicePixelRatio;return !this._fbo||this._fbo.width===i&&this._fbo.height===s||(this._fbo.destroy(),this._fboCoordsTexture.destroy(),this._fboDepthTexture.destroy(),delete this._fbo,delete this._fboDepthTexture,delete this._fboCoordsTexture),this._fboCoordsTexture||(this._fboCoordsTexture=new x(e.context,{width:i,height:s,data:null},e.context.gl.RGBA,{premultiply:!1}),this._fboCoordsTexture.bind(e.context.gl.NEAREST,e.context.gl.CLAMP_TO_EDGE)),this._fboDepthTexture||(this._fboDepthTexture=new x(e.context,{width:i,height:s,data:null},e.context.gl.RGBA,{premultiply:!1}),this._fboDepthTexture.bind(e.context.gl.NEAREST,e.context.gl.CLAMP_TO_EDGE)),this._fbo||(this._fbo=e.context.createFramebuffer(i,s,!0,!1),this._fbo.depthAttachment.set(e.context.createRenderbuffer(e.context.gl.DEPTH_COMPONENT16,i,s))),this._fbo.colorAttachment.set("coords"===t?this._fboCoordsTexture.texture:this._fboDepthTexture.texture),this._fbo}getCoordsTexture(){const e=this.painter.context;if(this._coordsTexture)return this._coordsTexture;const i=new Uint8Array(this._coordsTextureSize*this._coordsTextureSize*4);for(let t=0,e=0;t<this._coordsTextureSize;t++)for(let s=0;s<this._coordsTextureSize;s++,e+=4)i[e+0]=255&s,i[e+1]=255&t,i[e+2]=s>>8<<4|t>>8,i[e+3]=0;const s=new t.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(i.buffer)),a=new x(e,s,e.gl.RGBA,{premultiply:!1});return a.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._coordsTexture=a,a}pointCoordinate(e){const i=new Uint8Array(4),s=this.painter.context,a=s.gl;s.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),a.readPixels(e.x,this.painter.height/devicePixelRatio-e.y-1,1,1,a.RGBA,a.UNSIGNED_BYTE,i),s.bindFramebuffer.set(null);const o=i[0]+(i[2]>>4<<8),r=i[1]+((15&i[2])<<8),n=this.coordsIndex[255-i[3]],l=n&&this.sourceCache.getTileByID(n);if(!l)return null;const h=this._coordsTextureSize,c=(1<<l.tileID.canonical.z)*h;return new t.U(this._allowMercatorOverflow(e,(l.tileID.canonical.x*h+o)/c),(l.tileID.canonical.y*h+r)/c,this.getElevation(l.tileID,o,r,h))}getTerrainMesh(){if(this._mesh)return this._mesh;const e=this.painter.context,i=new t.bd,s=new t.b0,a=this.meshSize,o=t.N/a,r=a*a;for(let t=0;t<=a;t++)for(let e=0;e<=a;e++)i.emplaceBack(e*o,t*o,0);for(let t=0;t<r;t+=a+1)for(let e=0;e<a;e++)s.emplaceBack(e+t,a+e+t+1,a+e+t+2),s.emplaceBack(e+t,a+e+t+2,e+t+1);const n=i.length,l=n+2*(a+1);for(const e of [0,1])for(let s=0;s<=a;s++)for(const a of [0,1])i.emplaceBack(s*o,e*t.N,a);for(let t=0;t<2*a;t+=2)s.emplaceBack(l+t,l+t+1,l+t+3),s.emplaceBack(l+t,l+t+3,l+t+2),s.emplaceBack(n+t,n+t+3,n+t+1),s.emplaceBack(n+t,n+t+2,n+t+3);const h=i.length,c=h+2*(a+1);for(const e of [0,1])for(let s=0;s<=a;s++)for(const a of [0,1])i.emplaceBack(e*t.N,s*o,a);for(let t=0;t<2*a;t+=2)s.emplaceBack(h+t,h+t+1,h+t+3),s.emplaceBack(h+t,h+t+3,h+t+2),s.emplaceBack(c+t,c+t+3,c+t+1),s.emplaceBack(c+t,c+t+2,c+t+3);return this._mesh={indexBuffer:e.createIndexBuffer(s),vertexBuffer:e.createVertexBuffer(i,ca.members),segments:t.S.simpleSegment(0,0,i.length,s.length)},this._mesh}getMeshFrameDelta(e){return 2*Math.PI*t.be/Math.pow(2,e)/5}getMinTileElevationForLngLatZoom(t,e){var i;const{tileID:s}=this._getOverscaledTileIDFromLngLatZoom(t,e);return null!==(i=this.getMinMaxElevation(s).minElevation)&&void 0!==i?i:0}getMinMaxElevation(t){const e=this.getTerrainData(t).tile,i={minElevation:null,maxElevation:null};return e&&e.dem&&(i.minElevation=e.dem.min*this.exaggeration,i.maxElevation=e.dem.max*this.exaggeration),i}_getOverscaledTileIDFromLngLatZoom(e,i){const s=t.U.fromLngLat(e.wrap()),a=(1<<i)*t.N,o=s.x*a,r=s.y*a,n=Math.floor(o/t.N),l=Math.floor(r/t.N);return {tileID:new t.O(i,0,i,n,l),mercatorX:o,mercatorY:r}}_allowMercatorOverflow(e,i){const s=e.x<this.painter.width/2;let a=t.bf(i);const o=this.painter.transform.center.lng;return s&&Math.sign(a)>0&&Math.sign(o)<0||!s&&Math.sign(a)<0&&Math.sign(o)>0?(a=360*Math.sign(o)+a,t.G(a)):i}}class _a{constructor(t,e,i){this._context=t,this._size=e,this._tileSize=i,this._objects=[],this._recentlyUsed=[],this._stamp=0;}destruct(){for(const t of this._objects)t.texture.destroy(),t.fbo.destroy();}_createObject(t){const e=this._context.createFramebuffer(this._tileSize,this._tileSize,!0,!0),i=new x(this._context,{width:this._tileSize,height:this._tileSize,data:null},this._context.gl.RGBA);return i.bind(this._context.gl.LINEAR,this._context.gl.CLAMP_TO_EDGE),e.depthAttachment.set(this._context.createRenderbuffer(this._context.gl.DEPTH_STENCIL,this._tileSize,this._tileSize)),e.colorAttachment.set(i.texture),{id:t,fbo:e,texture:i,stamp:-1,inUse:!1}}getObjectForId(t){return this._objects[t]}useObject(t){t.inUse=!0,this._recentlyUsed=this._recentlyUsed.filter((e=>t.id!==e)),this._recentlyUsed.push(t.id);}stampObject(t){t.stamp=++this._stamp;}getOrCreateFreeObject(){for(const t of this._recentlyUsed)if(!this._objects[t].inUse)return this._objects[t];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");const t=this._createObject(this._objects.length);return this._objects.push(t),t}freeObject(t){t.inUse=!1;}freeAllObjects(){for(const t of this._objects)this.freeObject(t);}isFull(){return !(this._objects.length<this._size)&&!1===this._objects.some((t=>!t.inUse))}}const pa={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class ma{constructor(t,e){this.painter=t,this.terrain=e,this.pool=new _a(t.context,30,e.sourceCache.tileSize*e.qualityFactor);}destruct(){this.pool.destruct();}getTexture(t){return this.pool.getObjectForId(t.rtt[this._stacks.length-1].id).texture}prepareForRender(t,e){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=t._order.filter((i=>!t._layers[i].isHidden(e))),this._coordsDescendingInv={};for(const e in t.sourceCaches){this._coordsDescendingInv[e]={};const i=t.sourceCaches[e].getVisibleCoordinates();for(const t of i){const i=this.terrain.sourceCache.getTerrainCoords(t);for(const t in i)this._coordsDescendingInv[e][t]||(this._coordsDescendingInv[e][t]=[]),this._coordsDescendingInv[e][t].push(i[t]);}}this._coordsDescendingInvStr={};for(const e of t._order){const i=t._layers[e],s=i.source;if(pa[i.type]&&!this._coordsDescendingInvStr[s]){this._coordsDescendingInvStr[s]={};for(const t in this._coordsDescendingInv[s])this._coordsDescendingInvStr[s][t]=this._coordsDescendingInv[s][t].map((t=>t.key)).sort().join();}}for(const t of this._renderableTiles)for(const e in this._coordsDescendingInvStr){const i=this._coordsDescendingInvStr[e][t.tileID.key];i&&i!==t.rttCoords[e]&&(t.rtt=[]);}}renderLayer(e){if(e.isHidden(this.painter.transform.zoom))return !1;const i=e.type,s=this.painter,a=this._renderableLayerIds[this._renderableLayerIds.length-1]===e.id;if(pa[i]&&(this._prevType&&pa[this._prevType]||this._stacks.push([]),this._prevType=i,this._stacks[this._stacks.length-1].push(e.id),!a))return !0;if(pa[this._prevType]||pa[i]&&a){this._prevType=i;const e=this._stacks.length-1,a=this._stacks[e]||[];for(const i of this._renderableTiles){if(this.pool.isFull()&&(es(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(i),i.rtt[e]){const t=this.pool.getObjectForId(i.rtt[e].id);if(t.stamp===i.rtt[e].stamp){this.pool.useObject(t);continue}}const o=this.pool.getOrCreateFreeObject();this.pool.useObject(o),this.pool.stampObject(o),i.rtt[e]={id:o.id,stamp:o.stamp},s.context.bindFramebuffer.set(o.fbo.framebuffer),s.context.clear({color:t.aT.transparent,stencil:0}),s.currentStencilSource=void 0;for(let t=0;t<a.length;t++){const e=s.style._layers[a[t]],r=e.source?this._coordsDescendingInv[e.source][i.tileID.key]:[i.tileID];s.context.viewport.set([0,0,o.fbo.width,o.fbo.height]),s._renderTileClippingMasks(e,r),s.renderLayer(s,s.style.sourceCaches[e.source],e,r),e.source&&(i.rttCoords[e.source]=this._coordsDescendingInvStr[e.source][i.tileID.key]);}}return es(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects(),pa[i]}return !1}}const fa=e,ga={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:void 0,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,maplibreLogo:!1,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileC
41acheSize:null,maxTileCacheZoomLevels:t.c.MAX_TILE_CACHE_ZOOM_LEVELS,localIdeographFontFamily:"sans-serif",transformRequest:null,transformCameraUpdate:null,fadeDuration:300,crossSourceCollisions:!0,validateStyle:!0,maxCanvasSize:[4096,4096]},va=t=>{t.touchstart=t.dragStart,t.touchmoveWindow=t.dragMove,t.touchend=t.dragEnd;},xa={showCompass:!0,showZoom:!0,visualizePitch:!1};class ya{constructor(e,s,a=!1){this.mousedown=e=>{this.startMouse(t.e({},e,{ctrlKey:!0,preventDefault:()=>e.preventDefault()}),i.mousePos(this.element,e)),i.addEventListener(window,"mousemove",this.mousemove),i.addEventListener(window,"mouseup",this.mouseup);},this.mousemove=t=>{this.moveMouse(t,i.mousePos(this.element,t));},this.mouseup=t=>{this.mouseRotate.dragEnd(t),this.mousePitch&&this.mousePitch.dragEnd(t),this.offTemp();},this.touchstart=t=>{1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=i.touchPos(this.element,t.targetTouches)[0],this.startTouch(t,this._startPos),i.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),i.addEventListener(window,"touchend",this.touchend));},this.touchmove=t=>{1!==t.targetTouches.length?this.reset():(this._lastPos=i.touchPos(this.element,t.targetTouches)[0],this.moveTouch(t,this._lastPos));},this.touchend=t=>{0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),delete this._startPos,delete this._lastPos,this.offTemp();},this.reset=()=>{this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp();},this._clickTolerance=10;const o=e.dragRotate._mouseRotate.getClickTolerance(),r=e.dragRotate._mousePitch.getClickTolerance();this.element=s,this.mouseRotate=As({clickTolerance:o,enable:!0}),this.touchRotate=(({enable:t,clickTolerance:e,bearingDegreesPerPixelMoved:i=.8})=>{const s=new zs;return new Ps({clickTolerance:e,move:(t,e)=>({bearingDelta:(e.x-t.x)*i}),moveStateManager:s,enable:t,assignEvents:va})})({clickTolerance:o,enable:!0}),this.map=e,a&&(this.mousePitch=Rs({clickTolerance:r,enable:!0}),this.touchPitch=(({enable:t,clickTolerance:e,pitchDegreesPerPixelMoved:i=-.5})=>{const s=new zs;return new Ps({clickTolerance:e,move:(t,e)=>({pitchDelta:(e.y-t.y)*i}),moveStateManager:s,enable:t,assignEvents:va})})({clickTolerance:r,enable:!0})),i.addEventListener(s,"mousedown",this.mousedown),i.addEventListener(s,"touchstart",this.touchstart,{passive:!1}),i.addEventListener(s,"touchcancel",this.reset);}startMouse(t,e){this.mouseRotate.dragStart(t,e),this.mousePitch&&this.mousePitch.dragStart(t,e),i.disableDrag();}startTouch(t,e){this.touchRotate.dragStart(t,e),this.touchPitch&&this.touchPitch.dragStart(t,e),i.disableDrag();}moveMouse(t,e){const i=this.map,{bearingDelta:s}=this.mouseRotate.dragMove(t,e)||{};if(s&&i.setBearing(i.getBearing()+s),this.mousePitch){const{pitchDelta:s}=this.mousePitch.dragMove(t,e)||{};s&&i.setPitch(i.getPitch()+s);}}moveTouch(t,e){const i=this.map,{bearingDelta:s}=this.touchRotate.dragMove(t,e)||{};if(s&&i.setBearing(i.getBearing()+s),this.touchPitch){const{pitchDelta:s}=this.touchPitch.dragMove(t,e)||{};s&&i.setPitch(i.getPitch()+s);}}off(){const t=this.element;i.removeEventListener(t,"mousedown",this.mousedown),i.removeEventListener(t,"touchstart",this.touchstart,{passive:!1}),i.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),i.removeEventListener(window,"touchend",this.touchend),i.removeEventListener(t,"touchcancel",this.reset),this.offTemp();}offTemp(){i.enableDrag(),i.removeEventListener(window,"mousemove",this.mousemove),i.removeEventListener(window,"mouseup",this.mouseup),i.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),i.removeEventListener(window,"touchend",this.touchend);}}let ba;function wa(e,i,s){if(e=new t.L(e.lng,e.lat),i){const a=new t.L(e.lng-360,e.lat),o=new t.L(e.lng+360,e.lat),r=s.locationPoint(e).distSqr(i);s.locationPoint(a).distSqr(i)<r?e=a:s.locationPoint(o).distSqr(i)<r&&(e=o);}for(;Math.abs(e.lng-s.center.lng)>180;){const t=s.locationPoint(e);if(t.x>=0&&t.y>=0&&t.x<=s.width&&t.y<=s.height)break;e.lng>s.center.lng?e.lng-=360:e.lng+=360;}return e}
41const Ta={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Ia(t,e,i){const s=t.classList;for(const t in Ta)s.remove(`maplibregl-${i}-anchor-${t}`);s.add(`maplibregl-${i}-anchor-${e}`);}class Ea extends t.E{constructor(e){if(super(),this._onKeyPress=t=>{const e=t.code,i=t.charCode||t.keyCode;"Space"!==e&&"Enter"!==e&&32!==i&&13!==i||this.togglePopup();},this._onMapClick=t=>{const e=t.originalEvent.target,i=this._element;this._popup&&(e===i||i.contains(e))&&this.togglePopup();},this._update=t=>{if(!this._map)return;const e=this._map.loaded()&&!this._map.isMoving();("terrain"===(null==t?void 0:t.type)||"render"===(null==t?void 0:t.type)&&!e)&&this._map.once("render",this._update),this._map.transform.renderWorldCopies&&(this._lngLat=wa(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);let s="";"viewport"===this._rotationAlignment||"auto"===this._rotationAlignment?s=`rotateZ(${this._rotation}deg)`:"map"===this._rotationAlignment&&(s=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let a="";"viewport"===this._pitchAlignment||"auto"===this._pitchAlignment?a="rotateX(0deg)":"map"===this._pitchAlignment&&(a=`rotateX(${this._map.getPitch()}deg)`),t&&"moveend"!==t.type||(this._pos=this._pos.round()),i.setTransform(this._element,`${Ta[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${a} ${s}`),this._map.terrain&&!this._opacityTimeout&&(this._opacityTimeout=setTimeout((()=>{const t=this._map.unproject(this._pos),e=40075016.686*Math.abs(Math.cos(this._lngLat.lat*Math.PI/180))/Math.pow(2,this._map.transform.tileZoom+8);this._element.style.opacity=t.distanceTo(this._lngLat)>20*e?"0.2":"1.0",this._opacityTimeout=null;}),100));},this._onMove=e=>{if(!this._isDragging){const t=this._clickTolerance||this._map._clickTolerance;this._isDragging=e.point.dist(this._pointerdownPos)>=t;}this._isDragging&&(this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none","pending"===this._state&&(this._state="active",this.fire(new t.k("dragstart"))),this.fire(new t.k("drag")));},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),"active"===this._state&&this.fire(new t.k("dragend")),this._state="inactive";},this._addDragHandler=t=>{this._element.contains(t.originalEvent.target)&&(t.preventDefault(),this._positionDelta=t.point.sub(this._pos).add(this._offset),this._pointerdownPos=t.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp));},this._anchor=e&&e.anchor||"center",this._color=e&&e.color||"#3FB1CE",this._scale=e&&e.scale||1,this._draggable=e&&e.draggable||!1,this._clickTolerance=e&&e.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=e&&e.rotation||0,this._rotationAlignment=e&&e.rotationAlignment||"auto",this._pitchAlignment=e&&e.pitchAlignment&&"auto"!==e.pitchAlignment?e.pitchAlignment:this._rotationAlignment,e&&e.element)this._element=e.element,this._offset=t.P.convert(e&&e.offset||[0,0]);else {this._defaultMarker=!0,this._element=i.create("div"),this._element.setAttribute("aria-label","Map marker");const s=i.createNS("http://www.w3.org/2000/svg","svg"),a=41,o=27;s.setAttributeNS(null,"display","block"),s.setAttributeNS(null,"height",`${a}px`),s.setAttributeNS(null,"width",`${o}px`),s.setAttributeNS(null,"viewBox",`0 0 ${o} ${a}`);const r=i.createNS("http://www.w3.org/2000/svg","g");r.setAttributeNS(null,"stroke","none"),r.setAttributeNS(null,"stroke-width","1"),r.setAttributeNS(null,"fill","none"),r.setAttributeNS(null,"fill-rule","evenodd");
vendor: 4,228 bytes, line 41
41const n=i.createNS("http://www.w3.org/2000/svg","g");n.setAttributeNS(null,"fill-rule","nonzero");const l=i.createNS("http://www.w3.org/2000/svg","g");l.setAttributeNS(null,"transform","translate(3.0, 29.0)"),l.setAttributeNS(null,"fill","#000000");const h=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(const t of h){const e=i.createNS("http://www.w3.org/2000/svg","ellipse");e.setAttributeNS(null,"opacity","0.04"),e.setAttributeNS(null,"cx","10.5"),e.setAttributeNS(null,"cy","5.80029008"),e.setAttributeNS(null,"rx",t.rx),e.setAttributeNS(null,"ry",t.ry),l.appendChild(e);}const c=i.createNS("http://www.w3.org/2000/svg","g");c.setAttributeNS(null,"fill",this._color);const u=i.createNS("http://www.w3.org/2000/svg","path");u.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),c.appendChild(u);const d=i.createNS("http://www.w3.org/2000/svg","g");d.setAttributeNS(null,"opacity","0.25"),d.setAttributeNS(null,"fill","#000000");const _=i.createNS("http://www.w3.org/2000/svg","path");_.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),d.appendChild(_);const p=i.createNS("http://www.w3.org/2000/svg","g");p.setAttributeNS(null,"transform","translate(6.0, 7.0)"),p.setAttributeNS(null,"fill","#FFFFFF");const m=i.createNS("http://www.w3.org/2000/svg","g");m.setAttributeNS(null,"transform","translate(8.0, 8.0)");const f=i.createNS("http://www.w3.org/2000/svg","circle");f.setAttributeNS(null,"fill","#000000"),f.setAttributeNS(null,"opacity","0.25"),f.setAttributeNS(null,"cx","5.5"),f.setAttributeNS(null,"cy","5.5"),f.setAttributeNS(null,"r","5.4999962");const g=i.createNS("http://www.w3.org/2000/svg","circle");g.setAttributeNS(null,"fill","#FFFFFF"),g.setAttributeNS(null,"cx","5.5"),g.setAttributeNS(null,"cy","5.5"),g.setAttributeNS(null,"r","5.4999962"),m.appendChild(f),m.appendChild(g),n.appendChild(l),n.appendChild(c),n.appendChild(d),n.appendChild(p),n.appendChild(m),s.appendChild(n),s.setAttributeNS(null,"height",a*this._scale+"px"),s.setAttributeNS(null,"width",o*this._scale+"px"),this._element.appendChild(s),this._offset=t.P.convert(e&&e.offset||[0,-14]);}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",(t=>{t.preventDefault();})),this._element.addEventListener("mousedown",(t=>{t.preventDefault();})),Ia(this._element,this._anchor,"marker"),e&&e.className)for(const t of e.className.split(" "))this._element.classList.add(t);this._popup=null;}addTo(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on("move",this._update),t.on("moveend",this._update),t.on("terrain",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),i.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}
41setLngLat(e){return this._lngLat=t.L.convert(e),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),t){if(!("offset"in t.options)){const e=38.1,i=13.5,s=Math.abs(i)/Math.SQRT2;t.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-e],"bottom-left":[s,-1*(e-i+s)],"bottom-right":[-s,-1*(e-i+s)],left:[i,-1*(e-i)],right:[-i,-1*(e-i)]}:this._offset;}this._popup=t,this._lngLat&&this._popup.setLngLat(this._lngLat),this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress);}return this}getPopup(){return this._popup}togglePopup(){const t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this}getOffset(){return this._offset}setOffset(e){return this._offset=t.P.convert(e),this._update(),this}addClassName(t){this._element.classList.add(t);}removeClassName(t){this._element.classList.remove(t);}toggleClassName(t){return this._element.classList.toggle(t)}setDraggable(t){return this._draggable=!!t,this._map&&(t?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(t){return this._rotation=t||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(t){return this._rotationAlignment=t||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(t){return this._pitchAlignment=t&&"auto"!==t?t:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}const Sa={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let Ca=0,Pa=!1;const Da={maxWidth:100,unit:"metric"};function Ma(t,e,i){const s=i&&i.maxWidth||100,a=t._container.clientHeight/2,o=t.unproject([0,a]),r=t.unproject([s,a]),n=o.distanceTo(r);if(i&&"imperial"===i.unit){const i=3.2808*n;i>5280?za(e,s,i/5280,t._getUIString("ScaleControl.Miles")):za(e,s,i,t._getUIString("ScaleControl.Feet"));}else i&&"nautical"===i.unit?za(e,s,n/1852,t._getUIString("ScaleControl.NauticalMiles")):n>=1e3?za(e,s,n/1e3,t._getUIString("ScaleControl.Kilometers")):za(e,s,n,t._getUIString("ScaleControl.Meters"));}function za(t,e,i,s){const a=function(t){const e=Math.pow(10,`${Math.floor(t)}`.length-1);let i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(t){const e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(i),e*i}(i);t.style.width=e*(a/i)+"px",t.innerHTML=`${a} ${s}`;}const La={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},Aa=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function Ra(e){if(e){if("number"==typeof e){const i=Math.round(Math.abs(e)/Math.SQRT2);return {center:new t.P(0,0),top:new t.P(0,e),"top-left":new t.P(i,i),"top-right":new t.P(-i,i),bottom:new t.P(0,-e),"bottom-left":new t.P(i,-i),"bottom-right":new t.P(-i,-i),left:new t.P(e,0),right:new t.P(-e,0)}}if(e instanceof t.P||Array.isArray(e)){const i=t.P.convert(e);return {center:i,top:i,"top-left":i,"top-right":i,bottom:i,"bottom-left":i,"bottom-right":i,left:i,right:i}}return {center:t.P.convert(e.center||[0,0]),top:t.P.convert(e.top||[0,0]),"top-left":t.P.convert(e["top-left"]||[0,0]),"top-right":t.P.convert(e["top-right"]||[0,0]),bottom:t.P.convert(e.bottom||[0,0]),"bottom-left":t.P.convert(e["bottom-left"]||[0,0]),"bottom-right":t.P.convert(e["bottom-right"]||[0,0]),left:t.P.convert(e.left||[0,0]),right:t.P.convert(e.right||[0,0])}}return Ra(new t.P(0,0))}const ka={extend:(e,...i)=>t.e(e,...i),run(t){t();},logToElement(t,e=!1,i="log"){const s=window.document.getElementById(i);s&&(e&&(s.innerHTML=""),s.innerHTML+=`<br>${t}`);}},Fa=e;class Ba{static get version(){return Fa}static get workerCount(){return tt.workerCount}static set workerCount(t){tt.workerCount=t;}static get maxParallelImageRequests(){return t.c.MAX_PARALLEL_IMAGE_REQUESTS}static set maxParallelImageRequests(e){t.c.MAX_PARALLEL_IMAGE_REQUESTS=e;}static get workerUrl(){return t.c.WORKER_URL}static set workerUrl(e){t.c.WORKER_URL=e;}static addProtocol(e,i){t.c.REGISTERED_PROTOCOLS[e]=i;}static removeProtocol(e){delete t.c.REGISTERED_PROTOCOLS[e];}}return Ba.Map=class extends oa{constructor(e){if(t.bg.mark(t.bh.create),null!=(e=t.e({}
41,ga,e)).minZoom&&null!=e.maxZoom&&e.minZoom>e.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=e.minPitch&&e.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=e.maxPitch&&e.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new rs(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies),{bearingSnap:e.bearingSnap}),this._cooperativeGesturesOnWheel=t=>{this._onCooperativeGesture(t,t[this._metaKey],1);},this._contextLost=e=>{e.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new t.k("webglcontextlost",{originalEvent:e}));},this._contextRestored=e=>{this._setupPainter(),this.resize(),this._update(),this.fire(new t.k("webglcontextrestored",{originalEvent:e}));},this._onMapScroll=t=>{if(t.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update();},this._interactive=e.interactive,this._cooperativeGestures=e.cooperativeGestures,this._metaKey=0===navigator.platform.indexOf("Mac")?"metaKey":"ctrlKey",this._maxTileCacheSize=e.maxTileCacheSize,this._maxTileCacheZoomLevels=e.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new la,this._controls=[],this._mapId=t.a2(),this._locale=t.e({},ha,e.locale),this._clickTolerance=e.clickTolerance,this._overridePixelRatio=e.pixelRatio,this._maxCanvasSize=e.maxCanvasSize,this.transformCameraUpdate=e.transformCameraUpdate,this._imageQueueHandle=h.addThrottleControl((()=>this.isMoving())),this._requestManager=new u(e.transformRequest),"string"==typeof e.container){if(this._container=document.getElementById(e.container),!this._container)throw new Error(`Container '${e.container}' not found.`)}else {if(!(e.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=e.container;}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",(()=>this._update(!1))),this.on("moveend",(()=>this._update(!1))),this.on("zoom",(()=>this._update(!0))),this.on("terrain",(()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0);})),this.once("idle",(()=>{this._idleTriggered=!0;})),"undefined"!=typeof window){addEventListener("online",this._onWindowOnline,!1);let t=!1;const e=ns((t=>{this._trackResize&&!this._removed&&this.resize(t)._update();}),50);this._resizeObserver=new ResizeObserver((i=>{t?e(i):t=!0;})),this._resizeObserver.observe(this._container);}this.handlers=new aa(this,e),this._cooperativeGestures&&this._setupCooperativeGestures(),this._hash=e.hash&&new ls("string"==typeof e.hash&&e.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.e({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,this._validateStyle=e.validateStyle,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new ra({customAttribution:e.customAttribution})),e.maplibreLogo&&this.addControl(new na,e.logoPosition),this.on("style.load",(()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet);})),this.on("data",(e=>{this._update("style"===e.dataType),this.fire(new t.k(`${e.dataType}data`,e));})),this.on("dataloading",(e=>{this.fire(new t.k(`${e.dataType}dataloading`,e));})),this.on("dataabort",(e=>{this.fire(new t.k("sourcedataabort",e));}));}_getMapId(){return this._mapId}addControl(e,i){if(void 0===i&&(i=e.getDefaultPosition?e.getDefaultPosition():"top-right"),!e||!e.onAdd)return this.fire(new t.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const s=e.onAdd(this);this._controls.push(e);const a=this._controlPositions[i];return -1!==i.indexOf("bottom")?a.insertBefore(s,a.firstChild):a.appendChild(s),this}
vendor: 4,499 bytes, line 41
41removeControl(e){if(!e||!e.onRemove)return this.fire(new t.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const i=this._controls.indexOf(e);return i>-1&&this._controls.splice(i,1),e.onRemove(this),this}hasControl(t){return this._controls.indexOf(t)>-1}calculateCameraOptionsFromTo(t,e,i,s){return null==s&&this.terrain&&(s=this.terrain.getElevationForLngLatZoom(i,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(t,e,i,s)}resize(e){var i;const s=this._containerDimensions(),a=s[0],o=s[1],r=this._getClampedPixelRatio(a,o);if(this._resizeCanvas(a,o,r),this.painter.resize(a,o,r),this.painter.overLimit()){const t=this.painter.context.gl;this._maxCanvasSize=[t.drawingBufferWidth,t.drawingBufferHeight];const e=this._getClampedPixelRatio(a,o);this._resizeCanvas(a,o,e),this.painter.resize(a,o,e);}this.transform.resize(a,o),null===(i=this._requestedCameraState)||void 0===i||i.resize(a,o);const n=!this._moving;return n&&(this.stop(),this.fire(new t.k("movestart",e)).fire(new t.k("move",e))),this.fire(new t.k("resize",e)),n&&this.fire(new t.k("moveend",e)),this}_getClampedPixelRatio(t,e){const{0:i,1:s}=this._maxCanvasSize,a=this.getPixelRatio(),o=t*a,r=e*a;return Math.min(o>i?i/o:1,r>s?s/r:1)*a}getPixelRatio(){var t;return null!==(t=this._overridePixelRatio)&&void 0!==t?t:devicePixelRatio}setPixelRatio(t){this._overridePixelRatio=t,this.resize();}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(t){return this.transform.setMaxBounds(L.convert(t)),this._update()}setMinZoom(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t&&this.setZoom(t),this;throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(t){if((t=null==t?22:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(t){if((t=null==t?0:t)<0)throw new Error("minPitch must be greater than or equal to 0");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()<t&&this.setPitch(t),this;throw new Error("minPitch must be between 0 and the current maxPitch, inclusive")}getMinPitch(){return this.transform.minPitch}setMaxPitch(t){if((t=null==t?60:t)>85)throw new Error("maxPitch must be less than or equal to 85");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(t){return this.transform.renderWorldCopies=t,this._update()}getCooperativeGestures(){return this._cooperativeGestures}setCooperativeGestures(t){return this._cooperativeGestures=t,this._cooperativeGestures?this._setupCooperativeGestures():this._destroyCooperativeGestures(),this}project(e){return this.transform.locationPoint(t.L.convert(e),this.style&&this.terrain)}unproject(e){return this.transform.pointLocation(t.P.convert(e),this.terrain)}isMoving(){var t;return this._moving||(null===(t=this.handlers)||void 0===t?void 0:t.isMoving())}isZooming(){var t;return this._zooming||(null===(t=this.handlers)||void 0===t?void 0:t.isZooming())}isRotating(){var t;return this._rotating||(null===(t=this.handlers)||void 0===t?void 0:t.isRotating())}_createDelegatedListener(t,e,i){if("mouseenter"===t||"mouseover"===t){let s=!1;const a=a=>{const o=this.getLayer(e)?this.queryRenderedFeatures(a.point,{layers:[e]}):[];o.length?s||(s=!0,i.call(this,new gs(t,this,a.originalEvent,{features:o}))):s=!1;};return {layer:e,listener:i,delegates:{mousemove:a,mouseout:()=>{s=!1;}}}}if("mouseleave"===t||"mouseout"===t){let s=!1;const a=a=>{(this.getLayer(e)?this.queryRenderedFeatures(a.point,{layers:[e]}):[]).length?s=!0:s&&(s=!1,i.call(this,new gs(t,this,a.originalEvent)));},o=e=>{s&&(s=!1,i.call(this,new gs(t,this,e.originalEvent)));};return {layer:e,listener:i,delegates:{mousemove:a,mouseout:o}}}{const s=t=>{const s=this.getLayer(e)?this.queryRenderedFeatures(t.point,{layers:[e]}):[];s.length&&(t.features=s,i.call(this,t),delete t.features);};return {layer:e,listener:i,delegates:{[t]:s}}}}
41on(t,e,i){if(void 0===i)return super.on(t,e);const s=this._createDelegatedListener(t,e,i);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(s);for(const t in s.delegates)this.on(t,s.delegates[t]);return this}once(t,e,i){if(void 0===i)return super.once(t,e);const s=this._createDelegatedListener(t,e,i);for(const t in s.delegates)this.once(t,s.delegates[t]);return this}off(t,e,i){return void 0===i?super.off(t,e):(this._delegatedListeners&&this._delegatedListeners[t]&&(s=>{const a=this._delegatedListeners[t];for(let t=0;t<a.length;t++){const s=a[t];if(s.layer===e&&s.listener===i){for(const t in s.delegates)this.off(t,s.delegates[t]);return a.splice(t,1),this}}})(),this)}queryRenderedFeatures(e,i){if(!this.style)return [];let s;const a=e instanceof t.P||Array.isArray(e),o=a?e:[[0,0],[this.transform.width,this.transform.height]];if(i=i||(a?{}:e)||{},o instanceof t.P||"number"==typeof o[0])s=[t.P.convert(o)];else {const e=t.P.convert(o[0]),i=t.P.convert(o[1]);s=[e,new t.P(i.x,e.y),i,new t.P(e.x,i.y),e];}return this.style.queryRenderedFeatures(s,i,this.transform)}querySourceFeatures(t,e){return this.style.querySourceFeatures(t,e)}setStyle(e,i){return !1!==(i=t.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._val
vendor: 8,503 bytes, line 41
41idateStyle},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&e?(this._diffStyle(e,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._updateStyle(e,i))}setTransformRequest(t){return this._requestManager.setTransformRequest(t),this}_getUIString(t){const e=this._locale[t];if(null==e)throw new Error(`Missing UI string '${t}'`);return e}_updateStyle(t,e){if(e.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",(()=>this._updateStyle(t,e)));const i=this.style&&e.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!t)),t?(this.style=new se(this,e||{}),this.style.setEventedParent(this,{style:this.style}),"string"==typeof t?this.style.loadURL(t,e,i):this.style.loadJSON(t,e,i),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new se(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty());}_diffStyle(e,i){if("string"==typeof e){const s=this._requestManager.transformRequest(e,c.Style);t.f(s,((e,s)=>{e?this.fire(new t.j(e)):s&&this._updateDiff(s,i);}));}else "object"==typeof e&&this._updateDiff(e,i);}_updateDiff(e,i){try{this.style.setState(e,i)&&this._update(!0);}catch(s){t.w(`Unable to perform style diff: ${s.message||s.error||s}. Rebuilding the style from scratch.`),this._updateStyle(e,i);}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():t.w("There is no style added to the map.")}addSource(t,e){return this._lazyInitEmptyStyle(),this.style.addSource(t,e),this._update(!0)}isSourceLoaded(e){const i=this.style&&this.style.sourceCaches[e];if(void 0!==i)return i.loaded();this.fire(new t.j(new Error(`There is no source with ID '${e}'`)));}setTerrain(e){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),e){const i=this.style.sourceCaches[e.source];if(!i)throw new Error(`cannot load terrain, because there exists no source with ID: ${e.source}`);for(const i in this.style._layers){const s=this.style._layers[i];"hillshade"===s.type&&s.source===e.source&&t.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.");}this.terrain=new da(this.painter,i,e),this.painter.renderToTexture=new ma(this.painter,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=t=>{"style"===t.dataType?this.terrain.sourceCache.freeRtt():"source"===t.dataType&&t.tile&&(t.sourceId!==e.source||this._elevationFreeze||(this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(t.tile.tileID));},this.style.on("data",this._terrainDataCallback);}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0;return this.fire(new t.k("terrain",{terrain:e})),this}getTerrain(){var t,e;return null!==(e=null===(t=this.terrain)||void 0===t?void 0:t.options)&&void 0!==e?e:null}areTilesLoaded(){const t=this.style&&this.style.sourceCaches;for(const e in t){const i=t[e]._tiles;for(const t in i){const e=i[t];if("loaded"!==e.state&&"errored"!==e.state)return !1}}return !0}addSourceType(t,e,i){return this._lazyInitEmptyStyle(),this.style.addSourceType(t,e,i)}removeSource(t){return this.style.removeSource(t),this._update(!0)}getSource(t){return this.style.getSource(t)}addImage(e,i,s={}){const{pixelRatio:a=1,sdf:o=!1,stretchX:r,stretchY:n,content:l}=s;if(this._lazyInitEmptyStyle(),!(i instanceof HTMLImageElement||t.a(i))){if(void 0===i.width||void 0===i.height)return this.fire(new t.j(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{const{width:s,height:h,data:c}=i,u=i;return this.style.addImage(e,{data:new t.R({width:s,height:h},new Uint8Array(c)),pixelRatio:a,stretchX:r,stretchY:n,content:l,sdf:o,version:0,userImage:u}),u.onAdd&&u.onAdd(this,e),this}}{const{width:s,height:h,data:c}=t.h.getImageData(i);this.style.addImage(e,{data:new t.R({width:s,height:h},c),pixelRatio:a,stretchX:r,stretchY:n,content:l,sdf:o,version:0});}}updateImage(e,i){const s=this.style.getImage(e);if(!s)return this.fire(new t.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const a=i instanceof HTMLImageElement||t.a(i)?t.h.getImageData(i):i,{width:o,height:r,data:n}=a;if(void 0===o||void 0===r)return this.fire(new t.j(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(o!==s.data.width||r!==s.data.height)return this.fire(new t.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));const l=!(i instanceof HTMLImageElement||t.a(i));return s.data.replace(n,l),this.style.updateImage(e,s),this}getImage(t){return this.style.getImage(t)}hasImage(e){return e?!!this.style.getImage(e):(this.fire(new t.j(new Error("Missing required image id"))),!1)}removeImage(t){this.style.removeImage(t);}loadImage(t,e){h.getImage(this._requestManager.transformRequest(t,c.Image),e);}listImages(){return this.style.listImages()}addLayer(t,e){return this._lazyInitEmptyStyle(),this.style.addLayer(t,e),this._update(!0)}moveLayer(t,e){return this.style.moveLayer(t,e),this._update(!0)}removeLayer(t){return this.style.removeLayer(t),this._update(!0)}getLayer(t){return this.style.getLayer(t)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(t,e,i){return this.style.setLayerZoomRange(t,e,i),this._update(!0)}setFilter(t,e,i={}){return this.style.setFilter(t,e,i),this._update(!0)}getFilter(t){return this.style.getFilter(t)}setPaintProperty(t,e,i,s={}){return this.style.setPaintProperty(t,e,i,s),this._update(!0)}getPaintProperty(t,e){return this.style.getPaintProperty(t,e)}setLayoutProperty(t,e,i,s={}){return this.style.setLayoutProperty(t,e,i,s),this._update(!0)}getLayoutProperty(t,e){return this.style.getLayoutProperty(t,e)}setGlyphs(t,e={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(t,e),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(t,e,i={}){return this._lazyInitEmptyStyle(),this.style.addSprite(t,e,i,(t=>{t||this._update(!0);})),this}removeSprite(t){return this._lazyInitEmptyStyle(),this.style.removeSprite(t),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(t,e={}){return this._lazyInitEmptyStyle(),this.style.setSprite(t,e,(t=>{t||this._update(!0);})),this}setLight(t,e={}){return this._lazyInitEmptyStyle(),this.style.setLight(t,e),this._update(!0)}getLight(){return this.style.getLight()}setFeatureState(t,e){return this.style.setFeatureState(t,e),this._update()}removeFeatureState(t,e){return this.style.removeFeatureState(t,e),this._update()}getFeatureState(t){return this.style.getFeatureState(t)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let t=0,e=0;return this._container&&(t=this._container.clientWidth||400,e=this._container.clientHeight||300),[t,e]}_setupContainer(){const t=this._container;t.classList.add("maplibregl-map");const e=this._canvasContainer=i.create("div","maplibregl-canvas-container",t);this._interactive&&e.classList.add("maplibregl-interactive"),this._canvas=i.create("canvas","maplibregl-canvas",e),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex","0"),this._canvas.setAttribute("aria-label","Map"),this._canvas.setAttribute("role","regi
41on");const s=this._containerDimensions(),a=this._getClampedPixelRatio(s[0],s[1]);this._resizeCanvas(s[0],s[1],a);const o=this._controlContainer=i.create("div","maplibregl-control-container",t),r=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach((t=>{r[t]=i.create("div",`maplibregl-ctrl-${t} `,o);})),this._container.addEventListener("scroll",this._onMapScroll,!1);}_setupCooperativeGestures(){this._cooperativeGesturesScreen=i.create("div","maplibregl-cooperative-gesture-screen",this._container);let t="boolean"!=typeof this._cooperativeGestures&&this._cooperativeGestures.windowsHelpText?this._cooperativeGestures.windowsHelpText:"Use Ctrl + scroll to zoom the map";0===navigator.platform.indexOf("Mac")&&(t="boolean"!=typeof this._cooperativeGestures&&this._cooperativeGestures.macHelpText?this._cooperativeGestures.macHelpText:"Use â + scroll to zoom the map"),this._cooperativeGesturesScreen.innerHTML=`\n <div class="maplibregl-desktop-message">${t}</div>\n <div class="maplibregl-mobile-message">${"boolean"!=typeof this._cooperativeGestures&&this._cooperativeGestures.mobileHelpText?this._cooperativeGestures.mobileHelpText:"Use two fingers to move the map"}</div>\n `,this._cooperativeGesturesScreen.setAttribute("aria-hidden","true"),this._canvasContainer.addEventListener("wheel",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.add("maplibregl-cooperative-gestures");}_destroyCooperativeGestures(){i.remove(this._cooperativeGesturesScreen),this._canvasContainer.removeEventListener("wheel",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.remove("maplibregl-cooperative-gestures");}_resizeCanvas(t,e,i){this._canvas.width=Math.floor(i*t),this._canvas.height=Math.floor(i*e),this._canvas.style.width=`${t}px`,this._canvas.style.height=`${e}px`;}_setupPainter(){const t={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1};let e=null;this._canvas.addEventListener("webglcontextcreationerror",(i=>{e={requestedAttributes:t},i&&(e.statusMessage=i.statusMessage,e.type=i.type);}),{once:!0});const i=this._canvas.getContext("webgl2",t)||this._canvas.getContext("webgl",t);if(!i){const t="Failed to initialize WebGL";throw e?(e.message=t,new Error(JSON.stringify(e))):new Error(t)}this.painter=new is(i,this.transform),s.testSupport(i);}_onCooperativeGesture(t,e,i){return !e&&i<2&&(this._cooperativeGesturesScreen.classList.add("maplibregl-show"),setTimeout((()=>{this._cooperativeGesturesScreen.classList.remove("maplibregl-show");}),100)),!1}loaded(){return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(t){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(t){return this._update(),this._renderTaskQueue.add(t)}_cancelRenderFrame(t){this._renderTaskQueue.remove(t);}_render(e){const i=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(e),this._removed)return;let s=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const e=this.transform.zoom,a=t.h.now();this.style.zoomHistory.update(e,a);const o=new t.a8(e,{now:a,fadeDuration:i,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),r=o.crossFadingFactor();1===r&&r===this._crossFadingFactor||(s=!0,this._crossFadingFactor=r),this.style.update(o);}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,i,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:i,showPadding:this.showPadding}),this.fire(new t.k("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,t.bg.mark(t.bh.load),this.fire(new t.k("load"))),this.style&&(this.style.hasTransitions()||s)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();const a=this._sourcesDirty||this._styleDirty||this._placementDirty;return a||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new t.k("idle")),!this._loaded||this._fullyLoaded||a||(this._fullyLoaded=!0,t.bg.mark(t.bh.fullLoad)),this}redraw(){return this.style&&(this._frame&&(this._frame.cancel(),this._frame=null),this._render(0)),this}remove(){var e;this._hash&&this._hash.remove();for(const t of this._controls)t.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),"undefined"!=typeof window&&removeEventListener("online",this._onWindowOnline,!1),h.removeThrottleControl(this._imageQueueHandle),null===(e=this._resizeObserver)||void 0===e||e.disconnect();const s=this.painter.context.gl.getExtension("WEBGL_lose_context");s&&s.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),i.remove(this._canvasContainer),i.remove(this._controlContainer),this._cooperativeGestures&&this._destroyCooperativeGestures(),this._container.classList.remove("maplibregl-map"),t.bg.clearMetrics(),this._removed=!0,this.fire(new t.k("remove"));}triggerRepaint(){this.style&&!this._frame&&(this._frame=t.h.frame((e=>{t.bg.frame(e),this._frame=null,this._render(e);})));}get showTileBoundaries(){return !!this._showTileBoundaries}set showTileBoundaries(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update());}get showPadding(){return !!this._showPadding}set showPadding(t){this._showPadding!==t&&(this._showPadding=t,this._update());}get showCollisionBoxes(){return !!this._showCollisionBoxes}set showCollisionBoxes(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,t?this.style._generateCollisionBoxes():this._update());}get showOverdrawInspector(){return !!this._showOverdrawInspector}set showOverdrawInspector(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update());}get repaint(){return !!this._repaint}set repaint(t){this._repaint!==t&&(this._repaint=t,this.triggerRepaint());}get vertices(){return !!this._vertices}set vertices(t){this._vertices=t,this._update();}get version(){return fa}getCameraTargetElevation(){return this.transform.elevation}}
vendor: 6,750 bytes, line 41
41,Ba.NavigationControl=class{constructor(e){this._updateZoomButtons=()=>{const t=this._map.getZoom(),e=t===this._map.getMaxZoom(),i=t===this._map.getMinZoom();this._zoomInButton.disabled=e,this._zoomOutButton.disabled=i,this._zoomInButton.setAttribute("aria-disabled",e.toString()),this._zoomOutButton.setAttribute("aria-disabled",i.toString());},this._rotateCompassArrow=()=>{const t=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=t;},this._setButtonTitle=(t,e)=>{const i=this._map._getUIString(`NavigationControl.${e}`);t.title=i,t.setAttribute("aria-label",i);},this.options=t.e({},xa,e),this._container=i.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",(t=>t.preventDefault())),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",(t=>this._map.zoomIn({},{originalEvent:t}))),i.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",(t=>this._map.zoomOut({},{originalEvent:t}))),i.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",(t=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:t}):this._map.resetNorth({},{originalEvent:t});})),this._compassIcon=i.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"));}onAdd(t){return this._map=t,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new ya(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){i.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map;}_createButton(t,e){const s=i.create("button",t,this._container);return s.type="button",s.addEventListener("click",e),s}},Ba.GeolocateControl=class extends t.E{constructor(e){super(),this._onSuccess=e=>{if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.k("outofmaxbounds",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&"OFF"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new t.k("geolocate",e)),this._finish();}},this._updateCamera=e=>{const i=new t.L(e.coords.longitude,e.coords.latitude),s=e.coords.accuracy,a=this._map.getBearing(),o=t.e({bearing:a},this.options.fitBoundsOptions),r=L.fromLngLat(i,s);this._map.fitBounds(r,o,{geolocateSource:!0});},this._updateMarker=e=>{if(e){const i=new t.L(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove();},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();},this._onError=e=>{if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;const t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t),void 0!==this._geolocationWatchID&&this._clearWatch();}else {if(3===e.code&&Pa)return;this._setErrorState();}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new t.k("error",e)),this._finish();}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0;},this._setupUI=e=>{if(this._map){if(this._container.addEventListener("contextmenu",(t=>t.preventDefault())),this._geolocateButton=i.create("button","maplibregl-ctrl-geolocate",this._container),i.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",!1===e){t.w("Geolocation support is not available so the GeolocateControl will be disabled.");const e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e);}else {const t=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t);}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","fal
41se"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=i.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new Ea({element:this._dotElement}),this._circleElement=i.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Ea({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",(e=>{e.geolocateSource||"ACTIVE_LOCK"!==this._watchState||e.originalEvent&&"resize"===e.originalEvent.type||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new t.k("trackuserlocationend")));}));}},this.options=t.e({},Sa,e);}onAdd(t){return this._map=t,this._container=i.create("div","maplibregl-ctrl maplibregl-ctrl-group"),function(t,e=!1){void 0===ba||e?void 0!==window.navigator.permissions?window.navigator.permissions.query({name:"geolocation"}).then((e=>{ba="denied"!==e.state,t(ba);})).catch((()=>{ba=!!window.navigator.geolocation,t(ba);})):(ba=!!window.navigator.geolocation,t(ba)):t(ba);}(this._setupUI),this._container}onRemove(){void 0!==this._geolocationWatchID&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),i.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Ca=0,Pa=!1;}_isOutOfMapMaxBounds(t){const e=this._map.getMaxBounds(),i=t.coords;return e&&(i.longitude<e.getWest()||i.longitude>e.getEast()||i.latitude<e.getSouth()||i.latitude>e.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){const t=this._map.getBounds(),e=t.getSouthEast(),i=t.getNorthEast(),s=e.distanceTo(i),a=Math.ceil(this._accuracy/(s/this._map._container.clientHeight)*2);this._circleElement.style.width=`${a}px`,this._circleElement.style.height=`${a}px`;}trigger(){if(!this._setup)return t.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new t.k("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Ca--,Pa=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new t.k("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.k("trackuserlocationstart"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let t;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Ca++,Ca>1?(t={maximumAge:6e5,timeout:0},Pa=!0):(t=this.options.positionOptions,Pa=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,t);}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return !0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","fal
41se"),this.options.showUserLocation&&this._updateMarker(null);}},Ba.AttributionControl=ra,Ba.LogoControl=na,Ba.ScaleControl=class{constructor(e){this._onMove=()=>{Ma(this._map,this._container,this.options);},this.setUnit=t=>{this.options.unit=t,Ma(this._map,this._container,this.options);},this.options=t.e({},Da,e);}getDefaultPosition(){return "bottom-left"}onAdd(t){return this._map=t,this._container=i.create("div","maplibregl-ctrl maplibregl-ctrl-scale",t.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){i.remove(this._container),this._map.off("move",this._onMove),this._map=void 0;}},Ba.FullscreenControl=class extends t.E{constructor(e={}){super(),this._onFullscreenChange=()=>{(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._container!==this._fullscreen&&this._handleFullscreenChange();},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen();},this._fullscreen=!1,e&&e.container&&(e.container instanceof HTMLElement?this._container=e.container:t.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange");}onAdd(t){return this._map=t,this._container||(this._container=this._map.getContainer()),this._controlContainer=i.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){i.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange);}_setupUI(){const t=this._fullscreenButton=i.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);i.create("span","maplibregl-ctrl-icon",t).setAttribute("aria-hidden","true"),t.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange);}_updateTitle(){const t=this._getTitle();this._fullscreenButton.setAttribute("aria-label",t),this._fullscreenButton.title=t;}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new t.k("fullscreenstart")),this._map._cooperativeGestures&&(this._prevCooperativeGestures=this._map._cooperativeGestures,this._map.setCooperativeGestures())):(this.fire(new t.k("fullscreenend")),this._prevCooperativeGestures&&(this._map.setCooperativeGestures(this._prevCooperativeGestures),delete this._prevCooperativeGestures));}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen();}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen();}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize();}},Ba.TerrainControl=class{constructor(t){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon();},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.disableTerrain")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.enableTerrain"));},this.options=t;}onAdd(t){return this._map=t,this._container=i.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=i.create("button","maplibregl-ctrl-terrain",this._container),i.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.t
41ype="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){i.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0;}},Ba.Popup=class extends t.E{constructor(e){super(),this.remove=()=>(this._content&&i.remove(this._content),this._container&&(i.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new t.k("close")),this),this._onMouseUp=t=>{this._update(t.point);},this._onMouseMove=t=>{this._update(t.point);},this._onDrag=t=>{this._update(t.point);},this._update=t=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=i.create("div","maplibregl-popup",this._map.getContainer()),this._tip=i.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(const t of this.options.className.split(" "))this._container.classList.add(t);this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer");}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=wa(this._lngLat,this._pos,this._map.transform)),this._trackPointer&&!t)return;const e=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat);let s=this.options.anchor;const a=Ra(this.options.offset);if(!s){const t=this._container.offsetWidth,i=this._container.offsetHeight;let o;o=e.y+a.bottom.y<i?["top"]:e.y>this._map.transform.height-i?["bottom"]:[],e.x<t/2?o.push("left"):e.x>this._map.transform.width-t/2&&o.push("right"),s=0===o.length?"bottom":o.join("-");}const o=e.add(a[s]).round();i.setTransform(this._container,`${Ta[s]} translate(${o.x}px,${o.y}px)`),Ia(this._container,s,"popup");},this._onClose=()=>{this.remove();},this.options=t.e(Object.create(La),e);}addTo(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new t.k("open")),this}isOpen(){return !!this._map}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.L.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(t){return this.setDOMContent(document.createTextNode(t))}setHTML(t){const e=document.createDocumentFragment(),i=document.createElement("body");let s;for(i.innerHTML=t;s=i.firstChild,s;)e.appendChild(s);return this.setDOMContent(e)}getMaxWidth(){var t;return null===(t=this._container)||void 0===t?void 0:t.style.maxWidth}setMaxWidth(t){return this.options.maxWidth=t,this._update(),this}setDOMContent(t){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=i.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(t),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(t){this._container&&this._container.classList.add(t);}removeClassName(t){this._container&&this._container.classList.remove(t);}setOffset(t){return this.options.offset=t,this._update(),this}toggleClassName(t){if(this._container)return this._container.classList.toggle(t)}_createCloseButton(){this.options.closeButton&&(this._closeButton=i.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose));}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const t=this._container.querySelector(Aa);t&&t.focus();}},Ba.Marker=Ea,Ba.Style=se,Ba.LngLat=t.L,Ba.LngLatBounds=L,Ba.Point=t.P,Ba.MercatorCoordinate=t.U,Ba.Evented=t.
41E,Ba.AJAXError=t.bi,Ba.config=t.c,Ba.CanvasSource=Z,Ba.GeoJSONSource=B,Ba.ImageSource=N,Ba.RasterDEMTileSource=F,Ba.RasterTileSource=k,Ba.VectorTileSource=R,Ba.VideoSource=U,Ba.setRTLTextPlugin=t.bj,Ba.getRTLTextPluginStatus=t.bk,Ba.prewarm=function(){st().acquire(J);},Ba.clearPrewarmedResources=function(){const t=it;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(J),it=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"));},ka.extend(Ba,{isSafari:t.ac,getPerformanceMetrics:t.bg.getPerformanceMetrics}),Ba})); 42 43// 44// Our custom intro provides a specialized "define()" function, called by the 45// AMD modules below, that sets up the worker blob URL and then executes the 46// main module, storing its exported value as 'maplibregl' 47 48 49var maplibregl$1 = maplibregl; 50 51return maplibregl$1; 52 53})); 54//# sourceMappingURL=maplibre-gl.js.map 55(function (root, factory) { 56 if (typeof define === 'function' && define.amd) { 57 // AMD 58 define(['leaflet', 'maplibre-gl'], factory); 59 } else if (typeof exports === 'object') { 60 // Node, CommonJS-like 61 module.exports = factory(require('leaflet'), require('maplibre-gl')); 62 } else { 63 // Browser globals (root is window) 64 root.returnExports = factory(root.L, root.maplibregl); 65 } 66}(typeof globalThis !== 'undefined' ? globalThis : this || self, function (L, maplibregl) { 67 L.MaplibreGL = L.Layer.extend({ 68 options: { 69 updateInterval: 32, 70 // How much to extend the overlay view (relative to map size) 71 // e.g. 0.1 would be 10% of map view in each direction 72 padding: 0.1, 73 // whether or not to register the mouse and keyboard 74 // events on the maplibre overlay 75 interactive: false, 76 // set the tilepane as the default pane to draw gl tiles 77 pane: 'tilePane' 78 }, 79 80 initialize: function (options) { 81 L.setOptions(this, options); 82 83 // setup throttling the update event when panning 84 this._throttledUpdate = L.Util.throttle(this._update, this.options.updateInterval, this); 85 }, 86 87 onAdd: function (map) { 88 if (!this._container) { 89 this._initContainer(); 90 } 91 92 var paneName = this.getPaneName(); 93 map.getPane(paneName).appendChild(this._container); 94 95 this._initGL(); 96 97 this._offset = this._map.containerPointToLayerPoint([0, 0]); 98 99 // work around https://github.com/mapbox/mapbox-gl-leaflet/issues/47 100 if (map.options.zoomAnimation) { 101 L.DomEvent.on(map._proxy, L.DomUtil.TRANSITION_END, this._transitionEnd, this); 102 } 103 }, 104 105 onRemove: function (map) { 106 if (this._map._proxy && this._map.options.zoomAnimation) { 107 L.DomEvent.off(this._map._proxy, L.DomUtil.TRANSITION_END, this._transitionEnd, this); 108 } 109 var paneName = this.getPaneName(); 110 map.getPane(paneName).removeChild(this._container); 111 112 this._glMap.remove(); 113 this._glMap = null; 114 }, 115 116 getEvents: function () { 117 return { 118 move: this._throttledUpdate, // sensibly throttle updating while panning 119 zoomanim: this._animateZoom, // applys the zoom animation to the <canvas> 120 zoom: this._pinchZoom, // animate every zoom event for smoother pinch-zooming 121 zoomstart: this._zoomStart, // flag starting a zoom to disable panning 122 zoomend: this._zoomEnd, 123 resize: this._resize 124 }; 125 }, 126 127 getMaplibreMap: function () { 128 return this._glMap; 129 }, 130 131 getCanvas: function () { 132 return this._glMap.getCanvas(); 133 }, 134 135 getSize: function () { 136 return this._map.getSize().multiplyBy(1 + this.options.padding * 2); 137 }, 138 139 getBounds: function () {
140 var halfSize = this.getSize().multiplyBy(0.5); 141 var center = this._map.latLngToContainerPoint(this._map.getCenter()); 142 return L.latLngBounds( 143 this._map.containerPointToLatLng(center.subtract(halfSize)), 144 this._map.containerPointToLatLng(center.add(halfSize)) 145 ); 146 }, 147 148 getContainer: function () { 149 return this._container; 150 }, 151 152 // returns the pane name set in options if it is a valid pane, defaults to tilePane 153 getPaneName: function () { 154 return this._map.getPane(this.options.pane) ? this.options.pane : 'tilePane'; 155 }, 156 157 _roundPoint: function(p) { 158 return {x: Math.round(p.x), y: Math.round(p.y)}; 159 }, 160 161 _initContainer: function () { 162 var container = this._container = L.DomUtil.create('div', 'leaflet-gl-layer'); 163 164 var size = this.getSize(); 165 var offset = this._map.getSize().multiplyBy(this.options.padding); 166 container.style.width = size.x + 'px'; 167 container.style.height = size.y + 'px'; 168 169 var topLeft = this._map.containerPointToLayerPoint([0, 0]).subtract(offset); 170 171 L.DomUtil.setPosition(container, this._roundPoint(topLeft)); 172 }, 173 174 _initGL: function () { 175 var center = this._map.getCenter(); 176 177 var options = L.extend({}, this.options, { 178 container: this._container, 179 center: [center.lng, center.lat], 180 zoom: this._map.getZoom() - 1, 181 attributionControl: false 182 }); 183 184 this._glMap = new maplibregl.Map(options); 185 186 // allow GL base map to pan beyond min/max latitudes 187 this._glMap.transform.latRange = null; 188 this._glMap.transform.maxValidLatitude = Infinity; 189 190 this._transformGL(this._glMap); 191 192 if (this._glMap._canvas.canvas) { 193 // older versions of mapbox-gl surfaced the canvas differently 194 this._glMap._actualCanvas = this._glMap._canvas.canvas; 195 } else { 196 this._glMap._actualCanvas = this._glMap._canvas; 197 } 198 199 // treat child <canvas> element like L.ImageOverlay 200 var canvas = this._glMap._actualCanvas; 201 L.DomUtil.addClass(canvas, 'leaflet-image-layer'); 202 L.DomUtil.addClass(canvas, 'leaflet-zoom-animated'); 203 if (this.options.interactive) { 204 L.DomUtil.addClass(canvas, 'leaflet-interactive'); 205 } 206 if (this.options.className) { 207 L.DomUtil.addClass(canvas, this.options.className); 208 } 209 }, 210 211 _update: function (e) { 212 // update the offset so we can correct for it later when we zoom 213 this._offset = this._map.containerPointToLayerPoint([0, 0]); 214 215 if (this._zooming) { 216 return; 217 } 218 219 var size = this.getSize(), 220 container = this._container, 221 gl = this._glMap, 222 offset = this._map.getSize().multiplyBy(this.options.padding), 223 topLeft = this._map.containerPointToLayerPoint([0, 0]).subtract(offset); 224 225 L.DomUtil.setPosition(container, this._roundPoint(topLeft)); 226 227 this._transformGL(gl); 228 229 if (gl.transform.width !== size.x || gl.transform.height !== size.y) { 230 container.style.width = size.x + 'px'; 231 container.style.height = size.y + 'px'; 232 if (gl._resize !== null && gl._resize !== undefined){ 233 gl._resize(); 234 } else { 235 gl.resize(); 236 } 237 } else { 238 // older versions of mapbox-gl surfaced update publicly 239 if (gl._update !== null && gl._update !== undefined){ 240 gl._update(); 241 } else { 242 gl.update(); 243 } 244 } 245 }, 246 247 _transformGL: function (gl) { 248 var center = this._map.getCenter(); 249 250 // gl.setView([center.lat, center.lng], this._map.getZoom() - 1, 0);
251 // calling setView directly causes sync issues because it uses requestAnimFrame 252 253 var tr = gl.transform; 254 tr.center = maplibregl.LngLat.convert([center.lng, center.lat]); 255 tr.zoom = this._map.getZoom() - 1; 256 }, 257 258 // update the map constantly during a pinch zoom 259 _pinchZoom: function (e) { 260 this._glMap.jumpTo({ 261 zoom: this._map.getZoom() - 1, 262 center: this._map.getCenter() 263 }); 264 }, 265 266 // borrowed from L.ImageOverlay 267 // https://github.com/Leaflet/Leaflet/blob/master/src/layer/ImageOverlay.js#L139-L144 268 _animateZoom: function (e) { 269 var scale = this._map.getZoomScale(e.zoom); 270 var padding = this._map.getSize().multiplyBy(this.options.padding * scale); 271 var viewHalf = this.getSize()._divideBy(2); 272 // corrections for padding (scaled), adapted from 273 // https://github.com/Leaflet/Leaflet/blob/master/src/map/Map.js#L1490-L1508 274 var topLeft = this._map.project(e.center, e.zoom) 275 ._subtract(viewHalf) 276 ._add(this._map._getMapPanePos() 277 .add(padding))._round(); 278 var offset = this._map.project(this._map.getBounds().getNorthWest(), e.zoom) 279 ._subtract(topLeft); 280 281 L.DomUtil.setTransform( 282 this._glMap._actualCanvas, 283 offset.subtract(this._offset), 284 scale 285 ); 286 }, 287 288 _zoomStart: function (e) { 289 this._zooming = true; 290 }, 291 292 _zoomEnd: function () { 293 var scale = this._map.getZoomScale(this._map.getZoom()); 294 295 L.DomUtil.setTransform( 296 this._glMap._actualCanvas, 297 // https://github.com/mapbox/mapbox-gl-leaflet/pull/130 298 null, 299 scale 300 ); 301 302 this._zooming = false; 303 304 this._update(); 305 }, 306 307 _transitionEnd: function (e) { 308 L.Util.requestAnimFrame(function () { 309 var zoom = this._map.getZoom(); 310 var center = this._map.getCenter(); 311 var offset = this._map.latLngToContainerPoint( 312 this._map.getBounds().getNorthWest() 313 ); 314 315 // reset the scale and offset 316 L.DomUtil.setTransform(this._glMap._actualCanvas, offset, 1); 317 318 // enable panning once the gl map is ready again 319 this._glMap.once('moveend', L.Util.bind(function () { 320 this._zoomEnd(); 321 }, this)); 322 323 // update the map position 324 this._glMap.jumpTo({ 325 center: center, 326 zoom: zoom - 1 327 }); 328 }, this); 329 }, 330 331 _resize: function (e) { 332 this._transitionEnd(e); 333 } 334 }); 335 336 L.maplibreGL = function (options) { 337 return new L.MaplibreGL(options); 338 }; 339 340})); 341(function (root, factory) { 342 if (typeof define === 'function' && define.amd) { 343 // AMD. Register as an anonymous module. 344 define(['leaflet'], factory); 345 } else if (typeof modules === 'object' && module.exports) { 346 // define a Common JS module that relies on 'leaflet' 347 module.exports = factory(require('leaflet')); 348 } else { 349 // Assume Leaflet is loaded into global object L already 350 factory(L); 351 } 352}(this, function (L) { 353 'use strict'; 354 355 L.TileLayer.Provider = L.TileLayer.extend({ 356 initialize: function (arg, options) { 357 var providers = L.TileLayer.Provider.providers; 358 var parts = arg.split('.'); 359 360 var providerName = parts[0]; 361 var variantName = parts[1]; 362 363 if (!providers[providerName]) { 364 throw 'No such provider (' + providerName + ')'; 365 } 366 367 var provider = { 368 url: providers[providerName].url, 369 options: providers[providerName].options 370 }; 371 372 373 374 // overwrite values in provider from variant. 375 if (variantName && 'variants' in providers[providerName]) { 376 if (!(variantName in providers[providerName].variants)) { 377 throw 'No such variant of ' + providerName + ' (' + variantName + ')'; 378 } 379 var variant = providers[providerName].variants[variantName]; 380 var variantOptions; 381 if (typeof variant === 'string') { 382 variantOptions = { 383 variant: variant 384 }; 385 } else { 386 variantOptions = variant.options; 387 } 388 provider = { 389 url: variant.url || provider.url, 390 options: L.Util.extend({}, provider.options, variantOptions) 391 }; 392 } 393 394 // replace attribution placeholders with their values from toplevel provider attribution, 395 // recursively 396 var attributionReplacer = function (attr) { 397 if (attr.indexOf('{attribution.') === -1) { 398 return attr; 399 } 400 return attr.replace(/\{attribution.(\w*)\}/g, 401 function (match, attributionName) { 402 return attributionReplacer(providers[attributionName].options.attribution); 403 } 404 ); 405 }; 406 provider.options.attribution = attributionReplacer(provider.options.attribution); 407 408 // Compute final options combining provider options with any user overrides 409 var layerOpts = L.Util.extend({}, provider.options, options); 410 L.TileLayer.prototype.initialize.call(this, provider.url, layerOpts); 411 } 412 }); 413 414 /** 415 * Definition of providers. 416 * see http://leafletjs.com/reference.html#tilelayer for options in the options map. 417 */ 418 419 L.TileLayer.Provider.providers = { 420 OpenStreetMap: { 421 url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', 422 options: { 423 maxZoom: 19, 424 attribution: 425 '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' 426 }, 427 variants: { 428 Mapnik: {}, 429 DE: { 430 url: 'https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', 431 options: { 432 maxZoom: 18 433 } 434 }, 435 CH: { 436 url: 'https://tile.osm.ch/switzerland/{z}/{x}/{y}.png', 437 options: { 438 maxZoom: 18, 439 bounds: [[45, 5], [48, 11]] 440 } 441 }, 442 France: { 443 url: 'https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', 444 options: { 445 maxZoom: 20, 446 attribution: '© Openstreetmap France | {attribution.OpenStreetMap}' 447 } 448 }, 449 HOT: { 450 url: 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', 451 options: { 452 attribution: 453 '{attribution.OpenStreetMap}, ' + 454 'Tiles style by <a href="https://www.hotosm.org/" target="_blank">Humanitarian OpenStreetMap Team</a> ' + 455 'hosted by <a href="https://openstreetmap.fr/" target="_blank">OpenStreetMap France</a>' 456 } 457 }, 458 BZH: { 459 url: 'https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png', 460 options: { 461 attribution: '{attribution.OpenStreetMap}, Tiles courtesy of <a href="http://www.openstreetmap.bzh/" target="_blank">Breton OpenStreetMap Team</a>', 462 bounds: [[46.2, -5.5], [50, 0.7]] 463 } 464 } 465 } 466 }, 467 OpenSeaMap: { 468 url: 'https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png', 469 options: { 470 attribution: 'Map data: © <a href="http://www.openseamap.org">OpenSeaMap</a> contributors' 471 } 472 }, 473 OpenPtMap: { 474 url: 'http://openptmap.org/tiles/{z}/{x}/{y}.png', 475 options: { 476 maxZoom: 17, 477 attribution: 'Map data: © <a href="http://www.openptmap.org">OpenPtMap</a> contributors' 478 } 479 }, 480 OpenTopoMap: { 481 url: 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', 482 options: { 483 maxZoom: 17, 484 attribution: 'Map data: {attribution.OpenStreetMap}, <a href="http://viewfinderpanoramas.org">SRTM</a> | Map style: © <a href="https://opentopomap.org">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' 485 } 486 }, 487 OpenRailwayMap: { 488 url: 'https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png', 489 options: { 490 maxZoom: 19, 491 attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © <a href="https://www.OpenRailwayMap.org">OpenRailwayMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' 492 } 493 }, 494 OpenFireMap: { 495 url: 'http://openfiremap.org/hytiles/{z}/{x}/{y}.png', 496 options: { 497 maxZoom: 19, 498 attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © <a href="http://www.openfiremap.org">OpenFireMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' 499 } 500 }, 501 SafeCast: { 502 url: 'https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png', 503 options: { 504 maxZoom: 16, 505 attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © <a href="https://blog.safecast.org/about/">SafeCast</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' 506 } 507 }, 508 Thunderforest: { 509 url: 'https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}', 510 options: { 511 attribution: 512 '© <a href="http://www.thunderforest.com/">Thunderforest</a>, {attribution.OpenStreetMap}', 513 variant: 'cycle', 514 apikey: '<insert your api key here>', 515 maxZoom: 22 516 }, 517 variants: { 518 OpenCycleMap: 'cycle', 519 Transport: { 520 options: { 521 variant: 'transport' 522 } 523 }, 524 TransportDark: { 525 options: { 526 variant: 'transport-dark' 527 } 528 }, 529 SpinalMap: { 530 options: { 531 variant: 'spinal-map' 532 } 533 }, 534 Landscape: 'landscape', 535 Outdoors: 'outdoors',
vendor: 14,546 bytes, lines 536-1057
536 Pioneer: 'pioneer', 537 MobileAtlas: 'mobile-atlas', 538 Neighbourhood: 'neighbourhood' 539 } 540 }, 541 CyclOSM: { 542 url: 'https://dev.{s}.tile.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png', 543 options: { 544 maxZoom: 20, 545 attribution: '<a href="https://github.com/cyclosm/cyclosm-cartocss-style/releases" title="CyclOSM - Open Bicycle render">CyclOSM</a> | Map data: {attribution.OpenStreetMap}' 546 } 547 }, 548 OpenMapSurfer: { 549 url: 'https://maps.heigit.org/openmapsurfer/tiles/{variant}/webmercator/{z}/{x}/{y}.png', 550 options: { 551 maxZoom: 19, 552 variant: 'roads', 553 attribution: 'Imagery from <a href="http://giscience.uni-hd.de/">GIScience Research Group @ University of Heidelberg</a> | Map data ' 554 }, 555 variants: { 556 Roads: { 557 options: { 558 variant: 'roads', 559 attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' 560 } 561 }, 562 Hybrid: { 563 options: { 564 variant: 'hybrid', 565 attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' 566 } 567 }, 568 AdminBounds: { 569 options: { 570 variant: 'adminb', 571 maxZoom: 18, 572 attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' 573 } 574 }, 575 ContourLines: { 576 options: { 577 variant: 'asterc', 578 maxZoom: 18, 579 minZoom: 13, 580 attribution: '{attribution.OpenMapSurfer} <a href="https://lpdaac.usgs.gov/products/aster_policies">ASTER GDEM</a>' 581 } 582 }, 583 Hillshade: { 584 options: { 585 variant: 'asterh', 586 maxZoom: 18, 587 attribution: '{attribution.OpenMapSurfer} <a href="https://lpdaac.usgs.gov/products/aster_policies">ASTER GDEM</a>, <a href="http://srtm.csi.cgiar.org/">SRTM</a>' 588 } 589 }, 590 ElementsAtRisk: { 591 options: { 592 variant: 'elements_at_risk', 593 attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' 594 } 595 } 596 } 597 }, 598 Hydda: { 599 url: 'https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png', 600 options: { 601 maxZoom: 18, 602 variant: 'full', 603 attribution: 'Tiles courtesy of <a href="http://openstreetmap.se/" target="_blank">OpenStreetMap Sweden</a> — Map data {attribution.OpenStreetMap}' 604 }, 605 variants: { 606 Full: 'full', 607 Base: 'base', 608 RoadsAndLabels: 'roads_and_labels' 609 } 610 }, 611 MapBox: { 612 url: 'https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/{z}/{x}/{y}?access_token={accessToken}', 613 options: { 614 attribution: 615 '<a href="https://www.mapbox.com/about/maps/" target="_blank">© Mapbox</a> ' + 616 '{attribution.OpenStreetMap} ' + 617 '<a href="https://www.mapbox.com/map-feedback/" target="_blank">Improve this map</a>', 618 subdomains: 'abcd', 619 id: 'mapbox.streets', 620 accessToken: '<insert your access token here>', 621 maxZoom: 25, 622 tileSize: 512, 623 zoomOffset: -1, 624 } 625 }, 626 Stamen: { 627 url: 'https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}{r}.{ext}', 628 options: { 629 attribution: 630 'Map tiles by <a href="http://stamen.com">Stamen Design</a>, ' + 631 '<a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a> — ' + 632 'Map data {attribution.OpenStreetMap}', 633 subdomains: 'abcd', 634 minZoom: 0, 635 maxZoom: 20, 636 variant: 'toner', 637 ext: 'png' 638 }, 639 variants: { 640 Toner: 'toner', 641 TonerBackground: 'toner-background', 642 TonerHybrid: 'toner-hybrid', 643 TonerLines: 'toner-lines', 644 TonerLabels: 'toner-labels', 645 TonerLite: 'toner-lite', 646 Watercolor: { 647 url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', 648 options: { 649 variant: 'watercolor', 650 ext: 'jpg', 651 minZoom: 1, 652 maxZoom: 16 653 } 654 }, 655 Terrain: { 656 options: { 657 variant: 'terrain', 658 minZoom: 0, 659 maxZoom: 18 660 } 661 }, 662 TerrainBackground: { 663 options: { 664 variant: 'terrain-background', 665 minZoom: 0, 666 maxZoom: 18 667 } 668 }, 669 TerrainLabels: { 670 options: { 671 variant: 'terrain-labels', 672 minZoom: 0, 673 maxZoom: 18 674 } 675 }, 676 TopOSMRelief: { 677 url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', 678 options: { 679 variant: 'toposm-color-relief', 680 ext: 'jpg', 681 bounds: [[22, -132], [51, -56]] 682 } 683 }, 684 TopOSMFeatures: { 685 options: { 686 variant: 'toposm-features', 687 bounds: [[22, -132], [51, -56]], 688 opacity: 0.9 689 } 690 } 691 } 692 }, 693 TomTom: { 694 url: 'https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}', 695 options: { 696 variant: 'basic', 697 maxZoom: 22, 698 attribution: 699 '<a href="https://tomtom.com" target="_blank">© 1992 - ' + new Date().getFullYear() + ' TomTom.</a> ', 700 subdomains: 'abcd', 701 style: 'main', 702 ext: 'png', 703 apikey: '<insert your API key here>', 704 }, 705 variants: { 706 Basic: 'basic', 707 Hybrid: 'hybrid', 708 Labels: 'labels' 709 } 710 }, 711 Esri: { 712 url: 'https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}', 713 options: { 714 variant: 'World_Street_Map', 715 attribution: 'Tiles © Esri' 716 }, 717 variants: { 718 WorldStreetMap: { 719 options: { 720 attribution: 721 '{attribution.Esri} — ' + 722 'Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012' 723 } 724 }, 725 DeLorme: { 726 options: { 727 variant: 'Specialty/DeLorme_World_Base_Map', 728 minZoom: 1, 729 maxZoom: 11, 730 attribution: '{attribution.Esri} — Copyright: ©2012 DeLorme' 731 } 732 }, 733 WorldTopoMap: { 734 options: { 735 variant: 'World_Topo_Map', 736 attribution: 737 '{attribution.Esri} — ' + 738 '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' 739 } 740 }, 741 WorldImagery: { 742 options: { 743 variant: 'World_Imagery', 744 attribution: 745 '{attribution.Esri} — ' + 746 'Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' 747 } 748 }, 749 WorldTerrain: { 750 options: { 751 variant: 'World_Terrain_Base', 752 maxZoom: 13, 753 attribution: 754 '{attribution.Esri} — ' + 755 'Source: USGS, Esri, TANA, DeLorme, and NPS' 756 } 757 }, 758 WorldShadedRelief: { 759 options: { 760 variant: 'World_Shaded_Relief', 761 maxZoom: 13, 762 attribution: '{attribution.Esri} — Source: Esri' 763 } 764 }, 765 WorldPhysical: { 766 options: { 767 variant: 'World_Physical_Map', 768 maxZoom: 8, 769 attribution: '{attribution.Esri} — Source: US National Park Service' 770 } 771 }, 772 OceanBasemap: { 773 options: { 774 variant: 'Ocean_Basemap', 775 maxZoom: 13, 776 attribution: '{attribution.Esri} — Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri' 777 } 778 }, 779 NatGeoWorldMap: { 780 options: { 781 variant: 'NatGeo_World_Map', 782 maxZoom: 16, 783 attribution: '{attribution.Esri} — National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC' 784 } 785 }, 786 WorldGrayCanvas: { 787 options: { 788 variant: 'Canvas/World_Light_Gray_Base', 789 maxZoom: 16, 790 attribution: '{attribution.Esri} — Esri, DeLorme, NAVTEQ' 791 } 792 } 793 } 794 }, 795 OpenWeatherMap: { 796 url: 'http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}', 797 options: { 798 maxZoom: 19, 799 attribution: 'Map data © <a href="http://openweathermap.org">OpenWeatherMap</a>', 800 apiKey:'<insert your api key here>', 801 opacity: 0.5 802 }, 803 variants: { 804 Clouds: 'clouds', 805 CloudsClassic: 'clouds_cls', 806 Precipitation: 'precipitation', 807 PrecipitationClassic: 'precipitation_cls', 808 Rain: 'rain', 809 RainClassic: 'rain_cls', 810 Pressure: 'pressure', 811 PressureContour: 'pressure_cntr', 812 Wind: 'wind', 813 Temperature: 'temp', 814 Snow: 'snow' 815 } 816 }, 817 HERE: { 818 /* 819 * HERE maps, formerly Nokia maps. 820 * These basemaps are free, but you need an API key. Please sign up at 821 * https://developer.here.com/plans 822 */ 823 url: 824 'https://{s}.{base}.maps.api.here.com/maptile/2.1/' + 825 '{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' + 826 'app_id={app_id}&app_code={app_code}&lg={language}', 827 options: { 828 attribution: 829 'Map © 1987-' + new Date().getFullYear() + ' <a href="http://developer.here.com">HERE</a>', 830 subdomains: '1234', 831 mapID: 'newest', 832 'app_id': '<insert your app_id here>', 833 'app_code': '<insert your app_code here>', 834 base: 'base', 835 variant: 'normal.day', 836 maxZoom: 20, 837 type: 'maptile', 838 language: 'eng', 839 format: 'png8', 840 size: '256' 841 }, 842 variants: { 843 normalDay: 'normal.day', 844 normalDayCustom: 'normal.day.custom', 845 normalDayGrey: 'normal.day.grey', 846 normalDayMobile: 'normal.day.mobile', 847 normalDayGreyMobile: 'normal.day.grey.mobile', 848 normalDayTransit: 'normal.day.transit', 849 normalDayTransitMobile: 'normal.day.transit.mobile', 850 normalDayTraffic: { 851 options: { 852 variant: 'normal.traffic.day', 853 base: 'traffic', 854 type: 'traffictile' 855 } 856 }, 857 normalNight: 'normal.night', 858 normalNightMobile: 'normal.night.mobile', 859 normalNightGrey: 'normal.night.grey', 860 normalNightGreyMobile: 'normal.night.grey.mobile', 861 normalNightTransit: 'normal.night.transit', 862 normalNightTransitMobile: 'normal.night.transit.mobile', 863 reducedDay: 'reduced.day', 864 reducedNight: 'reduced.night', 865 basicMap: { 866 options: { 867 type: 'basetile' 868 } 869 }, 870 mapLabels: { 871 options: { 872 type: 'labeltile', 873 format: 'png' 874 } 875 }, 876 trafficFlow: { 877 options: { 878 base: 'traffic', 879 type: 'flowtile' 880 } 881 }, 882 carnavDayGrey: 'carnav.day.grey', 883 hybridDay: { 884 options: { 885 base: 'aerial', 886 variant: 'hybrid.day' 887 } 888 }, 889 hybridDayMobile: { 890 options: { 891 base: 'aerial', 892 variant: 'hybrid.day.mobile' 893 } 894 }, 895 hybridDayTransit: { 896 options: { 897 base: 'aerial', 898 variant: 'hybrid.day.transit' 899 } 900 }, 901 hybridDayGrey: { 902 options: { 903 base: 'aerial', 904 variant: 'hybrid.grey.day' 905 } 906 }, 907 hybridDayTraffic: { 908 options: { 909 variant: 'hybrid.traffic.day', 910 base: 'traffic', 911 type: 'traffictile' 912 } 913 }, 914 pedestrianDay: 'pedestrian.day', 915 pedestrianNight: 'pedestrian.night', 916 satelliteDay: { 917 options: { 918 base: 'aerial', 919 variant: 'satellite.day' 920 } 921 }, 922 terrainDay: { 923 options: { 924 base: 'aerial', 925 variant: 'terrain.day' 926 } 927 }, 928 terrainDayMobile: { 929 options: { 930 base: 'aerial', 931 variant: 'terrain.day.mobile' 932 } 933 } 934 } 935 }, 936 FreeMapSK: { 937 url: 'http://t{s}.freemap.sk/T/{z}/{x}/{y}.jpeg', 938 options: { 939 minZoom: 8, 940 maxZoom: 16, 941 subdomains: '1234', 942 bounds: [[47.204642, 15.996093], [49.830896, 22.576904]], 943 attribution: 944 '{attribution.OpenStreetMap}, vizualization CC-By-SA 2.0 <a href="http://freemap.sk">Freemap.sk</a>' 945 } 946 }, 947 MtbMap: { 948 url: 'http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png', 949 options: { 950 attribution: 951 '{attribution.OpenStreetMap} & USGS' 952 } 953 }, 954 CartoDB: { 955 url: 'https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png?key={apiKey}', 956 options: { 957 attribution: '{attribution.OpenStreetMap} © <a href="https://carto.com/attributions">CARTO</a>', 958 subdomains: 'abcd', 959 maxZoom: 19, 960 variant: 'light_all' 961 }, 962 variants: { 963 Positron: 'light_all', 964 PositronNoLabels: 'light_nolabels', 965 PositronOnlyLabels: 'light_only_labels', 966 DarkMatter: 'dark_all', 967 DarkMatterNoLabels: 'dark_nolabels', 968 DarkMatterOnlyLabels: 'dark_only_labels', 969 Voyager: 'rastertiles/voyager', 970 VoyagerNoLabels: 'rastertiles/voyager_nolabels', 971 VoyagerOnlyLabels: 'rastertiles/voyager_only_labels', 972 VoyagerLabelsUnder: 'rastertiles/voyager_labels_under' 973 } 974 }, 975 HikeBike: { 976 url: 'https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png', 977 options: { 978 maxZoom: 19, 979 attribution: '{attribution.OpenStreetMap}', 980 variant: 'hikebike' 981 }, 982 variants: { 983 HikeBike: {}, 984 HillShading: { 985 options: { 986 maxZoom: 15, 987 variant: 'hillshading' 988 } 989 } 990 } 991 }, 992 BasemapAT: { 993 url: 'https://maps{s}.wien.gv.at/basemap/{variant}/normal/google3857/{z}/{y}/{x}.{format}', 994 options: { 995 maxZoom: 19, 996 attribution: 'Datenquelle: <a href="https://www.basemap.at">basemap.at</a>', 997 subdomains: ['', '1', '2', '3', '4'], 998 format: 'png', 999 bounds: [[46.358770, 8.782379], [49.037872, 17.189532]], 1000 variant: 'geolandbasemap' 1001 }, 1002 variants: { 1003 basemap: { 1004 options: { 1005 maxZoom: 20, // currently only in Vienna 1006 variant: 'geolandbasemap' 1007 } 1008 }, 1009 grau: 'bmapgrau', 1010 overlay: 'bmapoverlay', 1011 highdpi: { 1012 options: { 1013 variant: 'bmaphidpi', 1014 format: 'jpeg' 1015 } 1016 }, 1017 orthofoto: { 1018 options: { 1019 maxZoom: 20, // currently only in Vienna 1020 variant: 'bmaporthofoto30cm', 1021 format: 'jpeg' 1022 } 1023 } 1024 } 1025 }, 1026 nlmaps: { 1027 url: 'https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png', 1028 options: { 1029 minZoom: 6, 1030 maxZoom: 19, 1031 bounds: [[50.5, 3.25], [54, 7.6]], 1032 attribution: 'Kaartgegevens © <a href="kadaster.nl">Kadaster</a>' 1033 }, 1034 variants: { 1035 'standaard': 'brtachtergrondkaart', 1036 'pastel': 'brtachtergrondkaartpastel', 1037 'grijs': 'brtachtergrondkaartgrijs', 1038 'luchtfoto': { 1039 'url': 'https://geodata.nationaalgeoregister.nl/luchtfoto/rgb/wmts/1.0.0/2016_ortho25/EPSG:3857/{z}/{x}/{y}.png', 1040 } 1041 } 1042 }, 1043 NASAGIBS: { 1044 url: 'https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}', 1045 options: { 1046 attribution: 1047 'Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System ' + 1048 '(<a href="https://earthdata.nasa.gov">ESDIS</a>) with funding provided by NASA/HQ.', 1049 bounds: [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], 1050 minZoom: 1, 1051 maxZoom: 9, 1052 format: 'jpg', 1053 time: '', 1054 tilematrixset: 'GoogleMapsCompatible_Level' 1055 }, 1056 variants: { 1057 ModisTerraTrueColorCR: 'MODIS_Terra_CorrectedReflectance_True
1057Color', 1058 ModisTerraBands367CR: 'MODIS_Terra_CorrectedReflectance_Bands367', 1059 ViirsEarthAtNight2012: { 1060 options: { 1061 variant: 'VIIRS_CityLights_2012', 1062 maxZoom: 8 1063 } 1064 }, 1065 ModisTerraLSTDay: { 1066 options: { 1067 variant: 'MODIS_Terra_Land_Surface_Temp_Day', 1068 format: 'png', 1069 maxZoom: 7, 1070 opacity: 0.75 1071 } 1072 }, 1073 ModisTerraSnowCover: { 1074 options: { 1075 variant: 'MODIS_Terra_Snow_Cover', 1076 format: 'png', 1077 maxZoom: 8, 1078 opacity: 0.75 1079 } 1080 }, 1081 ModisTerraAOD: { 1082 options: { 1083 variant: 'MODIS_Terra_Aerosol', 1084 format: 'png', 1085 maxZoom: 6, 1086 opacity: 0.75 1087 } 1088 }, 1089 ModisTerraChlorophyll: { 1090 options: { 1091 variant: 'MODIS_Terra_Chlorophyll_A', 1092 format: 'png', 1093 maxZoom: 7, 1094 opacity: 0.75 1095 } 1096 } 1097 } 1098 }, 1099 NLS: { 1100 // NLS maps are copyright National library of Scotland. 1101 // http://maps.nls.uk/projects/api/index.html 1102 // Please contact NLS for anything other than non-commercial low volume usage 1103 // 1104 // Map sources: Ordnance Survey 1:1m to 1:63K, 1920s-1940s 1105 // z0-9 - 1:1m 1106 // z10-11 - quarter inch (1:253440) 1107 // z12-18 - one inch (1:63360) 1108 url: 'https://nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg', 1109 options: { 1110 attribution: '<a href="http://geo.nls.uk/maps/">National Library of Scotland Historic Maps</a>', 1111 bounds: [[49.6, -12], [61.7, 3]], 1112 minZoom: 1, 1113 maxZoom: 18, 1114 subdomains: '0123', 1115 } 1116 }, 1117 JusticeMap: { 1118 // Justice Map (http://www.justicemap.org/) 1119 // Visualize race and income data for your community, county and country. 1120 // Includes tools for data journalists, bloggers and community activists. 1121 url: 'http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png', 1122 options: { 1123 attribution: '<a href="http://www.justicemap.org/terms.php">Justice Map</a>', 1124 // one of 'county', 'tract', 'block' 1125 size: 'county', 1126 // Bounds for USA, including Alaska and Hawaii 1127 bounds: [[14, -180], [72, -56]] 1128 }, 1129 variants: { 1130 income: 'income', 1131 americanIndian: 'indian', 1132 asian: 'asian', 1133 black: 'black', 1134 hispanic: 'hispanic', 1135 multi: 'multi', 1136 nonWhite: 'nonwhite', 1137 white: 'white', 1138 plurality: 'plural' 1139 } 1140 }, 1141 Wikimedia: { 1142 url: 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}{r}.png', 1143 options: { 1144 attribution: '<a href="https://wikimediafoundation.org/wiki/Maps_Terms_of_Use">Wikimedia</a>', 1145 minZoom: 1, 1146 maxZoom: 19 1147 } 1148 }, 1149 GeoportailFrance: { 1150 url: 'https://wxs.ign.fr/{apikey}
1150/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}', 1151 options: { 1152 attribution: '<a target="_blank" href="https://www.geoportail.gouv.fr/">Geoportail France</a>', 1153 bounds: [[-75, -180], [81, 180]], 1154 minZoom: 2, 1155 maxZoom: 18, 1156 // Get your own geoportail apikey here : http://professionnels.ign.fr/ign/contrats/ 1157 // NB : 'choisirgeoportail' is a demonstration key that comes with no guarantee 1158 apikey: 'choisirgeoportail', 1159 format: 'image/jpeg', 1160 style : 'normal', 1161 variant: 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD' 1162 }, 1163 variants: { 1164 parcels: { 1165 options : { 1166 variant: 'CADASTRALPARCELS.PARCELS', 1167 maxZoom: 20, 1168 style : 'bdparcellaire', 1169 format: 'image/png' 1170 } 1171 }, 1172 ignMaps: 'GEOGRAPHICALGRIDSYSTEMS.MAPS', 1173 maps: 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD', 1174 orthos: { 1175 options: { 1176 maxZoom: 19, 1177 variant: 'ORTHOIMAGERY.ORTHOPHOTOS' 1178 } 1179 } 1180 } 1181 }, 1182 OneMapSG: { 1183 url: 'https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png', 1184 options: { 1185 variant: 'Default', 1186 minZoom: 11, 1187 maxZoom: 18, 1188 bounds: [[1.56073, 104.11475], [1.16, 103.502]], 1189 attribution: '<img src="https://docs.onemap.sg/maps/images/oneMap64-01.png" style="height:20px;width:20px;"/> New OneMap | Map data © contributors, <a href="http://SLA.gov.sg">Singapore Land Authority</a>' 1190 }, 1191 variants: { 1192 Default: 'Default', 1193 Night: 'Night', 1194 Original: 'Original', 1195 Grey: 'Grey', 1196 LandLot: 'LandLot' 1197 } 1198 } 1199 }; 1200 1201 L.tileLayer.provider = function (provider, options) { 1202 return new L.TileLayer.Provider(provider, options); 1203 }; 1204 1205 return L; 1206})); 1207 1208(function ($) { 1209 1210 class GeoJsonAutocomplete { 1211 constructor(inputElement, options = {}) { 1212 this.inputElement = inputElement; 1213 this.settings = Object.assign({ 1214 geojsonServiceAddress: "https://nominatim.openstreetmap.org/search", 1215 placeholderMessage: "Search...", 1216 foundRecordsMessage: "showing results.", 1217 limit: 10, 1218 notFoundMessage: "not found.", 1219 notFoundHint: "Make sure your search criteria is correct and try again.", 1220 drawColor: "blue", 1221 pointGeometryZoomLevel: -1, 1222 pagingActive: true, 1223 map_obj: null, 1224 onSelect: null, // this is the callback 1225 }, options); 1226 1227 this.activeResult = -1; 1228 this.resultCount = 0; 1229 this.lastSearch = ""; 1230 this.searchLayer = null; 1231 this.focusLayer = null; 1232 this.searchLayerType = 0; 1233 this.features = []; 1234 this.featureCollection = []; 1235 this.offset = 0; 1236 this.collapseOnBlur = true; 1237 1238 this._init(); 1239 } 1240 1241 _init() { 1242 const $input = $(this.inputElement); 1243 $input.parent().addClass("searchContainer wpgmp-autocomplete-wrapper"); 1244 $input.val(""); 1245 1246 $input.on("keyup", this._debounce((e) => this._handleKeyUp(e), 300)); 1247 $input.on("focus", () => this._showResults()); 1248 $input.on("blur", (e) => this._handleBlur(e)); 1249 } 1250 1251 _handleKeyUp(event) { 1252 const target = $(event.target); 1253 const keyCode = event.keyCode; 1254 1255 switch (keyCode) { 1256 case 13: 1257 this._search(target); 1258 break; 1259 case 38: 1260 this._prevResult(target); 1261 break; 1262 case 40: 1263 this._nextResult(target); 1264 break; 1265 case 37: 1266 case 39: 1267 break; 1268 default: 1269 if (target.val().length > 0) { 1270 this.offset = 0; 1271 this._fetchResults(false, target); 1272 } else { 1273 this._clearResults(target); 1274 } 1275 break; 1276 } 1277 } 1278 1279 _fetchResults(withPaging, target) { 1280 this.activeResult = -1; 1281 this.features = []; 1282 this.featureCollection = []; 1283 this.lastSearch = target.val(); 1284 1285 const query = { 1286 q: this.lastSearch, 1287 limit: this.settings.limit + (withPaging ? 1 : 0), 1288 format: "json", 1289 addressdetails: 1, 1290 }; 1291 1292 if (this.settings.pagingActive) query.offset = this.offset; 1293 1294 $.getJSON(this.settings.geojsonServiceAddress, query) 1295 .done((json) => { 1296 this.resultCount = json.length; 1297 this.features = json; 1298 this.featureCollection = withPaging ? json.slice(0, json.length - 1) : json; 1299 this._renderDropdown(withPaging, target); 1300 }) 1301 .fail(() => this._handleNoResults(target)); 1302 } 1303 1304 _renderDropdown(withPaging, target) { 1305 const $parent = $(target).parent(); 1306 $parent.find(".resultsDiv").remove(); 1307 1308 const $resultsDiv = $(` 1309 <div class='result resultsDiv'> 1310 <ul class='list resultList wpgmp-autosuggest-results'></ul> 1311 </div> 1312 `); 1313 $parent.append($resultsDiv); 1314 1315 const $list = $resultsDiv.find("ul"); 1316 1317 const loopCount = this.features.length - (withPaging ? 1 : 0); 1318 1319 for (let i = 0; i < loopCount; i++) { 1320 const feature = this.features[i]; 1321 const $item = $(` 1322 <li class='listResult listElement${i}' data-index='${i}'>
1323 <span class='content listElementContent${i}'> 1324 <strong>${feature.display_name}</strong><br/> 1325 <small>${feature.lat}, ${feature.lon}</small> 1326 </span> 1327 </li> 1328 `); 1329 $list.append($item); 1330 1331 $item.on("mouseenter", () => this._highlightItem(i, target)); 1332 $item.on("mouseleave", () => this._unhighlightItem(i, target)); 1333 $item.on("mousedown", () => this._selectItem(i, target)); 1334 } 1335 1336 // You can also add paging and styling logic here. 1337 } 1338 1339 _highlightItem(index, target) { 1340 $(target).parent().find(`.listElement${index}`).addClass("mouseover"); 1341 } 1342 1343 _unhighlightItem(index, target) { 1344 $(target).parent().find(`.listElement${index}`).removeClass("mouseover"); 1345 } 1346 1347 _selectItem(index, target) { 1348 this.activeResult = index; 1349 this._fillSearchBox(target); 1350 } 1351 1352 _showResults() { 1353 $(this.inputElement).parent().find(".wpgmp-autosuggest-results").show(); 1354 } 1355 1356 _handleBlur(e) { 1357 const input = e.target; 1358 const resultsDiv = $(input).closest('.searchContainer').find('.resultsDiv'); 1359 1360 setTimeout(() => { 1361 // Only hide if mouse is NOT on the results dropdown 1362 if (this.collapseOnBlur && !resultsDiv.is(':hover')) { 1363 resultsDiv.find('.wpgmp-autosuggest-results').hide(); 1364 } else { 1365 this.collapseOnBlur = true; 1366 $(input).focus(); // optional: re-focus if needed 1367 } 1368 }, 150); 1369 } 1370 1371 1372 _clearResults(target) { 1373 this.activeResult = -1; 1374 this.features = []; 1375 this.lastSearch = ""; 1376 $(target).parent().find(".resultsDiv").remove(); 1377 } 1378 1379 _handleNoResults(target) { 1380 this._clearResults(target); 1381 $(target).parent().append(`<div class='resultsDiv'><i>${this.lastSearch} ${this.settings.notFoundMessage}</i><p><small>${this.settings.notFoundHint}</small></p></div>`); 1382 } 1383 1384 _search(target) { 1385 this._fetchResults(this.settings.pagingActive, target); 1386 } 1387 1388 _prevResult(target) { 1389 if (this.resultCount <= 0) return; 1390 if (this.activeResult > 0) this.activeResult--; 1391 this._fillSearchBox(target); 1392 } 1393 1394 _nextResult(target) { 1395 if (this.resultCount <= 0) return; 1396 if (this.activeResult < this.resultCount - 1) this.activeResult++; 1397 this._fillSearchBox(target); 1398 } 1399 1400 _fillSearchBox(target) { 1401 const feature = this.features[this.activeResult]; 1402 if (!feature) return; 1403 1404 if (this.settings && typeof this.settings.onSelect === 'function') { 1405 this.settings.onSelect({ 1406 target, // input element 1407 feature, // selected GeoJSON result 1408 }); 1409 } 1410 1411 1412 } 1413 1414 _debounce(fn, delay) { 1415 let timer = null; 1416 return function (...args) { 1417 clearTimeout(timer); 1418 timer = setTimeout(() => fn.apply(this, args), delay); 1419 }; 1420 } 1421 } 1422 1423 1424 $.fn.GeoJsonAutocomplete = function (userOptions) { 1425 return this.each(function () { 1426 if (!this._geoJsonAutocompleteInstance) { 1427 this._geoJsonAutocompleteInstance = new GeoJsonAutocomplete(this, userOptions); 1428 } 1429 }); 1430 }; 1431 })(jQuery); 1432 1433(function (factory) { 1434 if (typeof define === 'function' && define.amd) { 1435 // AMD 1436 define(['leaflet'], factory); 1437 } else if (typeof module !== 'undefined') { 1438 // Node/CommonJS 1439 module.exports = factory(require('leaflet')); 1440 } else { 1441 // Browser globals 1442 if (typeof window.L === 'undefined') { 1443 throw new Error('Leaflet must be loaded first'); 1444 } 1445 factory(window.L); 1446 } 1447}(function (L) { 1448 L.Control.Fullscreen = L.Control.extend({ 1449 options: { 1450 position: 'topleft', 1451 title: { 1452 'false': 'View Fullscreen', 1453 'true': 'Exit Fullscreen' 1454 } 1455 }, 1456 1457 onAdd: function (map) { 1458 var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control'); 1459 1460 this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container); 1461 this.link.href = '#'; 1462 1463 this._map = map; 1464 this._map.on('fullscreenchange', this._toggleTitle, this); 1465 this._toggleTitle(); 1466 1467 L.DomEvent.on(this.link, 'click', this._click, this); 1468 1469 return container; 1470 }, 1471 1472 _click: function (e) { 1473 L.DomEvent.stopPropagation(e); 1474 L.DomEvent.preventDefault(e); 1475 this._map.toggleFullscreen(this.options); 1476 }, 1477 1478 _toggleTitle: function() { 1479 this.link.title = this.options.title[this._map.isFullscreen()]; 1480 } 1481 }); 1482 1483 L.Map.include({ 1484 isFullscreen: function () { 1485 return this._isFullscreen || false; 1486 }, 1487 1488 toggleFullscreen: function (options) { 1489 var container = this.getContainer(); 1490 if (this.isFullscreen()) { 1491 if (options && options.pseudoFullscreen) { 1492 this._disablePseudoFullscreen(container); 1493 } else if (document.exitFullscreen) { 1494 document.exitFullscreen(); 1495 } else if (document.mozCancelFullScreen) { 1496 document.mozCancelFullScreen(); 1497 } else if (document.webkitCancelFullScreen) { 1498 document.webkitCancelFullScreen(); 1499 } else if (document.msExitFullscreen) { 1500 document.msExitFullscreen(); 1501 } else { 1502 this._disablePseudoFullscreen(container); 1503 } 1504 } else { 1505 if (options && options.pseudoFullscreen) { 1506 this._enablePseudoFullscreen(container); 1507 } else if (container.requestFullscreen) { 1508 container.requestFullscreen(); 1509 } else if (container.mozRequestFullScreen) { 1510 container.mozRequestFullScreen(); 1511 } else if (container.webkitRequestFullscreen) { 1512 container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); 1513 } else if (container.msRequestFullscreen) { 1514 container.msRequestFullscreen(); 1515 } else { 1516 this._enablePseudoFullscreen(container); 1517 } 1518 } 1519 1520 }, 1521 1522 _enablePseudoFullscreen: function (container) { 1523 L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen'); 1524 this._setFullscreen(true); 1525 this.fire('fullscreenchange'); 1526 }, 1527 1528 _disablePseudoFullscreen: function (container) { 1529 L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen'); 1530 this._setFullscreen(false); 1531 this.fire('fullscreenchange'); 1532 }, 1533 1534 _setFullscreen: function(fullscreen) { 1535 this._isFullscreen = fullscreen; 1536 var container = this.getContainer(); 1537 if (fullscreen) { 1538 L.DomUtil.addClass(container, 'leaflet-fullscreen-on'); 1539 } else { 1540 L.DomUtil.removeClass(container, 'leaflet-fullscreen-on'); 1541 } 1542 this.invalidateSize(); 1543 }, 1544 1545 _onFullscreenChange: function (e) { 1546 var fullscreenElement = 1547 document.fullscreenElement || 1548 document.mozFullScreenElement || 1549 document.webkitFullscreenElement || 1550 document.msFullscreenElement; 1551 1552 if (fullscreenElement === this.getContainer() && !this._isFullscreen) { 1553 this._setFullscreen(true); 1554 this.fire('fullscreenchange'); 1555 } else if (fullscreenElement !== this.getContainer() && this._isFullscreen) { 1556 this._setFullscreen(false); 1557 this.fire('fullscreenchange'); 1558 } 1559 } 1560 }); 1561 1562 L.Map.mergeOptions({ 1563 fullscreenControl: false 1564 }); 1565 1566 L.Map.addInitHook(function () { 1567 if (this.options.fullscreenControl) { 1568 this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl); 1569 this.addControl(this.fullscreenControl); 1570 } 1571 1572 var fullscreenchange; 1573 1574 if ('onfullscreenchange' in document) { 1575 fullscreenchange = 'fullscreenchange'; 1576 } else if ('onmozfullscreenchange' in document) { 1577 fullscreenchange = 'mozfullscreenchange'; 1578 } else if ('onwebkitfullscreenchange' in document) { 1579 fullscreenchange = 'webkitfullscreenchange'; 1580 } else if ('onmsfullscreenchange' in document) { 1581 fullscreenchange = 'MSFullscreenChange'; 1582 } 1583 1584 if (fullscreenchange) { 1585 var onFullscreenChange = L.bind(this._onFullscreenChange, this); 1586 1587 this.whenReady(function () { 1588 L.DomEvent.on(document, fullscreenchange, onFullscreenChange); 1589 }); 1590 1591 this.on('unload', function () { 1592 L.DomEvent.off(document, fullscreenchange, onFullscreenChange); 1593 }); 1594 } 1595 }); 1596 1597 L.control.fullscreen = function (options) { 1598 return new L.Control.Fullscreen(options); 1599 }; 1600})); 1601/*! 1602Copyright (c) 2016 Dominik Moritz 1603 1604This file is part of the leaflet locate control. It is licensed under the MIT license. 1605You can find the project at: https://github.com/domoritz/leaflet-locatecontrol 1606*/ 1607(function (factory, window) { 1608 // see https://github.com/Leaflet/Leaflet/blob/master/PLUGIN-GUIDE.md#module-loaders 1609 // for details on how to structure a leaflet plugin. 1610 1611 // define an AMD module that relies on 'leaflet' 1612 if (typeof define === 'function' && define.amd) { 1613 define(['leaflet'], factory); 1614 1615 // define a Common JS module that relies on 'leaflet' 1616 } else if (typeof exports === 'object') { 1617 if (typeof window !== 'undefined' && window.L) { 1618 module.exports = factory(L); 1619 } else { 1620 module.exports = factory(require('leaflet')); 1621 } 1622 } 1623 1624 // attach your plugin to the global 'L' variable 1625 if (typeof window !== 'undefined' && window.L){ 1626 window.L.Control.Locate = factory(L); 1627 } 1628} (function (L) { 1629 var LDomUtilApplyClassesMethod = function(method, element, classNames) { 1630 classNames = classNames.split(' ');
1631 classNames.forEach(function(className) { 1632 L.DomUtil[method].call(this, element, className); 1633 }); 1634 }; 1635 1636 var addClasses = function(el, names) { LDomUtilApplyClassesMethod('addClass', el, names); }; 1637 var removeClasses = function(el, names) { LDomUtilApplyClassesMethod('removeClass', el, names); }; 1638 1639 /** 1640 * Compatible with L.Circle but a true marker instead of a path 1641 */ 1642 var LocationMarker = L.Marker.extend({ 1643 initialize: function (latlng, options) { 1644 L.Util.setOptions(this, options); 1645 this._latlng = latlng; 1646 this.createIcon(); 1647 }, 1648 1649 /** 1650 * Create a styled circle location marker 1651 */ 1652 createIcon: function() { 1653 var opt = this.options; 1654 1655 var style = ''; 1656 1657 if (opt.color !== undefined) { 1658 style += 'stroke:'+opt.color+';'; 1659 } 1660 if (opt.weight !== undefined) { 1661 style += 'stroke-width:'+opt.weight+';'; 1662 } 1663 if (opt.fillColor !== undefined) { 1664 style += 'fill:'+opt.fillColor+';'; 1665 } 1666 if (opt.fillOpacity !== undefined) { 1667 style += 'fill-opacity:'+opt.fillOpacity+';'; 1668 } 1669 if (opt.opacity !== undefined) { 1670 style += 'opacity:'+opt.opacity+';'; 1671 } 1672 1673 var icon = this._getIconSVG(opt, style); 1674 1675 this._locationIcon = L.divIcon({ 1676 className: icon.className, 1677 html: icon.svg, 1678 iconSize: [icon.w,icon.h], 1679 }); 1680 1681 this.setIcon(this._locationIcon); 1682 }, 1683 1684 /** 1685 * Return the raw svg for the shape 1686 * 1687 * Split so can be easily overridden 1688 */ 1689 _getIconSVG: function(options, style) { 1690 var r = options.radius; 1691 var w = options.weight; 1692 var s = r + w; 1693 var s2 = s * 2; 1694 var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="'+s2+'" height="'+s2+'" version="1.1" viewBox="-'+s+' -'+s+' '+s2+' '+s2+'">' + 1695 '<circle r="'+r+'" style="'+style+'" />' + 1696 '</svg>'; 1697 return { 1698 className: 'leaflet-control-locate-location', 1699 svg: svg, 1700 w: s2, 1701 h: s2 1702 }; 1703 }, 1704 1705 setStyle: function(style) { 1706 L.Util.setOptions(this, style); 1707 this.createIcon(); 1708 } 1709 }); 1710 1711 var CompassMarker = LocationMarker.extend({ 1712 initialize: function (latlng, heading, options) { 1713 L.Util.setOptions(this, options); 1714 this._latlng = latlng; 1715 this._heading = heading; 1716 this.createIcon(); 1717 }, 1718 1719 setHeading: function(heading) { 1720 this._heading = heading; 1721 }, 1722 1723 /** 1724 * Create a styled arrow compass marker 1725 */ 1726 _getIconSVG: function(options, style) { 1727 var r = options.radius; 1728 var w = (options.width + options.weight); 1729 var h = (r+options.depth + options.weight)*2; 1730 var path = 'M0,0 l'+(options.width/2)+','+options.depth+' l-'+(w)+',0 z'; 1731 var svgstyle = 'transform: rotate('+this._heading+'deg)'; 1732 var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="'+(w)+'" height="'+h+'" version="1.1" viewBox="-'+(w/2)+' 0 '+w+' '+h+'" style="'+svgstyle+'">'+ 1733 '<path d="'+path+'" style="'+style+'" />'+ 1734 '</svg>'; 1735 return { 1736 className: 'leaflet-control-locate-heading', 1737 svg: svg, 1738 w: w, 1739 h: h 1740 }; 1741 }, 1742 }); 1743 1744 1745 var LocateControl = L.Control.extend({ 1746 options: { 1747 /** Position of the control */ 1748 position: 'topleft', 1749 /** The layer that the user's location should be drawn on. By default creates a new layer. */ 1750 layer: undefined, 1751 /** 1752 * Automatically sets the map view (zoom and pan) to the user's location as it updates. 1753 * While the map is following the user's location, the control is in the `following` state, 1754 * which changes the style of the control and the circle marker. 1755 * 1756 * Possible values: 1757 * - false: never updates the map view when location changes. 1758 * - 'once': set the view when the location is first determined 1759 * - 'always': always updates the map view when location changes. 1760 * The map view follows the user's location. 1761 * - 'untilPan': like 'always', except stops updating the 1762 * view if the user has manually panned the map. 1763 * The map view follows the user's location until she pans. 1764 * - 'untilPanOrZoom': (default) like 'always', except stops updating the 1765 * view if the user has manually panned the map. 1766 * The map view follows the user's location until she pans. 1767 */
1768 setView: 'untilPanOrZoom', 1769 /** Keep the current map zoom level when setting the view and only pan. */ 1770 keepCurrentZoomLevel: false, 1771 /** 1772 * This callback can be used to override the viewport tracking 1773 * This function should return a LatLngBounds object. 1774 * 1775 * For example to extend the viewport to ensure that a particular LatLng is visible: 1776 * 1777 * getLocationBounds: function(locationEvent) { 1778 * return locationEvent.bounds.extend([-33.873085, 151.219273]); 1779 * }, 1780 */ 1781 getLocationBounds: function (locationEvent) { 1782 return locationEvent.bounds; 1783 }, 1784 /** Smooth pan and zoom to the location of the marker. Only works in Leaflet 1.0+. */ 1785 flyTo: false, 1786 /** 1787 * The user location can be inside and outside the current view when the user clicks on the 1788 * control that is already active. Both cases can be configures separately. 1789 * Possible values are: 1790 * - 'setView': zoom and pan to the current location 1791 * - 'stop': stop locating and remove the location marker 1792 */ 1793 clickBehavior: { 1794 /** What should happen if the user clicks on the control while the location is within the current view. */ 1795 inView: 'stop', 1796 /** What should happen if the user clicks on the control while the location is outside the current view. */ 1797 outOfView: 'setView', 1798 /** 1799 * What should happen if the user clicks on the control while the location is within the current view 1800 * and we could be following but are not. Defaults to a special value which inherits from 'inView'; 1801 */ 1802 inViewNotFollowing: 'inView', 1803 }, 1804 /** 1805 * If set, save the map bounds just before centering to the user's 1806 * location. When control is disabled, set the view back to the 1807 * bounds that were saved. 1808 */ 1809 returnToPrevBounds: false, 1810 /** 1811 * Keep a cache of the location after the user deactivates the control. If set to false, the user has to wait 1812 * until the locate API returns a new location before they see where they are again. 1813 */ 1814 cacheLocation: true, 1815 /** If set, a circle that shows the location accuracy is drawn. */ 1816 drawCircle: true, 1817 /** If set, the marker at the users' location is drawn. */ 1818 drawMarker: true, 1819 /** If set and supported then show the compass heading */ 1820 showCompass: true, 1821 /** The class to be used to create the marker. For example L.CircleMarker or L.Marker */ 1822 markerClass: LocationMarker, 1823 /** The class us be used to create the compass bearing arrow */ 1824 compassClass: CompassMarker, 1825 /** Accuracy circle style properties. NOTE these styles should match the css animations styles */ 1826 circleStyle: { 1827 className: 'leaflet-control-locate-circle', 1828 color: '#136AEC', 1829 fillColor: '#136AEC', 1830 fillOpacity: 0.15, 1831 weight: 0 1832 }, 1833 /** Inner marker style properties. Only works if your marker class supports `setStyle`. */ 1834 markerStyle: { 1835 className: 'leaflet-control-locate-marker', 1836 color: '#fff', 1837 fillColor: '#2A93EE', 1838 fillOpacity: 1, 1839 weight: 3, 1840 opacity: 1, 1841 radius: 9 1842 }, 1843 /** Compass */ 1844 compassStyle: { 1845 fillColor: '#2A93EE', 1846 fillOpacity: 1, 1847 weight: 0, 1848 color: '#fff', 1849 opacity: 1, 1850 radius: 9, // How far is the arrow is from the center of of the marker 1851 width: 9, // Width of the arrow 1852 depth: 6 // Length of the arrow 1853 }, 1854 /** 1855 * Changes to accuracy circle and inner marker while following. 1856 * It is only necessary to provide the properties that should change. 1857 */ 1858 followCircleStyle: {}, 1859 followMarkerStyle: {
1860 // color: '#FFA500', 1861 // fillColor: '#FFB000' 1862 }, 1863 followCompassStyle: {}, 1864 /** The CSS class for the icon. For example fa-location-arrow or fa-map-marker */ 1865 icon: 'fa fa-map-marker', 1866 iconLoading: 'fa fa-spinner fa-spin', 1867 /** The element to be created for icons. For example span or i */ 1868 iconElementTag: 'span', 1869 /** Padding around the accuracy circle. */ 1870 circlePadding: [0, 0], 1871 /** Use metric units. */ 1872 metric: true, 1873 /** 1874 * This callback can be used in case you would like to override button creation behavior. 1875 * This is useful for DOM manipulation frameworks such as angular etc. 1876 * This function should return an object with HtmlElement for the button (link property) and the icon (icon property). 1877 */ 1878 createButtonCallback: function (container, options) { 1879 var link = L.DomUtil.create('a', 'leaflet-bar-part leaflet-bar-part-single', container); 1880 link.title = options.strings.title; 1881 var icon = L.DomUtil.create(options.iconElementTag, options.icon, link); 1882 return { link: link, icon: icon }; 1883 }, 1884 /** This event is called in case of any location error that is not a time out error. */ 1885 onLocationError: function(err, control) { 1886 alert(err.message); 1887 }, 1888 /** 1889 * This event is called when the user's location is outside the bounds set on the map. 1890 * The event is called repeatedly when the location changes. 1891 */ 1892 onLocationOutsideMapBounds: function(control) { 1893 control.stop(); 1894 alert(control.options.strings.outsideMapBoundsMsg); 1895 }, 1896 /** Display a pop-up when the user click on the inner marker. */ 1897 showPopup: true, 1898 strings: { 1899 title: "Show me where I am", 1900 metersUnit: "meters", 1901 feetUnit: "feet", 1902 popup: "You are within {distance} {unit} from this point", 1903 outsideMapBoundsMsg: "You seem located outside the boundaries of the map" 1904 }, 1905 /** The default options passed to leaflets locate method. */ 1906 locateOptions: { 1907 maxZoom: Infinity, 1908 watch: true, // if you overwrite this, visualization cannot be updated 1909 setView: false // have to set this to false because we have to 1910 // do setView manually 1911 } 1912 }, 1913 1914 initialize: function (options) { 1915 // set default options if nothing is set (merge one step deep) 1916 for (var i in options) { 1917 if (typeof this.options[i] === 'object') { 1918 L.extend(this.options[i], options[i]); 1919 } else { 1920 this.options[i] = options[i]; 1921 } 1922 } 1923 1924 // extend the follow marker style and circle from the normal style 1925 this.options.followMarkerStyle = L.extend({}, this.options.markerStyle, this.options.followMarkerStyle); 1926 this.options.followCircleStyle = L.extend({}, this.options.circleStyle, this.options.followCircleStyle); 1927 this.options.followCompassStyle = L.extend({}, this.options.compassStyle, this.options.followCompassStyle); 1928 }, 1929 1930 /** 1931 * Add control to map. Returns the container for the control. 1932 */ 1933 onAdd: function (map) { 1934 var container = L.DomUtil.create('div', 1935 'leaflet-control-locate leaflet-bar leaflet-control'); 1936 1937 this._layer = this.options.layer || new L.LayerGroup(); 1938 this._layer.addTo(map); 1939 this._event = undefined; 1940 this._compassHeading = null; 1941 this._prevBounds = null; 1942 1943 var linkAndIcon = this.options.createButtonCallback(container, this.options); 1944 this._link = linkAndIcon.link; 1945 this._icon = linkAndIcon.icon; 1946 1947 L.DomEvent 1948 .on(this._link, 'click', L.DomEvent.stopPropagation) 1949 .on(this._link, 'click', L.DomEvent.preventDefault) 1950 .on(this._link, 'click', this._onClick, this) 1951 .on(this._link, 'dblclick', L.DomEvent.stopPropagation); 1952 1953 this._resetVariables(); 1954 1955 this._map.on('unload', this._unload, this); 1956 1957 return container; 1958 }, 1959 1960 /** 1961 * This method is called when the user clicks on the control. 1962 */ 1963 _onClick: function() { 1964 this._justClicked = true; 1965 var wasFollowing = this._isFollowing(); 1966 this._userPanned = false;
1967 this._userZoomed = false; 1968 1969 if (this._active && !this._event) { 1970 // click while requesting 1971 this.stop(); 1972 } else if (this._active && this._event !== undefined) { 1973 var behaviors = this.options.clickBehavior; 1974 var behavior = behaviors.outOfView; 1975 if (this._map.getBounds().contains(this._event.latlng)) { 1976 behavior = wasFollowing ? behaviors.inView : behaviors.inViewNotFollowing; 1977 } 1978 1979 // Allow inheriting from another behavior 1980 if (behaviors[behavior]) { 1981 behavior = behaviors[behavior]; 1982 } 1983 1984 switch (behavior) { 1985 case 'setView': 1986 this.setView(); 1987 break; 1988 case 'stop': 1989 this.stop(); 1990 if (this.options.returnToPrevBounds) { 1991 var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds; 1992 f.bind(this._map)(this._prevBounds); 1993 } 1994 break; 1995 } 1996 } else { 1997 if (this.options.returnToPrevBounds) { 1998 this._prevBounds = this._map.getBounds(); 1999 } 2000 this.start(); 2001 } 2002 2003 this._updateContainerStyle(); 2004 }, 2005 2006 /** 2007 * Starts the plugin: 2008 * - activates the engine 2009 * - draws the marker (if coordinates available) 2010 */ 2011 start: function() { 2012 this._activate(); 2013 2014 if (this._event) { 2015 this._drawMarker(this._map); 2016 2017 // if we already have a location but the user clicked on the control 2018 if (this.options.setView) { 2019 this.setView(); 2020 } 2021 } 2022 this._updateContainerStyle(); 2023 }, 2024 2025 /** 2026 * Stops the plugin: 2027 * - deactivates the engine 2028 * - reinitializes the button 2029 * - removes the marker 2030 */ 2031 stop: function() { 2032 this._deactivate(); 2033 2034 this._cleanClasses(); 2035 this._resetVariables(); 2036 2037 this._removeMarker(); 2038 }, 2039 2040 /** 2041 * Keep the control active but stop following the location 2042 */ 2043 stopFollowing: function() { 2044 this._userPanned = true; 2045 this._updateContainerStyle(); 2046 this._drawMarker(); 2047 }, 2048 2049 /** 2050 * This method launches the location engine. 2051 * It is called before the marker is updated, 2052 * event if it does not mean that the event will be ready. 2053 * 2054 * Override it if you want to add more functionalities. 2055 * It should set the this._active to true and do nothing if 2056 * this._active is true. 2057 */ 2058 _activate: function() { 2059 if (!this._active) { 2060 this._map.locate(this.options.locateOptions); 2061 this._active = true; 2062 2063 // bind event listeners 2064 this._map.on('locationfound', this._onLocationFound, this); 2065 this._map.on('locationerror', this._onLocationError, this); 2066 this._map.on('dragstart', this._onDrag, this); 2067 this._map.on('zoomstart', this._onZoom, this); 2068 this._map.on('zoomend', this._onZoomEnd, this); 2069 if (this.options.showCompass) { 2070 if ('ondeviceorientationabsolute' in window) { 2071 L.DomEvent.on(window, 'deviceorientationabsolute', this._onDeviceOrientation, this); 2072 } else if ('ondeviceorientation' in window) { 2073 L.DomEvent.on(window, 'deviceorientation', this._onDeviceOrientation, this); 2074 } 2075 } 2076 } 2077 }, 2078 2079 /** 2080 * Called to stop the location engine. 2081 * 2082 * Override it to shutdown any functionalities you added on start. 2083 */ 2084 _deactivate: function() { 2085 this._map.stopLocate(); 2086 this._active = false;
2087 2088 if (!this.options.cacheLocation) { 2089 this._event = undefined; 2090 } 2091 2092 // unbind event listeners 2093 this._map.off('locationfound', this._onLocationFound, this); 2094 this._map.off('locationerror', this._onLocationError, this); 2095 this._map.off('dragstart', this._onDrag, this); 2096 this._map.off('zoomstart', this._onZoom, this); 2097 this._map.off('zoomend', this._onZoomEnd, this); 2098 if (this.options.showCompass) { 2099 this._compassHeading = null; 2100 if ('ondeviceorientationabsolute' in window) { 2101 L.DomEvent.off(window, 'deviceorientationabsolute', this._onDeviceOrientation, this); 2102 } else if ('ondeviceorientation' in window) { 2103 L.DomEvent.off(window, 'deviceorientation', this._onDeviceOrientation, this); 2104 } 2105 } 2106 }, 2107 2108 /** 2109 * Zoom (unless we should keep the zoom level) and an to the current view. 2110 */ 2111 setView: function() { 2112 this._drawMarker(); 2113 if (this._isOutsideMapBounds()) { 2114 this._event = undefined; // clear the current location so we can get back into the bounds 2115 this.options.onLocationOutsideMapBounds(this); 2116 } else { 2117 if (this.options.keepCurrentZoomLevel) { 2118 var f = this.options.flyTo ? this._map.flyTo : this._map.panTo; 2119 f.bind(this._map)([this._event.latitude, this._event.longitude]); 2120 } else { 2121 var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds; 2122 // Ignore zoom events while setting the viewport as these would stop following 2123 this._ignoreEvent = true; 2124 f.bind(this._map)(this.options.getLocationBounds(this._event), { 2125 padding: this.options.circlePadding, 2126 maxZoom: this.options.locateOptions.maxZoom 2127 }); 2128 L.Util.requestAnimFrame(function(){ 2129 // Wait until after the next animFrame because the flyTo can be async 2130 this._ignoreEvent = false; 2131 }, this); 2132 2133 } 2134 } 2135 }, 2136 2137 /** 2138 * 2139 */ 2140 _drawCompass: function() { 2141 if (!this._event) { 2142 return; 2143 } 2144 2145 var latlng = this._event.latlng; 2146 2147 if (this.options.showCompass && latlng && this._compassHeading !== null) { 2148 var cStyle = this._isFollowing() ? this.options.followCompassStyle : this.options.compassStyle; 2149 if (!this._compass) { 2150 this._compass = new this.options.compassClass(latlng, this._compassHeading, cStyle).addTo(this._layer); 2151 } else { 2152 this._compass.setLatLng(latlng); 2153 this._compass.setHeading(this._compassHeading); 2154 // If the compassClass can be updated with setStyle, update it. 2155 if (this._compass.setStyle) { 2156 this._compass.setStyle(cStyle); 2157 } 2158 } 2159 // 2160 } 2161 if (this._compass && (!this.options.showCompass || this._compassHeading === null)) { 2162 this._compass.removeFrom(this._layer); 2163 this._compass = null; 2164 } 2165 }, 2166 2167 /** 2168 * Draw the marker and accuracy circle on the map. 2169 * 2170 * Uses the event retrieved from onLocationFound from the map. 2171 */ 2172 _drawMarker: function() { 2173 if (this._event.accuracy === undefined) { 2174 this._event.accuracy = 0; 2175 } 2176 2177 var radius = this._event.accuracy; 2178 var latlng = this._event.latlng; 2179 2180 // circle with the radius of the location's accuracy 2181 if (this.options.drawCircle) { 2182 var style = this._isFollowing() ? this.options.followCircleStyle : this.options.circleStyle; 2183 2184 if (!this._circle) { 2185 this._circle = L.circle(latlng, radius, style).addTo(this._layer); 2186 } else { 2187 this._circle.setLatLng(latlng).setRadius(radius).setStyle(style); 2188 } 2189 } 2190 2191 var distance, unit; 2192 if (this.options.metric) { 2193 distance = radius.toFixed(0); 2194 unit = this.options.strings.metersUnit; 2195 } else { 2196 distance = (radius * 3.2808399).toFixed(0); 2197 unit = this.options.strings.feetUnit; 2198 } 2199 2200 // small inner marker 2201 if (this.options.drawMarker) { 2202 var mStyle = this._isFollowing() ? this.options.followMarkerStyle : this.options.markerStyle; 2203 if (!this._marker) { 2204 this._marker = new this.options.markerClass(latlng, mStyle).addTo(this._layer); 2205 } else { 2206 this._marker.setLatLng(latlng); 2207 // If the markerClass can be updated with setStyle, update it. 2208 if (this._marker.setStyle) { 2209 this._marker.setStyle(mStyle); 2210 } 2211 } 2212 } 2213 2214 this._drawCompass(); 2215 2216 var t = this.options.strings.popup; 2217 if (this.options.showPopup && t && this._marker) { 2218 this._marker 2219 .bindPopup(L.Util.template(t, {distance: distance, unit: unit})) 2220 ._popup.setLatLng(latlng); 2221 } 2222 if (this.options.showPopup && t && this._compass) { 2223 this._compass 2224 .bindPopup(L.Util.template(t, {distance: distance, unit: unit})) 2225 ._popup.setLatLng(latlng); 2226 } 2227 }, 2228 2229 /** 2230 * Remove the marker from map. 2231 */ 2232 _removeMarker: function() { 2233 this._layer.clearLayers(); 2234 this._marker = undefined; 2235 this._circle = undefined; 2236 }, 2237 2238 /** 2239 * Unload the plugin and all event listeners. 2240 * Kind of the opposite of onAdd. 2241 */ 2242 _unload: function() { 2243 this.stop(); 2244 this._map.off('unload', this._unload, this); 2245 }, 2246 2247 /** 2248 * Sets the compass heading 2249 */ 2250 _setCompassHeading: function(angle) { 2251 if (!isNaN(parseFloat(angle)) && isFinite(angle)) { 2252 angle = Math.round(angle); 2253 2254 this._compassHeading = angle;
2255 L.Util.requestAnimFrame(this._drawCompass, this); 2256 } else { 2257 this._compassHeading = null; 2258 } 2259 }, 2260 2261 /** 2262 * If the compass fails calibration just fail safely and remove the compass 2263 */ 2264 _onCompassNeedsCalibration: function() { 2265 this._setCompassHeading(); 2266 }, 2267 2268 /** 2269 * Process and normalise compass events 2270 */ 2271 _onDeviceOrientation: function(e) { 2272 if (!this._active) { 2273 return; 2274 } 2275 2276 if (e.webkitCompassHeading) { 2277 // iOS 2278 this._setCompassHeading(e.webkitCompassHeading); 2279 } else if (e.absolute && e.alpha) { 2280 // Android 2281 this._setCompassHeading(360 - e.alpha) 2282 } 2283 }, 2284 2285 /** 2286 * Calls deactivate and dispatches an error. 2287 */ 2288 _onLocationError: function(err) { 2289 // ignore time out error if the location is watched 2290 if (err.code == 3 && this.options.locateOptions.watch) { 2291 return; 2292 } 2293 2294 this.stop(); 2295 this.options.onLocationError(err, this); 2296 }, 2297 2298 /** 2299 * Stores the received event and updates the marker. 2300 */ 2301 _onLocationFound: function(e) { 2302 // no need to do anything if the location has not changed 2303 if (this._event && 2304 (this._event.latlng.lat === e.latlng.lat && 2305 this._event.latlng.lng === e.latlng.lng && 2306 this._event.accuracy === e.accuracy)) { 2307 return; 2308 } 2309 2310 if (!this._active) { 2311 // we may have a stray event 2312 return; 2313 } 2314 2315 this._event = e; 2316 2317 this._drawMarker(); 2318 this._updateContainerStyle(); 2319 2320 switch (this.options.setView) { 2321 case 'once': 2322 if (this._justClicked) { 2323 this.setView(); 2324 } 2325 break; 2326 case 'untilPan': 2327 if (!this._userPanned) { 2328 this.setView(); 2329 } 2330 break; 2331 case 'untilPanOrZoom': 2332 if (!this._userPanned && !this._userZoomed) { 2333 this.setView(); 2334 } 2335 break; 2336 case 'always': 2337 this.setView(); 2338 break; 2339 case false: 2340 // don't set the view 2341 break; 2342 } 2343 2344 this._justClicked = false; 2345 }, 2346 2347 /** 2348 * When the user drags. Need a separate event so we can bind and unbind event listeners. 2349 */ 2350 _onDrag: function() { 2351 // only react to drags once we have a location 2352 if (this._event && !this._ignoreEvent) { 2353 this._userPanned = true; 2354 this._updateContainerStyle(); 2355 this._drawMarker(); 2356 } 2357 }, 2358 2359 /** 2360 * When the user zooms. Need a separate event so we can bind and unbind event listeners. 2361 */ 2362 _onZoom: function() { 2363 // only react to drags once we have a location 2364 if (this._event && !this._ignoreEvent) { 2365 this._userZoomed = true; 2366 this._updateContainerStyle(); 2367 this._drawMarker(); 2368 } 2369 }, 2370 2371 /** 2372 * After a zoom ends update the compass and handle sideways zooms 2373 */ 2374 _onZoomEnd: function() { 2375 if (this._event) { 2376 this._drawCompass(); 2377 } 2378 2379 if (this._event && !this._ignoreEvent) { 2380 // If we have zoomed in and out and ended up sideways treat it as a pan 2381 if (this._marker && !this._map.getBounds().pad(-.3).contains(this._marker.getLatLng())) { 2382 this._userPanned = true; 2383 this._updateContainerStyle(); 2384 this._drawMarker(); 2385 } 2386 } 2387 }, 2388 2389 /** 2390 * Compute whether the map is following the user location with pan and zoom. 2391 */ 2392 _isFollowing: function() { 2393 if (!this._active) { 2394 return false;
2395 } 2396 2397 if (this.options.setView === 'always') { 2398 return true; 2399 } else if (this.options.setView === 'untilPan') { 2400 return !this._userPanned; 2401 } else if (this.options.setView === 'untilPanOrZoom') { 2402 return !this._userPanned && !this._userZoomed; 2403 } 2404 }, 2405 2406 /** 2407 * Check if location is in map bounds 2408 */ 2409 _isOutsideMapBounds: function() { 2410 if (this._event === undefined) { 2411 return false; 2412 } 2413 return this._map.options.maxBounds && 2414 !this._map.options.maxBounds.contains(this._event.latlng); 2415 }, 2416 2417 /** 2418 * Toggles button class between following and active. 2419 */ 2420 _updateContainerStyle: function() { 2421 if (!this._container) { 2422 return; 2423 } 2424 2425 if (this._active && !this._event) { 2426 // active but don't have a location yet 2427 this._setClasses('requesting'); 2428 } else if (this._isFollowing()) { 2429 this._setClasses('following'); 2430 } else if (this._active) { 2431 this._setClasses('active'); 2432 } else { 2433 this._cleanClasses(); 2434 } 2435 }, 2436 2437 /** 2438 * Sets the CSS classes for the state. 2439 */ 2440 _setClasses: function(state) { 2441 if (state == 'requesting') { 2442 removeClasses(this._container, "active following"); 2443 addClasses(this._container, "requesting"); 2444 2445 removeClasses(this._icon, this.options.icon); 2446 addClasses(this._icon, this.options.iconLoading); 2447 } else if (state == 'active') { 2448 removeClasses(this._container, "requesting following"); 2449 addClasses(this._container, "active"); 2450 2451 removeClasses(this._icon, this.options.iconLoading); 2452 addClasses(this._icon, this.options.icon); 2453 } else if (state == 'following') { 2454 removeClasses(this._container, "requesting"); 2455 addClasses(this._container, "active following"); 2456 2457 removeClasses(this._icon, this.options.iconLoading); 2458 addClasses(this._icon, this.options.icon); 2459 } 2460 }, 2461 2462 /** 2463 * Removes all classes from button. 2464 */ 2465 _cleanClasses: function() { 2466 L.DomUtil.removeClass(this._container, "requesting"); 2467 L.DomUtil.removeClass(this._container, "active"); 2468 L.DomUtil.removeClass(this._container, "following"); 2469 2470 removeClasses(this._icon, this.options.iconLoading); 2471 addClasses(this._icon, this.options.icon); 2472 }, 2473 2474 /** 2475 * Reinitializes state variables. 2476 */ 2477 _resetVariables: function() { 2478 // whether locate is active or not 2479 this._active = false; 2480 2481 // true if the control was clicked for the first time 2482 // we need this so we can pan and zoom once we have the location 2483 this._justClicked = false; 2484 2485 // true if the user has panned the map after clicking the control 2486 this._userPanned = false; 2487 2488 // true if the user has zoomed the map after clicking the control 2489 this._userZoomed = false; 2490 } 2491 }); 2492 2493 L.control.locate = function (options) { 2494 return new L.Control.Locate(options); 2495 }; 2496 2497 return LocateControl; 2498}, window));
vendor: 564,710 bytes, lines 2499-2514
2499(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){function corslite(url,callback,cors){var sent=false;if(typeof window.XMLHttpRequest==="undefined"){return callback(Error("Browser not supported"))}if(typeof cors==="undefined"){var m=url.match(/^\s*https?:\/\/[^\/]*/);cors=m&&m[0]!==location.protocol+"//"+location.hostname+(location.port?":"+location.port:"")}var x=new window.XMLHttpRequest;function isSuccessful(status){return status>=200&&status<300||status===304}if(cors&&!("withCredentials"in x)){x=new window.XDomainRequest;var original=callback;callback=function(){if(sent){original.apply(this,arguments)}else{var that=this,args=arguments;setTimeout(function(){original.apply(that,args)},0)}}}function loaded(){if(x.status===undefined||isSuccessful(x.status))callback.call(x,null,x);else callback.call(x,x,null)}if("onload"in x){x.onload=loaded}else{x.onreadystatechange=function readystate(){if(x.readyState===4){loaded()}}}x.onerror=function error(evt){callback.call(this,evt||true,null);callback=function(){}};x.onprogress=function(){};x.ontimeout=function(evt){callback.call(this,evt,null);callback=function(){}};x.onabort=function(evt){callback.call(this,evt,null);callback=function(){}};x.open("GET",url,true);x.send(null);sent=true;return x}if(typeof module!=="undefined")module.exports=corslite},{}],2:[function(_dereq_,module,exports){"use strict";var polyline={};function py2_round(value){return Math.floor(Math.abs(value)+.5)*Math.sign(value)}function encode(current,previous,factor){current=py2_round(current*factor);previous=py2_round(previous*factor);var coordinate=current-previous;coordinate<<=1;if(current-previous<0){coordinate=~coordinate}var output="";while(coordinate>=32){output+=String.fromCharCode((32|coordinate&31)+63);coordinate>>=5}output+=String.fromCharCode(coordinate+63);return output}polyline.decode=function(str,precision){var index=0,lat=0,lng=0,coordinates=[],shift=0,result=0,byte=null,latitude_change,longitude_change,factor=Math.pow(10,precision||5);while(index<str.length){byte=null;shift=0;result=0;do{byte=str.charCodeAt(index++)-63;result|=(byte&31)<<shift;shift+=5}while(byte>=32);latitude_change=result&1?~(result>>1):result>>1;shift=result=0;do{byte=str.charCodeAt(index++)-63;result|=(byte&31)<<shift;shift+=5}while(byte>=32);longitude_change=result&1?~(result>>1):result>>1;lat+=latitude_change;lng+=longitude_change;coordinates.push([lat/factor,lng/factor])}return coordinates};polyline.encode=function(coordinates,precision){if(!coordinates.length){return""}var factor=Math.pow(10,precision||5),output=encode(coordinates[0][0],0,factor)+encode(coordinates[0][1],0,factor);for(var i=1;i<coordinates.length;i++){var a=coordinates[i],b=coordinates[i-1];output+=encode(a[0],b[0],factor);output+=encode(a[1],b[1],factor)}return output};function flipped(coords){var flipped=[];for(var i=0;i<coords.length;i++){flipped.push(coords[i].slice().reverse())}return flipped}polyline.fromGeoJSON=function(geojson,precision){if(geojson&&geojson.type==="Feature"){geojson=geojson.geometry}if(!geojson||geojson.type!=="LineString"){throw new Error("Input must be a GeoJSON LineString")}return polyline.encode(flipped(geojson.coordinates),precision)};polyline.toGeoJSON=function(str,precision){var coords=polyline.decode(str,precision);return{type:"LineString",coordinates:flipped(coords)}};if(typeof module==="object"&&module.exports){module.exports=polyline}},{}],3:[function(_dereq_,module,exports){var languages=_dereq_("./languages");var instructions=languages.instructions;var grammars=languages.grammars;var abbreviations=languages.abbreviations;module.exports=function(version){Object.keys(instructions).forEach(function(code){if(!instructions[code][version]){throw"invalid version "+version+": "+code+" not supported"}});return{capitalizeFirstLetter:function(language,string){return string.charAt(0).toLocaleUpperCase(language)+string.slice(1)},ordinalize:function(language,number){if(!language)throw new Error("No language code provided");return instructions[language][version].constants.ordinalize[number.toString()]||""},directionFromDegree:function(language,degree){if(!language)throw new Error("No language code provided");if(!degree&°ree!==0){return""}else if(degree>=0&°ree<=20){return instructions[language][version].constants.direction.north}else if(degree>20&°ree<70){return instructions[language][version].constants.direction.northeast}else if(degree>=70&°ree<=110){return instructions[language][version].constants.direction.east}else if(degree>110&°ree<160){return instructions[language][version].constants.direction.southeast}else if(degree>=160&°ree<=200){return instructions[language][version].constants.direction.south}else if(degree>200&°ree<250){return instructions[language][version].constants.direction.southwest}else if(degree>=250&°ree<=290){return instructions[language][version].constants.direction.west}else if(degree>290&°ree<340){return instructions[language][version].constants.direction.northwest}else if(degree>=340&°ree<=360){return instructions[language][version].constants.direction.north}else{throw new Error("Degree "+degree+" invalid")}},laneConfig:function(step){if(!step.intersections||!step.intersections[0].lanes)throw new Error("No lanes object");var config=[];var currentLaneValidity=null;step.intersections[0].lanes.forEach(function(lane){if(currentLaneValidity===null||currentLaneValidity!==lane.valid){if(lane.valid){config.push("o")}else{config.push("x")}currentLaneValidity=lane.valid}});return config.join("")},getWayName:function(language,step,options){var classes=options?options.classes||[]:[];if(typeof step!=="object")throw new Error("step must be an Object");if(!language)throw new Error("No language code provided");if(!Array.isArray(classes))throw new Error("classes must be an Array or undefined");var wayName;var name=step.name||"";var ref=(step.ref||"").split(";")[0];if(name===step.ref){name=""}name=name.replace(" ("+step.ref+")","");var wayMotorway=classes.indexOf("motorway")!==-1;if(name&&ref&&name!==ref&&!wayMotorway){var phrase=instructions[language][version].phrase["name and ref"]||instructions.en[version].phrase["name and ref"];wayName=this.tokenize(language,phrase,{name:name,ref:ref},options)}else if(name&&ref&&wayMotorway&&/\d/.test(ref)){wayName=options&&options.formatToken?options.formatToken("ref",ref):ref}else if(!name&&ref){wayName=options&&options.formatToken?options.formatToken("ref",ref):ref}else{wayName=options&&options.formatToken?options.formatToken("name",name):name}return wayName},compile:function(language,step,opts){if(!language)throw new Error("No language code provided");if(languages.supportedCodes.indexOf(language)===-1)throw new Error("language code "+language+" not loaded");if(!step.maneuver)throw new Error("No step maneuver provided");var options=opts||{};var type=step.maneuver.type;var modifier=step.maneuver.modifier;var mode=step.mode;var side=step.driving_side;if(!type){throw new Error("Missing step maneuver type")}if(type!=="depart"&&type!=="arrive"&&!modifier){throw new Error("Missing step maneuver modifier")}if(!instructions[language][version][type]){console.log("Encountered unknown instruction type: "+type);type="turn"}var instructionObject;if(instructions[language][version].modes[mode]){instructionObject=instructions[language][version].modes[mode]}else{var omitSide=type==="off ramp"&&modifier.indexOf(side)>=0;if(instructions[language][version][type][modifier]&&!omitSide){instructionObject=instructions[language][version][type][modifier]}else{instructionObject=instructions[language][version][type].default}}var laneInstruction;switch(type){case"use lane":laneInstruction=instructions[language][version].constants.lanes[this.laneConfig(step)];if(!laneInstruction){instructionObject=instructions[language][version]["use lane"].no_lanes}break;case"rotary":case"roundabout":if(step.rotary_name&&step.maneuver.exit&&instructionObject.name_exit){instructionObject=instructionObject.name_exit}else if(step.rotary_name&&instructionObject.name){instructionObject=instructionObject.name}else if(step.maneuver.exit&&instructionObject.exit){instructionObject=instructionObject.exit}else{instructionObject=instructionObject.default}break;default:}var wayName=this.getWayName(language,step,options);var instruction;if(step.destinations&&step.exits&&instructionObject.exit_destination){instruction=instructionObject.exit_destination}else if(step.destinations&&instructionObject.destination){instruction=instructionObject.destination}else if(step.exits&&instructionObject.exit){instruction=instructionObject.exit}else if(wayName&&instructionObject.name){instruction=instructionObject.name}else if(options.waypointName&&instructionObject.named){instruction=instructionObject.named}else{instruction=instructionObject.default}var destinations=step.destinations&&step.destinations.split(": ");var destinationRef=destinations&&destinations[0].split(",")[0];var destination=destinations&&destinations[1]&&destinations[1].split(",")[0];var firstDestination;if(destination&&destinationRef){firstDestination=destinationRef+": "+destination}else{firstDestination=destinationRef||destination||""}var nthWaypoint=options.legIndex>=0&&options.legIndex!==options.legCount-1?this.ordinalize(language,options.legIndex+1):"";var replaceTokens={way_name:wayName,destination:firstDestination,exit:(step.exits||"").split(";")[0],exit_number:this.ordinalize(language,step.maneuver.exit||1),rotary_name:step.rotary_name,lane_instruction:laneInstruction,modifier:instructions[language][version].constants.modifier[modifier],direction:this.directionFromDegree(language,step.maneuver.bearing_after),nth:nthWaypoint,waypoint_name:options.waypointName};return this.tokenize(language,instruction,replaceTokens,options)},grammarize:function(language,name,grammar){if(!language)throw new Error("No language code provided");if(name&&grammar&&grammars&&grammars[language]&&grammars[language][version]){var rules=grammars[language][version][grammar];if(rules){var n=" "+name+" ";var flags=grammars[language].meta.regExpFlags||"";rules.forEach(function(rule){var re=new RegExp(rule[0],flags);n=n.replace(re,rule[1])});return n.trim()}}return name},abbreviations:abbreviations,tokenize:function(language,instruction,tokens,options){if(!language)throw new Error("No language code provided");var that=this;var startedWithToken=false;var output=instruction.replace(/\{(\w+)(?::(\w+))?\}/g,function(token,tag,grammar,offset){var value=tokens[tag];if(typeof value==="undefined"){return token}value=that.grammarize(language,value,grammar);if(offset===0&&instructions[language].meta.capitalizeFirstLetter){startedWithToken=true;value=that.capitalizeFirstLetter(language,value)}if(options&&options.formatToken){value=options.formatToken(tag,value)}return value}).replace(/ {2}/g," ");if(!startedWithToken&&instructions[language].meta.capitalizeFirstLetter){return this.capitalizeFirstLetter(language,output)}return output}}}},{"./languages":4}],4:[function(_dereq_,module,exports){var instructionsDa=_dereq_("./languages/translations/da.json");var instructionsDe=_dereq_("./languages/translations/de.json");var instructionsEn=_dereq_("./languages/translations/en.json");var instructionsEo=_dereq_("./languages/translations/eo.json");var instructionsEs=_dereq_("./languages/translations/es.json");var instructionsEsEs=_dereq_("./languages/translations/es-ES.json");var instructionsFi=_dereq_("./languages/translations/fi.json");var instructionsFr=_dereq_("./languages/translations/fr.json");var instructionsHe=_dereq_("./languages/translations/he.json");var instructionsId=_dereq_("./languages/translations/id.json");var instructionsIt=_dereq_("./languages/translations/it.json");var instructionsKo=_dereq_("./languages/translations/ko.json");var instructionsMy=_dereq_("./languages/translations/my.json");var instructionsNl=_dereq_("./languages/translations/nl.json");var instructionsNo=_dereq_("./languages/translations/no.json");var instructionsPl=_dereq_("./languages/translations/pl.json");var instructionsPtBr=_dereq_("./languages/translations/pt-BR.json");var instructionsPtPt=_dereq_("./languages/translations/pt-PT.json");var instructionsRo=_dereq_("./languages/translations/ro.json");var instructionsRu=_dereq_("./languages/translations/ru.json");var instructionsSv=_dereq_("./languages/translations/sv.json");var instructionsTr=_dereq_("./languages/translations/tr.json");var instructionsUk=_dereq_("./languages/translations/uk.json");var instructionsVi=_dereq_("./languages/translations/vi.json");var instructionsZhHans=_dereq_("./languages/translations/zh-Hans.json");var grammarFr=_dereq_("./languages/grammar/fr.json");var grammarRu=_dereq_("./languages/grammar/ru.json");var abbreviationsBg=_dereq_("./languages/abbreviations/bg.json");var abbreviationsCa=_dereq_("./languages/abbreviations/ca.json");var abbreviationsDa=_dereq_("./languages/abbreviations/da.json");var ebbreviationsDe=_dereq_("./languages/abbreviations/de.json");var abbreviationsEn=_dereq_("./languages/abbreviations/en.json");var abbreviationsEs=_dereq_("./languages/abbreviations/es.json");var abbreviationsFr=_dereq_("./languages/abbreviations/fr.json");var abbreviationsHe=_dereq_("./languages/abbreviations/he.json");var abbreviationsHu=_dereq_("./languages/abbreviations/hu.json");var abbreviationsLt=_dereq_("./languages/abbreviations/lt.json");var abbreviationsNl=_dereq_("./languages/abbreviations/nl.json");var abbreviationsRu=_dereq_("./languages/abbreviations/ru.json");var abbreviationsSl=_dereq_("./languages/abbreviations/sl.json");var abbreviationsSv=_dereq_("./languages/abbreviations/sv.json");var abbreviationsUk=_dereq_("./languages/abbreviations/uk.json");var abbreviationsVi=_dereq_("./languages/abbreviations/vi.json");var instructions={da:instructionsDa,de:instructionsDe,en:instructionsEn,eo:instructionsEo,es:instructionsEs,"es-ES":instructionsEsEs,fi:instructionsFi,fr:instructionsFr,he:instructionsHe,id:instructionsId,it:instructionsIt,ko:instructionsKo,my:instructionsMy,nl:instructionsNl,no:instructionsNo,pl:instructionsPl,"pt-BR":instructionsPtBr,"pt-PT":instructionsPtPt,ro:instructionsRo,ru:instructionsRu,sv:instructionsSv,tr:instructionsTr,uk:instructionsUk,vi:instructionsVi,"zh-Hans":instructionsZhHans};var grammars={fr:grammarFr,ru:grammarRu};var abbreviations={bg:abbreviationsBg,ca:abbreviationsCa,da:abbreviationsDa,de:ebbreviationsDe,en:abbreviationsEn,es:abbreviationsEs,fr:abbreviationsFr,he:abbreviationsHe,hu:abbreviationsHu,lt:abbreviationsLt,nl:abbreviationsNl,ru:abbreviationsRu,sl:abbreviationsSl,sv:abbreviationsSv,uk:abbreviationsUk,vi:abbreviationsVi};module.exports={supportedCodes:Object.keys(instructions),instructions:instructions,grammars:grammars,abbreviations:abbreviations}},{"./languages/abbreviations/bg.json":5,"./languages/abbreviations/ca.json":6,"./languages/abbreviations/da.json":7,"./languages/abbreviations/de.json":8,"./languages/abbreviations/en.json":9,"./languages/abbreviations/es.json":10,"./languages/abbreviations/fr.json":11,"./languages/abbreviations/he.json":12,"./languages/abbreviations/hu.json":13,"./languages/abbreviations/lt.json":14,"./languages/abbreviations/nl.json":15,"./languages/abbreviations/ru.json":16,"./languages/abbreviations/sl.json":17,"./languages/abbreviations/sv.json":18,"./languages/abbreviations/uk.json":19,"./languages/abbreviations/vi.json":20,"./languages/grammar/fr.json":21,"./languages/grammar/ru.json":22,"./languages/translations/da.json":23,"./languages/translations/de.json":24,"./languages/translations/en.json":25,"./languages/translations/eo.json":26,"./languages/translations/es-ES.json":27,"./languages/translations/es.json":28,"./languages/translations/fi.json":29,"./languages/translations/fr.json":30,"./languages/translations/he.json":31,"./languages/translations/id.json":32,"./languages/translations/it.json":33,"./languages/translations/ko.json":34,"./languages/translations/my.json":35,"./languages/translations/nl.json":36,"./languages/translations/no.json":37,"./languages/translations/pl.json":38,"./languages/translations/pt-BR.json":39,"./languages/translations/pt-PT.json":40,"./languages/translations/ro.json":41,"./languages/translations/ru.json":42,"./languages/translations/sv.json":43,"./languages/translations/tr.json":44,"./languages/translations/uk.json":45,"./languages/translations/vi.json":46,"./languages/translations/zh-Hans.json":47}],5:[function(_dereq_,module,exports){module.exports={abbreviations:{"междÑнаÑоден":"Ðежд","ÑÑаÑÑи":"СÑÑÑ","вÑзел":"ÐÑз","пазаÑ":"Mkt","ÑвеÑиÑвеÑи":"СвСв","ÑеÑÑÑа":"ÑеÑ","ÑилÑм":"Ум","апаÑÑаменÑи":"ап","езеÑо":"Ðз","ÑвеÑи":"Св","ÑенÑÑÑ":"Ц-Ñ","паÑк":"Ðк","маÑÑÑÑÑ":"Ð-Ñ","плоÑад":"Ðл","наÑионален":"ÐаÑ","ÑÑилиÑе":"УÑ","Ñека":"Рек","поÑок":"Ð-к","Ñайон":"Ð -н","кÑепоÑÑ":"Ð-Ñ","памеÑник":"Ðам","ÑнивеÑÑиÑеÑ":"Уни","ÐÑÑÑ ":"ÐÑ","ÑоÑка":"ТоÑ","планина":"Ðл","Ñело":"Ñ.","виÑоÑини":"виÑ","младÑи":"Ðл","ÑÑанÑиÑ":"С-Ñ","пÑÐ¾Ñ Ð¾Ð´":"ÐÑÐ¾Ñ ","баÑа":"ÐÑ"},classifications:{"ÑоÑиÑане":"ШоÑ","плавен":"Ðл","мÑÑÑо":"ÐÑ","ÑеÑаÑа":"ТеÑ","магиÑÑÑала":"Ð-ла","плоÑад":"Ðл","пеÑ":"ÐеÑ","залив":"Ð-в","пÑÑека":"Ð-ка","плаÑно":"Ðл","ÑлиÑа":"Ул","алеÑ":"Ðл","пеÑÐµÑ Ð¾Ð´Ð½Ð°":"ÐеÑ","ÑоÑка":"ТÑ","задминаване":"Ðадм","кÑÑгово":"ÐÑ","вÑÑÑ ":"ÐÑ","ÑÑд":"Сд","бÑлеваÑд":"ÐÑл","пÑÑ":"ÐÑÑ","ÑкоÑоÑÑна":"СкоÑ","моÑÑ":"Ðо"},directions:{"ÑевеÑозапад":"СÐ","ÑевеÑоизÑок":"СÐ","Ñгозапад":"ЮÐ","ÑгоизÑок":"ЮÐ","ÑевеÑ":"С","изÑок":"Ð","Ñг":"Ю"}}},{}],6:[function(_dereq_,module,exports){module.exports={abbreviations:{comunicacions:"Com.","entitat de població":"Nucli",disseminat:"Diss.","cap de municipi":"Cap",indret:"Indr.",comarca:"Cca.","relleu del litoral":"Lit.",municipi:"Mun.","xarxa hidrogrà fica":"Curs Fluv.",equipament:"Equip.",orografia:"Orogr.",barri:"Barri","edificació":"Edif.","edificació històrica":"Edif. Hist.","entitat descentralitzada":"E.M.D.","element hidrogrà fic":"Hidr."},classifications:{rotonda:"Rot.",carrerada:"Ca.","jardÃ":"J.",paratge:"Pge.",pont:"Pont",lloc:"Lloc",rambla:"Rbla.",cases:"Cses.",barranc:"Bnc.",plana:"Plana","polÃgon":"Pol.",muralla:"Mur.","enllaç":"Ellaç","antiga carretera":"Actra",glorieta:"Glor.",autovia:"Autv.","prolongació":"Prol.","calçada":"Cda.",carretera:"Ctra.",pujada:"Pda.",torrent:"T.",disseminat:"Disse",barri:"B.","cinturó":"Cinto",passera:"Psera",sender:"Send.",carrer:"C.","sèquia":"Sèq.",blocs:"Bloc",rambleta:"Rblt.",partida:"Par.",costa:"Cos.",sector:"Sec.","corraló":"Crral","urbanització":"Urb.",autopista:"Autp.",grup:"Gr.",platja:"Pja.",jardins:"J.",complex:"Comp.",portals:"Ptals",finca:"Fin.",travessera:"Trav.","plaça":"Pl.",travessia:"Trv.","polÃgon industrial":"PI.",passatge:"Ptge.",apartaments:"Apmt.",mirador:"Mira.",antic:"Antic","accés":"Acc.","colònia":"Col.",corriol:"Crol.",portal:"Ptal.",porta:"Pta.",port:"Port","carreró":"Cró.",riera:"Ra.","circumval·lació":"Cval.",baixada:"Bda.",placeta:"Plta.",escala:"Esc.","gran via":"GV",rial:"Rial",conjunt:"Conj.",avinguda:"Av.",esplanada:"Esp.",cantonada:"Cant.",ronda:"Rda.",corredor:"Cdor.",drecera:"Drec.","passadÃs":"PdÃs.",viaducte:"Vdct.",passeig:"Pg.","veïnat":"Veï."},directions:{sudest:"SE",sudoest:"SO",nordest:"NE",nordoest:"NO",est:"E",nord:"N",oest:"O",sud:"S"}}},{}],7:[function(_dereq_,module,exports){module.exports={abbreviations:{skole:"Sk.",ved:"v.",centrum:"C.",sankt:"Skt.",vestre:"v.",hospital:"Hosp.","stræde":"Str.",nordre:"Nr.",plads:"Pl.",universitet:"Uni.","vænge":"vg.",station:"St."},classifications:{avenue:"Ave",gammel:"Gl.",dronning:"Dronn.","sønder":"Sdr.","nørre":"Nr.",vester:"V.",vestre:"V.","øster":"Ã.","østre":"Ã.",boulevard:"Boul."},directions:{"sydøst":"SÃ",nordvest:"NV",syd:"S","nordøst":"NÃ",sydvest:"SV",vest:"V",nord:"N","øst":"Ã"}}},{}],8:[function(_dereq_,module,exports){module.exports={abbreviations:{},classifications:{},directions:{osten:"O",nordosten:"NO","süden":"S",nordwest:"NW",norden:"N","südost":"SO","südwest":"SW",westen:"W"}}},{}],9:[function(_dereq_,module,exports){module.exports={abbreviations:{square:"Sq",centre:"Ctr",sister:"Sr",lake:"Lk",fort:"Ft",route:"Rte",william:"Wm",national:"Natâl",junction:"Jct",center:"Ctr",saint:"St",saints:"SS",station:"Sta",mount:"Mt",junior:"Jr",mountain:"Mtn",heights:"Hts",university:"Univ",school:"Sch",international:"Intâl",apartments:"Apts",crossing:"Xing",creek:"Crk",township:"Twp",downtown:"Dtwn",father:"Fr",senior:"Sr",point:"Pt",river:"Riv",market:"Mkt",village:"Vil",park:"Pk",memorial:"Mem"},classifications:{place:"Pl",circle:"Cir",bypass:"Byp",motorway:"Mwy",crescent:"Cres",road:"Rd",cove:"Cv",lane:"Ln",square:"Sq",street:"St",freeway:"Fwy",walk:"Wk",plaza:"Plz",parkway:"Pky",avenue:"Ave",pike:"Pk",drive:"Dr",highway:"Hwy",footway:"Ftwy",point:"Pt",court:"Ct",terrace:"Ter",walkway:"Wky",alley:"Aly",expressway:"Expy",bridge:"Br",boulevard:"Blvd",turnpike:"Tpk"},directions:{southeast:"SE",northwest:"NW",south:"S",west:"W",southwest:"SW",north:"N",east:"E",northeast:"NE"}}},{}],10:[function(_dereq_,module,exports){module.exports={abbreviations:{segunda:"2ª",octubre:"8bre",doctores:"Drs",doctora:"Dra",internacional:"Intl",doctor:"Dr",segundo:"2º","señorita":"Srta",doctoras:"Drs",primera:"1ª",primero:"1º",san:"S",colonia:"Col","doña":"Dña",septiembre:"7bre",diciembre:"10bre","señor":"Sr",ayuntamiento:"Ayto","señora":"Sra",tercera:"3ª",tercero:"3º",don:"D",santa:"Sta",ciudad:"Cdad",noviembre:"9bre",departamento:"Dep"},classifications:{camino:"Cmno",avenida:"Av",paseo:"Pº",autopista:"Auto",calle:"C",plaza:"Pza",carretera:"Crta"},directions:{este:"E",noreste:"NE",sur:"S",suroeste:"SO",noroeste:"NO",oeste:"O",sureste:"SE",norte:"N"}}},{}],11:[function(_dereq_,module,exports){module.exports={abbreviations:{"allée":"All","aérodrome":"Aérod","aéroport":"Aérop"},classifications:{centrale:"Ctrale",campings:"Camp.",urbains:"Urb.",mineure:"Min.",publique:"Publ.","supérieur":"Sup.","fédération":"Féd.","notre-dame":"ND",saint:"St","centre hospitalier régional":"CHR",exploitation:"Exploit.","général":"Gal",civiles:"Civ.",maritimes:"Marit.",aviation:"Aviat.",iii:"3","archéologique":"Archéo.",musical:"Music.",musicale:"Music.",immeuble:"Imm.",xv:"15","hôtel":"Hôt.",alpine:"Alp.",communale:"Commun.",v:"5",global:"Glob.","université":"Univ.","confédéral":"Conféd.",xx:"20",x:"10",piscine:"Pisc.",dimanche:"di.",fleuve:"Flv",postaux:"Post.",musicienne:"Music.","département":"Dépt","février":"Févr.",municipales:"Munic.",province:"Prov.","communautés":"Commtés",barrage:"Barr.",mercredi:"me.","présidentes":"Pdtes","cafétérias":"Cafét.","théâtral":"Thé.",viticulteur:"Vitic.",poste:"Post.","spécialisée":"Spéc.",agriculture:"Agric.",infirmier:"Infirm.",animation:"Anim.",mondiale:"Mond.","arrêt":"Arr.",zone:"zon.",municipaux:"Munic.",grand:"Gd",janvier:"Janv.",fondateur:"Fond.","première":"1re",municipale:"Munic.",direction:"Dir.",anonyme:"Anon.","départementale":"Dépt",moyens:"Moy.",novembre:"Nov.",jardin:"Jard.",petites:"Pet.","privé":"Priv.",centres:"Ctres",forestier:"Forest.",xiv:"14",africaines:"Afric.",sergent:"Sgt","européenne":"Eur.","privée":"Priv.","café":"Cfé",xix:"19",hautes:"Htes",major:"Mjr",vendredi:"ve.","municipalité":"Munic.","sous-préfecture":"Ss-préf.","spéciales":"Spéc.",secondaires:"Second.",viie:"7e",moyenne:"Moy.",commerciale:"Commerc.","région":"Rég.","américaines":"Amér.","américains":"Amér.",service:"Sce",professeur:"Prof.","départemental":"Dépt","hôtels":"Hôt.",mondiales:"Mond.",ire:"1re",caporal:"Capo.",militaire:"Milit.","lycée d'enseignement professionnel":"LEP",adjudant:"Adj.","médicale":"Méd.","conférences":"Confér.",universelle:"Univ.",xiie:"12e","supérieures":"Sup.",naturel:"Natur.","société nationale":"SN",hospitalier:"Hosp.",culturelle:"Cult.","américain":"Amér.","son altesse royale":"S.A.R.","infirmière":"Infirm.",viii:"8",fondatrice:"Fond.",madame:"Mme","métropolitain":"Métrop.",ophtalmologues:"Ophtalmos",xviie:"18e",viiie:"8e","commerçante":"Commerç.","centre d'enseignement du second degré":"CES",septembre:"Sept.",agriculteur:"Agric.",xiii:"13",pontifical:"Pontif.","cafétéria":"Cafét.",prince:"Pce",vie:"6e",archiduchesse:"Archid.",occidental:"Occ.",spectacles:"Spect.",camping:"Camp.","métro":"Mº",arrondissement:"Arrond.",viticole:"Vitic.",ii:"2","siècle":"Si.",chapelles:"Chap.",centre:"Ctre","sapeur-pompiers":"Sap.-pomp.","établissements":"Ãtabts","société anonyme":"SA",directeurs:"Dir.",vii:"7",culturel:"Cult.",central:"Ctral","métropolitaine":"Métrop.",administrations:"Admin.",amiraux:"Amir.",sur:"s/",premiers:"1ers","provence-alpes-côte d'azur":"PACA","cathédrale":"Cathéd.",iv:"4",postale:"Post.",social:"Soc.","spécialisé":"Spéc.",district:"Distr.",technologique:"Techno.",viticoles:"Vitic.",ix:"9","protégés":"Prot.",historiques:"Hist.",sous:"s/s",national:"Nal",ambassade:"Amb.","cafés":"Cfés",agronomie:"Agro.",sapeurs:"Sap.",petits:"Pet.",monsieur:"M.",boucher:"Bouch.",restaurant:"Restau.","lycée":"Lyc.",urbaine:"Urb.","préfecture":"Préf.",districts:"Distr.",civil:"Civ.","protégées":"Prot.",sapeur:"Sap.","théâtre":"Thé.","collège":"Coll.",mardi:"ma.","mémorial":"Mémor.",africain:"Afric.","républicaine":"Républ.",sociale:"Soc.","spécial":"Spéc.",technologie:"Techno.",charcuterie:"Charc.",commerces:"Commerc.",fluviale:"Flv",parachutistes:"Para.",primaires:"Prim.",directions:"Dir.","présidentiel":"Pdtl",nationales:"Nales","après":"apr.",samedi:"sa.","unité":"U.",xxiii:"23","associé":"Assoc.","électrique":"Ãlectr.",populaire:"Pop.",asiatique:"Asiat.",navigable:"Navig.","présidente":"Pdte",xive:"14e","associés":"Assoc.",pompiers:"Pomp.",agricoles:"Agric.","élém":"Ãlém.","décembre":"Déc.","son altesse":"S.Alt.","après-midi":"a.-m.",mineures:"Min.",juillet:"Juil.",aviatrices:"Aviat.",fondation:"Fond.",pontificaux:"Pontif.",temple:"Tple","européennes":"Eur.","régionale":"Rég.",informations:"Infos",mondiaux:"Mond.",infanterie:"Infant.","archéologie":"Archéo.",dans:"d/",hospice:"Hosp.",spectacle:"Spect.","hôtels-restaurants":"Hôt.-Rest.","hôtel-restaurant":"Hôt.-Rest.","hélicoptère":"hélico",xixe:"19e",cliniques:"Clin.",docteur:"Dr",secondaire:"Second.",municipal:"Munic.","générale":"Gale","château":"Chât.","commerçant":"Commerç.",avril:"Avr.",clinique:"Clin.",urbaines:"Urb.",navale:"Nav.",navigation:"Navig.",asiatiques:"Asiat.",pontificales:"Pontif.",administrative:"Admin.",syndicat:"Synd.",lundi:"lu.",petite:"Pet.",maritime:"Marit.","métros":"Mº",enseignement:"Enseign.",fluviales:"Flv",historique:"Hist.","comtés":"Ctés","résidentiel":"Résid.",international:"Int.","supérieure":"Sup.","centre hospitalier universitaire":"CHU","confédération":"Conféd.",boucherie:"Bouch.",fondatrices:"Fond.","médicaux":"Méd.","européens":"Eur.",orientaux:"Ori.",naval:"Nav.","étang":"Ãtg",provincial:"Prov.",junior:"Jr","départementales":"Dépt",musique:"Musiq.",directrices:"Dir.","maréchal":"Mal",civils:"Civ.","protégé":"Prot.","établissement":"Ãtabt",trafic:"Traf.",aviateur:"Aviat.",archives:"Arch.",africains:"Afric.",maternelle:"Matern.",industrielle:"Ind.",administratif:"Admin.",oriental:"Ori.",universitaire:"Univ.",majeur:"Maj.",haute:"Hte",communal:"Commun.",petit:"Pet.",commune:"Commun.",exploitant:"Exploit.","conférence":"Confér.",monseigneur:"Mgr",pharmacien:"Pharm.",jeudi:"je.",primaire:"Prim.","hélicoptères":"hélicos",agronomique:"Agro.","médecin":"Méd.",ve:"5e",pontificale:"Pontif.",ier:"1er","cinéma":"Ciné",fluvial:"Flv",occidentaux:"Occ.","commerçants":"Commerç.",banque:"Bq",moyennes:"Moy.",pharmacienne:"Pharm.","démocratique":"Dém.","cinémas":"Cinés","spéciale":"Spéc.","présidents":"Pdts",directrice:"Dir.",vi:"6",basse:"Bas.",xve:"15e","état":"Ã.",aviateurs:"Aviat.",majeurs:"Maj.",infirmiers:"Infirm.","église":"Ãgl.","confédérale":"Conféd.",xxie:"21e",comte:"Cte","européen":"Eur.",union:"U.",pharmacie:"Pharm.","infirmières":"Infirm.","comté":"Cté",sportive:"Sport.","deuxième":"2e",xvi:"17",haut:"Ht","médicales":"Méd.","développé":"Dévelop.","bâtiment":"Bât.",commerce:"Commerc.",ive:"4e",associatif:"Assoc.",rural:"Rur.","cimetière":"Cim.","régional":"Rég.",ferroviaire:"Ferr.",vers:"v/","mosquée":"Mosq.",mineurs:"Min.",nautique:"Naut.","châteaux":"Chât.",sportif:"Sport.",mademoiselle:"Mle","école":"Ãc.",doyen:"Doy.",industriel:"Ind.",chapelle:"Chap.","sociétés":"Stés",internationale:"Int.","coopératif":"Coop.",hospices:"Hosp.",xxii:"22",parachutiste:"Para.",alpines:"Alp.",civile:"Civ.",xvie:"17e","états":"Ã.","musée":"Msée",centrales:"Ctrales",globaux:"Glob.","supérieurs":"Sup.",syndicats:"Synd.","archevêque":"Archev.",docteurs:"Drs","bibliothèque":"Biblio.",lieutenant:"Lieut.","république":"Rép.","vétérinaire":"Vét.","départementaux":"Dépt",premier:"1er",fluviaux:"Flv","animé":"Anim.",orientales:"Ori.",technologiques:"Techno.",princesse:"Pse","routière":"Rout.","coopérative":"Coop.",scolaire:"Scol.","écoles":"Ãc.",football:"Foot",territoriale:"Territ.",commercial:"Commerc.",mineur:"Min.","millénaires":"Mill.",association:"Assoc.",catholique:"Cathol.",administration:"Admin.",mairie:"Mair.",portuaire:"Port.",tertiaires:"Terti.","théâtrale":"Thé.",palais:"Pal.","troisième":"3e",directeur:"Dir.","vétérinaires":"Vét.","faculté":"Fac.",occidentales:"Occ.",viticulteurs:"Vitic.",xvii:"18",occidentale:"Occ.",amiral:"Amir.",professionnel:"Profess.",administratives:"Admin.",commerciales:"Commerc.",saints:"Sts",agronomes:"Agro.",stade:"Std","sous-préfet":"Ss-préf.",senior:"Sr",agronome:"Agro.",terrain:"Terr.",catholiques:"Cathol.","résidentielle":"Résid.",grands:"Gds",exploitants:"Exploit.",xiiie:"13e",croix:"Cx","généraux":"Gaux","crédit":"Créd.","cimetières":"Cim.",antenne:"Ant.","médical":"Méd.","collèges":"Coll.",musicien:"Music.",apostolique:"Apost.",postal:"Post.",territorial:"Territ.",urbanisme:"Urb.","préfectorale":"Préf.",fondateurs:"Fond.",information:"Info.","églises":"Ãgl.",ophtalmologue:"Ophtalmo","congrégation":"Congrég.",charcutier:"Charc.","étage":"ét.",consulat:"Consul.",public:"Publ.","ferrée":"Ferr.",matin:"mat.","société anonyme à responsabilité limitée":"SARL",monuments:"Mmts",protection:"Prot.",universel:"Univ.",nationale:"Nale","président":"Pdt",provinciale:"Prov.",agriculteurs:"Agric.","préfectoral":"Préf.",xxe:"20e",alpins:"Alp.",avant:"av.",infirmerie:"Infirm.","deux mil":"2000",rurale:"Rur.",administratifs:"Admin.",octobre:"Oct.",archipel:"Archip.","communauté":"Commté",globales:"Glob.",alpin:"Alp.","numéros":"Nºˢ","lieutenant-colonel":"Lieut.-Col.","jésus-christ":"J.-C.",agricole:"Agric.","sa majesté":"S.Maj.",associative:"Assoc.",xxi:"21","présidentielle":"Pdtle",moyen:"Moy.","fédéral":"Féd.",professionnelle:"Profess.",tertiaire:"Terti.",ixe:"9e","hôpital":"Hôp.",technologies:"Techno.",iiie:"3e","développement":"Dévelop.",monument:"Mmt","forestière":"Forest.","numéro":"Nº",viticulture:"Vitic.","traversière":"Traver.",technique:"Tech.","électriques":"Ãlectr.",militaires:"Milit.",pompier:"Pomp.","américaine":"Amér.","préfet":"Préf.","congrégations":"Congrég.","pâtissier":"Pâtiss.",mondial:"Mond.",ophtalmologie:"Ophtalm.",sainte:"Ste",africaine:"Afric.",aviatrice:"Aviat.",doyens:"Doy.","société":"Sté",majeures:"Maj.",orientale:"Ori.","ministère":"Min.",archiduc:"Archid.",territoire:"Territ.",techniques:"Tech.","île-de-france":"IDF",globale:"Glob.",xe:"10e",xie:"11e",majeure:"Maj.",commerciaux:"Commerc.",maire:"Mair.","spéciaux":"Spéc.",grande:"Gde",messieurs:"MM",colonel:"Col.","millénaire":"Mill.",xi:"11",urbain:"Urb.","fédérale":"Féd.","ferré":"Ferr.","rivière":"Riv.","républicain":"Républ.",grandes:"Gdes","régiment":"Régim.",hauts:"Hts","catégorie":"Catég.",basses:"Bas.",xii:"12",agronomiques:"Agro.",iie:"2e","protégée":"Prot.","sapeur-pompier":"Sap.-pomp."},directions:{"est-nord-est":"ENE", 2500"nord-est":"NE",ouest:"O","sud-est":"SE","est-sud-est":"ESE","nord-nord-est":"NNE",sud:"S","nord-nord-ouest":"NNO","nord-ouest":"NO",nord:"N","ouest-sud-ouest":"OSO","ouest-nord-ouest":"ONO","sud-ouest":"SO","sud-sud-est":"SSE","sud-sud-ouest":"SSO",est:"E"}}},{}],12:[function(_dereq_,module,exports){module.exports={abbreviations:{"ש×ר×ת":"ש×'"},classifications:{},directions:{}}},{}],13:[function(_dereq_,module,exports){module.exports={abbreviations:{},classifications:{},directions:{kelet:"K","északkelet":"ÃK","dél":"D","északnyugat":"ÃNY","észak":"Ã","délkelet":"DK","délnyugat":"DNY",nyugat:"NY"}}},{}],14:[function(_dereq_,module,exports){module.exports={abbreviations:{apartamentai:"Apt","aukÅ¡tumos":"AukÅ¡",centras:"Ctr","ežeras":"Ež",fortas:"Ft",greitkelis:"Grtkl",juosta:"Jst",kaimas:"Km",kalnas:"Kln",kelias:"Kl",kiemelis:"Kml",miestelis:"Mstl","miesto centras":"M.Ctr",mokykla:"Mok",nacionalinis:"Nac",paminklas:"Pmkl",parkas:"Pk",pusratis:"Psrt","sankryža":"Skrž","sesÄ":"SesÄ",skveras:"Skv",stotis:"St","Å¡v":"Å v",tarptautinis:"Trptaut","taÅ¡kas":"TÅ¡k","tÄvas":"TÄv",turgus:"Tgs",universitetas:"Univ","upÄ":"Up",upelis:"Up",vieta:"Vt"},classifications:{"aikÅ¡tÄ":"a.","alÄja":"al.",aplinkkelis:"aplinkl.",autostrada:"auto.",bulvaras:"b.","gatvÄ":"g.",kelias:"kel.","krantinÄ":"krant.",prospektas:"pr.",plentas:"pl.",skersgatvis:"skg.",takas:"tak.",tiltas:"tlt."},directions:{"pietÅ«s":"P",vakarai:"V","Å¡iaurÄ":"Å ","Å¡iaurÄs vakarai":"Å V","pietryÄiai":"PR","Å¡iaurÄs rytai":"Å R",rytai:"R",pietvakariai:"PV"}}},{}],15:[function(_dereq_,module,exports){module.exports={abbreviations:{centrum:"Cntrm",nationaal:"Natâl",berg:"Brg",meer:"Mr",kruising:"Krsng",toetreden:"Ttrdn"},classifications:{bypass:"Pass",brug:"Br",straat:"Str",rechtbank:"Rbank",snoek:"Snk",autobaan:"Baan",terras:"Trrs",punt:"Pt",plaza:"Plz",rijden:"Rijd",parkway:"Pky",inham:"Nham",snelweg:"Weg","halve maan":"Maan",cirkel:"Crkl",laan:"Ln",rijbaan:"Strook",weg:"Weg",lopen:"Lpn",autoweg:"Weg",boulevard:"Blvd",plaats:"Plts",steeg:"Stg",voetpad:"Stoep"},directions:{noordoost:"NO",westen:"W",zuiden:"Z",zuidwest:"ZW",oost:"O",zuidoost:"ZO",noordwest:"NW",noorden:"N"}}},{}],16:[function(_dereq_,module,exports){module.exports={abbreviations:{"апоÑÑола":"ап.","апоÑÑолов":"апп.","великомÑÑеника":"вмÑ","великомÑÑениÑÑ":"вмÑ.","владение":"вл.","гоÑод":"г.","деÑевнÑ":"д.","имени":"им.","мÑÑеника":"мÑ.","мÑÑеников":"мÑÑ.","мÑÑениÑ":"мÑÑ.","мÑÑениÑÑ":"мÑ.","озеÑо":"о.","поÑÑлок":"п.","пÑеподобного":"пÑп.","пÑеподобнÑÑ ":"пÑпп.","Ñека":"Ñ.","ÑвÑÑиÑелей":"ÑвÑÑ.","ÑвÑÑиÑелÑ":"ÑвÑ.","ÑвÑÑенномÑÑеника":"ÑÑмÑ.","ÑвÑÑенномÑÑеников":"ÑÑмÑÑ.","ÑÑанÑиÑ":"ÑÑ.","ÑÑаÑÑок":"ÑÑ."},classifications:{"пÑоезд":"пÑ-д","пÑоÑпекÑ":"пÑ.","пеÑеÑлок":"пеÑ.","набеÑежнаÑ":"наб.","плоÑадÑ":"пл.","ÑоÑÑе":"Ñ.","бÑлÑваÑ":"б.","ÑÑпик":"ÑÑп.","ÑлиÑа":"Ñл."},directions:{"воÑÑок":"Ð","ÑевеÑо-воÑÑок":"СÐ","Ñго-воÑÑок":"ЮÐ","Ñго-запад":"ЮÐ","ÑевеÑо-запад":"СÐ","ÑевеÑ":"С","запад":"Ð","Ñг":"Ю"}}},{}],17:[function(_dereq_,module,exports){module.exports={abbreviations:{},classifications:{},directions:{vzhod:"V",severovzhod:"SV",jug:"J",severozahod:"SZ",sever:"S",jugovzhod:"JV",jugozahod:"JZ",zahod:"Z"}}},{}],18:[function(_dereq_,module,exports){module.exports={abbreviations:{sankta:"s:ta",gamla:"G:la",sankt:"s:t"},classifications:{Bro:"Br"},directions:{norr:"N","sydöst":"SO","väster":"V","öster":"O","nordväst":"NV","sydväst":"SV","söder":"S","nordöst":"NO"}}},{}],19:[function(_dereq_,module,exports){module.exports={abbreviations:{},classifications:{},directions:{"ÑÑ Ñд":"Ð¡Ñ ","пÑвнÑÑний ÑÑ Ñд":"ÐÐ½Ð¡Ñ ","пÑвденÑ":"Ðд","пÑвнÑÑний Ð·Ð°Ñ Ñд":"ÐнÐд","пÑвнÑÑ":"Ðн","пÑвденний ÑÑ Ñд":"ÐÐ´Ð¡Ñ ","пÑвденний Ð·Ð°Ñ Ñд":"ÐдÐÑ ","Ð·Ð°Ñ Ñд":"ÐÑ "}}},{}],20:[function(_dereq_,module,exports){module.exports={abbreviations:{"viá»n bảo tà ng":"VBT","thá» trấn":"Tt","Äại há»c":"ÄH","cÄn cứ không quan":"CCKQ","câu lạc bá»":"CLB","bưu Äiá»n":"BÄ","khách sạn":"KS","khu du lá»ch":"KDL","khu công nghiá»p":"KCN","khu nghá» mát":"KNM","thá» xã":"Tx","khu chung cư":"KCC","phi trưá»ng":"PT","trung tâm":"TT","tá»ng công ty":"TCty","trung há»c cÆ¡ sá»":"THCS","sân bay quá»c tế":"SBQT","trung há»c phá» thông":"THPT","cao Äẳng":"CÄ","công ty":"Cty","sân bay":"SB","thà nh phá»":"Tp","công viên":"CV","sân váºn Äá»ng":"SVÄ","linh mục":"LM","vưá»n quá»c gia":"VQG"},classifications:{"huyá»n lá»":"HL","ÄÆ°á»ng tá»nh":"ÄT","quá»c lá»":"QL","xa lá»":"XL","hương lá»":"HL","tá»nh lá»":"TL","ÄÆ°á»ng huyá»n":"ÄH","ÄÆ°á»ng cao tá»c":"ÄCT","Äại lá»":"ÄL","viá»t nam":"VN","quảng trưá»ng":"QT","ÄÆ°á»ng bá»":"ÄB"},directions:{"tây":"T",nam:"N","Äông nam":"ÄN","Äông bắc":"ÄB","tây nam":"TN","Äông":"Ä","bắc":"B"}}},{}],21:[function(_dereq_,module,exports){module.exports={meta:{regExpFlags:"gi"},v5:{article:[["^ Acc[èe]s "," lâaccès "],["^ Aire "," lâaire "],["^ All[ée]e "," lâallée "],["^ Anse "," lâanse "],["^ (L['â])?Autoroute "," lâautoroute "],["^ Avenue "," lâavenue "],["^ Barreau "," le barreau "],["^ Boulevard "," le boulevard "],["^ Chemin "," le chemin "],["^ Petit[\\- ]Chemin "," le petit chemin "],["^ Cit[ée] "," la cité "],["^ Clos "," le clos "],["^ Corniche "," la corniche "],["^ Cour "," la cour "],["^ Cours "," le cours "],["^ D[ée]viation "," la déviation "],["^ Entr[ée]e "," lâentrée "],["^ Esplanade "," lâesplanade "],["^ Galerie "," la galerie "],["^ Impasse "," lâimpasse "],["^ Lotissement "," le lotissement "],["^ Mont[ée]e "," la montée "],["^ Parc "," le parc "],["^ Parvis "," le parvis "],["^ Passage "," le passage "],["^ Place "," la place "],["^ Petit[\\- ]Pont "," le petit-pont "],["^ Pont "," le pont "],["^ Promenade "," la promenade "],["^ Quai "," le quai "],["^ Rocade "," la rocade "],["^ Rond[\\- ]?Point "," le rond-point "],["^ Route "," la route "],["^ Rue "," la rue "],["^ Grande Rue "," la grande rue "],["^ Sente "," la sente "],["^ Sentier "," le sentier "],["^ Sortie "," la sortie "],["^ Souterrain "," le souterrain "],["^ Square "," le square "],["^ Terrasse "," la terrasse "],["^ Traverse "," la traverse "],["^ Tunnel "," le tunnel "],["^ Viaduc "," le viaduc "],["^ Villa "," la villa "],["^ Village "," le village "],["^ Voie "," la voie "],[" ([dl])'"," $1â"]],preposition:[["^ Le "," du "],["^ Les "," des "],["^ La "," de La "],["^ Acc[èe]s "," de lâaccès "],["^ Aire "," de lâaire "],["^ All[ée]e "," de lâallée "],["^ Anse "," de lâanse "],["^ (L['â])?Autoroute "," de lâautoroute "],["^ Avenue "," de lâavenue "],["^ Barreau "," du barreau "],["^ Boulevard "," du boulevard "],["^ Chemin "," du chemin "],["^ Petit[\\- ]Chemin "," du petit chemin "],["^ Cit[ée] "," de la cité "],["^ Clos "," du clos "],["^ Corniche "," de la corniche "],["^ Cour "," de la cour "],["^ Cours "," du cours "],["^ D[ée]viation "," de la déviation "],["^ Entr[ée]e "," de lâentrée "],["^ Esplanade "," de lâesplanade "],["^ Galerie "," de la galerie "],["^ Impasse "," de lâimpasse "],["^ Lotissement "," du lotissement "],["^ Mont[ée]e "," de la montée "],["^ Parc "," du parc "],["^ Parvis "," du parvis "],["^ Passage "," du passage "],["^ Place "," de la place "],["^ Petit[\\- ]Pont "," du petit-pont "],["^ Pont "," du pont "],["^ Promenade "," de la promenade "],["^ Quai "," du quai "],["^ Rocade "," de la rocade "],["^ Rond[\\- ]?Point "," du rond-point "],["^ Route "," de la route "],["^ Rue "," de la rue "],["^ Grande Rue "," de la grande rue "],["^ Sente "," de la sente "],["^ Sentier "," du sentier "],["^ Sortie "," de la sortie "],["^ Souterrain "," du souterrain "],["^ Square "," du square "],["^ Terrasse "," de la terrasse "],["^ Traverse "," de la traverse "],["^ Tunnel "," du tunnel "],["^ Viaduc "," du viaduc "],["^ Villa "," de la villa "],["^ Village "," du village "],["^ Voie "," de la voie "],["^ ([AÃÃEÃÃÃÃIÃÃOÃUÃÃÃYŸÃÅ])"," dâ$1"],["^ (\\S)"," de $1"],[" ([dl])'"," $1â"]],rotary:[["^ Le "," le rond-point du "],["^ Les "," le rond-point des "],["^ La "," le rond-point de La "],["^ Acc[èe]s "," le rond-point de lâaccès "],["^ Aire "," le rond-point de lâaire "],["^ All[ée]e "," le rond-point de lâallée "],["^ Anse "," le rond-point de lâanse "],["^ (L['â])?Autoroute "," le rond-point de lâautoroute "],["^ Avenue "," le rond-point de lâavenue "],["^ Barreau "," le rond-point du barreau "],["^ Boulevard "," le rond-point du boulevard "],["^ Chemin "," le rond-point du chemin "],["^ Petit[\\- ]Chemin "," le rond-point du petit chemin "],["^ Cit[ée] "," le rond-point de la cité "],["^ Clos "," le rond-point du clos "],["^ Corniche "," le rond-point de la corniche "],["^ Cour "," le rond-point de la cour "],["^ Cours "," le rond-point du cours "],["^ D[ée]viation "," le rond-point de la déviation "],["^ Entr[ée]e "," le rond-point de lâentrée "],["^ Esplanade "," le rond-point de lâesplanade "],["^ Galerie "," le rond-point de la galerie "],["^ Impasse "," le rond-point de lâimpasse "],["^ Lotissement "," le rond-point du lotissement "],["^ Mont[ée]e "," le rond-point de la montée "],["^ Parc "," le rond-point du parc "],["^ Parvis "," le rond-point du parvis "],["^ Passage "," le rond-point du passage "],["^ Place "," le rond-point de la place "],["^ Petit[\\- ]Pont "," le rond-point du petit-pont "],["^ Pont "," le rond-point du pont "],["^ Promenade "," le rond-point de la promenade "],["^ Quai "," le rond-point du quai "],["^ Rocade "," le rond-point de la rocade "],["^ Rond[\\- ]?Point "," le rond-point "],["^ Route "," le rond-point de la route "],["^ Rue "," le rond-point de la rue "],["^ Grande Rue "," le rond-point de la grande rue "],["^ Sente "," le rond-point de la sente "],["^ Sentier "," le rond-point du sentier "],["^ Sortie "," le rond-point de la sortie "],["^ Souterrain "," le rond-point du souterrain "],["^ Square "," le rond-point du square "],["^ Terrasse "," le rond-point de la terrasse "],["^ Traverse "," le rond-point de la traverse "],["^ Tunnel "," le rond-point du tunnel "],["^ Viaduc "," le rond-point du viaduc "],["^ Villa "," le rond-point de la villa "],["^ Village "," le rond-point du village "],["^ Voie "," le rond-point de la voie "],["^ ([AÃÃEÃÃÃÃIÃÃOÃUÃÃÃYŸÃÅ])"," le rond-point dâ$1"],["^ (\\S)"," le rond-point de $1"],[" ([dl])'"," $1â"]],arrival:[["^ Le "," au "],["^ Les "," aux "],["^ La "," à La "],["^ (\\S)"," à $1"],[" ([dl])'"," $1â"]]}}},{}],22:[function(_dereq_,module,exports){module.exports={meta:{regExpFlags:""},v5:{accusative:[['^ ([«"])'," ÑÑаÑÑа $1"],["^ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1ÑÑ Ð°Ð»Ð»ÐµÑ "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ÑÑ Ð°Ð»Ð»ÐµÑ "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ÑÑ Ð°Ð»Ð»ÐµÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1-Ñ $2ÑÑ Ð°Ð»Ð»ÐµÑ "],["^ [Ðа]Ð»Ð»ÐµÑ "," Ð°Ð»Ð»ÐµÑ "],["^ (\\S+)аÑ-(\\S+)Ð°Ñ [УÑ]лиÑа "," $1ÑÑ-$2ÑÑ ÑлиÑÑ "],["^ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ÑÑ ÑлиÑÑ "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ÑÑ ÑлиÑÑ "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ÑÑ ÑлиÑÑ "],["^ (\\d+)-Ñ [УÑ]лиÑа "," $1-Ñ ÑлиÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1-Ñ $2ÑÑ ÑлиÑÑ "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ÑÑ $2ÑÑ ÑлиÑÑ "],["^ (\\S+[вн])а [УÑ]лиÑа "," $1Ñ ÑлиÑÑ "],["^ (\\S+)Ð°Ñ (\\S+[вн])а [УÑ]лиÑа "," $1ÑÑ $2Ñ ÑлиÑÑ "],["^ ÐанÑÑÐ»Ð°Ð²Ð»Ñ [УÑ]лиÑа "," ÐанÑÑÐ»Ð°Ð²Ð»Ñ ÑлиÑÑ "],["^ ÐобÑÑÐ½Ñ [УÑ]лиÑа "," ÐобÑÑÐ½Ñ ÑлиÑÑ "],["^ ÐÑдогоÑа [УÑ]лиÑа "," ÐÑдогоÑÑ ÑлиÑÑ "],["^ [УÑ]лиÑа "," ÑлиÑÑ "],["^ (\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-Ñ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\d+)-(\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-$2-Ñ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ÑÑ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ÑÑ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ÑÑ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-Ñ $2ÑÑ Ð»Ð¸Ð½Ð¸Ñ "],["^ [Ðл]Ð¸Ð½Ð¸Ñ "," Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\d+)-(\\d+)-Ñ [Ðл]инии "," $1-$2-Ñ Ð»Ð¸Ð½Ð¸Ð¸ "],["^ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ÑÑ Ð½Ð°Ð±ÐµÑежнÑÑ "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ÑÑ Ð½Ð°Ð±ÐµÑежнÑÑ "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ÑÑ Ð½Ð°Ð±ÐµÑежнÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1-Ñ $2ÑÑ Ð½Ð°Ð±ÐµÑежнÑÑ "],["^ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," набеÑежнÑÑ "],["^ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1ÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ (\\S+[вн])а [Ðп]лоÑÐ°Ð´Ñ "," $1Ñ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1-Ñ $2ÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ [Ðп]лоÑÐ°Ð´Ñ "," плоÑÐ°Ð´Ñ "],["^ (\\S+)Ð°Ñ [Ðп]ÑоÑека "," $1ÑÑ Ð¿ÑоÑÐµÐºÑ "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ÑÑ Ð¿ÑоÑÐµÐºÑ "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ÑÑ Ð¿ÑоÑÐµÐºÑ "],["^ (\\d+)-Ñ [Ðп]ÑоÑека "," $1-Ñ Ð¿ÑоÑÐµÐºÑ "],["^ [Ðп]ÑоÑека "," пÑоÑÐµÐºÑ "],["^ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1ÑÑ ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ÑÑ ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ÑÑ ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1-Ñ $2ÑÑ ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ [ÐÑ]ÑÑакада "," ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ÑÑ $2ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1-Ñ $2ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ [Ðм]агиÑÑÑÐ°Ð»Ñ "," магиÑÑÑÐ°Ð»Ñ "],["^ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1ÑÑ ÑазвÑÐ·ÐºÑ "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ÑÑ ÑазвÑÐ·ÐºÑ "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ÑÑ ÑазвÑÐ·ÐºÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1-Ñ $2ÑÑ ÑазвÑÐ·ÐºÑ "],["^ [Ð Ñ]азвÑзка "," ÑазвÑÐ·ÐºÑ "],["^ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1ÑÑ ÑÑаÑÑÑ "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ÑÑ ÑÑаÑÑÑ "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ÑÑ ÑÑаÑÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1-Ñ $2ÑÑ ÑÑаÑÑÑ "],["^ [ТÑ]ÑаÑÑа "," ÑÑаÑÑÑ "],["^ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ÑÑ $2доÑÐ¾Ð³Ñ "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ÑÑ $2доÑÐ¾Ð³Ñ "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ÑÑ $2доÑÐ¾Ð³Ñ "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ÑÑ $2ÑÑ $3доÑÐ¾Ð³Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1-Ñ $2ÑÑ $3доÑÐ¾Ð³Ñ "],["^ ([Ðа]вÑо)?[Ðд]оÑога "," $1доÑÐ¾Ð³Ñ "],["^ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1ÑÑ Ð´Ð¾ÑÐ¾Ð¶ÐºÑ "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ÑÑ Ð´Ð¾ÑÐ¾Ð¶ÐºÑ "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ÑÑ Ð´Ð¾ÑÐ¾Ð¶ÐºÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1-Ñ $2ÑÑ Ð´Ð¾ÑÐ¾Ð¶ÐºÑ "],["^ [Ðд]оÑожка "," доÑÐ¾Ð¶ÐºÑ "],["^ (\\S+)Ð°Ñ [Ðк]оÑа "," $1ÑÑ ÐºÐ¾ÑÑ "],["^ (\\S+)Ð°Ñ [Ð¥Ñ ]оÑда "," $1ÑÑ Ñ Ð¾ÑÐ´Ñ "],["^ [Ðд]Ñбл[еÑ]Ñ "," дÑблÑÑ "]],dative:[['^ ([«"])'," ÑÑаÑÑа $1"],["^ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1ой аллее "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1Ñей аллее "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ей аллее "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1-й $2ой аллее "],["^ [Ðа]Ð»Ð»ÐµÑ "," аллее "],["^ (\\S+)аÑ-(\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой-$2ой ÑлиÑе "],["^ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой ÑлиÑе "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1Ñей ÑлиÑе "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ей ÑлиÑе "],["^ (\\d+)-Ñ [УÑ]лиÑа "," $1-й ÑлиÑе "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1-й $2ой ÑлиÑе "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой $2ой ÑлиÑе "],["^ (\\S+[вн])а [УÑ]лиÑа "," $1ой ÑлиÑе "],["^ (\\S+)Ð°Ñ (\\S+[вн])а [УÑ]лиÑа "," $1ой $2ой ÑлиÑе "],["^ ÐанÑÑÐ»Ð°Ð²Ð»Ñ [УÑ]лиÑа "," ÐанÑÑлавлей ÑлиÑе "],["^ ÐобÑÑÐ½Ñ [УÑ]лиÑа "," ÐобÑÑней ÑлиÑе "],["^ ÐÑдогоÑа [УÑ]лиÑа "," ÐÑдогоÑей ÑлиÑе "],["^ [УÑ]лиÑа "," ÑлиÑе "],["^ (\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-$2-й линии "],["^ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ой линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1Ñей линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ей линии "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й $2ой линии "],["^ [Ðл]Ð¸Ð½Ð¸Ñ "," линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]инии "," $1-$2-й линиÑм "],["^ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ой набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1Ñей набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ей набеÑежной "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1-й $2ой набеÑежной "],["^ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," набеÑежной "],["^ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1Ñей плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ей плоÑади "],["^ (\\S+[вн])а [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1-й $2ой плоÑади "],["^ [Ðп]лоÑÐ°Ð´Ñ "," плоÑади "],["^ (\\S+)Ð°Ñ [Ðп]ÑоÑека "," $1ой пÑоÑеке "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1Ñей пÑоÑеке "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ей пÑоÑеке "],["^ (\\d+)-Ñ [Ðп]ÑоÑека "," $1-й пÑоÑеке "],["^ [Ðп]ÑоÑека "," пÑоÑеке "],["^ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1ой ÑÑÑакаде "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1Ñей ÑÑÑакаде "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ей ÑÑÑакаде "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1-й $2ой ÑÑÑакаде "],["^ [ÐÑ]ÑÑакада "," ÑÑÑакаде "],["^ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1Ñей магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ей магиÑÑÑали "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой $2ой магиÑÑÑали "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1-й $2ой магиÑÑÑали "],["^ [Ðм]агиÑÑÑÐ°Ð»Ñ "," магиÑÑÑали "],["^ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1ой ÑазвÑзке "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1Ñей ÑазвÑзке "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ей ÑазвÑзке "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1-й $2ой ÑазвÑзке "],["^ [Ð Ñ]азвÑзка "," ÑазвÑзке "],["^ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1ой ÑÑаÑÑе "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1Ñей ÑÑаÑÑе "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ей ÑÑаÑÑе "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1-й $2ой ÑÑаÑÑе "],["^ [ТÑ]ÑаÑÑа "," ÑÑаÑÑе "],["^ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2доÑоге "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1Ñей $2доÑоге "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ей $2доÑоге "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2ой $3доÑоге "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1-й $2ой $3доÑоге "],["^ ([Ðа]вÑо)?[Ðд]оÑога "," $1доÑоге "],["^ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1ой доÑожке "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1Ñей доÑожке "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ей доÑожке "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1-й $2ой доÑожке "],["^ [Ðд]оÑожка "," доÑожке "],["^ (\\S+)во [Ðп]оле "," $1Ð²Ñ Ð¿Ð¾Ð»Ñ "],["^ (\\S+)Ð°Ñ [Ðк]оÑа "," $1ой коÑе "],["^ (\\S+)Ð°Ñ [Ð¥Ñ ]оÑда "," $1ой Ñ Ð¾Ñде "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑок "," $1Ð¾Ð¼Ñ Ð¿ÑоÑÐ¾ÐºÑ "],["^ (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1ÐµÐ¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ð¾Ð¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ð¾Ð¼Ñ $2Ñ Ð±ÑлÑваÑÑ "],["^ (\\d+)-й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1-Ð¼Ñ $2Ñ Ð±ÑлÑваÑÑ "],["^ [Ðб]ÑлÑÐ²Ð°Ñ "," бÑлÑваÑÑ "],["^ [Ðд]Ñбл[еÑ]Ñ "," дÑблÑÑÑ "],["^ (\\S+н)ий [Ðз]аезд "," $1ÐµÐ¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й [Ðз]аезд "," $1Ð¾Ð¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+[еÑо]в) [Ðз]аезд "," $1Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+[иÑ]н) [Ðз]аезд "," $1Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðз]аезд "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðз]аезд "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðз]аезд "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðз]аезд "," $1Ð¾Ð¼Ñ $2Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðз]аезд "," $1Ð¾Ð¼Ñ $2Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий [Ðз]аезд "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðз]аезд "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðз]аезд "," $1-Ð¼Ñ $2Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðз]аезд "," $1-Ð¼Ñ $2Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ [Ðз]аезд "," Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий [Ðм]оÑÑ "," $1ÐµÐ¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+[еÑо]в) [Ðм]оÑÑ "," $1Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+[иÑ]н) [Ðм]оÑÑ "," $1Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ $2Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ $2Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й [Ðм]оÑÑ "," $1-Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й (\\S+н)ий [Ðм]оÑÑ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1-Ð¼Ñ $2Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1-Ð¼Ñ $2Ñ Ð¼Ð¾ÑÑÑ "],["^ [Ðм]оÑÑ "," моÑÑÑ "],["^ (\\S+н)ий [Ðо]Ð±Ñ Ð¾Ð´ "," $1ÐµÐ¼Ñ Ð¾Ð±Ñ Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й [Ðо]Ð±Ñ Ð¾Ð´ "," $1Ð¾Ð¼Ñ Ð¾Ð±Ñ Ð¾Ð´Ñ "],["^ [Ðо]Ð±Ñ Ð¾Ð´ "," Ð¾Ð±Ñ Ð¾Ð´Ñ "],["^ (\\S+н)ий [Ðп]аÑк "," $1ÐµÐ¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+)[иоÑ]й [Ðп]аÑк "," $1Ð¾Ð¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+[иÑ]н) [Ðп]аÑк "," $1Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]аÑк "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]аÑк "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]аÑк "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]аÑк "," $1Ð¾Ð¼Ñ $2Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\d+)-й (\\S+н)ий [Ðп]аÑк "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]аÑк "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]аÑк "," $1-Ð¼Ñ $2Ñ Ð¿Ð°ÑÐºÑ "],["^ [Ðп]аÑк "," паÑÐºÑ "],["^ (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1омÑ-$2Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2омÑ-$3Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+н)ий [Ðп]еÑеÑлок "," $1ÐµÐ¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й [Ðп]еÑеÑлок "," $1-Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+н)ий [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ [Ðп]еÑеÑлок "," пеÑеÑÐ»ÐºÑ "],["^ [Ðп]одÑезд "," подÑÐµÐ·Ð´Ñ "],["^ (\\S+[еÑо]в)-(\\S+)[иоÑ]й [Ðп]Ñоезд "," $1Ñ-$2Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий [Ðп]Ñоезд "," $1ÐµÐ¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+[еÑо]в) [Ðп]Ñоезд "," $1Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+[иÑ]н) [Ðп]Ñоезд "," $1Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й [Ðп]Ñоезд "," $1-Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий [Ðп]Ñоезд "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1-Ð¼Ñ $2Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1-Ð¼Ñ $2Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-Ð¼Ñ $2ÐµÐ¼Ñ $3Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ $3Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ [Ðп]Ñоезд "," пÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ÐµÐ¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ð¾Ð¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-Ð¼Ñ $2Ñ Ð¿ÑоÑпекÑÑ "],["^ [Ðп]ÑоÑÐ¿ÐµÐºÑ "," пÑоÑпекÑÑ "],["^ (\\S+н)ий [Ðп]ÑÑепÑовод "," $1ÐµÐ¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1Ð¾Ð¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1-Ð¼Ñ $2Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ [Ðп]ÑÑепÑовод "," пÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+н)ий [СÑ]пÑÑк "," $1ÐµÐ¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+[еÑо]в) [СÑ]пÑÑк "," $1Ñ ÑпÑÑÐºÑ "],["^ (\\S+[иÑ]н) [СÑ]пÑÑк "," $1Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ $2Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ $2Ñ ÑпÑÑÐºÑ "],["^ (\\d+)-й (\\S+н)ий [СÑ]пÑÑк "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑпÑÑÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑпÑÑÐºÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1-Ð¼Ñ $2Ñ ÑпÑÑÐºÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1-Ð¼Ñ $2Ñ ÑпÑÑÐºÑ "],["^ [СÑ]пÑÑк "," ÑпÑÑÐºÑ "],["^ (\\S+н)ий [СÑ]Ñезд "," $1ÐµÐ¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й [СÑ]Ñезд "," $1Ð¾Ð¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+[иÑ]н) [СÑ]Ñезд "," $1Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]Ñезд "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]Ñезд "," $1Ð¾Ð¼Ñ $2Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий [СÑ]Ñезд "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]Ñезд "," $1-Ð¼Ñ $2Ñ ÑÑÐµÐ·Ð´Ñ "],["^ [СÑ]Ñезд "," ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ÐµÐ¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ð¾Ð¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ð¾Ð¼Ñ $2Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-Ð¼Ñ $2Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ÐµÐ¼Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ ÑÑакÑÑ "],["^ (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1Ñ ÑÑакÑÑ "],["^ (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑÑакÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ $2Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ $2Ñ ÑÑакÑÑ "],["^ (\\d+)-й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑÑакÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑакÑÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1-Ð¼Ñ $2Ñ ÑÑакÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1-Ð¼Ñ $2Ñ ÑÑакÑÑ "],["^ [ТÑ]ÑÐ°ÐºÑ "," ÑÑакÑÑ "],["^ (\\S+н)ий [ТÑ]Ñпик "," $1ÐµÐ¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+[еÑо]в) [ТÑ]Ñпик "," $1Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+[иÑ]н) [ТÑ]Ñпик "," $1Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ $2Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ $2Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й [ТÑ]Ñпик "," $1-Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й (\\S+н)ий [ТÑ]Ñпик "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1-Ð¼Ñ $2Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1-Ð¼Ñ $2Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ [ТÑ]Ñпик "," ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1Ð¼Ñ $2колÑÑÑ "],["^ (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1Ð¼Ñ $2колÑÑÑ "],["^ (\\S+[ео])е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1Ð¼Ñ $2Ð¼Ñ $3колÑÑÑ "],["^ (\\S+Ñе) (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1Ð¼Ñ $2Ð¼Ñ $3колÑÑÑ "],["^ (\\d+)-е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-Ð¼Ñ $2Ð¼Ñ $3колÑÑÑ "],["^ (\\d+)-е (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-Ð¼Ñ $2Ð¼Ñ $3колÑÑÑ "],["^ ([Ðп]олÑ)?[Ðк]олÑÑо "," $1колÑÑÑ "],["^ (\\S+[ео])е [ШÑ]оÑÑе "," $1Ð¼Ñ ÑоÑÑе "],["^ (\\S+Ñе) [ШÑ]оÑÑе "," $1Ð¼Ñ ÑоÑÑе "],["^ (\\S+[ео])е (\\S+[ео])е [ШÑ]оÑÑе "," $1Ð¼Ñ $2Ð¼Ñ ÑоÑÑе "],["^ (\\S+Ñе) (\\S+[ео])е [ШÑ]оÑÑе "," $1Ð¼Ñ $2Ð¼Ñ ÑоÑÑе "],["^ (\\d+)-е (\\S+[ео])е [ШÑ]оÑÑе "," $1-Ð¼Ñ $2Ð¼Ñ ÑоÑÑе "],["^ (\\d+)-е (\\S+Ñе) [ШÑ]оÑÑе "," $1-Ð¼Ñ $2Ð¼Ñ ÑоÑÑе "],[" ([ТÑ])ÑеÑÐ¾Ð¼Ñ "," $1ÑеÑÑÐµÐ¼Ñ "],["([жÑ])Ð¾Ð¼Ñ ","$1ÑÐµÐ¼Ñ "],["([жÑ])ой ","$1ей "]], 2501genitive:[['^ ([«"])'," ÑÑаÑÑа $1"],["^ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1ой аллеи "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1Ñей аллеи "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ей аллеи "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1-й $2ой аллеи "],["^ [Ðа]Ð»Ð»ÐµÑ "," аллеи "],["^ (\\S+)аÑ-(\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой-$2ой ÑлиÑÑ "],["^ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой ÑлиÑÑ "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1Ñей ÑлиÑÑ "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ей ÑлиÑÑ "],["^ (\\d+)-Ñ [УÑ]лиÑа "," $1-й ÑлиÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1-й $2ой ÑлиÑÑ "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой $2ой ÑлиÑÑ "],["^ (\\S+[вн])а [УÑ]лиÑа "," $1ой ÑлиÑÑ "],["^ (\\S+)Ð°Ñ (\\S+[вн])а [УÑ]лиÑа "," $1ой $2ой ÑлиÑÑ "],["^ ÐанÑÑÐ»Ð°Ð²Ð»Ñ [УÑ]лиÑа "," ÐанÑÑлавлей ÑлиÑÑ "],["^ ÐобÑÑÐ½Ñ [УÑ]лиÑа "," ÐобÑÑней ÑлиÑÑ "],["^ ÐÑдогоÑа [УÑ]лиÑа "," ÐÑдогоÑей ÑлиÑÑ "],["^ [УÑ]лиÑа "," ÑлиÑÑ "],["^ (\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-$2-й линии "],["^ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ой линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1Ñей линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ей линии "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й $2ой линии "],["^ [Ðл]Ð¸Ð½Ð¸Ñ "," линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]инии "," $1-$2-й линий "],["^ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ой набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1Ñей набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ей набеÑежной "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1-й $2ой набеÑежной "],["^ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," набеÑежной "],["^ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1Ñей плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ей плоÑади "],["^ (\\S+[вн])а [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1-й $2ой плоÑади "],["^ [Ðп]лоÑÐ°Ð´Ñ "," плоÑади "],["^ (\\S+)Ð°Ñ [Ðп]ÑоÑека "," $1ой пÑоÑеки "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1Ñей пÑоÑеки "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ей пÑоÑеки "],["^ (\\d+)-Ñ [Ðп]ÑоÑека "," $1-й пÑоÑеки "],["^ [Ðп]ÑоÑека "," пÑоÑеки "],["^ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1ой ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1Ñей ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ей ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1-й $2ой ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ [ÐÑ]ÑÑакада "," ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1Ñей магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ей магиÑÑÑали "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой $2ой магиÑÑÑали "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1-й $2ой магиÑÑÑали "],["^ [Ðм]агиÑÑÑÐ°Ð»Ñ "," магиÑÑÑали "],["^ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1ой ÑазвÑзки "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1Ñей ÑазвÑзки "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ей ÑазвÑзки "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1-й $2ой ÑазвÑзки "],["^ [Ð Ñ]азвÑзка "," ÑазвÑзки "],["^ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1ой ÑÑаÑÑÑ "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1Ñей ÑÑаÑÑÑ "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ей ÑÑаÑÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1-й $2ой ÑÑаÑÑÑ "],["^ [ТÑ]ÑаÑÑа "," ÑÑаÑÑÑ "],["^ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2доÑоги "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1Ñей $2доÑоги "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ей $2доÑоги "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2ой $3доÑоги "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1-й $2ой $3доÑоги "],["^ ([Ðа]вÑо)?[Ðд]оÑога "," $1доÑоги "],["^ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1ой доÑожки "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1Ñей доÑожки "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ей доÑожки "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1-й $2ой доÑожки "],["^ [Ðд]оÑожка "," доÑожки "],["^ (\\S+)во [Ðп]оле "," $1ва Ð¿Ð¾Ð»Ñ "],["^ (\\S+)Ð°Ñ [Ðк]оÑа "," $1ой коÑÑ "],["^ (\\S+)Ð°Ñ [Ð¥Ñ ]оÑда "," $1ой Ñ Ð¾ÑÐ´Ñ "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑок "," $1ого пÑоÑока "],["^ (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1его бÑлÑваÑа "],["^ (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого бÑлÑваÑа "],["^ (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого бÑлÑваÑа "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого $2его бÑлÑваÑа "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1его $2ого бÑлÑваÑа "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого $2ого бÑлÑваÑа "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого $2ого бÑлÑваÑа "],["^ (\\d+)-й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1-го $2его бÑлÑваÑа "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1-го $2ого бÑлÑваÑа "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1-го $2ого бÑлÑваÑа "],["^ [Ðб]ÑлÑÐ²Ð°Ñ "," бÑлÑваÑа "],["^ [Ðд]Ñбл[еÑ]Ñ "," дÑблÑÑа "],["^ (\\S+н)ий [Ðз]аезд "," $1его заезда "],["^ (\\S+)[иоÑ]й [Ðз]аезд "," $1ого заезда "],["^ (\\S+[еÑо]в) [Ðз]аезд "," $1а заезда "],["^ (\\S+[иÑ]н) [Ðз]аезд "," $1а заезда "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðз]аезд "," $1ого $2его заезда "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðз]аезд "," $1его $2ого заезда "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðз]аезд "," $1ого $2ого заезда "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðз]аезд "," $1ого $2а заезда "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðз]аезд "," $1ого $2а заезда "],["^ (\\d+)-й (\\S+н)ий [Ðз]аезд "," $1-го $2его заезда "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðз]аезд "," $1-го $2ого заезда "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðз]аезд "," $1-го $2а заезда "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðз]аезд "," $1-го $2а заезда "],["^ [Ðз]аезд "," заезда "],["^ (\\S+н)ий [Ðм]оÑÑ "," $1его моÑÑа "],["^ (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ого моÑÑа "],["^ (\\S+[еÑо]в) [Ðм]оÑÑ "," $1а моÑÑа "],["^ (\\S+[иÑ]н) [Ðм]оÑÑ "," $1а моÑÑа "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðм]оÑÑ "," $1ого $2его моÑÑа "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1его $2ого моÑÑа "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ого $2ого моÑÑа "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1ого $2а моÑÑа "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1ого $2а моÑÑа "],["^ (\\d+)-й [Ðм]оÑÑ "," $1-го моÑÑа "],["^ (\\d+)-й (\\S+н)ий [Ðм]оÑÑ "," $1-го $2его моÑÑа "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1-го $2ого моÑÑа "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1-го $2а моÑÑа "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1-го $2а моÑÑа "],["^ [Ðм]оÑÑ "," моÑÑа "],["^ (\\S+н)ий [Ðо]Ð±Ñ Ð¾Ð´ "," $1его Ð¾Ð±Ñ Ð¾Ð´Ð° "],["^ (\\S+)[иоÑ]й [Ðо]Ð±Ñ Ð¾Ð´ "," $1ого Ð¾Ð±Ñ Ð¾Ð´Ð° "],["^ [Ðо]Ð±Ñ Ð¾Ð´ "," Ð¾Ð±Ñ Ð¾Ð´Ð° "],["^ (\\S+н)ий [Ðп]аÑк "," $1его паÑка "],["^ (\\S+)[иоÑ]й [Ðп]аÑк "," $1ого паÑка "],["^ (\\S+[иÑ]н) [Ðп]аÑк "," $1ого паÑка "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]аÑк "," $1ого $2его паÑка "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]аÑк "," $1его $2ого паÑка "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]аÑк "," $1ого $2ого паÑка "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]аÑк "," $1ого $2ого паÑка "],["^ (\\d+)-й (\\S+н)ий [Ðп]аÑк "," $1-го $2его паÑка "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]аÑк "," $1-го $2ого паÑка "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]аÑк "," $1-го $2ого паÑка "],["^ [Ðп]аÑк "," паÑка "],["^ (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ого-$2ого пеÑеÑлка "],["^ (\\d+)-й (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-го $2ого-$3ого пеÑеÑлка "],["^ (\\S+н)ий [Ðп]еÑеÑлок "," $1его пеÑеÑлка "],["^ (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ого пеÑеÑлка "],["^ (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1а пеÑеÑлка "],["^ (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1а пеÑеÑлка "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]еÑеÑлок "," $1ого $2его пеÑеÑлка "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1его $2ого пеÑеÑлка "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ого $2ого пеÑеÑлка "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1ого $2а пеÑеÑлка "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1ого $2а пеÑеÑлка "],["^ (\\d+)-й [Ðп]еÑеÑлок "," $1-го пеÑеÑлка "],["^ (\\d+)-й (\\S+н)ий [Ðп]еÑеÑлок "," $1-го $2его пеÑеÑлка "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-го $2ого пеÑеÑлка "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1-го $2а пеÑеÑлка "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1-го $2а пеÑеÑлка "],["^ [Ðп]еÑеÑлок "," пеÑеÑлка "],["^ [Ðп]одÑезд "," подÑезда "],["^ (\\S+[еÑо]в)-(\\S+)[иоÑ]й [Ðп]Ñоезд "," $1а-$2ого пÑоезда "],["^ (\\S+н)ий [Ðп]Ñоезд "," $1его пÑоезда "],["^ (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ого пÑоезда "],["^ (\\S+[еÑо]в) [Ðп]Ñоезд "," $1а пÑоезда "],["^ (\\S+[иÑ]н) [Ðп]Ñоезд "," $1а пÑоезда "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]Ñоезд "," $1ого $2его пÑоезда "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1его $2ого пÑоезда "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ого $2ого пÑоезда "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1ого $2а пÑоезда "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1ого $2а пÑоезда "],["^ (\\d+)-й [Ðп]Ñоезд "," $1-го пÑоезда "],["^ (\\d+)-й (\\S+н)ий [Ðп]Ñоезд "," $1-го $2его пÑоезда "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-го $2ого пÑоезда "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1-го $2а пÑоезда "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1-го $2а пÑоезда "],["^ (\\d+)-й (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-го $2его $3ого пÑоезда "],["^ (\\d+)-й (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-го $2ого $3ого пÑоезда "],["^ [Ðп]Ñоезд "," пÑоезда "],["^ (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1его пÑоÑпекÑа "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого пÑоÑпекÑа "],["^ (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого пÑоÑпекÑа "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого $2его пÑоÑпекÑа "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1его $2ого пÑоÑпекÑа "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого $2ого пÑоÑпекÑа "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого $2ого пÑоÑпекÑа "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-го $2его пÑоÑпекÑа "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-го $2ого пÑоÑпекÑа "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-го $2ого пÑоÑпекÑа "],["^ [Ðп]ÑоÑÐ¿ÐµÐºÑ "," пÑоÑпекÑа "],["^ (\\S+н)ий [Ðп]ÑÑепÑовод "," $1его пÑÑепÑовода "],["^ (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ого пÑÑепÑовода "],["^ (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1ого пÑÑепÑовода "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1ого $2его пÑÑепÑовода "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1его $2ого пÑÑепÑовода "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ого $2ого пÑÑепÑовода "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1ого $2ого пÑÑепÑовода "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1-го $2его пÑÑепÑовода "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1-го $2ого пÑÑепÑовода "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1-го $2ого пÑÑепÑовода "],["^ [Ðп]ÑÑепÑовод "," пÑÑепÑовода "],["^ (\\S+н)ий [СÑ]пÑÑк "," $1его ÑпÑÑка "],["^ (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ого ÑпÑÑка "],["^ (\\S+[еÑо]в) [СÑ]пÑÑк "," $1а ÑпÑÑка "],["^ (\\S+[иÑ]н) [СÑ]пÑÑк "," $1а ÑпÑÑка "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]пÑÑк "," $1ого $2его ÑпÑÑка "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1его $2ого ÑпÑÑка "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ого $2ого ÑпÑÑка "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1ого $2а ÑпÑÑка "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1ого $2а ÑпÑÑка "],["^ (\\d+)-й (\\S+н)ий [СÑ]пÑÑк "," $1-го $2его ÑпÑÑка "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1-го $2ого ÑпÑÑка "],["^ (\\d+)-й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1-го $2а ÑпÑÑка "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1-го $2а ÑпÑÑка "],["^ [СÑ]пÑÑк "," ÑпÑÑка "],["^ (\\S+н)ий [СÑ]Ñезд "," $1его ÑÑезда "],["^ (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ого ÑÑезда "],["^ (\\S+[иÑ]н) [СÑ]Ñезд "," $1ого ÑÑезда "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]Ñезд "," $1ого $2его ÑÑезда "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]Ñезд "," $1его $2ого ÑÑезда "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ого $2ого ÑÑезда "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]Ñезд "," $1ого $2ого ÑÑезда "],["^ (\\d+)-й (\\S+н)ий [СÑ]Ñезд "," $1-го $2его ÑÑезда "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1-го $2ого ÑÑезда "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]Ñезд "," $1-го $2ого ÑÑезда "],["^ [СÑ]Ñезд "," ÑÑезда "],["^ (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1его ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого $2его ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1его $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-го $2его ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-го $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-го $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ем ÑÑакÑа "],["^ (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ого ÑÑакÑа "],["^ (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1а ÑÑакÑа "],["^ (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1а ÑÑакÑа "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ого $2его ÑÑакÑа "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1его $2ого ÑÑакÑа "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ого $2ого ÑÑакÑа "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1ого $2а ÑÑакÑа "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1ого $2а ÑÑакÑа "],["^ (\\d+)-й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1-го $2его ÑÑакÑа "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1-го $2ого ÑÑакÑа "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1-го $2а ÑÑакÑа "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1-го $2а ÑÑакÑа "],["^ [ТÑ]ÑÐ°ÐºÑ "," ÑÑакÑа "],["^ (\\S+н)ий [ТÑ]Ñпик "," $1его ÑÑпика "],["^ (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ого ÑÑпика "],["^ (\\S+[еÑо]в) [ТÑ]Ñпик "," $1а ÑÑпика "],["^ (\\S+[иÑ]н) [ТÑ]Ñпик "," $1а ÑÑпика "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]Ñпик "," $1ого $2его ÑÑпика "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1его $2ого ÑÑпика "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ого $2ого ÑÑпика "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1ого $2а ÑÑпика "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1ого $2а ÑÑпика "],["^ (\\d+)-й [ТÑ]Ñпик "," $1-го ÑÑпика "],["^ (\\d+)-й (\\S+н)ий [ТÑ]Ñпик "," $1-го $2его ÑÑпика "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1-го $2ого ÑÑпика "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1-го $2а ÑÑпика "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1-го $2а ÑÑпика "],["^ [ТÑ]Ñпик "," ÑÑпика "],["^ (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1го $2колÑÑа "],["^ (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1го $2колÑÑа "],["^ (\\S+[ео])е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1го $2го $3колÑÑа "],["^ (\\S+Ñе) (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1го $2го $3колÑÑа "],["^ (\\d+)-е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-го $2го $3колÑÑа "],["^ (\\d+)-е (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-го $2го $3колÑÑа "],["^ ([Ðп]олÑ)?[Ðк]олÑÑо "," $1колÑÑа "],["^ (\\S+[ео])е [ШÑ]оÑÑе "," $1го ÑоÑÑе "],["^ (\\S+Ñе) [ШÑ]оÑÑе "," $1го ÑоÑÑе "],["^ (\\S+[ео])е (\\S+[ео])е [ШÑ]оÑÑе "," $1го $2го ÑоÑÑе "],["^ (\\S+Ñе) (\\S+[ео])е [ШÑ]оÑÑе "," $1го $2го ÑоÑÑе "],["^ (\\d+)-е (\\S+[ео])е [ШÑ]оÑÑе "," $1-го $2го ÑоÑÑе "],["^ (\\d+)-е (\\S+Ñе) [ШÑ]оÑÑе "," $1-го $2го ÑоÑÑе "],[" ([ТÑ])ÑеÑого "," $1ÑеÑÑего "],["([жÑ])ого ","$1Ñего "]],prepositional:[['^ ([«"])'," ÑÑаÑÑа $1"],["^ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1ой аллее "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1Ñей аллее "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ей аллее "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1-й $2ой аллее "],["^ [Ðа]Ð»Ð»ÐµÑ "," аллее "],["^ (\\S+)аÑ-(\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой-$2ой ÑлиÑе "],["^ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой ÑлиÑе "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1Ñей ÑлиÑе "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ей ÑлиÑе "],["^ (\\d+)-Ñ [УÑ]лиÑа "," $1-й ÑлиÑе "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1-й $2ой ÑлиÑе "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой $2ой ÑлиÑе "],["^ (\\S+[вн])а [УÑ]лиÑа "," $1ой ÑлиÑе "],["^ (\\S+)Ð°Ñ (\\S+[вн])а [УÑ]лиÑа "," $1ой $2ой ÑлиÑе "],["^ ÐанÑÑÐ»Ð°Ð²Ð»Ñ [УÑ]лиÑа "," ÐанÑÑлавлей ÑлиÑе "],["^ ÐобÑÑÐ½Ñ [УÑ]лиÑа "," ÐобÑÑней ÑлиÑе "],["^ ÐÑдогоÑа [УÑ]лиÑа "," ÐÑдогоÑей ÑлиÑе "],["^ [УÑ]лиÑа "," ÑлиÑе "],["^ (\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-$2-й линии "],["^ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ой линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1Ñей линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ей линии "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й $2ой линии "],["^ [Ðл]Ð¸Ð½Ð¸Ñ "," линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]инии "," $1-$2-й линиÑÑ "],["^ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ой набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1Ñей набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ей набеÑежной "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1-й $2ой набеÑежной "],["^ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," набеÑежной "],["^ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1Ñей плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ей плоÑади "],["^ (\\S+[вн])а [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1-й $2ой плоÑади "],["^ [Ðп]лоÑÐ°Ð´Ñ "," плоÑади "],["^ (\\S+)Ð°Ñ [Ðп]ÑоÑека "," $1ой пÑоÑеке "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1Ñей пÑоÑеке "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ей пÑоÑеке "],["^ (\\d+)-Ñ [Ðп]ÑоÑека "," $1-й пÑоÑеке "],["^ [Ðп]ÑоÑека "," пÑоÑеке "],["^ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1ой ÑÑÑакаде "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1Ñей ÑÑÑакаде "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ей ÑÑÑакаде "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1-й $2ой ÑÑÑакаде "],["^ [ÐÑ]ÑÑакада "," ÑÑÑакаде "],["^ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1Ñей магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ей магиÑÑÑали "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой $2ой магиÑÑÑали "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1-й $2ой магиÑÑÑали "],["^ [Ðм]агиÑÑÑÐ°Ð»Ñ "," магиÑÑÑали "],["^ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1ой ÑазвÑзке "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1Ñей ÑазвÑзке "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ей ÑазвÑзке "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1-й $2ой ÑазвÑзке "],["^ [Ð Ñ]азвÑзка "," ÑазвÑзке "],["^ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1ой ÑÑаÑÑе "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1Ñей ÑÑаÑÑе "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ей ÑÑаÑÑе "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1-й $2ой ÑÑаÑÑе "],["^ [ТÑ]ÑаÑÑа "," ÑÑаÑÑе "],["^ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2доÑоге "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1Ñей $2доÑоге "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ей $2доÑоге "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2ой $3доÑоге "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1-й $2ой $3доÑоге "],["^ ([Ðа]вÑо)?[Ðд]оÑога "," $1доÑоге "],["^ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1ой доÑожке "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1Ñей доÑожке "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ей доÑожке "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1-й $2ой доÑожке "],["^ [Ðд]оÑожка "," доÑожке "],["^ (\\S+)во [Ðп]оле "," $1вом поле "],["^ (\\S+)Ð°Ñ [Ðк]оÑа "," $1ой коÑе "],["^ (\\S+)Ð°Ñ [Ð¥Ñ ]оÑда "," $1ой Ñ Ð¾Ñде "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑок "," $1ом пÑоÑоке "],["^ (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1ем бÑлÑваÑе "],["^ (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом бÑлÑваÑе "],["^ (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом бÑлÑваÑе "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом $2ем бÑлÑваÑе "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ем $2ом бÑлÑваÑе "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом $2ом бÑлÑваÑе "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом $2ом бÑлÑваÑе "],["^ (\\d+)-й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1-м $2ем бÑлÑваÑе "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1-м $2ом бÑлÑваÑе "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1-м $2ом бÑлÑваÑе "],["^ [Ðб]ÑлÑÐ²Ð°Ñ "," бÑлÑваÑе "],["^ [Ðд]Ñбл[еÑ]Ñ "," дÑблÑÑе "],["^ (\\S+н)ий [Ðз]аезд "," $1ем заезде "],["^ (\\S+)[иоÑ]й [Ðз]аезд "," $1ом заезде "],["^ (\\S+[еÑо]в) [Ðз]аезд "," $1ом заезде "],["^ (\\S+[иÑ]н) [Ðз]аезд "," $1ом заезде "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðз]аезд "," $1ом $2ем заезде "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðз]аезд "," $1ем $2ом заезде "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðз]аезд "," $1ом $2ом заезде "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðз]аезд "," $1ом $2ом заезде "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðз]аезд "," $1ом $2ом заезде "],["^ (\\d+)-й (\\S+н)ий [Ðз]аезд "," $1-м $2ем заезде "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðз]аезд "," $1-м $2ом заезде "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðз]аезд "," $1-м $2ом заезде "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðз]аезд "," $1-м $2ом заезде "],["^ [Ðз]аезд "," заезде "],["^ (\\S+н)ий [Ðм]оÑÑ "," $1ем моÑÑÑ "],["^ (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ом моÑÑÑ "],["^ (\\S+[еÑо]в) [Ðм]оÑÑ "," $1ом моÑÑÑ "],["^ (\\S+[иÑ]н) [Ðм]оÑÑ "," $1ом моÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðм]оÑÑ "," $1ом $2ем моÑÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ем $2ом моÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ом $2ом моÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1ом $2ом моÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1ом $2ом моÑÑÑ "],["^ (\\d+)-й [Ðм]оÑÑ "," $1-м моÑÑÑ "],["^ (\\d+)-й (\\S+н)ий [Ðм]оÑÑ "," $1-м $2ем моÑÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1-м $2ом моÑÑÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1-м $2ом моÑÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1-м $2ом моÑÑÑ "],["^ [Ðм]оÑÑ "," моÑÑÑ "],["^ (\\S+н)ий [Ðо]Ð±Ñ Ð¾Ð´ "," $1ем Ð¾Ð±Ñ Ð¾Ð´Ðµ "],["^ (\\S+)[иоÑ]й [Ðо]Ð±Ñ Ð¾Ð´ "," $1ом Ð¾Ð±Ñ Ð¾Ð´Ðµ "],["^ [Ðо]Ð±Ñ Ð¾Ð´ "," Ð¾Ð±Ñ Ð¾Ð´Ðµ "],["^ (\\S+н)ий [Ðп]аÑк "," $1ем паÑке "],["^ (\\S+)[иоÑ]й [Ðп]аÑк "," $1ом паÑке "],["^ (\\S+[иÑ]н) [Ðп]аÑк "," $1ом паÑке "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]аÑк "," $1ом $2ем паÑке "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]аÑк "," $1ем $2ом паÑке "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]аÑк "," $1ом $2ом паÑке "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]аÑк "," $1ом $2ом паÑке "],["^ (\\d+)-й (\\S+н)ий [Ðп]аÑк "," $1-м $2ем паÑке "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]аÑк "," $1-м $2ом паÑке "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]аÑк "," $1-м $2ом паÑке "],["^ [Ðп]аÑк "," паÑке "],["^ (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ом-$2ом пеÑеÑлке "],["^ (\\d+)-й (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-м $2ом-$3ом пеÑеÑлке "],["^ (\\S+н)ий [Ðп]еÑеÑлок "," $1ем пеÑеÑлке "],["^ (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ом пеÑеÑлке "],["^ (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1ом пеÑеÑлке "],["^ (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1ом пеÑеÑлке "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]еÑеÑлок "," $1ом $2ем пеÑеÑлке "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ем $2ом пеÑеÑлке "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ом $2ом пеÑеÑлке "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1ом $2ом пеÑеÑлке "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1ом $2ом пеÑеÑлке "],["^ (\\d+)-й [Ðп]еÑеÑлок "," $1-м пеÑеÑлке "],["^ (\\d+)-й (\\S+н)ий [Ðп]еÑеÑлок "," $1-м $2ем пеÑеÑлке "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-м $2ом пеÑеÑлке "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1-м $2ом пеÑеÑлке "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1-м $2ом пеÑеÑлке "],["^ [Ðп]еÑеÑлок "," пеÑеÑлке "],["^ [Ðп]одÑезд "," подÑезде "],["^ (\\S+[еÑо]в)-(\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ом-$2ом пÑоезде "],["^ (\\S+н)ий [Ðп]Ñоезд "," $1ем пÑоезде "],["^ (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ом пÑоезде "],["^ (\\S+[еÑо]в) [Ðп]Ñоезд "," $1ом пÑоезде "],["^ (\\S+[иÑ]н) [Ðп]Ñоезд "," $1ом пÑоезде "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]Ñоезд "," $1ом $2ем пÑоезде "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ем $2ом пÑоезде "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ом $2ом пÑоезде "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1ом $2ом пÑоезде "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1ом $2ом пÑоезде "],["^ (\\d+)-й [Ðп]Ñоезд "," $1-м пÑоезде "],["^ (\\d+)-й (\\S+н)ий [Ðп]Ñоезд "," $1-м $2ем пÑоезде "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-м $2ом пÑоезде "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1-м $2ом пÑоезде "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1-м $2ом пÑоезде "],["^ (\\d+)-й (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-м $2ем $3ом пÑоезде "],["^ (\\d+)-й (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-м $2ом $3ом пÑоезде "],["^ [Ðп]Ñоезд "," пÑоезде "],["^ (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ем пÑоÑпекÑе "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом пÑоÑпекÑе "],["^ (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом пÑоÑпекÑе "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом $2ем пÑоÑпекÑе "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ем $2ом пÑоÑпекÑе "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом $2ом пÑоÑпекÑе "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом $2ом пÑоÑпекÑе "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-м $2ем пÑоÑпекÑе "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-м $2ом пÑоÑпекÑе "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-м $2ом пÑоÑпекÑе "],["^ [Ðп]ÑоÑÐ¿ÐµÐºÑ "," пÑоÑпекÑе "],["^ (\\S+н)ий [Ðп]ÑÑепÑовод "," $1ем пÑÑепÑоводе "],["^ (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ом пÑÑепÑоводе "],["^ (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1ом пÑÑепÑоводе "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1ом $2ем пÑÑепÑоводе "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ем $2ом пÑÑепÑоводе "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ом $2ом пÑÑепÑоводе "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1ом $2ом пÑÑепÑоводе "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1-м $2ем пÑÑепÑоводе "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1-м $2ом пÑÑепÑоводе "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1-м $2ом пÑÑепÑоводе "],["^ [Ðп]ÑÑепÑовод "," пÑÑепÑоводе "],["^ (\\S+н)ий [СÑ]пÑÑк "," $1ем ÑпÑÑке "],["^ (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ом ÑпÑÑке "],["^ (\\S+[еÑо]в) [СÑ]пÑÑк "," $1ом ÑпÑÑке "],["^ (\\S+[иÑ]н) [СÑ]пÑÑк "," $1ом ÑпÑÑке "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]пÑÑк "," $1ом $2ем ÑпÑÑке "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ем $2ом ÑпÑÑке "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ом $2ом ÑпÑÑке "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1ом $2ом ÑпÑÑке "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1ом $2ом ÑпÑÑке "],["^ (\\d+)-й (\\S+н)ий [СÑ]пÑÑк "," $1-м $2ем ÑпÑÑке "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1-м $2ом ÑпÑÑке "],["^ (\\d+)-й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1-м $2ом ÑпÑÑке "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1-м $2ом ÑпÑÑке "],["^ [СÑ]пÑÑк "," ÑпÑÑке "],["^ (\\S+н)ий [СÑ]Ñезд "," $1ем ÑÑезде "],["^ (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ом ÑÑезде "],["^ (\\S+[иÑ]н) [СÑ]Ñезд "," $1ом ÑÑезде "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]Ñезд "," $1ом $2ем ÑÑезде "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ем $2ом ÑÑезде "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ом $2ом ÑÑезде "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]Ñезд "," $1ом $2ом ÑÑезде "],["^ (\\d+)-й (\\S+н)ий [СÑ]Ñезд "," $1-м $2ем ÑÑезде "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1-м $2ом ÑÑезде "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]Ñезд "," $1-м $2ом ÑÑезде "],["^ [СÑ]Ñезд "," ÑÑезде "],["^ (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ем Ñоннеле "],["^ (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом Ñоннеле "],["^ (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом Ñоннеле "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом $2ем Ñоннеле "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ем $2ом Ñоннеле "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом $2ом Ñоннеле "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом $2ом Ñоннеле "],["^ (\\d+)-й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-м $2ем Ñоннеле "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-м $2ом Ñоннеле "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-м $2ом Ñоннеле "],["^ [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," Ñоннеле "],["^ (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ем ÑÑакÑе "],["^ (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ом ÑÑакÑе "],["^ (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1ом ÑÑакÑе "],["^ (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1ом ÑÑакÑе "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ом $2ем ÑÑакÑе "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ем $2ом ÑÑакÑе "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ом $2ом ÑÑакÑе "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1ом $2ом ÑÑакÑе "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1ом $2ом ÑÑакÑе "],["^ (\\d+)-й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1-м $2ем ÑÑакÑе "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1-м $2ом ÑÑакÑе "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1-м $2ом ÑÑакÑе "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1-м $2ом ÑÑакÑе "],["^ [ТÑ]ÑÐ°ÐºÑ "," ÑÑакÑе "],["^ (\\S+н)ий [ТÑ]Ñпик "," $1ем ÑÑпике "],["^ (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ом ÑÑпике "],["^ (\\S+[еÑо]в) [ТÑ]Ñпик "," $1ом ÑÑпике "],["^ (\\S+[иÑ]н) [ТÑ]Ñпик "," $1ом ÑÑпике "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]Ñпик "," $1ом $2ем ÑÑпике "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ем $2ом ÑÑпике "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ом $2ом ÑÑпике "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1ом $2ом ÑÑпике "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1ом $2ом ÑÑпике "],["^ (\\d+)-й [ТÑ]Ñпик "," $1-м ÑÑпике "],["^ (\\d+)-й (\\S+н)ий [ТÑ]Ñпик "," $1-м $2ем ÑÑпике "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1-м $2ом ÑÑпике "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1-м $2ом ÑÑпике "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1-м $2ом ÑÑпике "],["^ [ТÑ]Ñпик "," ÑÑпике "],["^ (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1м $2колÑÑе "],["^ (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1м $2колÑÑе "],["^ (\\S+[ео])е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1м $2м $3колÑÑе "],["^ (\\S+Ñе) (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1м $2м $3колÑÑе "],["^ (\\d+)-е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-м $2м $3колÑÑе "],["^ (\\d+)-е (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-м $2м $3колÑÑе "],["^ ([Ðп]олÑ)?[Ðк]олÑÑо "," $1колÑÑе "],["^ (\\S+[ео])е [ШÑ]оÑÑе "," $1м ÑоÑÑе "],["^ (\\S+Ñе) [ШÑ]оÑÑе "," $1м ÑоÑÑе "],["^ (\\S+[ео])е (\\S+[ео])е [ШÑ]оÑÑе "," $1м $2м ÑоÑÑе "],["^ (\\S+Ñе) (\\S+[ео])е [ШÑ]оÑÑе "," $1м $2м ÑоÑÑе "],["^ (\\d+)-е (\\S+[ео])е [ШÑ]оÑÑе "," $1-м $2м ÑоÑÑе "],["^ (\\d+)-е (\\S+Ñе) [ШÑ]оÑÑе "," $1-м $2м ÑоÑÑе "],[" ([ТÑ])ÑеÑом "," $1ÑеÑÑем "],["([жÑ])ом ","$1Ñем "]]}}},{}],23:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"første",2:"anden",3:"tredje",4:"fjerde",5:"femte",6:"sjette",7:"syvende",8:"ottende",9:"niende",10:"tiende"},direction:{north:"Nord",northeast:"Nordøst",east:"Ãst",southeast:"Sydøst",south:"Syd",southwest:"Sydvest",west:"Vest",northwest:"Nordvest"},modifier:{left:"venstresving",right:"højresving","sharp left":"skarpt venstresving","sharp right":"skarpt højresving","slight left":"svagt venstresving","slight right":"svagt højresving",straight:"ligeud",uturn:"U-vending"},lanes:{xo:"Hold til højre",ox:"Hold til venstre",xox:"Benyt midterste spor",oxo:"Hold til højre eller venstre"}},modes:{ferry:{default:"Tag færgen",name:"Tag færgen {way_name}",destination:"Tag færgen i retning {destination}"}},phrase:{"two linked by distance":"{instruction_one} derefter, efter {distance}, {instruction_two}","two linked":"{instruction_one}, derefter {instruction_two}","one in distance":"Efter {distance} {instruction_one}","name and ref":"{name} ({ref})","exit with number":"afkørsel {exit}"},arrive:{default:{default:"Du er ankommet til din {nth} destination",upcoming:"Du vil ankomme til din {nth} destination",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}"},left:{default:"Du er ankommet til din {nth} destination, som befinder sig til venstre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ venstre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til venstre"},right:{default:"Du er ankommet til din {nth} destination, som befinder sig til højre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ højre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til højre"},"sharp left":{default:"Du er ankommet til din {nth} destination, som befinder sig til venstre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ venstre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til venstre"},"sharp right":{default:"Du er ankommet til din {nth} destination, som befinder sig til højre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ højre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til højre"},"slight right":{default:"Du er ankommet til din {nth} destination, som befinder sig til højre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ højre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til højre"},"slight left":{default:"Du er ankommet til din {nth} destination, som befinder sig til venstre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ venstre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til venstre"},straight:{default:"Du er ankommet til din {nth} destination, der befinder sig lige frem",upcoming:"Du vil ankomme til din {nth} destination foran dig",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, der befinder sig lige frem"}},continue:{default:{default:"Drej til {modifier}",name:"Drej til {modifier} videre ad {way_name}",destination:"Drej til {modifier} mod {destination}",exit:"Drej til {modifier} ad {way_name}"},straight:{default:"Fortsæt ligeud", 2502name:"Fortsæt ligeud ad {way_name}",destination:"Fortsæt mod {destination}",distance:"Fortsæt {distance} ligeud",namedistance:"Fortsæt {distance} ad {way_name}"},"sharp left":{default:"Drej skarpt til venstre",name:"Drej skarpt til venstre videre ad {way_name}",destination:"Drej skarpt til venstre mod {destination}"},"sharp right":{default:"Drej skarpt til højre",name:"Drej skarpt til højre videre ad {way_name}",destination:"Drej skarpt til højre mod {destination}"},"slight left":{default:"Drej left til venstre",name:"Drej let til venstre videre ad {way_name}",destination:"Drej let til venstre mod {destination}"},"slight right":{default:"Drej let til højre",name:"Drej let til højre videre ad {way_name}",destination:"Drej let til højre mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending tilbage ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},depart:{default:{default:"Kør mod {direction}",name:"Kør mod {direction} ad {way_name}",namedistance:"Fortsæt {distance} ad {way_name}mod {direction}"}},"end of road":{default:{default:"Drej til {modifier}",name:"Drej til {modifier} ad {way_name}",destination:"Drej til {modifier} mof {destination}"},straight:{default:"Fortsæt ligeud",name:"Fortsæt ligeud ad {way_name}",destination:"Fortsæt ligeud mod {destination}"},uturn:{default:"Foretag en U-vending for enden af vejen",name:"Foretag en U-vending ad {way_name} for enden af vejen",destination:"Foretag en U-vending mod {destination} for enden af vejen"}},fork:{default:{default:"Hold til {modifier} ved udfletningen",name:"Hold mod {modifier} pÃ¥ {way_name}",destination:"Hold mod {modifier} mod {destination}"},"slight left":{default:"Hold til venstre ved udfletningen",name:"Hold til venstre pÃ¥ {way_name}",destination:"Hold til venstre mod {destination}"},"slight right":{default:"Hold til højre ved udfletningen",name:"Hold til højre pÃ¥ {way_name}",destination:"Hold til højre mod {destination}"},"sharp left":{default:"Drej skarpt til venstre ved udfletningen",name:"Drej skarpt til venstre ad {way_name}",destination:"Drej skarpt til venstre mod {destination}"},"sharp right":{default:"Drej skarpt til højre ved udfletningen",name:"Drej skarpt til højre ad {way_name}",destination:"Drej skarpt til højre mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},merge:{default:{default:"Flet til {modifier}",name:"Flet til {modifier} ad {way_name}",destination:"Flet til {modifier} mod {destination}"},straight:{default:"Flet",name:"Flet ind pÃ¥ {way_name}",destination:"Flet ind mod {destination}"},"slight left":{default:"Flet til venstre",name:"Flet til venstre ad {way_name}",destination:"Flet til venstre mod {destination}"},"slight right":{default:"Flet til højre",name:"Flet til højre ad {way_name}",destination:"Flet til højre mod {destination}"},"sharp left":{default:"Flet til venstre",name:"Flet til venstre ad {way_name}",destination:"Flet til venstre mod {destination}"},"sharp right":{default:"Flet til højre",name:"Flet til højre ad {way_name}",destination:"Flet til højre mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},"new name":{default:{default:"Fortsæt {modifier}",name:"Fortsæt {modifier} ad {way_name}",destination:"Fortsæt {modifier} mod {destination}"},straight:{default:"Fortsæt ligeud",name:"Fortsæt ad {way_name}",destination:"Fortsæt mod {destination}"},"sharp left":{default:"Drej skarpt til venstre",name:"Drej skarpt til venstre ad {way_name}",destination:"Drej skarpt til venstre mod {destination}"},"sharp right":{default:"Drej skarpt til højre",name:"Drej skarpt til højre ad {way_name}",destination:"Drej skarpt til højre mod {destination}"},"slight left":{default:"Fortsæt til venstre",name:"Fortsæt til venstre ad {way_name}",destination:"Fortsæt til venstre mod {destination}"},"slight right":{default:"Fortsæt til højre",name:"Fortsæt til højre ad {way_name}",destination:"Fortsæt til højre mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},notification:{default:{default:"Fortsæt {modifier}",name:"Fortsæt {modifier} ad {way_name}",destination:"Fortsæt {modifier} mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},"off ramp":{default:{default:"Tag afkørslen",name:"Tag afkørslen ad {way_name}",destination:"Tag afkørslen mod {destination}",exit:"Vælg afkørsel {exit}",exit_destination:"Vælg afkørsel {exit} mod {destination}"},left:{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}",exit:"Vælg afkørsel {exit} til venstre",exit_destination:"Vælg afkørsel {exit} til venstre mod {destination}\n"},right:{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}",exit:"Vælg afkørsel {exit} til højre",exit_destination:"Vælg afkørsel {exit} til højre mod {destination}"},"sharp left":{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}",exit:"Vælg afkørsel {exit} til venstre",exit_destination:"Vælg afkørsel {exit} til venstre mod {destination}\n"},"sharp right":{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}",exit:"Vælg afkørsel {exit} til højre",exit_destination:"Vælg afkørsel {exit} til højre mod {destination}"},"slight left":{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}",exit:"Vælg afkørsel {exit} til venstre",exit_destination:"Vælg afkørsel {exit} til venstre mod {destination}\n"},"slight right":{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}",exit:"Vælg afkørsel {exit} til højre",exit_destination:"Vælg afkørsel {exit} til højre mod {destination}"}},"on ramp":{default:{default:"Tag afkørslen",name:"Tag afkørslen ad {way_name}",destination:"Tag afkørslen mod {destination}"},left:{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}"},right:{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}"},"sharp left":{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}"},"sharp right":{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}"},"slight left":{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}"},"slight right":{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}"}},rotary:{default:{default:{default:"Kør ind i rundkørslen",name:"Tag rundkørslen og kør fra ad {way_name}",destination:"Tag rundkørslen og kør mod {destination}"},name:{default:"Kør ind i {rotary_name}",name:"Kør ind i {rotary_name} og kør ad {way_name} ",destination:"Kør ind i {rotary_name} og kør mod {destination}"},exit:{default:"Tag rundkørslen og forlad ved {exit_number} afkørsel",name:"Tag rundkørslen og forlad ved {exit_number} afkørsel ad {way_name}",destination:"Tag rundkørslen og forlad ved {exit_number} afkørsel mod {destination}"},name_exit:{default:"Kør ind i {rotary_name} og forlad ved {exit_number} afkørsel",name:"Kør ind i {rotary_name} og forlad ved {exit_number} afkørsel ad {way_name}",destination:"Kør ind i {rotary_name} og forlad ved {exit_number} afkørsel mod {destination}"}}},roundabout:{default:{exit:{default:"Tag rundkørslen og forlad ved {exit_number} afkørsel",name:"Tag rundkørslen og forlad ved {exit_number} afkørsel ad {way_name}",destination:"Tag rundkørslen og forlad ved {exit_number} afkørsel mod {destination}"},default:{default:"Kør ind i rundkørslen",name:"Tag rundkørslen og kør fra ad {way_name}",destination:"Tag rundkørslen og kør mod {destination}"}}},"roundabout turn":{default:{default:"Foretag et {modifier}",name:"Foretag et {modifier} ad {way_name}",destination:"Foretag et {modifier} mod {destination}"},left:{default:"Drej til venstre",name:"Drej til venstre ad {way_name}",destination:"Drej til venstre mod {destination}"},right:{default:"Drej til højre",name:"Drej til højre ad {way_name}",destination:"Drej til højre mod {destination}"},straight:{default:"Fortsæt ligeud",name:"Fortsæt ligeud ad {way_name}",destination:"Fortsæt ligeud mod {destination}"}},"exit roundabout":{default:{default:"Forlad rundkørslen",name:"Forlad rundkørslen ad {way_name}",destination:"Forlad rundkørslen mod {destination}"}},"exit rotary":{default:{default:"Forlad rundkørslen",name:"Forlad rundkørslen ad {way_name}",destination:"Forlad rundkørslen mod {destination}"}},turn:{default:{default:"Foretag et {modifier}",name:"Foretag et {modifier} ad {way_name}",destination:"Foretag et {modifier} mod {destination}"},left:{default:"Drej til venstre",name:"Drej til venstre ad {way_name}",destination:"Drej til venstre mod {destination}"},right:{default:"Drej til højre",name:"Drej til højre ad {way_name}",destination:"Drej til højre mod {destination}"},straight:{default:"Fortsæt ligeud",name:"Kør ligeud ad {way_name}",destination:"Kør ligeud mod {destination}"}},"use lane":{no_lanes:{default:"Fortsæt ligeud"},default:{default:"{lane_instruction}"}}}}},{}],24:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"erste",2:"zweite",3:"dritte",4:"vierte",5:"fünfte",6:"sechste",7:"siebente",8:"achte",9:"neunte",10:"zehnte"},direction:{north:"Norden",northeast:"Nordosten",east:"Osten",southeast:"Südosten",south:"Süden",southwest:"Südwesten",west:"Westen",northwest:"Nordwesten"},modifier:{left:"links",right:"rechts","sharp left":"scharf links","sharp right":"scharf rechts","slight left":"leicht links","slight right":"leicht rechts",straight:"geradeaus",uturn:"180°-Wendung"},lanes:{xo:"Rechts halten",ox:"Links halten",xox:"Mittlere Spur nutzen",oxo:"Rechts oder links halten"}},modes:{ferry:{default:"Fähre nehmen",name:"Fähre nehmen {way_name}",destination:"Fähre nehmen Richtung {destination}"}},phrase:{"two linked by distance":"{instruction_one} danach in {distance} {instruction_two}","two linked":"{instruction_one} danach {instruction_two}","one in distance":"In {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Sie haben Ihr {nth} Ziel erreicht",upcoming:"Sie haben Ihr {nth} Ziel erreicht",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}"},left:{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich links"},right:{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich rechts"},"sharp left":{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich links"},"sharp right":{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich rechts"},"slight right":{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich rechts"},"slight left":{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich links"},straight:{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich geradeaus",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich geradeaus",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich geradeaus"}},continue:{default:{default:"{modifier} abbiegen",name:"{modifier} weiterfahren auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}",exit:"{modifier} abbiegen auf {way_name}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Weiterfahren in Richtung {destination}",distance:"Geradeaus weiterfahren für {distance}",namedistance:"Geradeaus weiterfahren auf {way_name} für {distance}"},"sharp left":{default:"Scharf links",name:"Scharf links weiterfahren auf {way_name}",destination:"Scharf links Richtung {destination}"},"sharp right":{default:"Scharf rechts",name:"Scharf rechts weiterfahren auf {way_name}",destination:"Scharf rechts Richtung {destination}"},"slight left":{default:"Leicht links",name:"Leicht links weiter auf {way_name}",destination:"Leicht links weiter Richtung {destination}"},"slight right":{default:"Leicht rechts weiter",name:"Leicht rechts weiter auf {way_name}",destination:"Leicht rechts weiter Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},depart:{default:{default:"Fahren Sie Richtung {direction}",name:"Fahren Sie Richtung {direction} auf {way_name}",namedistance:"Fahren Sie Richtung {direction} auf {way_name} für {distance}"}},"end of road":{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"},uturn:{default:"180°-Wendung am Ende der StraÃe",name:"180°-Wendung auf {way_name} am Ende der StraÃe",destination:"180°-Wendung Richtung {destination} am Ende der StraÃe"}},fork:{default:{default:"{modifier} halten an der Gabelung",name:"{modifier} halten an der Gabelung auf {way_name}",destination:"{modifier} halten an der Gabelung Richtung {destination}"},"slight left":{default:"Links halten an der Gabelung",name:"Links halten an der Gabelung auf {way_name}",destination:"Links halten an der Gabelung Richtung {destination}"},"slight right":{default:"Rechts halten an der Gabelung",name:"Rechts halten an der Gabelung auf {way_name}",destination:"Rechts halten an der Gabelung Richtung {destination}"},"sharp left":{default:"Scharf links abbiegen an der Gabelung",name:"Scharf links auf {way_name}",destination:"Scharf links Richtung {destination}"},"sharp right":{default:"Scharf rechts abbiegen an der Gabelung",name:"Scharf rechts auf {way_name}",destination:"Scharf rechts Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},merge:{default:{default:"{modifier} auffahren",name:"{modifier} auffahren auf {way_name}",destination:"{modifier} auffahren Richtung {destination}"},straight:{default:"geradeaus auffahren",name:"geradeaus auffahren auf {way_name}",destination:"geradeaus auffahren Richtung {destination}"},"slight left":{default:"Leicht links auffahren",name:"Leicht links auffahren auf {way_name}",destination:"Leicht links auffahren Richtung {destination}"},"slight right":{default:"Leicht rechts auffahren",name:"Leicht rechts auffahren auf {way_name}",destination:"Leicht rechts auffahren Richtung {destination}"},"sharp left":{default:"Scharf links auffahren",name:"Scharf links auffahren auf {way_name}",destination:"Scharf links auffahren Richtung {destination}"},"sharp right":{default:"Scharf rechts auffahren",name:"Scharf rechts auffahren auf {way_name}",destination:"Scharf rechts auffahren Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},"new name":{default:{default:"{modifier} weiterfahren",name:"{modifier} weiterfahren auf {way_name}",destination:"{modifier} weiterfahren Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Weiterfahren auf {way_name}",destination:"Weiterfahren in Richtung {destination}"},"sharp left":{default:"Scharf links",name:"Scharf links auf {way_name}",destination:"Scharf links Richtung {destination}"},"sharp right":{default:"Scharf rechts",name:"Scharf rechts auf {way_name}",destination:"Scharf rechts Richtung {destination}"},"slight left":{default:"Leicht links weiter",name:"Leicht links weiter auf {way_name}",destination:"Leicht links weiter Richtung {destination}"},"slight right":{default:"Leicht rechts weiter",name:"Leicht rechts weiter auf {way_name}",destination:"Leicht rechts weiter Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},notification:{default:{default:"{modifier} weiterfahren",name:"{modifier} weiterfahren auf {way_name}",destination:"{modifier} weiterfahren Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},"off ramp":{default:{default:"Ausfahrt nehmen",name:"Ausfahrt nehmen auf {way_name}",destination:"Ausfahrt nehmen Richtung {destination}",exit:"Ausfahrt {exit} nehmen",exit_destination:"Ausfahrt {exit} nehmen Richtung {destination}"},left:{default:"Ausfahrt links nehmen",name:"Ausfahrt links nehmen auf {way_name}",destination:"Ausfahrt links nehmen Richtung {destination}",exit:"Ausfahrt {exit} links nehmen",exit_destination:"Ausfahrt {exit} links nehmen Richtung {destination}"},right:{default:"Ausfahrt rechts nehmen",name:"Ausfahrt rechts nehmen Richtung {way_name}",destination:"Ausfahrt rechts nehmen Richtung {destination}",exit:"Ausfahrt {exit} rechts nehmen",exit_destination:"Ausfahrt {exit} nehmen Richtung {destination}"},"sharp left":{default:"Ausfahrt links nehmen",name:"Ausfahrt links Seite nehmen auf {way_name}",destination:"Ausfahrt links nehmen Richtung {destination}",exit:"Ausfahrt {exit} links nehmen",exit_destination:"Ausfahrt{exit} links nehmen Richtung {destination}"},"sharp right":{default:"Ausfahrt rechts nehmen",name:"Ausfahrt rechts nehmen auf {way_name}",destination:"Ausfahrt rechts nehmen Richtung {destination}",exit:"Ausfahrt {exit} rechts nehmen",exit_destination:"Ausfahrt {exit} nehmen Richtung {destination}"},"slight left":{default:"Ausfahrt links nehmen",name:"Ausfahrt links nehmen auf {way_name}",destination:"Ausfahrt links nehmen Richtung {destination}",exit:"Ausfahrt {exit} nehmen",exit_destination:"Ausfahrt {exit} links nehmen Richtung {destination}"},"slight right":{default:"Ausfahrt rechts nehmen",name:"Ausfahrt rechts nehmen auf {way_name}",destination:"Ausfahrt rechts nehmen Richtung {destination}",exit:"Ausfahrt {exit} rechts nehmen",exit_destination:"Ausfahrt {exit} nehmen Richtung {destination}"}},"on ramp":{default:{default:"Auffahrt nehmen",name:"Auffahrt nehmen auf {way_name}",destination:"Auffahrt nehmen Richtung {destination}"},left:{default:"Auffahrt links nehmen",name:"Auffahrt links nehmen auf {way_name}",destination:"Auffahrt links nehmen Richtung {destination}"},right:{default:"Auffahrt rechts nehmen",name:"Auffahrt rechts nehmen auf {way_name}",destination:"Auffahrt rechts nehmen Richtung {destination}"},"sharp left":{default:"Auffahrt links nehmen",name:"Auffahrt links nehmen auf {way_name}",destination:"Auffahrt links nehmen Richtung {destination}"},"sharp right":{default:"Auffahrt rechts nehmen",name:"Auffahrt rechts nehmen auf {way_name}",destination:"Auffahrt rechts nehmen Richtung {destination}"},"slight left":{default:"Auffahrt links Seite nehmen",name:"Auffahrt links nehmen auf {way_name}",destination:"Auffahrt links nehmen Richtung {destination}"},"slight right":{default:"Auffahrt rechts nehmen",name:"Auffahrt rechts nehmen auf {way_name}",destination:"Auffahrt rechts nehmen Richtung {destination}"}},rotary:{default:{default:{default:"In den Kreisverkehr fahren",name:"Im Kreisverkehr die Ausfahrt auf {way_name} nehmen",destination:"Im Kreisverkehr die Ausfahrt Richtung {destination} nehmen"},name:{default:"In {rotary_name} fahren",name:"In {rotary_name} die Ausfahrt auf {way_name} nehmen",destination:"In {rotary_name} die Ausfahrt Richtung {destination} nehmen"},exit:{default:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen",name:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen auf {way_name}",destination:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen Richtung {destination}"},name_exit:{default:"In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen",name:"In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen auf {way_name}",destination:"In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen Richtung {destination}"}}},roundabout:{default:{exit:{default:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen",name:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen auf {way_name}",destination:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen Richtung {destination}"},default:{default:"In den Kreisverkehr fahren",name:"Im Kreisverkehr die Ausfahrt auf {way_name} nehmen",destination:"Im Kreisverkehr die Ausfahrt Richtung {destination} nehmen"}}},"roundabout turn":{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},left:{default:"Links abbiegen",name:"Links abbiegen auf {way_name}",destination:"Links abbiegen Richtung {destination}"},right:{default:"Rechts abbiegen",name:"Rechts abbiegen auf {way_name}",destination:"Rechts abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"}},"exit roundabout":{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},left:{default:"Links abbiegen",name:"Links abbiegen auf {way_name}",destination:"Links abbiegen Richtung {destination}"},right:{default:"Rechts abbiegen",name:"Rechts abbiegen auf {way_name}",destination:"Rechts abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"}},"exit rotary":{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},left:{default:"Links abbiegen",name:"Links abbiegen auf {way_name}",destination:"Links abbiegen Richtung {destination}"},right:{default:"Rechts abbiegen",name:"Rechts abbiegen auf {way_name}",destination:"Rechts abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"}},turn:{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},left:{default:"Links abbiegen",name:"Links abbiegen auf {way_name}",destination:"Links abbiegen Richtung {destination}"},right:{default:"Rechts abbiegen",name:"Rechts abbiegen auf {way_name}",destination:"Rechts abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"}},"use lane":{no_lanes:{default:"Geradeaus weiterfahren"},default:{default:"{lane_instruction}"}}}}},{}],25:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1st",2:"2nd",3:"3rd",4:"4th",5:"5th",6:"6th",7:"7th",8:"8th",9:"9th",10:"10th"},direction:{north:"north",northeast:"northeast",east:"east",southeast:"southeast",south:"south",southwest:"southwest",west:"west",northwest:"northwest"},modifier:{left:"left",right:"right","sharp left":"sharp left","sharp right":"sharp right","slight left":"slight left","slight right":"slight right",straight:"straight",uturn:"U-turn"},lanes:{xo:"Keep right",ox:"Keep left",xox:"Keep in the middle",oxo:"Keep left or right"}},modes:{ferry:{default:"Take the ferry",name:"Take the ferry {way_name}",destination:"Take the ferry towards {destination}"}},phrase:{"two linked by distance":"{instruction_one}, then, in {distance}, {instruction_two}","two linked":"{instruction_one}, then {instruction_two}","one in distance":"In {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"You have arrived at your {nth} destination",upcoming:"You will arrive at your {nth} destination",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}"},left:{default:"You have arrived at your {nth} destination, on the left",upcoming:"You will arrive at your {nth} destination, on the left",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the left"},right:{default:"You have arrived at your {nth} destination, on the right",upcoming:"You will arrive at your {nth} destination, on the right",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the right"},"sharp left":{default:"You have arrived at your {nth} destination, on the left",upcoming:"You will arrive at your {nth} destination, on the left",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the left"},"sharp right":{default:"You have arrived at your {nth} destination, on the right",upcoming:"You will arrive at your {nth} destination, on the right",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the right"},"slight right":{default:"You have arrived at your {nth} destination, on the right",upcoming:"You will arrive at your {nth} destination, on the right",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the right"},"slight left":{default:"You have arrived at your {nth} destination, on the left",upcoming:"You will arrive at your {nth} destination, on the left",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the left"},straight:{default:"You have arrived at your {nth} destination, straight ahead",upcoming:"You will arrive at your {nth} destination, straight ahead",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, straight ahead"}},continue:{default:{default:"Turn {modifier}",name:"Turn {modifier} to stay on {way_name}",destination:"Turn {modifier} towards {destination}",exit:"Turn {modifier} onto {way_name}"},straight:{default:"Continue straight",name:"Continue straight to stay on {way_name}",destination:"Continue towards {destination}",distance:"Continue straight for {distance}",namedistance:"Continue on {way_name} for {distance}"},"sharp left":{default:"Make a sharp left",name:"Make a sharp left to stay on {way_name}",destination:"Make a sharp left towards {destination}"},"sharp right":{default:"Make a sharp right",name:"Make a sharp right to stay on {way_name}",destination:"Make a sharp right towards {destination}"},"slight left":{default:"Make a slight left",name:"Make a slight left to stay on {way_name}",destination:"Make a slight left towards {destination}"},"slight right":{default:"Make a slight right",name:"Make a slight right to stay on {way_name}",destination:"Make a slight right towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn and continue on {way_name}",destination:"Make a U-turn towards {destination}"}},depart:{default:{default:"Head {direction}",name:"Head {direction} on {way_name}",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"Turn {modifier}",name:"Turn {modifier} onto {way_name}",destination:"Turn {modifier} towards {destination}"},straight:{default:"Continue straight",name:"Continue straight onto {way_name}",destination:"Continue straight towards {destination}"},uturn:{default:"Make a U-turn at the end of the road",name:"Make a U-turn onto {way_name} at the end of the road",destination:"Make a U-turn towards {destination} at the end of the road"}},fork:{default:{default:"Keep {modifier} at the fork",name:"Keep {modifier} onto {way_name}",destination:"Keep {modifier} towards {destination}"},"slight left":{default:"Keep left at the fork",name:"Keep left onto {way_name}",destination:"Keep left towards {destination}"},"slight right":{default:"Keep right at the fork",name:"Keep right onto {way_name}",destination:"Keep right towards {destination}"},"sharp left":{default:"Take a sharp left at the fork",name:"Take a sharp left onto {way_name}",destination:"Take a sharp left towards {destination}"},"sharp right":{default:"Take a sharp right at the fork",name:"Take a sharp right onto {way_name}",destination:"Take a sharp right towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn onto {way_name}",destination:"Make a U-turn towards {destination}"}},merge:{default:{default:"Merge {modifier}",name:"Merge {modifier} onto {way_name}",destination:"Merge {modifier} towards {destination}"},straight:{default:"Merge",name:"Merge onto {way_name}",destination:"Merge towards {destination}"},"slight left":{default:"Merge left",name:"Merge left onto {way_name}",destination:"Merge left towards {destination}"},"slight right":{default:"Merge right",name:"Merge right onto {way_name}",destination:"Merge right towards {destination}"},"sharp left":{default:"Merge left",name:"Merge left onto {way_name}",destination:"Merge left towards {destination}"},"sharp right":{default:"Merge right",name:"Merge right onto {way_name}",destination:"Merge right towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn onto {way_name}",destination:"Make a U-turn towards {destination}"}},"new name":{default:{default:"Continue {modifier}",name:"Continue {modifier} onto {way_name}",destination:"Continue {modifier} towards {destination}"},straight:{default:"Continue straight",name:"Continue onto {way_name}",destination:"Continue towards {destination}"},"sharp left":{default:"Take a sharp left",name:"Take a sharp left onto {way_name}",destination:"Take a sharp left towards {destination}"},"sharp right":{default:"Take a sharp right",name:"Take a sharp right onto {way_name}",destination:"Take a sharp right towards {destination}"},"slight left":{default:"Continue slightly left",name:"Continue slightly left onto {way_name}", 2503destination:"Continue slightly left towards {destination}"},"slight right":{default:"Continue slightly right",name:"Continue slightly right onto {way_name}",destination:"Continue slightly right towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn onto {way_name}",destination:"Make a U-turn towards {destination}"}},notification:{default:{default:"Continue {modifier}",name:"Continue {modifier} onto {way_name}",destination:"Continue {modifier} towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn onto {way_name}",destination:"Make a U-turn towards {destination}"}},"off ramp":{default:{default:"Take the ramp",name:"Take the ramp onto {way_name}",destination:"Take the ramp towards {destination}",exit:"Take exit {exit}",exit_destination:"Take exit {exit} towards {destination}"},left:{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},right:{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"},"sharp left":{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},"sharp right":{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"},"slight left":{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},"slight right":{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"}},"on ramp":{default:{default:"Take the ramp",name:"Take the ramp onto {way_name}",destination:"Take the ramp towards {destination}"},left:{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}"},right:{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}"},"sharp left":{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}"},"sharp right":{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}"},"slight left":{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}"},"slight right":{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}"}},rotary:{default:{default:{default:"Enter the traffic circle",name:"Enter the traffic circle and exit onto {way_name}",destination:"Enter the traffic circle and exit towards {destination}"},name:{default:"Enter {rotary_name}",name:"Enter {rotary_name} and exit onto {way_name}",destination:"Enter {rotary_name} and exit towards {destination}"},exit:{default:"Enter the traffic circle and take the {exit_number} exit",name:"Enter the traffic circle and take the {exit_number} exit onto {way_name}",destination:"Enter the traffic circle and take the {exit_number} exit towards {destination}"},name_exit:{default:"Enter {rotary_name} and take the {exit_number} exit",name:"Enter {rotary_name} and take the {exit_number} exit onto {way_name}",destination:"Enter {rotary_name} and take the {exit_number} exit towards {destination}"}}},roundabout:{default:{exit:{default:"Enter the traffic circle and take the {exit_number} exit",name:"Enter the traffic circle and take the {exit_number} exit onto {way_name}",destination:"Enter the traffic circle and take the {exit_number} exit towards {destination}"},default:{default:"Enter the traffic circle",name:"Enter the traffic circle and exit onto {way_name}",destination:"Enter the traffic circle and exit towards {destination}"}}},"roundabout turn":{default:{default:"Make a {modifier}",name:"Make a {modifier} onto {way_name}",destination:"Make a {modifier} towards {destination}"},left:{default:"Turn left",name:"Turn left onto {way_name}",destination:"Turn left towards {destination}"},right:{default:"Turn right",name:"Turn right onto {way_name}",destination:"Turn right towards {destination}"},straight:{default:"Continue straight",name:"Continue straight onto {way_name}",destination:"Continue straight towards {destination}"}},"exit roundabout":{default:{default:"Exit the traffic circle",name:"Exit the traffic circle onto {way_name}",destination:"Exit the traffic circle towards {destination}"}},"exit rotary":{default:{default:"Exit the traffic circle",name:"Exit the traffic circle onto {way_name}",destination:"Exit the traffic circle towards {destination}"}},turn:{default:{default:"Make a {modifier}",name:"Make a {modifier} onto {way_name}",destination:"Make a {modifier} towards {destination}"},left:{default:"Turn left",name:"Turn left onto {way_name}",destination:"Turn left towards {destination}"},right:{default:"Turn right",name:"Turn right onto {way_name}",destination:"Turn right towards {destination}"},straight:{default:"Go straight",name:"Go straight onto {way_name}",destination:"Go straight towards {destination}"}},"use lane":{no_lanes:{default:"Continue straight"},default:{default:"{lane_instruction}"}}}}},{}],26:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1.",2:"2.",3:"3.",4:"4.",5:"5.",6:"6.",7:"7.",8:"8.",9:"9.",10:"10."},direction:{north:"norden",northeast:"nord-orienten",east:"orienten",southeast:"sud-orienten",south:"suden",southwest:"sud-okcidenten",west:"okcidenten",northwest:"nord-okcidenten"},modifier:{left:"maldekstren",right:"dekstren","sharp left":"maldekstregen","sharp right":"dekstregen","slight left":"maldekstreten","slight right":"dekstreten",straight:"rekten",uturn:"turniÄu malantaÅen"},lanes:{xo:"Veturu dekstre",ox:"Veturu maldekstre",xox:"Veturu meze",oxo:"Veturu dekstre aÅ maldekstre"}},modes:{ferry:{default:"EnpramiÄu",name:"EnpramiÄu {way_name}",destination:"EnpramiÄu direkte al {destination}"}},phrase:{"two linked by distance":"{instruction_one} kaj post {distance} {instruction_two}","two linked":"{instruction_one} kaj sekve {instruction_two}","one in distance":"Post {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"elveturejo {exit}"},arrive:{default:{default:"Vi atingis vian {nth} celon",upcoming:"Vi atingos vian {nth} celon",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}"},left:{default:"Vi atingis vian {nth} celon Äe maldekstre",upcoming:"Vi atingos vian {nth} celon Äe maldekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe maldekstre"},right:{default:"Vi atingis vian {nth} celon Äe dekstre",upcoming:"Vi atingos vian {nth} celon Äe dekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe dekstre"},"sharp left":{default:"Vi atingis vian {nth} celon Äe maldekstre",upcoming:"Vi atingos vian {nth} celon Äe maldekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe maldekstre"},"sharp right":{default:"Vi atingis vian {nth} celon Äe dekstre",upcoming:"Vi atingos vian {nth} celon Äe dekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe dekstre"},"slight right":{default:"Vi atingis vian {nth} celon Äe dekstre",upcoming:"Vi atingos vian {nth} celon Äe dekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe dekstre"},"slight left":{default:"Vi atingis vian {nth} celon Äe maldekstre",upcoming:"Vi atingos vian {nth} celon Äe maldekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe maldekstre"},straight:{default:"Vi atingis vian {nth} celon",upcoming:"Vi atingos vian {nth} celon rekte",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name} antaÅe"}},continue:{default:{default:"Veturu {modifier}",name:"Veturu {modifier} al {way_name}",destination:"Veturu {modifier} direkte al {destination}",exit:"Veturu {modifier} direkte al {way_name}"},straight:{default:"Veturu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}",distance:"Veturu rekten dum {distance}",namedistance:"Veturu rekten al {way_name} dum {distance}"},"sharp left":{default:"TurniÄu ege maldekstren",name:"TurniÄu ege maldekstren al {way_name}",destination:"TurniÄu ege maldekstren direkte al {destination}"},"sharp right":{default:"TurniÄu ege dekstren",name:"TurniÄu ege dekstren al {way_name}",destination:"TurniÄu ege dekstren direkte al {destination}"},"slight left":{default:"TurniÄu ete maldekstren",name:"TurniÄu ete maldekstren al {way_name}",destination:"TurniÄu ete maldekstren direkte al {destination}"},"slight right":{default:"TurniÄu ete dekstren",name:"TurniÄu ete dekstren al {way_name}",destination:"TurniÄu ete dekstren direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},depart:{default:{default:"DirektiÄu {direction}",name:"DirektiÄu {direction} al {way_name}",namedistance:"DirektiÄu {direction} al {way_name} tra {distance}"}},"end of road":{default:{default:"Veturu {modifier}",name:"Veturu {modifier} direkte al {way_name}",destination:"Veturu {modifier} direkte al {destination}"},straight:{default:"Veturu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen Äe fino de la vojo",name:"TurniÄu malantaÅen al {way_name} Äe fino de la vojo",destination:"TurniÄu malantaÅen direkte al {destination} Äe fino de la vojo"}},fork:{default:{default:"DaÅru {modifier} Äe la vojforko",name:"Pluu {modifier} al {way_name}",destination:"Pluu {modifier} direkte al {destination}"},"slight left":{default:"Maldekstren Äe la vojforko",name:"Pluu maldekstren al {way_name}",destination:"Pluu maldekstren direkte al {destination}"},"slight right":{default:"Dekstren Äe la vojforko",name:"Pluu dekstren al {way_name}",destination:"Pluu dekstren direkte al {destination}"},"sharp left":{default:"Ege maldekstren Äe la vojforko",name:"TurniÄu ege maldekstren al {way_name}",destination:"TurniÄu ege maldekstren direkte al {destination}"},"sharp right":{default:"Ege dekstren Äe la vojforko",name:"TurniÄu ege dekstren al {way_name}",destination:"TurniÄu ege dekstren direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},merge:{default:{default:"Enveturu {modifier}",name:"Enveturu {modifier} al {way_name}",destination:"Enveturu {modifier} direkte al {destination}"},straight:{default:"Enveturu",name:"Enveturu al {way_name}",destination:"Enveturu direkte al {destination}"},"slight left":{default:"Enveturu de maldekstre",name:"Enveturu de maldekstre al {way_name}",destination:"Enveturu de maldekstre direkte al {destination}"},"slight right":{default:"Enveturu de dekstre",name:"Enveturu de dekstre al {way_name}",destination:"Enveturu de dekstre direkte al {destination}"},"sharp left":{default:"Enveturu de maldekstre",name:"Enveture de maldekstre al {way_name}",destination:"Enveturu de maldekstre direkte al {destination}"},"sharp right":{default:"Enveturu de dekstre",name:"Enveturu de dekstre al {way_name}",destination:"Enveturu de dekstre direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},"new name":{default:{default:"Pluu {modifier}",name:"Pluu {modifier} al {way_name}",destination:"Pluu {modifier} direkte al {destination}"},straight:{default:"Veturu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}"},"sharp left":{default:"TurniÄu ege maldekstren",name:"TurniÄu ege maldekstren al {way_name}",destination:"TurniÄu ege maldekstren direkte al {destination}"},"sharp right":{default:"TurniÄu ege dekstren",name:"TurniÄu ege dekstren al {way_name}",destination:"TurniÄu ege dekstren direkte al {destination}"},"slight left":{default:"Pluu ete maldekstren",name:"Pluu ete maldekstren al {way_name}",destination:"Pluu ete maldekstren direkte al {destination}"},"slight right":{default:"Pluu ete dekstren",name:"Pluu ete dekstren al {way_name}",destination:"Pluu ete dekstren direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},notification:{default:{default:"Pluu {modifier}",name:"Pluu {modifier} al {way_name}",destination:"Pluu {modifier} direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},"off ramp":{default:{default:"DirektiÄu al enveturejo",name:"DirektiÄu al enveturejo al {way_name}",destination:"DirektiÄu al enveturejo direkte al {destination}",exit:"DirektiÄu al elveturejo {exit}",exit_destination:"DirektiÄu al elveturejo {exit} direkte al {destination}"},left:{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}",exit:"DirektiÄu al elveturejo {exit} Äe maldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe maldekstre direkte al {destination}"},right:{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}",exit:"DirektiÄu al {exit} elveturejo Äe ldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe dekstre direkte al {destination}"},"sharp left":{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}",exit:"DirektiÄu al {exit} elveturejo Äe maldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe maldekstre direkte al {destination}"},"sharp right":{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}",exit:"DirektiÄu al elveturejo {exit} Äe dekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe dekstre direkte al {destination}"},"slight left":{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}",exit:"DirektiÄu al {exit} elveturejo Äe maldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe maldekstre direkte al {destination}"},"slight right":{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}",exit:"DirektiÄu al {exit} elveturejo Äe ldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe dekstre direkte al {destination}"}},"on ramp":{default:{default:"DirektiÄu al enveturejo",name:"DirektiÄu al enveturejo al {way_name}",destination:"DirektiÄu al enveturejo direkte al {destination}"},left:{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}"},right:{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}"},"sharp left":{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}"},"sharp right":{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}"},"slight left":{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}"},"slight right":{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}"}},rotary:{default:{default:{default:"Enveturu trafikcirklegon",name:"Enveturu trafikcirklegon kaj elveturu al {way_name}",destination:"Enveturu trafikcirklegon kaj elveturu direkte al {destination}"},name:{default:"Enveturu {rotary_name}",name:"Enveturu {rotary_name} kaj elveturu al {way_name}",destination:"Enveturu {rotary_name} kaj elveturu direkte al {destination}"},exit:{default:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo",name:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo al {way_name}",destination:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo direkte al {destination}"},name_exit:{default:"Enveturu {rotary_name} kaj sekve al {exit_number} elveturejo",name:"Enveturu {rotary_name} kaj sekve al {exit_number} elveturejo al {way_name}",destination:"Enveturu {rotary_name} kaj sekve al {exit_number} elveturejo direkte al {destination}"}}},roundabout:{default:{exit:{default:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo",name:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo al {way_name}",destination:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo direkte al {destination}"},default:{default:"Enveturu trafikcirklegon",name:"Enveturu trafikcirklegon kaj elveturu al {way_name}",destination:"Enveturu trafikcirklegon kaj elveturu direkte al {destination}"}}},"roundabout turn":{default:{default:"Veturu {modifier}",name:"Veturu {modifier} al {way_name}",destination:"Veturu {modifier} direkte al {destination}"},left:{default:"TurniÄu maldekstren",name:"TurniÄu maldekstren al {way_name}",destination:"TurniÄu maldekstren direkte al {destination}"},right:{default:"TurniÄu dekstren",name:"TurniÄu dekstren al {way_name}",destination:"TurniÄu dekstren direkte al {destination}"},straight:{default:"Pluu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}"}},"exit roundabout":{default:{default:"Elveturu trafikcirklegon",name:"Elveturu trafikcirklegon al {way_name}",destination:"Elveturu trafikcirklegon direkte al {destination}"}},"exit rotary":{default:{default:"Eliru trafikcirklegon",name:"Elveturu trafikcirklegon al {way_name}",destination:"Elveturu trafikcirklegon direkte al {destination}"}},turn:{default:{default:"Veturu {modifier}",name:"Veturu {modifier} al {way_name}",destination:"Veturu {modifier} direkte al {destination}"},left:{default:"TurniÄu maldekstren",name:"TurniÄu maldekstren al {way_name}",destination:"TurniÄu maldekstren direkte al {destination}"},right:{default:"TurniÄu dekstren",name:"TurniÄu dekstren al {way_name}",destination:"TurniÄu dekstren direkte al {destination}"},straight:{default:"Veturu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}"}},"use lane":{no_lanes:{default:"Pluu rekten"},default:{default:"{lane_instruction}"}}}}},{}],27:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1ª",2:"2ª",3:"3ª",4:"4ª",5:"5ª",6:"6ª",7:"7ª",8:"8ª",9:"9ª",10:"10ª"},direction:{north:"norte",northeast:"noreste",east:"este",southeast:"sureste",south:"sur",southwest:"suroeste",west:"oeste",northwest:"noroeste"},modifier:{left:"a la izquierda",right:"a la derecha","sharp left":"cerrada a la izquierda","sharp right":"cerrada a la derecha","slight left":"ligeramente a la izquierda","slight right":"ligeramente a la derecha",straight:"recto",uturn:"cambio de sentido"},lanes:{xo:"Mantente a la derecha",ox:"Mantente a la izquierda",xox:"Mantente en el medio",oxo:"Mantente a la izquierda o a la derecha"}},modes:{ferry:{default:"Coge el ferry",name:"Coge el ferry {way_name}",destination:"Coge el ferry hacia {destination}"}},phrase:{"two linked by distance":"{instruction_one} y luego en {distance}, {instruction_two}","two linked":"{instruction_one} y luego {instruction_two}","one in distance":"A {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"salida {exit}"},arrive:{default:{default:"Has llegado a tu {nth} destino",upcoming:"Vas a llegar a tu {nth} destino",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}"},left:{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},right:{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"sharp left":{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},"sharp right":{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"slight right":{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"slight left":{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},straight:{default:"Has llegado a tu {nth} destino, en frente",upcoming:"Vas a llegar a tu {nth} destino, en frente",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, en frente"}},continue:{default:{default:"Gire {modifier}",name:"Cruce {modifier} en {way_name}",destination:"Gire {modifier} hacia {destination}",exit:"Gire {modifier} en {way_name}"},straight:{default:"Continúa recto",name:"Continúa en {way_name}",destination:"Continúa hacia {destination}",distance:"Continúa recto por {distance}",namedistance:"Continúa recto en {way_name} por {distance}"},"sharp left":{default:"Gire a la izquierda",name:"Gire a la izquierda en {way_name}",destination:"Gire a la izquierda hacia {destination}"},"sharp right":{default:"Gire a la derecha",name:"Gire a la derecha en {way_name}",destination:"Gire a la derecha hacia {destination}"},"slight left":{default:"Gire a la izquierda",name:"Doble levemente a la izquierda en {way_name}",destination:"Gire a la izquierda hacia {destination}"},"slight right":{default:"Gire a la izquierda",name:"Doble levemente a la derecha en {way_name}",destination:"Gire a la izquierda hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido y continúa en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},depart:{default:{default:"DirÃgete al {direction}",name:"DirÃgete al {direction} por {way_name}",namedistance:"DirÃgete al {direction} en {way_name} por {distance}"}},"end of road":{default:{default:"Al final de la calle gira {modifier}",name:"Al final de la calle gira {modifier} por {way_name}",destination:"Al final de la calle gira {modifier} hacia {destination}"},straight:{default:"Al final de la calle continúa recto",name:"Al final de la calle continúa recto por {way_name}",destination:"Al final de la calle continúa recto hacia {destination}"},uturn:{default:"Al final de la calle haz un cambio de sentido",name:"Al final de la calle haz un cambio de sentido en {way_name}",destination:"Al final de la calle haz un cambio de sentido hacia {destination}"}},fork:{default:{default:"Mantente {modifier} en el cruce",name:"Mantente {modifier} por {way_name}",destination:"Mantente {modifier} hacia {destination}"},"slight left":{default:"Mantente a la izquierda en el cruce",name:"Mantente a la izquierda por {way_name}",destination:"Mantente a la izquierda hacia {destination}"},"slight right":{default:"Mantente a la derecha en el cruce",name:"Mantente a la derecha por {way_name}",destination:"Mantente a la derecha hacia {destination}"},"sharp left":{default:"Gira la izquierda en el cruce",name:"Gira a la izquierda por {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha en el cruce",name:"Gira a la derecha por {way_name}",destination:"Gira a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},merge:{default:{default:"Incorpórate {modifier}",name:"Incorpórate {modifier} por {way_name}",destination:"Incorpórate {modifier} hacia {destination}"},straight:{default:"Incorpórate",name:"Incorpórate por {way_name}",destination:"Incorpórate hacia {destination}"},"slight left":{default:"Incorpórate a la izquierda",name:"Incorpórate a la izquierda por {way_name}",destination:"Incorpórate a la izquierda hacia {destination}"},"slight right":{default:"Incorpórate a la derecha",name:"Incorpórate a la derecha por {way_name}",destination:"Incorpórate a la derecha hacia {destination}"},"sharp left":{default:"Incorpórate a la izquierda",name:"Incorpórate a la izquierda por {way_name}",destination:"Incorpórate a la izquierda hacia {destination}"},"sharp right":{default:"Incorpórate a la derecha",name:"Incorpórate a la derecha por {way_name}",destination:"Incorpórate a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},"new name":{default:{default:"Continúa {modifier}",name:"Continúa {modifier} por {way_name}",destination:"Continúa {modifier} hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa por {way_name}",destination:"Continúa hacia {destination}"},"sharp left":{default:"Gira a la izquierda",name:"Gira a la izquierda por {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha",name:"Gira a la derecha por {way_name}",destination:"Gira a la derecha hacia {destination}"},"slight left":{default:"Continúa ligeramente por la izquierda",name:"Continúa ligeramente por la izquierda por {way_name}",destination:"Continúa ligeramente por la izquierda hacia {destination}"},"slight right":{default:"Continúa ligeramente por la derecha",name:"Continúa ligeramente por la derecha por {way_name}",destination:"Continúa ligeramente por la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},notification:{default:{default:"Continúa {modifier}",name:"Continúa {modifier} por {way_name}",destination:"Continúa {modifier} hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},"off ramp":{default:{default:"Coge la cuesta abajo",name:"Coge la cuesta abajo por {way_name}",destination:"Coge la cuesta abajo hacia {destination}",exit:"Coge la cuesta abajo {exit}",exit_destination:"Coge la cuesta abajo {exit} hacia {destination}"},left:{default:"Coge la cuesta abajo de la izquierda",name:"Coge la cuesta abajo de la izquierda por {way_name}",destination:"Coge la cuesta abajo de la izquierda hacia {destination}",exit:"Coge la cuesta abajo {exit} a tu izquierda",exit_destination:"Coge la cuesta abajo {exit} a tu izquierda hacia {destination}"},right:{default:"Coge la cuesta abajo de la derecha",name:"Coge la cuesta abajo de la derecha por {way_name}",destination:"Coge la cuesta abajo de la derecha hacia {destination}",exit:"Coge la cuesta abajo {exit}",exit_destination:"Coge la cuesta abajo {exit} hacia {destination}"},"sharp left":{default:"Coge la cuesta abajo de la izquierda",name:"Coge la cuesta abajo de la izquierda por {way_name}",destination:"Coge la cuesta abajo de la izquierda hacia {destination}",exit:"Coge la cuesta abajo {exit} a tu izquierda",exit_destination:"Coge la cuesta abajo {exit} a tu izquierda hacia {destination}"},"sharp right":{default:"Coge la cuesta abajo de la derecha",name:"Coge la cuesta abajo de la derecha por {way_name}",destination:"Coge la cuesta abajo de la derecha hacia {destination}",exit:"Coge la cuesta abajo {exit}",exit_destination:"Coge la cuesta abajo {exit} hacia {destination}"},"slight left":{default:"Coge la cuesta abajo de la izquierda",name:"Coge la cuesta abajo de la izquierda por {way_name}",destination:"Coge la cuesta abajo de la izquierda hacia {destination}",exit:"Coge la cuesta abajo {exit} a tu izquierda",exit_destination:"Coge la cuesta abajo {exit} a tu izquierda hacia {destination}"},"slight right":{default:"Coge la cuesta abajo de la derecha",name:"Coge la cuesta abajo de la derecha por {way_name}",destination:"Coge la cuesta abajo de la derecha hacia {destination}",exit:"Coge la cuesta abajo {exit}",exit_destination:"Coge la cuesta abajo {exit} hacia {destination}"}},"on ramp":{default:{default:"Coge la cuesta",name:"Coge la cuesta por {way_name}",destination:"Coge la cuesta hacia {destination}"},left:{default:"Coge la cuesta de la izquierda",name:"Coge la cuesta de la izquierda por {way_name}",destination:"Coge la cuesta de la izquierda hacia {destination}"},right:{default:"Coge la cuesta de la derecha",name:"Coge la cuesta de la derecha por {way_name}",destination:"Coge la cuesta de la derecha hacia {destination}"},"sharp left":{default:"Coge la cuesta de la izquierda",name:"Coge la cuesta de la izquierda por {way_name}",destination:"Coge la cuesta de la izquierda hacia {destination}"},"sharp right":{default:"Coge la cuesta de la derecha",name:"Coge la cuesta de la derecha por {way_name}",destination:"Coge la cuesta de la derecha hacia {destination}"},"slight left":{default:"Coge la cuesta de la izquierda",name:"Coge la cuesta de la izquierda por {way_name}",destination:"Coge la cuesta de la izquierda hacia {destination}"},"slight right":{default:"Coge la cuesta de la derecha",name:"Coge la cuesta de la derecha por {way_name}",destination:"Coge la cuesta de la derecha hacia {destination}"}},rotary:{default:{default:{default:"Incorpórate en la rotonda",name:"En la rotonda sal por {way_name}",destination:"En la rotonda sal hacia {destination}"},name:{default:"En {rotary_name}",name:"En {rotary_name} sal por {way_name}",destination:"En {rotary_name} sal hacia {destination}"},exit:{default:"En la rotonda toma la {exit_number} salida", 2504name:"En la rotonda toma la {exit_number} salida por {way_name}",destination:"En la rotonda toma la {exit_number} salida hacia {destination}"},name_exit:{default:"En {rotary_name} toma la {exit_number} salida",name:"En {rotary_name} toma la {exit_number} salida por {way_name}",destination:"En {rotary_name} toma la {exit_number} salida hacia {destination}"}}},roundabout:{default:{exit:{default:"En la rotonda toma la {exit_number} salida",name:"En la rotonda toma la {exit_number} salida por {way_name}",destination:"En la rotonda toma la {exit_number} salida hacia {destination}"},default:{default:"Incorpórate en la rotonda",name:"Incorpórate en la rotonda y sal en {way_name}",destination:"Incorpórate en la rotonda y sal hacia {destination}"}}},"roundabout turn":{default:{default:"Siga {modifier}",name:"Siga {modifier} en {way_name}",destination:"Siga {modifier} hacia {destination}"},left:{default:"Gire a la izquierda",name:"Gire a la izquierda en {way_name}",destination:"Gire a la izquierda hacia {destination}"},right:{default:"Gire a la derecha",name:"Gire a la derecha en {way_name}",destination:"Gire a la derecha hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa recto por {way_name}",destination:"Continúa recto hacia {destination}"}},"exit roundabout":{default:{default:"Sal la rotonda",name:"Toma la salida por {way_name}",destination:"Toma la salida hacia {destination}"}},"exit rotary":{default:{default:"Sal la rotonda",name:"Toma la salida por {way_name}",destination:"Toma la salida hacia {destination}"}},turn:{default:{default:"Gira {modifier}",name:"Gira {modifier} por {way_name}",destination:"Gira {modifier} hacia {destination}"},left:{default:"Gira a la izquierda",name:"Gira a la izquierda por {way_name}",destination:"Gira a la izquierda hacia {destination}"},right:{default:"Gira a la derecha",name:"Gira a la derecha por {way_name}",destination:"Gira a la derecha hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa recto por {way_name}",destination:"Continúa recto hacia {destination}"}},"use lane":{no_lanes:{default:"Continúa recto"},default:{default:"{lane_instruction}"}}}}},{}],28:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1ª",2:"2ª",3:"3ª",4:"4ª",5:"5ª",6:"6ª",7:"7ª",8:"8ª",9:"9ª",10:"10ª"},direction:{north:"norte",northeast:"noreste",east:"este",southeast:"sureste",south:"sur",southwest:"suroeste",west:"oeste",northwest:"noroeste"},modifier:{left:"izquierda",right:"derecha","sharp left":"cerrada a la izquierda","sharp right":"cerrada a la derecha","slight left":"levemente a la izquierda","slight right":"levemente a la derecha",straight:"recto",uturn:"cambio de sentido"},lanes:{xo:"Mantente a la derecha",ox:"Mantente a la izquierda",xox:"Mantente en el medio",oxo:"Mantente a la izquierda o derecha"}},modes:{ferry:{default:"Coge el ferry",name:"Coge el ferry {way_name}",destination:"Coge el ferry a {destination}"}},phrase:{"two linked by distance":"{instruction_one} y luego a {distance}, {instruction_two}","two linked":"{instruction_one} y luego {instruction_two}","one in distance":"A {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"salida {exit}"},arrive:{default:{default:"Has llegado a tu {nth} destino",upcoming:"Vas a llegar a tu {nth} destino",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}"},left:{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},right:{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"sharp left":{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},"sharp right":{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"slight right":{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"slight left":{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},straight:{default:"Has llegado a tu {nth} destino, en frente",upcoming:"Vas a llegar a tu {nth} destino, en frente",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, en frente"}},continue:{default:{default:"Gira a {modifier}",name:"Cruza a la{modifier} en {way_name}",destination:"Gira a {modifier} hacia {destination}",exit:"Gira a {modifier} en {way_name}"},straight:{default:"Continúa recto",name:"Continúa en {way_name}",destination:"Continúa hacia {destination}",distance:"Continúa recto por {distance}",namedistance:"Continúa recto en {way_name} por {distance}"},"sharp left":{default:"Gira a la izquierda",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},"slight left":{default:"Gira a la izquierda",name:"Dobla levemente a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},"slight right":{default:"Gira a la izquierda",name:"Dobla levemente a la derecha en {way_name}",destination:"Gira a la izquierda hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido y continúa en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},depart:{default:{default:"Ve a {direction}",name:"Ve a {direction} en {way_name}",namedistance:"Ve a {direction} en {way_name} por {distance}"}},"end of road":{default:{default:"Gira a {modifier}",name:"Gira a {modifier} en {way_name}",destination:"Gira a {modifier} hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa recto en {way_name}",destination:"Continúa recto hacia {destination}"},uturn:{default:"Haz un cambio de sentido al final de la via",name:"Haz un cambio de sentido en {way_name} al final de la via",destination:"Haz un cambio de sentido hacia {destination} al final de la via"}},fork:{default:{default:"Mantente {modifier} en el cruza",name:"Mantente {modifier} en {way_name}",destination:"Mantente {modifier} hacia {destination}"},"slight left":{default:"Mantente a la izquierda en el cruza",name:"Mantente a la izquierda en {way_name}",destination:"Mantente a la izquierda hacia {destination}"},"slight right":{default:"Mantente a la derecha en el cruza",name:"Mantente a la derecha en {way_name}",destination:"Mantente a la derecha hacia {destination}"},"sharp left":{default:"Gira a la izquierda en el cruza",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha en el cruza",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},merge:{default:{default:"Incorpórate a {modifier}",name:"Incorpórate a {modifier} en {way_name}",destination:"Incorpórate a {modifier} hacia {destination}"},straight:{default:"Incorpórate",name:"Incorpórate a {way_name}",destination:"Incorpórate hacia {destination}"},"slight left":{default:"Incorpórate a la izquierda",name:"Incorpórate a la izquierda en {way_name}",destination:"Incorpórate a la izquierda hacia {destination}"},"slight right":{default:"Incorpórate a la derecha",name:"Incorpórate a la derecha en {way_name}",destination:"Incorpórate a la derecha hacia {destination}"},"sharp left":{default:"Incorpórate a la izquierda",name:"Incorpórate a la izquierda en {way_name}",destination:"Incorpórate a la izquierda hacia {destination}"},"sharp right":{default:"Incorpórate a la derecha",name:"Incorpórate a la derecha en {way_name}",destination:"Incorpórate a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},"new name":{default:{default:"Continúa {modifier}",name:"Continúa {modifier} en {way_name}",destination:"Continúa {modifier} hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa en {way_name}",destination:"Continúa hacia {destination}"},"sharp left":{default:"Gira a la izquierda",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},"slight left":{default:"Continúa levemente a la izquierda",name:"Continúa levemente a la izquierda en {way_name}",destination:"Continúa levemente a la izquierda hacia {destination}"},"slight right":{default:"Continúa levemente a la derecha",name:"Continúa levemente a la derecha en {way_name}",destination:"Continúa levemente a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},notification:{default:{default:"Continúa {modifier}",name:"Continúa {modifier} en {way_name}",destination:"Continúa {modifier} hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},"off ramp":{default:{default:"Toma la salida",name:"Toma la salida en {way_name}",destination:"Toma la salida hacia {destination}",exit:"Toma la salida {exit}",exit_destination:"Toma la salida {exit} hacia {destination}"},left:{default:"Toma la salida en la izquierda",name:"Toma la salida en la izquierda en {way_name}",destination:"Toma la salida en la izquierda en {destination}",exit:"Toma la salida {exit} en la izquierda",exit_destination:"Toma la salida {exit} en la izquierda hacia {destination}"},right:{default:"Toma la salida en la derecha",name:"Toma la salida en la derecha en {way_name}",destination:"Toma la salida en la derecha hacia {destination}",exit:"Toma la salida {exit} en la derecha",exit_destination:"Toma la salida {exit} en la derecha hacia {destination}"},"sharp left":{default:"Ve cuesta abajo en la izquierda",name:"Ve cuesta abajo en la izquierda en {way_name}",destination:"Ve cuesta abajo en la izquierda hacia {destination}",exit:"Toma la salida {exit} en la izquierda",exit_destination:"Toma la salida {exit} en la izquierda hacia {destination}"},"sharp right":{default:"Ve cuesta abajo en la derecha",name:"Ve cuesta abajo en la derecha en {way_name}",destination:"Ve cuesta abajo en la derecha hacia {destination}",exit:"Toma la salida {exit} en la derecha",exit_destination:"Toma la salida {exit} en la derecha hacia {destination}"},"slight left":{default:"Ve cuesta abajo en la izquierda",name:"Ve cuesta abajo en la izquierda en {way_name}",destination:"Ve cuesta abajo en la izquierda hacia {destination}",exit:"Toma la salida {exit} en la izquierda",exit_destination:"Toma la salida {exit} en la izquierda hacia {destination}"},"slight right":{default:"Toma la salida en la derecha",name:"Toma la salida en la derecha en {way_name}",destination:"Toma la salida en la derecha hacia {destination}",exit:"Toma la salida {exit} en la derecha",exit_destination:"Toma la salida {exit} en la derecha hacia {destination}"}},"on ramp":{default:{default:"Toma la rampa",name:"Toma la rampa en {way_name}",destination:"Toma la rampa hacia {destination}"},left:{default:"Toma la rampa en la izquierda",name:"Toma la rampa en la izquierda en {way_name}",destination:"Toma la rampa en la izquierda hacia {destination}"},right:{default:"Toma la rampa en la derecha",name:"Toma la rampa en la derecha en {way_name}",destination:"Toma la rampa en la derecha hacia {destination}"},"sharp left":{default:"Toma la rampa en la izquierda",name:"Toma la rampa en la izquierda en {way_name}",destination:"Toma la rampa en la izquierda hacia {destination}"},"sharp right":{default:"Toma la rampa en la derecha",name:"Toma la rampa en la derecha en {way_name}",destination:"Toma la rampa en la derecha hacia {destination}"},"slight left":{default:"Toma la rampa en la izquierda",name:"Toma la rampa en la izquierda en {way_name}",destination:"Toma la rampa en la izquierda hacia {destination}"},"slight right":{default:"Toma la rampa en la derecha",name:"Toma la rampa en la derecha en {way_name}",destination:"Toma la rampa en la derecha hacia {destination}"}},rotary:{default:{default:{default:"Entra en la rotonda",name:"Entra en la rotonda y sal en {way_name}",destination:"Entra en la rotonda y sal hacia {destination}"},name:{default:"Entra en {rotary_name}",name:"Entra en {rotary_name} y sal en {way_name}",destination:"Entra en {rotary_name} y sal hacia {destination}"},exit:{default:"Entra en la rotonda y toma la {exit_number} salida",name:"Entra en la rotonda y toma la {exit_number} salida a {way_name}",destination:"Entra en la rotonda y toma la {exit_number} salida hacia {destination}"},name_exit:{default:"Entra en {rotary_name} y coge la {exit_number} salida",name:"Entra en {rotary_name} y coge la {exit_number} salida en {way_name}",destination:"Entra en {rotary_name} y coge la {exit_number} salida hacia {destination}"}}},roundabout:{default:{exit:{default:"Entra en la rotonda y toma la {exit_number} salida",name:"Entra en la rotonda y toma la {exit_number} salida a {way_name}",destination:"Entra en la rotonda y toma la {exit_number} salida hacia {destination}"},default:{default:"Entra en la rotonda",name:"Entra en la rotonda y sal en {way_name}",destination:"Entra en la rotonda y sal hacia {destination}"}}},"roundabout turn":{default:{default:"Sigue {modifier}",name:"Sigue {modifier} en {way_name}",destination:"Sigue {modifier} hacia {destination}"},left:{default:"Gira a la izquierda",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},right:{default:"Gira a la derecha",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa recto en {way_name}",destination:"Continúa recto hacia {destination}"}},"exit roundabout":{default:{default:"Sal la rotonda",name:"Sal la rotonda en {way_name}",destination:"Sal la rotonda hacia {destination}"}},"exit rotary":{default:{default:"Sal la rotonda",name:"Sal la rotonda en {way_name}",destination:"Sal la rotonda hacia {destination}"}},turn:{default:{default:"Sigue {modifier}",name:"Sigue {modifier} en {way_name}",destination:"Sigue {modifier} hacia {destination}"},left:{default:"Gira a la izquierda",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},right:{default:"Gira a la derecha",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},straight:{default:"Ve recto",name:"Ve recto en {way_name}",destination:"Ve recto hacia {destination}"}},"use lane":{no_lanes:{default:"Continúa recto"},default:{default:"{lane_instruction}"}}}}},{}],29:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1.",2:"2.",3:"3.",4:"4.",5:"5.",6:"6.",7:"7.",8:"8.",9:"9.",10:"10."},direction:{north:"pohjoiseen",northeast:"koilliseen",east:"itään",southeast:"kaakkoon",south:"etelään",southwest:"lounaaseen",west:"länteen",northwest:"luoteeseen"},modifier:{left:"vasemmall(e/a)",right:"oikeall(e/a)","sharp left":"jyrkästi vasempaan","sharp right":"jyrkästi oikeaan","slight left":"loivasti vasempaan","slight right":"loivasti oikeaan",straight:"suoraan eteenpäin",uturn:"U-käännös"},lanes:{xo:"Pysy oikealla",ox:"Pysy vasemmalla",xox:"Pysy keskellä",oxo:"Pysy vasemmalla tai oikealla"}},modes:{ferry:{default:"Aja lautalle",name:"Aja lautalle {way_name}",destination:"Aja lautalle, jonka määränpää on {destination}"}},phrase:{"two linked by distance":"{instruction_one}, sitten {distance} päästä, {instruction_two}","two linked":"{instruction_one}, sitten {instruction_two}","one in distance":"{distance} päästä, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"{exit}"},arrive:{default:{default:"Olet saapunut {nth} määränpäähäsi",upcoming:"Saavut {nth} määränpäähäsi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}"},left:{default:"Olet saapunut {nth} määränpäähäsi, joka on vasemmalla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on vasemmalla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on vasemmalla puolellasi"},right:{default:"Olet saapunut {nth} määränpäähäsi, joka on oikealla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on oikealla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on oikealla puolellasi"},"sharp left":{default:"Olet saapunut {nth} määränpäähäsi, joka on vasemmalla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on vasemmalla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on vasemmalla puolellasi"},"sharp right":{default:"Olet saapunut {nth} määränpäähäsi, joka on oikealla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on oikealla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on oikealla puolellasi"},"slight right":{default:"Olet saapunut {nth} määränpäähäsi, joka on oikealla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on oikealla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on oikealla puolellasi"},"slight left":{default:"Olet saapunut {nth} määränpäähäsi, joka on vasemmalla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on vasemmalla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on vasemmalla puolellasi"},straight:{default:"Olet saapunut {nth} määränpäähäsi, joka on suoraan edessäsi",upcoming:"Saavut {nth} määränpäähäsi, suoraan edessä",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on suoraan edessäsi"}},continue:{default:{default:"Käänny {modifier}",name:"Käänny {modifier} pysyäksesi tiellä {way_name}",destination:"Käänny {modifier} suuntana {destination}",exit:"Käänny {modifier} tielle {way_name}"},straight:{default:"Jatka suoraan eteenpäin",name:"Jatka suoraan pysyäksesi tiellä {way_name}",destination:"Jatka suuntana {destination}",distance:"Jatka suoraan {distance}",namedistance:"Jatka tiellä {way_name} {distance}"},"sharp left":{default:"Jatka jyrkästi vasempaan",name:"Jatka jyrkästi vasempaan pysyäksesi tiellä {way_name}",destination:"Jatka jyrkästi vasempaan suuntana {destination}"},"sharp right":{default:"Jatka jyrkästi oikeaan",name:"Jatka jyrkästi oikeaan pysyäksesi tiellä {way_name}",destination:"Jatka jyrkästi oikeaan suuntana {destination}"},"slight left":{default:"Jatka loivasti vasempaan",name:"Jatka loivasti vasempaan pysyäksesi tiellä {way_name}",destination:"Jatka loivasti vasempaan suuntana {destination}"},"slight right":{default:"Jatka loivasti oikeaan",name:"Jatka loivasti oikeaan pysyäksesi tiellä {way_name}",destination:"Jatka loivasti oikeaan suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös ja jatka tietä {way_name}",destination:"Tee U-käännös suuntana {destination}"}},depart:{default:{default:"Aja {direction}",name:"Aja tietä {way_name} {direction}",namedistance:"Aja {distance} {direction} tietä {way_name} "}},"end of road":{default:{default:"Käänny {modifier}",name:"Käänny {modifier} tielle {way_name}",destination:"Käänny {modifier} suuntana {destination}"},straight:{default:"Jatka suoraan eteenpäin",name:"Jatka suoraan eteenpäin tielle {way_name}",destination:"Jatka suoraan eteenpäin suuntana {destination}"},uturn:{default:"Tien päässä tee U-käännös",name:"Tien päässä tee U-käännös tielle {way_name}",destination:"Tien päässä tee U-käännös suuntana {destination}"}},fork:{default:{default:"Jatka tienhaarassa {modifier}",name:"Jatka {modifier} tielle {way_name}",destination:"Jatka {modifier} suuntana {destination}"},"slight left":{default:"Pysy vasemmalla tienhaarassa",name:"Pysy vasemmalla tielle {way_name}",destination:"Pysy vasemmalla suuntana {destination}"},"slight right":{default:"Pysy oikealla tienhaarassa",name:"Pysy oikealla tielle {way_name}",destination:"Pysy oikealla suuntana {destination}"},"sharp left":{default:"Käänny tienhaarassa jyrkästi vasempaan",name:"Käänny tienhaarassa jyrkästi vasempaan tielle {way_name}",destination:"Käänny tienhaarassa jyrkästi vasempaan suuntana {destination}"},"sharp right":{default:"Käänny tienhaarassa jyrkästi oikeaan",name:"Käänny tienhaarassa jyrkästi oikeaan tielle {way_name}",destination:"Käänny tienhaarassa jyrkästi oikeaan suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös tielle {way_name}",destination:"Tee U-käännös suuntana {destination}"}},merge:{default:{default:"Liity {modifier}",name:"Liity {modifier}, tielle {way_name}",destination:"Liity {modifier}, suuntana {destination}"},straight:{default:"Liity",name:"Liity tielle {way_name}",destination:"Liity suuntana {destination}"},"slight left":{default:"Liity vasemmalle",name:"Liity vasemmalle, tielle {way_name}",destination:"Liity vasemmalle, suuntana {destination}"},"slight right":{default:"Liity oikealle",name:"Liity oikealle, tielle {way_name}",destination:"Liity oikealle, suuntana {destination}"},"sharp left":{default:"Liity vasemmalle",name:"Liity vasemmalle, tielle {way_name}",destination:"Liity vasemmalle, suuntana {destination}"},"sharp right":{default:"Liity oikealle",name:"Liity oikealle, tielle {way_name}",destination:"Liity oikealle, suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös tielle {way_name}",destination:"Tee U-käännös suuntana {destination}"}},"new name":{default:{default:"Jatka {modifier}",name:"Jatka {modifier} tielle {way_name}",destination:"Jatka {modifier} suuntana {destination}"},straight:{default:"Jatka suoraan eteenpäin",name:"Jatka tielle {way_name}",destination:"Jatka suuntana {destination}"},"sharp left":{default:"Käänny jyrkästi vasempaan",name:"Käänny jyrkästi vasempaan tielle {way_name}",destination:"Käänny jyrkästi vasempaan suuntana {destination}"},"sharp right":{default:"Käänny jyrkästi oikeaan",name:"Käänny jyrkästi oikeaan tielle {way_name}",destination:"Käänny jyrkästi oikeaan suuntana {destination}"},"slight left":{default:"Jatka loivasti vasempaan",name:"Jatka loivasti vasempaan tielle {way_name}",destination:"Jatka loivasti vasempaan suuntana {destination}"},"slight right":{default:"Jatka loivasti oikeaan",name:"Jatka loivasti oikeaan tielle {way_name}",destination:"Jatka loivasti oikeaan suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös tielle {way_name}",destination:"Tee U-käännös suuntana {destination}"}},notification:{default:{default:"Jatka {modifier}",name:"Jatka {modifier} tielle {way_name}",destination:"Jatka {modifier} suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös tielle {way_name}",destination:"Tee U-käännös suuntana {destination}"}},"off ramp":{default:{default:"Aja erkanemiskaistalle",name:"Aja erkanemiskaistaa tielle {way_name}",destination:"Aja erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit}",exit_destination:"Ota poistuminen {exit}, suuntana {destination}"},left:{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} vasemmalla",exit_destination:"Ota poistuminen {exit} vasemmalla, suuntana {destination}"},right:{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} oikealla",exit_destination:"Ota poistuminen {exit} oikealla, suuntana {destination}"},"sharp left":{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} vasemmalla",exit_destination:"Ota poistuminen {exit} vasemmalla, suuntana {destination}"},"sharp right":{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} oikealla",exit_destination:"Ota poistuminen {exit} oikealla, suuntana {destination}"},"slight left":{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} vasemmalla",exit_destination:"Ota poistuminen {exit} vasemmalla, suuntana {destination}"},"slight right":{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} oikealla",exit_destination:"Ota poistuminen {exit} oikealla, suuntana {destination}"}},"on ramp":{default:{default:"Aja erkanemiskaistalle",name:"Aja erkanemiskaistaa tielle {way_name}",destination:"Aja erkanemiskaistalle suuntana {destination}"},left:{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}"},right:{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}"},"sharp left":{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}"},"sharp right":{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}"},"slight left":{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}"},"slight right":{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}"}},rotary:{default:{default:{default:"Aja liikenneympyrään",name:"Aja liikenneympyrään ja valitse erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään ja valitse erkanemiskaista suuntana {destination}"},name:{default:"Aja liikenneympyrään {rotary_name}",name:"Aja liikenneympyrään {rotary_name} ja valitse erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään {rotary_name} ja valitse erkanemiskaista suuntana {destination}"},exit:{default:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista",name:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista suuntana {destination}"},name_exit:{default:"Aja liikenneympyrään {rotary_name} ja valitse {exit_number} erkanemiskaista",name:"Aja liikenneympyrään {rotary_name} ja valitse {exit_number} erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään {rotary_name} ja valitse {exit_number} erkanemiskaista suuntana {destination}"}}},roundabout:{default:{exit:{default:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista",name:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista suuntana {destination}"},default:{default:"Aja liikenneympyrään",name:"Aja liikenneympyrään ja valitse erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään ja valitse erkanemiskaista suuntana {destination}"}}},"roundabout turn":{default:{default:"Käänny {modifier}",name:"Käänny {modifier} tielle {way_name}",destination:"Käänny {modifier} suuntana {destination}"},left:{default:"Käänny vasempaan",name:"Käänny vasempaan tielle {way_name}",destination:"Käänny vasempaan suuntana {destination}"},right:{default:"Käänny oikeaan",name:"Käänny oikeaan tielle {way_name}",destination:"Käänny oikeaan suuntana {destination}"},straight:{default:"Jatka suoraan eteenpäin",name:"Jatka suoraan eteenpäin tielle {way_name}",destination:"Jatka suoraan eteenpäin suuntana {destination}"}},"exit roundabout":{default:{default:"Poistu liikenneympyrästä",name:"Poistu liikenneympyrästä tielle {way_name}",destination:"Poistu liikenneympyrästä suuntana {destination}"}},"exit rotary":{default:{default:"Poistu liikenneympyrästä",name:"Poistu liikenneympyrästä tielle {way_name}",destination:"Poistu liikenneympyrästä suuntana {destination}"}},turn:{default:{default:"Käänny {modifier}",name:"Käänny {modifier} tielle {way_name}",destination:"Käänny {modifier} suuntana {destination}"},left:{default:"Käänny vasempaan",name:"Käänny vasempaan tielle {way_name}",destination:"Käänny vasempaan suuntana {destination}"},right:{default:"Käänny oikeaan",name:"Käänny oikeaan tielle {way_name}",destination:"Käänny oikeaan suuntana {destination}"},straight:{default:"Aja suoraan eteenpäin",name:"Aja suoraan eteenpäin tielle {way_name}",destination:"Aja suoraan eteenpäin suuntana {destination}"}},"use lane":{no_lanes:{default:"Jatka suoraan eteenpäin"},default:{default:"{lane_instruction}"}}}}},{}],30:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"première",2:"seconde",3:"troisième",4:"quatrième",5:"cinquième",6:"sixième",7:"septième",8:"huitième",9:"neuvième",10:"dixième"},direction:{north:"le nord",northeast:"le nord-est",east:"lâest",southeast:"le sud-est",south:"le sud",southwest:"le sud-ouest",west:"lâouest",northwest:"le nord-ouest"},modifier:{left:"à gauche",right:"à droite","sharp left":"franchement à gauche","sharp right":"franchement à droite","slight left":"légèrement à gauche","slight right":"légèrement à droite",straight:"tout droit",uturn:"demi-tour"},lanes:{xo:"Tenir la droite",ox:"Tenir la gauche",xox:"Rester au milieu",oxo:"Tenir la gauche ou la droite"}},modes:{ferry:{default:"Prendre le ferry",name:"Prendre le ferry {way_name:article}",destination:"Prendre le ferry en direction {destination:preposition}"}},phrase:{"two linked by distance":"{instruction_one}, puis, dans {distance}, {instruction_two}","two linked":"{instruction_one}, puis {instruction_two}","one in distance":"Dans {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"sortie n°{exit}"},arrive:{default:{ 2505default:"Vous êtes arrivé à votre {nth} destination",upcoming:"Vous arriverez à votre {nth} destination",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}"},left:{default:"Vous êtes arrivé à votre {nth} destination, sur la gauche",upcoming:"Vous arriverez à votre {nth} destination, sur la gauche",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la gauche"},right:{default:"Vous êtes arrivé à votre {nth} destination, sur la droite",upcoming:"Vous arriverez à votre {nth} destination, sur la droite",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé à {waypoint_name:arrival}, sur la droite"},"sharp left":{default:"Vous êtes arrivé à votre {nth} destination, sur la gauche",upcoming:"Vous arriverez à votre {nth} destination, sur la gauche",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la gauche"},"sharp right":{default:"Vous êtes arrivé à votre {nth} destination, sur la droite",upcoming:"Vous arriverez à votre {nth} destination, sur la droite",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la droite"},"slight right":{default:"Vous êtes arrivé à votre {nth} destination, sur la droite",upcoming:"Vous arriverez à votre {nth} destination, sur la droite",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la droite"},"slight left":{default:"Vous êtes arrivé à votre {nth} destination, sur la gauche",upcoming:"Vous arriverez à votre {nth} destination, sur la gauche",short:"Vous êtes arrivé","short-upcoming":"Vous êtes arrivé",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la gauche"},straight:{default:"Vous êtes arrivé à votre {nth} destination, droit devant",upcoming:"Vous arriverez à votre {nth} destination, droit devant",short:"Vous êtes arrivé","short-upcoming":"Vous êtes arrivé",named:"Vous êtes arrivé {waypoint_name:arrival}, droit devant"}},continue:{default:{default:"Tourner {modifier}",name:"Tourner {modifier} pour rester sur {way_name:article}",destination:"Tourner {modifier} en direction {destination:preposition}",exit:"Tourner {modifier} sur {way_name:article}"},straight:{default:"Continuer tout droit",name:"Continuer tout droit pour rester sur {way_name:article}",destination:"Continuer tout droit en direction {destination:preposition}",distance:"Continuer tout droit sur {distance}",namedistance:"Continuer sur {way_name:article} sur {distance}"},"sharp left":{default:"Tourner franchement à gauche",name:"Tourner franchement à gauche pour rester sur {way_name:article}",destination:"Tourner franchement à gauche en direction {destination:preposition}"},"sharp right":{default:"Tourner franchement à droite",name:"Tourner franchement à droite pour rester sur {way_name:article}",destination:"Tourner franchement à droite en direction {destination:preposition}"},"slight left":{default:"Tourner légèrement à gauche",name:"Tourner légèrement à gauche pour rester sur {way_name:article}",destination:"Tourner légèrement à gauche en direction {destination:preposition}"},"slight right":{default:"Tourner légèrement à droite",name:"Tourner légèrement à droite pour rester sur {way_name:article}",destination:"Tourner légèrement à droite en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour et continuer sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},depart:{default:{default:"Se diriger vers {direction}",name:"Se diriger vers {direction} sur {way_name:article}",namedistance:"Se diriger vers {direction} sur {way_name:article} sur {distance}"}},"end of road":{default:{default:"Tourner {modifier}",name:"Tourner {modifier} sur {way_name:article}",destination:"Tourner {modifier} en direction {destination:preposition}"},straight:{default:"Continuer tout droit",name:"Continuer tout droit sur {way_name:article}",destination:"Continuer tout droit en direction {destination:preposition}"},uturn:{default:"Faire demi-tour à la fin de la route",name:"Faire demi-tour à la fin {way_name:preposition}",destination:"Faire demi-tour à la fin de la route en direction {destination:preposition}"}},fork:{default:{default:"Tenir {modifier} à lâembranchement",name:"Tenir {modifier} sur {way_name:article}",destination:"Tenir {modifier} en direction {destination:preposition}"},"slight left":{default:"Tenir la gauche à lâembranchement",name:"Tenir la gauche sur {way_name:article}",destination:"Tenir la gauche en direction {destination:preposition}"},"slight right":{default:"Tenir la droite à lâembranchement",name:"Tenir la droite sur {way_name:article}",destination:"Tenir la droite en direction {destination:preposition}"},"sharp left":{default:"Tourner franchement à gauche à lâembranchement",name:"Tourner franchement à gauche sur {way_name:article}",destination:"Tourner franchement à gauche en direction {destination:preposition}"},"sharp right":{default:"Tourner franchement à droite à lâembranchement",name:"Tourner franchement à droite sur {way_name:article}",destination:"Tourner franchement à droite en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},merge:{default:{default:"Sâinsérer {modifier}",name:"Sâinsérer {modifier} sur {way_name:article}",destination:"Sâinsérer {modifier} en direction {destination:preposition}"},straight:{default:"Sâinsérer",name:"Sâinsérer sur {way_name:article}",destination:"Sâinsérer en direction {destination:preposition}"},"slight left":{default:"Sâinsérer légèrement à gauche",name:"Sâinsérer légèrement à gauche sur {way_name:article}",destination:"Sâinsérer légèrement à gauche en direction {destination:preposition}"},"slight right":{default:"Sâinsérer légèrement à droite",name:"Sâinsérer légèrement à droite sur {way_name:article}",destination:"Sâinsérer à droite en direction {destination:preposition}"},"sharp left":{default:"Sâinsérer à gauche",name:"Sâinsérer à gauche sur {way_name:article}",destination:"Sâinsérer à gauche en direction {destination:preposition}"},"sharp right":{default:"Sâinsérer à droite",name:"Sâinsérer à droite sur {way_name:article}",destination:"Sâinsérer à droite en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},"new name":{default:{default:"Continuer {modifier}",name:"Continuer {modifier} sur {way_name:article}",destination:"Continuer {modifier} en direction {destination:preposition}"},straight:{default:"Continuer tout droit",name:"Continuer tout droit sur {way_name:article}",destination:"Continuer tout droit en direction {destination:preposition}"},"sharp left":{default:"Tourner franchement à gauche",name:"Tourner franchement à gauche sur {way_name:article}",destination:"Tourner franchement à gauche en direction {destination:preposition}"},"sharp right":{default:"Tourner franchement à droite",name:"Tourner franchement à droite sur {way_name:article}",destination:"Tourner franchement à droite en direction {destination:preposition}"},"slight left":{default:"Continuer légèrement à gauche",name:"Continuer légèrement à gauche sur {way_name:article}",destination:"Continuer légèrement à gauche en direction {destination:preposition}"},"slight right":{default:"Continuer légèrement à droite",name:"Continuer légèrement à droite sur {way_name:article}",destination:"Continuer légèrement à droite en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},notification:{default:{default:"Continuer {modifier}",name:"Continuer {modifier} sur {way_name:article}",destination:"Continuer {modifier} en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},"off ramp":{default:{default:"Prendre la sortie",name:"Prendre la sortie sur {way_name:article}",destination:"Prendre la sortie en direction {destination:preposition}",exit:"Prendre la sortie {exit}",exit_destination:"Prendre la sortie {exit} en direction {destination:preposition}"},left:{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la gauche",exit_destination:"Prendre la sortie {exit} sur la gauche en direction {destination:preposition}"},right:{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la droite",exit_destination:"Prendre la sortie {exit} sur la droite en direction {destination:preposition}"},"sharp left":{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la gauche",exit_destination:"Prendre la sortie {exit} sur la gauche en direction {destination:preposition}"},"sharp right":{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la droite",exit_destination:"Prendre la sortie {exit} sur la droite en direction {destination:preposition}"},"slight left":{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la gauche",exit_destination:"Prendre la sortie {exit} sur la gauche en direction {destination:preposition}"},"slight right":{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la droite",exit_destination:"Prendre la sortie {exit} sur la droite en direction {destination:preposition}"}},"on ramp":{default:{default:"Prendre la sortie",name:"Prendre la sortie sur {way_name:article}",destination:"Prendre la sortie en direction {destination:preposition}"},left:{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}"},right:{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}"},"sharp left":{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}"},"sharp right":{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}"},"slight left":{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}"},"slight right":{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}"}},rotary:{default:{default:{default:"Prendre le rond-point",name:"Prendre le rond-point, puis sortir sur {way_name:article}",destination:"Prendre le rond-point, puis sortir en direction {destination:preposition}"},name:{default:"Prendre {rotary_name:rotary}",name:"Prendre {rotary_name:rotary}, puis sortir par {way_name:article}",destination:"Prendre {rotary_name:rotary}, puis sortir en direction {destination:preposition}"},exit:{default:"Prendre le rond-point, puis la {exit_number} sortie",name:"Prendre le rond-point, puis la {exit_number} sortie sur {way_name:article}",destination:"Prendre le rond-point, puis la {exit_number} sortie en direction {destination:preposition}"},name_exit:{default:"Prendre {rotary_name:rotary}, puis la {exit_number} sortie",name:"Prendre {rotary_name:rotary}, puis la {exit_number} sortie sur {way_name:article}",destination:"Prendre {rotary_name:rotary}, puis la {exit_number} sortie en direction {destination:preposition}"}}},roundabout:{default:{exit:{default:"Prendre le rond-point, puis la {exit_number} sortie",name:"Prendre le rond-point, puis la {exit_number} sortie sur {way_name:article}",destination:"Prendre le rond-point, puis la {exit_number} sortie en direction {destination:preposition}"},default:{default:"Prendre le rond-point",name:"Prendre le rond-point, puis sortir sur {way_name:article}",destination:"Prendre le rond-point, puis sortir en direction {destination:preposition}"}}},"roundabout turn":{default:{default:"Tourner {modifier}",name:"Tourner {modifier} sur {way_name:article}",destination:"Tourner {modifier} en direction {destination:preposition}"},left:{default:"Tourner à gauche",name:"Tourner à gauche sur {way_name:article}",destination:"Tourner à gauche en direction {destination:preposition}"},right:{default:"Tourner à droite",name:"Tourner à droite sur {way_name:article}",destination:"Tourner à droite en direction {destination:preposition}"},straight:{default:"Continuer tout droit",name:"Continuer tout droit sur {way_name:article}",destination:"Continuer tout droit en direction {destination:preposition}"}},"exit roundabout":{default:{default:"Sortir du rond-point",name:"Sortir du rond-point sur {way_name:article}",destination:"Sortir du rond-point en direction {destination:preposition}"}},"exit rotary":{default:{default:"Sortir du rond-point",name:"Sortir du rond-point sur {way_name:article}",destination:"Sortir du rond-point en direction {destination:preposition}"}},turn:{default:{default:"Tourner {modifier}",name:"Tourner {modifier} sur {way_name:article}",destination:"Tourner {modifier} en direction {destination:preposition}"},left:{default:"Tourner à gauche",name:"Tourner à gauche sur {way_name:article}",destination:"Tourner à gauche en direction {destination:preposition}"},right:{default:"Tourner à droite",name:"Tourner à droite sur {way_name:article}",destination:"Tourner à droite en direction {destination:preposition}"},straight:{default:"Aller tout droit",name:"Aller tout droit sur {way_name:article}",destination:"Aller tout droit en direction {destination:preposition}"}},"use lane":{no_lanes:{default:"Continuer tout droit"},default:{default:"{lane_instruction}"}}}}},{}],31:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"ר×ש×× ×",2:"×©× ××",3:"ש××ש×ת",4:"ר×××¢×ת",5:"×××ש×ת",6:"ש×ש×ת",7:"ש×××¢×ת",8:"ש××× ×ת",9:"תש××¢×ת",10:"עש×ר×ת"},direction:{north:"צפ××",northeast:"צפ×× ××ר×",east:"××ר×",southeast:"×ר×× ××ר×",south:"×ר××",southwest:"×ר×× ×ער×",west:"×ער×",northwest:"צפ×× ×ער×"},modifier:{left:"ש××××",right:"×××× ×","sharp left":"××× ×©××××","sharp right":"××× ×××× ×","slight left":"×§×× ×©××××","slight right":"×§×× ×××× ×",straight:"×שר",uturn:"×¤× ××ת פרס×"},lanes:{xo:"××צ×× ×××××",ox:"××צ×× ×ש×××",xox:"×××©× ×× ×ª×× ×××צע×",oxo:"××צ×× ××××× ×× ×ש×××"}},modes:{ferry:{default:"×¢×× ×¢× ×××¢××רת",name:"×¢×× ×¢× ×××¢××רת {way_name}",destination:"×¢×× ×¢× ×××¢××רת ×××××× {destination}"}},phrase:{"two linked by distance":"{instruction_one}, ×××, ××¢××{distance}, {instruction_two}","two linked":"{instruction_one}, ××× {instruction_two}","one in distance":"××¢×× {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"×צ××× {exit}"},arrive:{default:{default:"××עת ×× ×××¢× ×{nth} ש××",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש××",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name}"},left:{default:"××עת ×× ×××¢× ×{nth} ש×× ×ש××××",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ×ש××××",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ×ש××××"},right:{default:"××עת ×× ×××¢× ×{nth} ש×× ××××× ×",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ××××× ×",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ××××× ×"},"sharp left":{default:"××עת ×× ×××¢× ×{nth} ש×× ×ש××××",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ×ש××××",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ×ש××××"},"sharp right":{default:"××עת ×× ×××¢× ×{nth} ש×× ××××× ×",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ××××× ×",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ××××× ×"},"slight right":{default:"××עת ×× ×××¢× ×{nth} ש×× ××××× ×",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ××××× ×",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ××××× ×"},"slight left":{default:"××עת ×× ×××¢× ×{nth} ש×× ×ש××××",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ×ש××××",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ×ש××××"},straight:{default:"××עת ×× ×××¢× ×{nth} ש××, ×××ש×",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש××, ×××ש×",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name}, ×××ש×"}},continue:{default:{default:"×¤× × {modifier}",name:"×¤× × {modifier} ××× ×××ש×ר ×{way_name}",destination:"×¤× × {modifier} ×××××× {destination}",exit:"×¤× × {modifier} ×¢× {way_name}"},straight:{default:"×××©× ×שר",name:"×××©× ×שר ××× ×××ש×ר ×¢× {way_name}",destination:"×××©× ×××××× {destination}",distance:"×××©× ×שר ××××¨× {distance}",namedistance:"×××©× ×¢× {way_name} ××××¨× {distance}"},"sharp left":{default:"×¤× × ××××ת ש××××",name:"×¤× × ××××ת ש×××× ××× ×××ש×ר ×¢× {way_name}",destination:"×¤× × ××××ת ש×××× ×××××× {destination}"},"sharp right":{default:"×¤× × ××××ת ×××× ×",name:"×¤× × ××××ת ×××× × ××× ×××ש×ר ×¢× {way_name}",destination:"×¤× × ××××ת ×××× × ×××××× {destination}"},"slight left":{default:"×¤× × ×§××ת ש××××",name:"×¤× × ×§××ת ש×××× ××× ×××ש×ר ×¢× {way_name}",destination:"×¤× × ×§××ת ש×××× ×××××× {destination}"},"slight right":{default:"×¤× × ×§××ת ×××× ×",name:"×¤× × ×§××ת ×××× × ××× ×××ש×ר ×¢× {way_name}",destination:"×¤× × ×§××ת ×××× × ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ××××©× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},depart:{default:{default:"×ת×××× × {direction}",name:"×ת×××× × {direction} ×¢× {way_name}",namedistance:"×ת×××× × {direction} ×¢× {way_name} ××××¨× {distance}"}},"end of road":{default:{default:"×¤× × {modifier}",name:"×¤× × {modifier} ×¢× {way_name}",destination:"×¤× × {modifier} ×××××× {destination}"},straight:{default:"×××©× ×שר",name:"×××©× ×שר ×¢× {way_name}",destination:"×××©× ×שר ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת ×¤×¨×¡× ×ס××£ ××ר×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name} ×ס××£ ××ר×",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination} ×ס××£ ××ר×"}},fork:{default:{default:"××צ×× {modifier} ××תפצ××ת",name:"××צ×× {modifier} ×¢× {way_name}",destination:"××צ×× {modifier} ×××××× {destination}"},"slight left":{default:"××צ×× ×ש××× ××תפצ××ת",name:"××צ×× ×ש××× ×¢× {way_name}",destination:"××צ×× ×ש××× ×××××× {destination}"},"slight right":{default:"××צ×× ×××× × ××תפצ××ת",name:"××צ×× ××××× ×¢× {way_name}",destination:"××צ×× ××××× ×××××× {destination}"},"sharp left":{default:"×¤× × ××××ת ש×××× ××תפצ××ת",name:"×¤× × ××××ת ש×××× ×¢× {way_name}",destination:"×¤× × ××××ת ש×××× ×××××× {destination}"},"sharp right":{default:"×¤× × ××××ת ×××× × ××תפצ××ת",name:"×¤× × ××××ת ×××× × ×¢× {way_name}",destination:"×¤× × ××××ת ×××× × ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},merge:{default:{default:"×שת×× {modifier}",name:"×שת×× {modifier} ×¢× {way_name}",destination:"×שת×× {modifier} ×××××× {destination}"},straight:{default:"×שת××",name:"×שת×× ×¢× {way_name}",destination:"×שת×× ×××××× {destination}"},"slight left":{default:"×שת×× ×©××××",name:"×שת×× ×©×××× ×¢× {way_name}",destination:"×שת×× ×©×××× ×××××× {destination}"},"slight right":{default:"×שת×× ×××× ×",name:"×שת×× ×××× × ×¢× {way_name}",destination:"×שת×× ×××× × ×××××× {destination}"},"sharp left":{default:"×שת×× ×©××××",name:"×שת×× ×©×××× ×¢× {way_name}",destination:"×שת×× ×©×××× ×××××× {destination}"},"sharp right":{default:"×שת×× ×××× ×",name:"×שת×× ×××× × ×¢× {way_name}",destination:"×שת×× ×××× × ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},"new name":{default:{default:"×××©× {modifier}",name:"×××©× {modifier} ×¢× {way_name}",destination:"×××©× {modifier} ×××××× {destination}"},straight:{default:"×××©× ×שר",name:"×××©× ×¢× {way_name}",destination:"×××©× ×××××× {destination}"},"sharp left":{default:"×¤× × ××××ת ש××××",name:"×¤× × ××××ת ש×××× ×¢× {way_name}",destination:"×¤× × ××××ת ש×××× ×××××× {destination}"},"sharp right":{default:"×¤× × ××××ת ×××× ×",name:"×¤× × ××××ת ×××× × ×¢× {way_name}",destination:"×¤× × ××××ת ×××× × ×××××× {destination}"},"slight left":{default:"×××©× ×× ×××× ×§×× ×©××××",name:"×××©× ×× ×××× ×§×× ×©×××× ×¢× {way_name}",destination:"×××©× ×× ×××× ×§×× ×©×××× ×××××× {destination}"},"slight right":{default:"×××©× ×× ×××× ×§×× ×××× ×",name:"×××©× ×× ×××× ×§×× ×××× × ×¢× {way_name}",destination:"×××©× ×× ×××× ×§×× ×××× × ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},notification:{default:{default:"×××©× {modifier}",name:"×××©× {modifier} ×¢× {way_name}",destination:"×××©× {modifier} ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},"off ramp":{default:{default:"×¦× ××צ×××",name:"×¦× ××צ××× ×¢× {way_name}",destination:"×¦× ××צ××× ×××××× {destination}",exit:"×¦× ××צ××× {exit}",exit_destination:"×¦× ××צ××× {exit} ×××××× {destination}"},left:{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}",exit:"×¦× ××צ××× {exit} ×ש××××",exit_destination:"×¦× ××צ××× {exit} ×ש×××× ×××××× {destination}"},right:{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}",exit:"×¦× ××צ××× {exit} ××××× ×",exit_destination:"×¦× ××צ××× {exit} ××××× × ×××××× {destination}"},"sharp left":{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}",exit:"×¦× ××צ××× {exit} ×ש××××",exit_destination:"×¦× ××צ××× {exit} ×ש×××× ×××××× {destination}"},"sharp right":{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}",exit:"×¦× ××צ××× {exit} ××××× ×",exit_destination:"×¦× ××צ××× {exit} ××××× × ×××××× {destination}"},"slight left":{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}",exit:"×¦× ××צ××× {exit} ×ש××××",exit_destination:"×¦× ××צ××× {exit} ×ש×××× ×××××× {destination}"},"slight right":{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}",exit:"×¦× ××צ××× {exit} ××××× ×",exit_destination:"×¦× ××צ××× {exit} ××××× × ×××××× {destination}"}},"on ramp":{default:{default:"×¦× ××צ×××",name:"×¦× ××צ××× ×¢× {way_name}",destination:"×¦× ××צ××× ×××××× {destination}"},left:{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}"},right:{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}"},"sharp left":{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}"},"sharp right":{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}"},"slight left":{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}"},"slight right":{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}"}},rotary:{default:{default:{default:"×שת×× ×××¢×× ××ª× ××¢×",name:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ×¢× {way_name}",destination:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ×××××× {destination}"},name:{default:"×××× ×¡ ×{rotary_name}",name:"×××× ×¡ ×{rotary_name} ××¦× ×¢× {way_name}",destination:"×××× ×¡ ×{rotary_name} ××¦× ×××××× {destination}"},exit:{default:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number}",name:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number} ×{way_name}",destination:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number} ×××××× {destination}"},name_exit:{default:"×××× ×¡ ×{rotary_name} ××¦× ××צ××× ×{exit_number}",name:"×××× ×¡ ×{rotary_name} ××¦× ××צ××× ×{exit_number} ×{way_name}",destination:"×××× ×¡ ×{rotary_name} ××¦× ××צ××× ×{exit_number} ×××××× {destination}"}}},roundabout:{default:{exit:{default:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number}",name:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number} ×{way_name}",destination:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number} ×××××× {destination}"},default:{default:"×שת×× ×××¢×× ××ª× ××¢×",name:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ×¢× {way_name}",destination:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ×××××× {destination}"}}},"roundabout turn":{default:{default:"×¤× × {modifier}",name:"×¤× × {modifier} ×¢× {way_name}",destination:"×¤× × {modifier} ×××××× {destination}"},left:{default:"×¤× × ×©××××",name:"×¤× × ×©×××× ×{way_name}",destination:"×¤× × ×©×××× ×××××× {destination}"},right:{default:"×¤× × ×××× ×",name:"×¤× × ×××× × ×{way_name}",destination:"×¤× × ×××× × ×××××× {destination}"},straight:{default:"×××©× ×שר",name:"×××©× ×שר ×¢× {way_name}",destination:"×××©× ×שר ×××××× {destination}"}},"exit roundabout":{default:{default:"×¦× ×××¢×× ××ª× ××¢×",name:"×¦× ×××¢×× ××ª× ××¢× ×{way_name}",destination:"×¦× ×××¢×× ××ª× ××¢× ×××××× {destination}"}},"exit rotary":{default:{default:"×¦× ×××¢×× ××ª× ××¢×",name:"×¦× ×××¢×× ××ª× ××¢× ×{way_name}",destination:"×¦× ×××¢×× ××ª× ××¢× ×××××× {destination}"}},turn:{default:{default:"×¤× × {modifier}",name:"×¤× × {modifier} ×¢× {way_name}",destination:"×¤× × {modifier} ×××××× {destination}"},left:{default:"×¤× × ×©××××",name:"×¤× × ×©×××× ×{way_name}",destination:"×¤× × ×©×××× ×××××× {destination}"},right:{default:"×¤× × ×××× ×",name:"×¤× × ×××× × ×{way_name}",destination:"×¤× × ×××× × ×××××× {destination}"},straight:{default:"×××©× ×שר",name:"×××©× ×שר ×{way_name}",destination:"×××©× ×שר ×××××× {destination}"}},"use lane":{no_lanes:{default:"×××©× ×שר"},default:{default:"{lane_instruction}"}}}}},{}],32:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10"},direction:{north:"utara",northeast:"timur laut",east:"timur",southeast:"tenggara",south:"selatan",southwest:"barat daya",west:"barat",northwest:"barat laut"},modifier:{left:"kiri",right:"kanan","sharp left":"tajam kiri","sharp right":"tajam kanan","slight left":"agak ke kiri","slight right":"agak ke kanan",straight:"lurus",uturn:"putar balik"},lanes:{xo:"Tetap di kanan",ox:"Tetap di kiri",xox:"Tetap di tengah",oxo:"Tetap di kiri atau kanan"}},modes:{ferry:{default:"Naik ferry",name:"Naik ferry di {way_name}",destination:"Naik ferry menuju {destination}"}},phrase:{"two linked by distance":"{instruction_one}, then, in {distance}, {instruction_two}","two linked":"{instruction_one}, then {instruction_two}","one in distance":"In {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Anda telah tiba di tujuan ke-{nth}",upcoming:"Anda telah tiba di tujuan ke-{nth}",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}"},left:{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kiri"},right:{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kanan"},"sharp left":{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kiri"},"sharp right":{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kanan"},"slight right":{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kanan"},"slight left":{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kiri"},straight:{default:"Anda telah tiba di tujuan ke-{nth}, lurus saja",upcoming:"Anda telah tiba di tujuan ke-{nth}, lurus saja",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, lurus saja"}},continue:{default:{default:"Belok {modifier}",name:"Terus {modifier} ke {way_name}",destination:"Belok {modifier} menuju {destination}",exit:"Belok {modifier} ke {way_name}"},straight:{default:"Lurus terus",name:"Terus ke {way_name}",destination:"Terus menuju {destination}",distance:"Continue straight for {distance}",namedistance:"Continue on {way_name} for {distance}"},"sharp left":{default:"Belok kiri tajam",name:"Make a sharp left to stay on {way_name}",destination:"Belok kiri tajam menuju {destination}"},"sharp right":{default:"Belok kanan tajam",name:"Make a sharp right to stay on {way_name}",destination:"Belok kanan tajam menuju {destination}"},"slight left":{default:"Tetap agak di kiri",name:"Tetap agak di kiri ke {way_name}",destination:"Tetap agak di kiri menuju {destination}"},"slight right":{default:"Tetap agak di kanan",name:"Tetap agak di kanan ke {way_name}",destination:"Tetap agak di kanan menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},depart:{default:{default:"Arah {direction}",name:"Arah {direction} di {way_name}",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"Belok {modifier}",name:"Belok {modifier} ke {way_name}",destination:"Belok {modifier} menuju {destination}"},straight:{default:"Lurus terus",name:"Tetap lurus ke {way_name} ",destination:"Tetap lurus menuju {destination}"},uturn:{default:"Putar balik di akhir jalan",name:"Putar balik di {way_name} di akhir jalan",destination:"Putar balik menuju {destination} di akhir jalan"}},fork:{default:{default:"Tetap {modifier} di pertigaan",name:"Tetap {modifier} di pertigaan ke {way_name}",destination:"Tetap {modifier} di pertigaan menuju {destination}"},"slight left":{default:"Tetap di kiri pada pertigaan",name:"Tetap di kiri pada pertigaan ke arah {way_name}",destination:"Tetap di kiri pada pertigaan menuju {destination}"},"slight right":{default:"Tetap di kanan pada pertigaan", 2506name:"Tetap di kanan pada pertigaan ke arah {way_name}",destination:"Tetap di kanan pada pertigaan menuju {destination}"},"sharp left":{default:"Belok kiri pada pertigaan",name:"Belok kiri tajam ke arah {way_name}",destination:"Belok kiri tajam menuju {destination}"},"sharp right":{default:"Belok kanan pada pertigaan",name:"Belok kanan tajam ke arah {way_name}",destination:"Belok kanan tajam menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},merge:{default:{default:"Bergabung {modifier}",name:"Bergabung {modifier} ke arah {way_name}",destination:"Bergabung {modifier} menuju {destination}"},straight:{default:"Bergabung lurus",name:"Bergabung lurus ke arah {way_name}",destination:"Bergabung lurus menuju {destination}"},"slight left":{default:"Bergabung di kiri",name:"Bergabung di kiri ke arah {way_name}",destination:"Bergabung di kiri menuju {destination}"},"slight right":{default:"Bergabung di kanan",name:"Bergabung di kanan ke arah {way_name}",destination:"Bergabung di kanan menuju {destination}"},"sharp left":{default:"Bergabung di kiri",name:"Bergabung di kiri ke arah {way_name}",destination:"Bergabung di kiri menuju {destination}"},"sharp right":{default:"Bergabung di kanan",name:"Bergabung di kanan ke arah {way_name}",destination:"Bergabung di kanan menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},"new name":{default:{default:"Lanjutkan {modifier}",name:"Lanjutkan {modifier} menuju {way_name}",destination:"Lanjutkan {modifier} menuju {destination}"},straight:{default:"Lurus terus",name:"Terus ke {way_name}",destination:"Terus menuju {destination}"},"sharp left":{default:"Belok kiri tajam",name:"Belok kiri tajam ke arah {way_name}",destination:"Belok kiri tajam menuju {destination}"},"sharp right":{default:"Belok kanan tajam",name:"Belok kanan tajam ke arah {way_name}",destination:"Belok kanan tajam menuju {destination}"},"slight left":{default:"Lanjut dengan agak ke kiri",name:"Lanjut dengan agak di kiri ke {way_name}",destination:"Tetap agak di kiri menuju {destination}"},"slight right":{default:"Tetap agak di kanan",name:"Tetap agak di kanan ke {way_name}",destination:"Tetap agak di kanan menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},notification:{default:{default:"Lanjutkan {modifier}",name:"Lanjutkan {modifier} menuju {way_name}",destination:"Lanjutkan {modifier} menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},"off ramp":{default:{default:"Ambil jalan melandai",name:"Ambil jalan melandai ke {way_name}",destination:"Ambil jalan melandai menuju {destination}",exit:"Take exit {exit}",exit_destination:"Take exit {exit} towards {destination}"},left:{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},right:{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"},"sharp left":{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},"sharp right":{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"},"slight left":{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},"slight right":{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"}},"on ramp":{default:{default:"Ambil jalan melandai",name:"Ambil jalan melandai ke {way_name}",destination:"Ambil jalan melandai menuju {destination}"},left:{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}"},right:{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}"},"sharp left":{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}"},"sharp right":{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}"},"slight left":{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}"},"slight right":{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}"}},rotary:{default:{default:{default:"Masuk bundaran",name:"Masuk bundaran dan keluar arah {way_name}",destination:"Masuk bundaran dan keluar menuju {destination}"},name:{default:"Masuk {rotary_name}",name:"Masuk {rotary_name} dan keluar arah {way_name}",destination:"Masuk {rotary_name} dan keluar menuju {destination}"},exit:{default:"Masuk bundaran dan ambil jalan keluar {exit_number}",name:"Masuk bundaran dan ambil jalan keluar {exit_number} arah {way_name}",destination:"Masuk bundaran dan ambil jalan keluar {exit_number} menuju {destination}"},name_exit:{default:"Masuk {rotary_name} dan ambil jalan keluar {exit_number}",name:"Masuk {rotary_name} dan ambil jalan keluar {exit_number} arah {way_name}",destination:"Masuk {rotary_name} dan ambil jalan keluar {exit_number} menuju {destination}"}}},roundabout:{default:{exit:{default:"Masuk bundaran dan ambil jalan keluar {exit_number}",name:"Masuk bundaran dan ambil jalan keluar {exit_number} arah {way_name}",destination:"Masuk bundaran dan ambil jalan keluar {exit_number} menuju {destination}"},default:{default:"Masuk bundaran",name:"Masuk bundaran dan keluar arah {way_name}",destination:"Masuk bundaran dan keluar menuju {destination}"}}},"roundabout turn":{default:{default:"Lakukan {modifier}",name:"Lakukan {modifier} ke arah {way_name}",destination:"Lakukan {modifier} menuju {destination}"},left:{default:"Belok kiri",name:"Belok kiri ke {way_name}",destination:"Belok kiri menuju {destination}"},right:{default:"Belok kanan",name:"Belok kanan ke {way_name}",destination:"Belok kanan menuju {destination}"},straight:{default:"Lurus terus",name:"Tetap lurus ke {way_name} ",destination:"Tetap lurus menuju {destination}"}},"exit roundabout":{default:{default:"Lakukan {modifier}",name:"Lakukan {modifier} ke arah {way_name}",destination:"Lakukan {modifier} menuju {destination}"},left:{default:"Belok kiri",name:"Belok kiri ke {way_name}",destination:"Belok kiri menuju {destination}"},right:{default:"Belok kanan",name:"Belok kanan ke {way_name}",destination:"Belok kanan menuju {destination}"},straight:{default:"Lurus terus",name:"Tetap lurus ke {way_name} ",destination:"Tetap lurus menuju {destination}"}},"exit rotary":{default:{default:"Lakukan {modifier}",name:"Lakukan {modifier} ke arah {way_name}",destination:"Lakukan {modifier} menuju {destination}"},left:{default:"Belok kiri",name:"Belok kiri ke {way_name}",destination:"Belok kiri menuju {destination}"},right:{default:"Belok kanan",name:"Belok kanan ke {way_name}",destination:"Belok kanan menuju {destination}"},straight:{default:"Lurus",name:"Lurus arah {way_name}",destination:"Lurus menuju {destination}"}},turn:{default:{default:"Lakukan {modifier}",name:"Lakukan {modifier} ke arah {way_name}",destination:"Lakukan {modifier} menuju {destination}"},left:{default:"Belok kiri",name:"Belok kiri ke {way_name}",destination:"Belok kiri menuju {destination}"},right:{default:"Belok kanan",name:"Belok kanan ke {way_name}",destination:"Belok kanan menuju {destination}"},straight:{default:"Lurus",name:"Lurus arah {way_name}",destination:"Lurus menuju {destination}"}},"use lane":{no_lanes:{default:"Lurus terus"},default:{default:"{lane_instruction}"}}}}},{}],33:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1ª",2:"2ª",3:"3ª",4:"4ª",5:"5ª",6:"6ª",7:"7ª",8:"8ª",9:"9ª",10:"10ª"},direction:{north:"nord",northeast:"nord-est",east:"est",southeast:"sud-est",south:"sud",southwest:"sud-ovest",west:"ovest",northwest:"nord-ovest"},modifier:{left:"sinistra",right:"destra","sharp left":"sinistra","sharp right":"destra","slight left":"sinistra leggermente","slight right":"destra leggermente",straight:"dritto",uturn:"inversione a U"},lanes:{xo:"Mantieni la destra",ox:"Mantieni la sinistra",xox:"Rimani in mezzo",oxo:"Mantieni la destra o la sinistra"}},modes:{ferry:{default:"Prendi il traghetto",name:"Prendi il traghetto {way_name}",destination:"Prendi il traghetto verso {destination}"}},phrase:{"two linked by distance":"{instruction_one}, poi tra {distance},{instruction_two}","two linked":"{instruction_one}, poi {instruction_two}","one in distance":"tra {distance} {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Sei arrivato alla tua {nth} destinazione",upcoming:"Sei arrivato alla tua {nth} destinazione",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"Sei arrivato a {waypoint_name}"},left:{default:"sei arrivato alla tua {nth} destinazione, sulla sinistra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla sinistra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla sinistra"},right:{default:"sei arrivato alla tua {nth} destinazione, sulla destra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla destra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla destra"},"sharp left":{default:"sei arrivato alla tua {nth} destinazione, sulla sinistra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla sinistra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla sinistra"},"sharp right":{default:"sei arrivato alla tua {nth} destinazione, sulla destra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla destra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla destra"},"slight right":{default:"sei arrivato alla tua {nth} destinazione, sulla destra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla destra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla destra"},"slight left":{default:"sei arrivato alla tua {nth} destinazione, sulla sinistra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla sinistra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla sinistra"},straight:{default:"sei arrivato alla tua {nth} destinazione, si trova davanti a te",upcoming:"sei arrivato alla tua {nth} destinazione, si trova davanti a te",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, si trova davanti a te"}},continue:{default:{default:"Gira a {modifier}",name:"Gira a {modifier} per stare su {way_name}",destination:"Gira a {modifier} verso {destination}",exit:"Gira a {modifier} in {way_name}"},straight:{default:"Continua dritto",name:"Continua dritto per stare su {way_name}",destination:"Continua verso {destination}",distance:"Continua dritto per {distance}",namedistance:"Continua su {way_name} per {distance}"},"sharp left":{default:"Svolta a sinistra",name:"Fai una stretta curva a sinistra per stare su {way_name}",destination:"Svolta a sinistra verso {destination}"},"sharp right":{default:"Svolta a destra",name:"Fau una stretta curva a destra per stare su {way_name}",destination:"Svolta a destra verso {destination}"},"slight left":{default:"Fai una leggera curva a sinistra",name:"Fai una leggera curva a sinistra per stare su {way_name}",destination:"Fai una leggera curva a sinistra verso {destination}"},"slight right":{default:"Fai una leggera curva a destra",name:"Fai una leggera curva a destra per stare su {way_name}",destination:"Fai una leggera curva a destra verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione ad U poi continua su {way_name}",destination:"Fai un'inversione a U verso {destination}"}},depart:{default:{default:"Continua verso {direction}",name:"Continua verso {direction} in {way_name}",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"Gira a {modifier}",name:"Gira a {modifier} in {way_name}",destination:"Gira a {modifier} verso {destination}"},straight:{default:"Continua dritto",name:"Continua dritto in {way_name}",destination:"Continua dritto verso {destination}"},uturn:{default:"Fai un'inversione a U alla fine della strada",name:"Fai un'inversione a U in {way_name} alla fine della strada",destination:"Fai un'inversione a U verso {destination} alla fine della strada"}},fork:{default:{default:"Mantieni la {modifier} al bivio",name:"Mantieni la {modifier} al bivio in {way_name}",destination:"Mantieni la {modifier} al bivio verso {destination}"},"slight left":{default:"Mantieni la sinistra al bivio",name:"Mantieni la sinistra al bivio in {way_name}",destination:"Mantieni la sinistra al bivio verso {destination}"},"slight right":{default:"Mantieni la destra al bivio",name:"Mantieni la destra al bivio in {way_name}",destination:"Mantieni la destra al bivio verso {destination}"},"sharp left":{default:"Svolta a sinistra al bivio",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},"sharp right":{default:"Svolta a destra al bivio",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione a U in {way_name}",destination:"Fai un'inversione a U verso {destination}"}},merge:{default:{default:"Immettiti a {modifier}",name:"Immettiti {modifier} in {way_name}",destination:"Immettiti {modifier} verso {destination}"},straight:{default:"Immettiti a dritto",name:"Immettiti dritto in {way_name}",destination:"Immettiti dritto verso {destination}"},"slight left":{default:"Immettiti a sinistra",name:"Immettiti a sinistra in {way_name}",destination:"Immettiti a sinistra verso {destination}"},"slight right":{default:"Immettiti a destra",name:"Immettiti a destra in {way_name}",destination:"Immettiti a destra verso {destination}"},"sharp left":{default:"Immettiti a sinistra",name:"Immettiti a sinistra in {way_name}",destination:"Immettiti a sinistra verso {destination}"},"sharp right":{default:"Immettiti a destra",name:"Immettiti a destra in {way_name}",destination:"Immettiti a destra verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione a U in {way_name}",destination:"Fai un'inversione a U verso {destination}"}},"new name":{default:{default:"Continua a {modifier}",name:"Continua a {modifier} in {way_name}",destination:"Continua a {modifier} verso {destination}"},straight:{default:"Continua dritto",name:"Continua in {way_name}",destination:"Continua verso {destination}"},"sharp left":{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},"sharp right":{default:"Svolta a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},"slight left":{default:"Continua leggermente a sinistra",name:"Continua leggermente a sinistra in {way_name}",destination:"Continua leggermente a sinistra verso {destination}"},"slight right":{default:"Continua leggermente a destra",name:"Continua leggermente a destra in {way_name} ",destination:"Continua leggermente a destra verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione a U in {way_name}",destination:"Fai un'inversione a U verso {destination}"}},notification:{default:{default:"Continua a {modifier}",name:"Continua a {modifier} in {way_name}",destination:"Continua a {modifier} verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione a U in {way_name}",destination:"Fai un'inversione a U verso {destination}"}},"off ramp":{default:{default:"Prendi la rampa",name:"Prendi la rampa in {way_name}",destination:"Prendi la rampa verso {destination}",exit:"Prendi l'uscita {exit}",exit_destination:"Prendi l'uscita {exit} verso {destination}"},left:{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}",exit:"Prendi l'uscita {exit} a sinistra",exit_destination:"Prendi la {exit} uscita a sinistra verso {destination}"},right:{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}",exit:"Prendi la {exit} uscita a destra",exit_destination:"Prendi la {exit} uscita a destra verso {destination}"},"sharp left":{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}",exit:"Prendi l'uscita {exit} a sinistra",exit_destination:"Prendi la {exit} uscita a sinistra verso {destination}"},"sharp right":{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}",exit:"Prendi la {exit} uscita a destra",exit_destination:"Prendi la {exit} uscita a destra verso {destination}"},"slight left":{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}",exit:"Prendi l'uscita {exit} a sinistra",exit_destination:"Prendi la {exit} uscita a sinistra verso {destination}"},"slight right":{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}",exit:"Prendi la {exit} uscita a destra",exit_destination:"Prendi la {exit} uscita a destra verso {destination}"}},"on ramp":{default:{default:"Prendi la rampa",name:"Prendi la rampa in {way_name}",destination:"Prendi la rampa verso {destination}"},left:{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}"},right:{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}"},"sharp left":{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}"},"sharp right":{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}"},"slight left":{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}"},"slight right":{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}"}},rotary:{default:{default:{default:"Immettiti nella rotonda",name:"Immettiti nella ritonda ed esci in {way_name}",destination:"Immettiti nella ritonda ed esci verso {destination}"},name:{default:"Immettiti in {rotary_name}",name:"Immettiti in {rotary_name} ed esci su {way_name}",destination:"Immettiti in {rotary_name} ed esci verso {destination}"},exit:{default:"Immettiti nella rotonda e prendi la {exit_number} uscita",name:"Immettiti nella rotonda e prendi la {exit_number} uscita in {way_name}",destination:"Immettiti nella rotonda e prendi la {exit_number} uscita verso {destination}"},name_exit:{default:"Immettiti in {rotary_name} e prendi la {exit_number} uscita",name:"Immettiti in {rotary_name} e prendi la {exit_number} uscita in {way_name}",destination:"Immettiti in {rotary_name} e prendi la {exit_number} uscita verso {destination}"}}},roundabout:{default:{exit:{default:"Immettiti nella rotonda e prendi la {exit_number} uscita",name:"Immettiti nella rotonda e prendi la {exit_number} uscita in {way_name}",destination:"Immettiti nella rotonda e prendi la {exit_number} uscita verso {destination}"},default:{default:"Entra nella rotonda",name:"Entra nella rotonda e prendi l'uscita in {way_name}",destination:"Entra nella rotonda e prendi l'uscita verso {destination}"}}},"roundabout turn":{default:{default:"Fai una {modifier}",name:"Fai una {modifier} in {way_name}",destination:"Fai una {modifier} verso {destination}"},left:{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},right:{default:"Gira a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},straight:{default:"Continua dritto",name:"Continua dritto in {way_name}",destination:"Continua dritto verso {destination}"}},"exit roundabout":{default:{default:"Fai una {modifier}",name:"Fai una {modifier} in {way_name}",destination:"Fai una {modifier} verso {destination}"},left:{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},right:{default:"Gira a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},straight:{default:"Continua dritto",name:"Continua dritto in {way_name}",destination:"Continua dritto verso {destination}"}},"exit rotary":{default:{default:"Fai una {modifier}",name:"Fai una {modifier} in {way_name}",destination:"Fai una {modifier} verso {destination}"},left:{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},right:{default:"Gira a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},straight:{default:"Prosegui dritto",name:"Continua su {way_name}",destination:"Continua verso {destination}"}},turn:{default:{default:"Fai una {modifier}",name:"Fai una {modifier} in {way_name}",destination:"Fai una {modifier} verso {destination}"},left:{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},right:{default:"Gira a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},straight:{default:"Prosegui dritto",name:"Continua su {way_name}",destination:"Continua verso {destination}"}},"use lane":{no_lanes:{default:"Continua dritto"},default:{default:"{lane_instruction}"}}}}},{}],34:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:false},v5:{constants:{ordinalize:{1:"첫ë²ì©¨",2:"ëë²ì§¸",3:"ì¸ë²ì§¸",4:"ë¤ë²ì©¨",5:"ë¤ì¯ë²ì§¸",6:"ì¬ì¯ë²ì§¸",7:"ì¼ê³±ë²ì§¸",8:"ì¬ëë²ì§¸",9:"ìíë²ì§¸",10:"ì´ë²ì§¸"},direction:{north:"ë¶ìª½",northeast:"ë¶ë쪽",east:"ë쪽",southeast:"ë¨ë쪽",south:"ë¨ìª½",southwest:"ë¨ì쪽",west:"ì쪽",northwest:"ë¶ì쪽"},modifier:{left:"ì¢íì ",right:"ì°íì ","sharp left":"ë°ë¡ì¢íì ","sharp right":"ë°ë¡ì°íì ","slight left":"ì¡°ê¸ì¼ìª½","slight right":"ì¡°ê¸ì¤ë¥¸ìª½",straight:"ì§ì§",uturn:"ì í´"},lanes:{xo:"ì°ì¸¡ì°¨ì ì ì§",ox:"ì¢ì¸¡ì°¨ì ì ì§",xox:"ì¤ìì ì§",oxo:"ê³ì ì¢ì¸¡ ëë ì°ì¸¡ ì°¨ì "}},modes:{ferry:{default:"í리를 íìì¤",name:"í리를 íìì¤ {way_name}",destination:"í리를 íê³ {destination}ê¹ì§ ê°ì¸ì."}},phrase:{"two linked by distance":"{instruction_one}, ê·¸ë¦¬ê³ , {distance} ìì, {instruction_two}","two linked":"{instruction_one}, ê·¸ë¦¬ê³ {instruction_two}","one in distance":"{distance} ë´ì, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"{exit}ë²ì¼ë¡ ëê°ì¸ì."},arrive:{default:{default:" {nth}목ì ì§ì ëì°©íììµëë¤.",upcoming:"{nth}목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"ëì°©í ìì ì ëë¤.",named:"ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},left:{default:"ì¢ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì¢ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì¢ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},right:{default:"ì°ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì°ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì°ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},"sharp left":{default:"ì¢ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì¢ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì¢ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},"sharp right":{default:"ì°ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì°ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì°ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},"slight right":{default:"ì°ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì°ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì°ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},"slight left":{default:"ì¢ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì¢ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì¢ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},straight:{default:"ë°ë¡ ìì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì§ì§íìë©´ {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì ë©´ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."}},continue:{default:{default:"{modifier} íì ",name:"{modifier} íì íê³ {way_name}ë¡ ì§ì§í´ 주ì¸ì.",destination:"{modifier} íì íê³ {destination}ê¹ì§ ê°ì¸ì.",exit:"{way_name} 쪽ì¼ë¡ {modifier} íì íì¸ì."},straight:{default:"ê³ì ì§ì§í´ 주ì¸ì.",name:"{way_name} ë¡ ê³ì ì§ì§í´ 주ì¸ì.",destination:"{destination}ê¹ì§ ì§ì§í´ 주ì¸ì.",distance:"{distance}ê¹ì§ ì§ì§í´ 주ì¸ì.",namedistance:"{distance}ê¹ì§ {way_name}ë¡ ê°ì£¼ì¸ì."},"sharp left":{default:"ê¸ì¢íì íì¸ì.",name:"ê¸ì¢íì íì í {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì¢íì íì í {destination}ë¡ ê°ì¸ì."},"sharp right":{default:"ê¸ì°íì íì¸ì.",name:"ê¸ì°íì íê³ {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì°íì íì í {destination}ë¡ ê°ì¸ì."},"slight left":{default:"ì½ê° ì¢íì íì¸ì.",name:"ì½ê° ì¢íì íê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì½ê° ì¢íì íì í {destination}ë¡ ê°ì¸ì."},"slight right":{default:"ì½ê° ì°íì íì¸ì.",name:"ì½ê° ì°íì íê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì½ê° ì°íì íì í {destination}ë¡ ê°ì¸ì."},uturn:{default:"ì í´ íì¸ì",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´íì í {destination}ë¡ ê°ì¸ì."}},depart:{default:{default:"{direction}ë¡ ê°ì¸ì",name:"{direction} ë¡ ê°ì {way_name} 를 ì´ì©íì¸ì. ",namedistance:"{direction}ë¡ ê°ì{way_name} 를 {distance}ê¹ì§ ê°ì¸ì."}},"end of road":{default:{default:"{modifier} íì íì¸ì.",name:"{modifier}íì íê³ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier}íì íì í {destination}ë¡ ê°ì¸ì."},straight:{default:"ê³ì ì§ì§í´ 주ì¸ì.",name:"{way_name}ë¡ ê³ì ì§ì§í´ 주ì¸ì.",destination:"{destination}ê¹ì§ ì§ì§í´ 주ì¸ì."},uturn:{default:"ëë¡ ëê¹ì§ ê°ì ì í´í´ 주ì¸ì.",name:"ëë¡ ëê¹ì§ ê°ì ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ëë¡ ëê¹ì§ ê°ì ì í´í´ì {destination} ê¹ì§ ê°ì¸ì."}},fork:{default:{default:"ê°ë¦¼ê¸¸ìì {modifier} ì¼ë¡ ê°ì¸ì.",name:"{modifier}íê³ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier}íê³ {destination}ê¹ì§ ê°ì¸ì."},"slight left":{default:"ê°ë¦¼ê¸¸ìì ì¢íì íì¸ì.",name:"ì¢íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¢íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ê°ë¦¼ê¸¸ìì ì°íì íì¸ì.",name:"ì°íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì°íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp left":{default:"ê°ë¦¼ê¸¸ìì ê¸ì¢íì íì¸ì.",name:"ê¸ì¢íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì¢íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ê°ë¦¼ê¸¸ìì ê¸ì°íì íì¸ì.",name:"ê¸ì°íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì°íì í´ì {destination}ê¹ì§ ê°ì¸ì."},uturn:{default:"ì í´íì¸ì.",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´í´ì {destination}ê¹ì§ ê°ì¸ì."}},merge:{default:{default:"{modifier} í©ë¥",name:"{modifier} í©ë¥íì¬ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier} í©ë¥íì¬ {destination}ë¡ ê°ì¸ì."},straight:{default:"í©ë¥",name:"{way_name}ë¡ í©ë¥íì¸ì.",destination:"{destination}ë¡ í©ë¥íì¸ì."},"slight left":{default:"ì¢ì¸¡ì¼ë¡ í©ë¥íì¸ì.",name:"ì¢ì¸¡{way_name}ë¡ í©ë¥íì¸ì.",destination:"ì¢ì¸¡ì¼ë¡ í©ë¥íì¬ {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ì°ì¸¡ì¼ë¡ í©ë¥íì¸ì.",name:"ì°ì¸¡{way_name}ë¡ í©ë¥íì¸ì.",destination:"ì°ì¸¡ì¼ë¡ í©ë¥íì¬ {destination}ê¹ì§ ê°ì¸ì."},"sharp left":{default:"ì¢ì¸¡ì¼ë¡ í©ë¥íì¸ì.",name:"ì¢ì¸¡{way_name}ë¡ í©ë¥íì¸ì.",destination:"ì¢ì¸¡ì¼ë¡ í©ë¥íì¬ {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ì°ì¸¡ì¼ë¡ í©ë¥íì¸ì.",name:"ì°ì¸¡{way_name}ë¡ í©ë¥íì¸ì.",destination:"ì°ì¸¡ì¼ë¡ í©ë¥íì¬ {destination}ê¹ì§ ê°ì¸ì."},uturn:{default:"ì í´íì¸ì.",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´í´ì {destination}ê¹ì§ ê°ì¸ì."}},"new name":{default:{default:"{modifier} ì ì§íì¸ì.",name:"{modifier} ì ì§í´ì {way_name}ë¡ ê°ì¸ì.",destination:"{modifier} ì ì§í´ì {destination}ê¹ì§ ê°ì¸ì."},straight:{default:"ì§ì§í´ì£¼ì¸ì.",name:"{way_name}ë¡ ê³ì ê°ì¸ì.",destination:"{destination}ê¹ì§ ê³ì ê°ì¸ì."},"sharp left":{default:"ê¸ì¢íì íì¸ì.",name:"ê¸ì¢íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì¢íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ê¸ì°íì íì¸ì.",name:"ê¸ì°íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì°íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight left":{default:"ì½ê° ì¢íì í´ì¸ì.",name:"ì½ê° ì¢íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì½ê° ì¢íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ì½ê° ì°íì í´ì¸ì.",name:"ì½ê° ì°íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì½ê° ì°íì í´ì {destination}ê¹ì§ ê°ì¸ì."},uturn:{default:"ì í´í´ì£¼ì¸ì.",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´í´ì {destination}ê¹ì§ ê°ì¸ì."}},notification:{default:{default:"{modifier} íì¸ì.",name:"{modifier}í´ì {way_name}ë¡ ê°ì¸ì.",destination:"{modifier}í´ì {destination}ê¹ì§ ê°ì¸ì."},uturn:{default:"ì í´íì¸ì.",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´í´ì {destination}ê¹ì§ ê°ì¸ì."}},"off ramp":{default:{default:"ë¨íë¡ ì§ì¶í´ 주ì¸ì..",name:"ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¶êµ¬ë¡ ëê°ì {destination}ê¹ì§ ê°ì¸ì."},left:{default:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},right:{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},"sharp left":{default:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},"slight left":{default:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."} 2507},"on ramp":{default:{default:"ë¨íë¡ ì§ì í´ ì£¼ì¸ì..",name:"ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},left:{default:"ì¼ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},right:{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp left":{default:"ì¼ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight left":{default:"ì¼ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."}},rotary:{default:{default:{default:"ë¡í°ë¦¬ë¡ ì§ì íì¸ì.",name:"ë¡í°ë¦¬ë¡ ì§ì í´ì {way_name} ëê°ì¸ì.",destination:"ë¡í°ë¦¬ë¡ ì§ì í´ì {destination}ë¡ ëê°ì¸ì."},name:{default:"{rotary_name}ë¡ ì§ì íì¸ì.",name:"{rotary_name}ë¡ ì§ì í´ì {way_name}ë¡ ëê°ì¸ì.",destination:"{rotary_name}ë¡ ì§ì í´ì {destination}ë¡ ëê°ì¸ì."},exit:{default:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number} ì¶êµ¬ë¡ ëê°ì¸ì.",name:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number} ì¶êµ¬ë¡ ëê° {way_name}ë¡ ê°ì¸ì.",destination:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number} ì¶êµ¬ë¡ ëê° {destination}ë¡ ê°ì¸ì."},name_exit:{default:"{rotary_name}ë¡ ì§ì í´ì {exit_number}ë² ì¶êµ¬ë¡ ëê°ì¸ì.",name:"{rotary_name}ë¡ ì§ì í´ì {exit_number}ë² ì¶êµ¬ë¡ ëê° {way_name}ë¡ ê°ì¸ì.",destination:"{rotary_name}ë¡ ì§ì í´ì {exit_number}ë² ì¶êµ¬ë¡ ëê° {destination}ë¡ ê°ì¸ì."}}},roundabout:{default:{exit:{default:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number}ë¡ ëê°ì¸ì.",name:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number}ë¡ ëê°ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number}ë¡ ëê°ì {destination}ë¡ ê°ì¸ì."},default:{default:"ë¡í°ë¦¬ë¡ ì§ì íì¸ì.",name:"ë¡í°ë¦¬ë¡ ì§ì í´ì {way_name} ëê°ì¸ì.",destination:"ë¡í°ë¦¬ë¡ ì§ì í´ì {destination}ë¡ ëê°ì¸ì."}}},"roundabout turn":{default:{default:"{modifier} íì¸ì.",name:"{modifier} íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier} íìê³ {destination}ê¹ì§ ê°ì¸ì."},left:{default:"ì¢íì íì¸ì.",name:"ì¢íì íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì¢íì íìê³ {destination}ê¹ì§ ê°ì¸ì."},right:{default:"ì°íì íì¸ì.",name:"ì°íì íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì°íì íìê³ {destination}ê¹ì§ ê°ì¸ì."},straight:{default:"ì§ì§ íì¸ì.",name:"ì§ì§íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì§ì§íìê³ {destination}ê¹ì§ ê°ì¸ì."}},"exit roundabout":{default:{default:"ë¡í리ìì ì§ì¶íì¸ì.",name:"ë¡í리ìì ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¡í리ìì ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì."}},"exit rotary":{default:{default:"ë¡í리ìì ì§ì¶íì¸ì.",name:"ë¡í리ìì ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¡í리ìì ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì."}},turn:{default:{default:"{modifier} íì¸ì.",name:"{modifier} íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier} íìê³ {destination}ê¹ì§ ê°ì¸ì."},left:{default:"ì¢íì íì¸ì.",name:"ì¢íì íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì¢íì íìê³ {destination}ê¹ì§ ê°ì¸ì."},right:{default:"ì°íì íì¸ì.",name:"ì°íì íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì°íì íìê³ {destination}ê¹ì§ ê°ì¸ì."},straight:{default:"ì§ì§ íì¸ì.",name:"ì§ì§íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì§ì§íìê³ {destination}ê¹ì§ ê°ì¸ì."}},"use lane":{no_lanes:{default:"ì§ì§íì¸ì."},default:{default:"{lane_instruction}"}}}}},{}],35:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:false},v5:{constants:{ordinalize:{1:"ááá",2:"áá¯ááá",3:"áááá",4:"á áá¯áá³",5:"áá¥á¥á",6:"ááá",7:"ááá±á",8:"á¡áá",9:"ááá",10:"ááá"},direction:{north:"á±á»áá¬áá¹á¡ááá¹",northeast:"á¡á±áá½áá±á»áá¬áá¹á¡ááá¹",east:"á¡á±áá½áá¡ááá¹",southeast:"á¡á±áá½áá±áá¬áá¹á¡ááá¹",south:"á±áá¬áá¹á¡ááá¹",southwest:"á¡á±áá¬áá¹á±áá¬áá¹á¡ááá¹",west:"á¡á±áá¬áá¹á¡ááá¹",northwest:"á¡á±áá¬áá¹á±á»áá¬áá¹á¡ááá¹"},modifier:{left:"ááá¹ááá¹",right:"áá¬ááá¹","sharp left":"ááá¹ááá¹ á±áá¬áá¹á·ááºáá³á¸","sharp right":"áá¬ááá¹ á±áá¬áá¹áááºáá³á¸","slight left":"ááá¹ááá¹ á¡ááá¹á¸ááá¹","slight right":"áá¬ááá¹ á¡ááá¹á¸ááá¹",straight:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸",uturn:"á-á±áá¼á"},lanes:{xo:"áá¬ááá¹ááá¯áááá¹áá¼á¬á¸áá«",ox:"ááá¹ááá¹ááá¯áááá¹áá¼á¬á¸áá«",xox:"á¡ááá¹áá¼áá¹ááá¹á±ááá«",oxo:"ááá¹ ááá¯áááá¯áá¹ áá¬ááá¹ááá¯á ááá¹áá¼á¬á¸áá«"}},modes:{ferry:{default:"ááá¹áá® á á®á¸áá¼á¬á¸áá«",name:"{way_name}ááᯠááá¹áá®á á®á¸áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á ááá¹áá®á á®á¸áá¼á¬á¸áá«"}},phrase:{"two linked by distance":"{instruction_one}á»áá®á¸á±áá¬áá¹ {distance}á¡áá¼áá¹á¸ {instruction_two}","two linked":"{instruction_one}á»áá®á¸á±áá¬áá¹ {instruction_two}","one in distance":"{distance}á¡áá¼áá¹á¸ {instruction_one}","name and ref":"{name}( {ref})","exit with number":"{exit}áá½áá¼áá¹áá«"},arrive:{default:{default:"{nth}ááá¹ áá¼á¬á¸ááá¯á±áᬠááá®á¸ááá¹á¸ááá¯áá¹ááá¯áá±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áá±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name} áá½á¬ á±áá¬áá¹áá½áá»áá®"},left:{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name}áá½á¬ááá¹ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},right:{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áá¬{nth} ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name} áá½á¬áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},"sharp left":{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name}áá½á¬ááá¹ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},"sharp right":{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áá¬{nth} ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name} áá½á¬áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},"slight right":{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áá¬{nth} ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name} áá½á¬áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},"slight left":{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áá½áá»áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name}áá½á¬ááá¹ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},straight:{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹á·ááá¹á·áá¼á¬á¸áá¬áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹á·ááá¹á·áá¼á¬á¸áá¬áá¬áá¹áá½áááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áá½áá»áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name}áá½á¬ááá¹á·ááá¹á·áá¼á¬á¸áᬠá±áá¬áá¹áá½áá»áá®"}},continue:{default:{default:"{modifier}ááá¯áá½áá¹á·áá«",name:"{way_name}ââá±áááá¼áá¹á±áááá¹ {modifier}ááá¯áá½áá¹á·áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠáá½áá¹ááá«",exit:"{way_name}ââá±ááááá¯á {modifier}ááá¯áá½áá¹á·áá«"},straight:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±áááá¼áá¹á±áááá¹ááá¹ááá¹á·ááá¹áá¼á¬áá«",destination:"{destination}áá®ááá¯áááá¹áá¼á¬á¸áá«",distance:"{distance}á±áá¬áá¹ ááá¹á·ááá¹á· ááá¹áá¼á¬á¸áá«",namedistance:"{way_name}ââá±áááá¼áá¹{distance}á±áá¬áá¹ááá¹áá¼á¬á¸áá«"},"sharp left":{default:"ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«"},"sharp right":{default:"áá¬ááá¹ á±áá¬áá¹áááºáá³á¸á±áá¼ááá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«",destination:"{destination}áá®ááá¯á áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«"},"slight left":{default:"ááá¹ááá¹ á¡ááá¹á¸ááá¹á±áá¼ááá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ ááá¹ááá¹á¡ááá¹á¸ááá¹á±áá¼ááá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹á¡ááá¹á¸ááá¹ááºáá³á¸á±áá¼ááá«"},"slight right":{default:"áá¬ááá¹ á¡ááá¹á¸ááá¹ááºáá³á¸á±áá¼ááá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ áá¬ááá¹á¡ááá¹á¸ááá¹á±áá¼ááá«",destination:"{destination}áá®ááá¯á áá¬ááá¹á¡ááá¹á¸ááá¹ááºáá³á¸á±áá¼ááá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¹á¸ááá¹ááá¯á á-á±áá¼áá±áá¼áá»áá®á¸ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},depart:{default:{default:"{direction}ááá¯á á¥á®á¸ááá¹áá«",name:"{direction}ááᯠ{way_name}á¡á±áááá¼áá¹ á¥á®á¸ááá¹áá«",namedistance:"{direction}ááᯠ{way_name}á¡á±áááá¼áá¹{distance}á±áá¬áá¹ á¥á®á¸ááá¹ááá¹áá¼á¬á¸áá«"}},"end of road":{default:{default:"{modifier}ááá¯ááá½áá¹á·áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯áá½áá¹á·áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠáá½áá¹ááá«"},straight:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹á·ááá¹á·ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹á·ááá¹á·ááá¹áá¼á¬á¸áá«"},uturn:{default:"ááá¹á¸á¡áá¶á¯á¸áá¼áá¹ á-á±áá¼áá±áá¼ááá«",name:"ááá¹á¸á¡áá¶á¯á¸áá¼áá¹ {way_name}ââá±ááááá¯áá-á±áá¼áá±áá¼ááá«",destination:"ááá¹á¸á¡áá¶á¯á¸áá¼áá¹{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},fork:{default:{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹ {modifier}ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠááá¹áá¼á¬á¸áá«"},"slight left":{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹ááá¹ááá¹ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹ááá¹ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹ááᯠááá¹áá¼á¬á¸áá«"},"slight right":{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹áá¬ááá¹ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯ááá¬ááá¹ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹ááᯠááá¹áá¼á¬á¸áá«"},"sharp left":{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸ááá¯áá¼á¬á¸áá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸ áá¼á¬á¸áá«"},"sharp right":{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸ááá¯áá¼á¬á¸áá«",name:"{way_name}âá±ááááá¯á áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹á±áá¬áá¹á·ááºáá³á¸ áá¼á¬á¸áá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¯áá-á±áá¼áá±áá¼ááá«",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},merge:{default:{default:"{modifier}ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},straight:{default:"áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯á áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},"slight left":{default:"ááá¹ááá¹ááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯áááá¹ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},"slight right":{default:"áá¬ááá¹ááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯ááá¬ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},"sharp left":{default:"ááá¹ááá¹ááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯áááá¹ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},"sharp right":{default:"áá¬ááá¹ááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯ááá¬ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¹á¸ááá¹ááá¯á á-á±áá¼á á±áá¼ááá« ",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},"new name":{default:{default:"{modifier}ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠááá¹áá¼á¬á¸áá«"},straight:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹áá¼á¬á¸áá«"},"sharp left":{default:"ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸ áá¼á¬á¸áá«"},"sharp right":{default:"áá¬ááá¹ á±áá¬áá¹áááºáá³á¸áá°áá«",name:"{way_name}âá±ááááá¯á áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹á±áá¬áá¹á·ááºáá³á¸ áá¼á¬á¸áá«"},"slight left":{default:"ááá¹ááá¹ á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹ááá¹ á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«"},"slight right":{default:"áá¬ááá¹ á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯ááá¬ááá¹ á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¹á¸ááá¹ááá¯á á-á±áá¼á á±áá¼ááá«",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},notification:{default:{default:"{modifier}ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠááá¹áá¼á¬á¸áá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¹á¸ááá¹ááá¯á á-á±áá¼á á±áá¼ááá«",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},"off ramp":{default:{default:"ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯á {exit} ááá¯áá°áá«"},left:{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"ááá¹ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯áááá¹ááá¹áá½ {exit} ááá¯áá°áá«"},right:{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"áá¬ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯ááá¬ááá¹áá½ {exit} ááá¯áá°áá«"},"sharp left":{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"ááá¹ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯áááá¹ááá¹áá½ {exit} ááá¯áá°áá«"},"sharp right":{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"áá¬ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯ááá¬ááá¹áá½ {exit} ááá¯áá°áá«"},"slight left":{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"ááá¹ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯áááá¹ááá¹áá½ {exit} ááá¯áá°áá«"},"slight right":{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"áá¬ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯ááá¬ááá¹áá½ {exit} ááá¯áá°áá«"}},"on ramp":{default:{default:"ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},left:{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},right:{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},"sharp left":{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},"sharp right":{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},"slight left":{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},"slight right":{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"}},rotary:{default:{default:{default:"á¡ááá¯áá¹á¸ááá¹ááá¯áááá¹áá«",name:"{way_name}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«Â ",destination:"{destination}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«"},name:{default:"{rotary_name}ááá¯áááá¹áá«",name:"{rotary_name}á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{way_name}á±ááááá¯ááá¼áá¹áá«",destination:"{rotary_name}á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{destination}áá®ááá¯ááá¼áá¹áá«"},exit:{default:"á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬á»ááá¹áá¼áá¹áá«",name:"á¡ááá¯áá¹á¸ááá¹ááá¯áááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{way_name}á±ááááá¯ááá¼áá¹áá«",destination:"á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{destination}áá®ááá¯ááá¼áá¹áá«"},name_exit:{default:"{rotary_name}ááá¯ááá¹á»áá®á¸ {exit_number}ááá¯áá°áá¬áá¼áá¹áá«",name:"{rotary_name}ááá¯ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{way_name}á±ááááá¯ááá¼áá¹áá«",destination:"{rotary_name}ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{destination}áá®ááá¯ááá¼áá¹áá«"}}},roundabout:{default:{exit:{default:"{exit_number}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",name:"á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{way_name}á±ááááá¯ááá¼áá¹áá«",destination:"á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{destination}áá®ááá¯ááá¼áá¹áá«"},default:{default:"á¡ááá¯áá¹á¸ááá¹ááá¹áá«",name:"{way_name}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",destination:"{destination}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«"}}},"roundabout turn":{default:{default:"{modifier}ááá¯áá½áá¹á·áá«Â ",name:"{modifier}âá±ááááá¯{way_name}ááá¯ááá¹áá¼á¬á¸áá«Â ",destination:"{modifier}áá®ááá¯á{destination}ááᯠááá¹áá¼á¬á¸áá«Â "},left:{default:"ááá¹ááá¹ááá¯áá»ááá¹áá½áá¹ááá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ááá¯ááá¹áá¼á¬á¸áá«Â ",destination:"{destination}áá®ááá¯áááá¹ááá¹áá½ á±áá¼ááá«"},right:{default:"áá¬ááá¹ááá¯áá»ááá¹áá½áá¹ááá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«Â ",destination:"{destination}áá¬ááá¹ááá¯á á±áá¼ááá«"},straight:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹á·ááá¹á·ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹á·ááá¹á·ááá¹áá¼á¬á¸áá«"}},"exit roundabout":{default:{default:"á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",name:"{way_name}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",destination:"á¥á®á¸ááá¹á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«{destination}"}},"exit rotary":{default:{default:"á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«á¥á®á¸ááá¹á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",name:"{way_name}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",destination:"á¥á®á¸ááá¹á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«{destination}"}},turn:{default:{default:"{modifier}ááá¯áá½áá¹á·áá«Â ",name:"{modifier}âá±ááááá¯{way_name}ááá¯ááá¹áá¼á¬á¸áá«Â ",destination:"{modifier}áá®ááá¯á{destination}ááᯠááá¹áá¼á¬á¸áá«Â "},left:{default:"ááá¹ááá¹ááá¯áá»ááá¹áá½áá¹ááá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ááá¯ááá¹áá¼á¬á¸áá«Â ",destination:"{destination}ááá¹ááá¹ááá¯á á±áá¼ááá«"},right:{default:"áá¬ááá¹ááá¯áá»ááá¹áá½áá¹ááá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«Â ",destination:"{destination}áá¬ááá¹ááá¯á á±áá¼ááá«"},straight:{default:"ááá¹áááá¹ááá¼á¬á¸áá«",name:"{way_name}",destination:"{destination}áá®ááá¯áááá¹á·ááá¹á·áá¼á¬á¸áá«"}},"use lane":{no_lanes:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«"},default:{default:"{lane_instruction}"}}}}},{}],36:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1e",2:"2e",3:"3e",4:"4e",5:"5e",6:"6e",7:"7e",8:"8e",9:"9e",10:"10e"},direction:{north:"noord",northeast:"noordoost",east:"oost",southeast:"zuidoost",south:"zuid",southwest:"zuidwest",west:"west",northwest:"noordwest"},modifier:{left:"links",right:"rechts","sharp left":"scherpe bocht naar links","sharp right":"scherpe bocht naar rechts","slight left":"iets naar links","slight right":"iets naar rechts",straight:"rechtdoor",uturn:"omkeren"},lanes:{xo:"Rechts aanhouden",ox:"Links aanhouden",xox:"In het midden blijven",oxo:"Links of rechts blijven"}},modes:{ferry:{default:"Neem de veerpont",name:"Neem de veerpont {way_name}",destination:"Neem de veerpont richting {destination}"}},phrase:{"two linked by distance":"{instruction_one}, dan na {distance}, {instruction_two}","two linked":"{instruction_one}, daarna {instruction_two}","one in distance":"Over {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"afslag {exit}"},arrive:{default:{default:"Je bent gearriveerd op de {nth} bestemming.",upcoming:"U arriveert op de {nth} bestemming",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}"},left:{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich links.",upcoming:"Uw {nth} bestemming bevindt zich aan de linkerkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de linkerkant"},right:{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich rechts.",upcoming:"Uw {nth} bestemming bevindt zich aan de rechterkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de rechterkant"},"sharp left":{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich links.",upcoming:"Uw {nth} bestemming bevindt zich aan de linkerkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de linkerkant"},"sharp right":{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich rechts.",upcoming:"Uw {nth} bestemming bevindt zich aan de rechterkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de rechterkant"},"slight right":{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich rechts.",upcoming:"Uw {nth} bestemming bevindt zich aan de rechterkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de rechterkant"},"slight left":{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich links.",upcoming:"Uw {nth} bestemming bevindt zich aan de linkerkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de linkerkant"},straight:{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich voor je.",upcoming:"Uw {nth} bestemming is recht voor u",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is recht voor u"}},continue:{default:{default:"Ga {modifier}",name:"Sla {modifier} om op {way_name} te blijven",destination:"Ga {modifier} richting {destination}",exit:"Ga {modifier} naar {way_name}"},straight:{default:"Ga rechtdoor",name:"Blijf rechtdoor gaan op {way_name}",destination:"Ga rechtdoor richting {destination}",distance:"Ga rechtdoor voor {distance}",namedistance:"Ga verder op {way_name} voor {distance}"},"sharp left":{default:"Linksaf",name:"Sla scherp links af om op {way_name} te blijven",destination:"Linksaf richting {destination}"},"sharp right":{default:"Rechtsaf",name:"Sla scherp rechts af om op {way_name} te blijven",destination:"Rechtsaf richting {destination}"},"slight left":{default:"Ga links",name:"Links afbuigen om op {way_name} te blijven",destination:"Rechts afbuigen om op {destination} te blijven"},"slight right":{default:"Rechts afbuigen",name:"Rechts afbuigen om op {way_name} te blijven",destination:"Rechts afbuigen richting {destination}"},uturn:{default:"Keer om",name:"Draai om en ga verder op {way_name}",destination:"Keer om richting {destination}"}},depart:{default:{default:"Vertrek in {direction}elijke richting",name:"Neem {way_name} in {direction}elijke richting",namedistance:"Ga richting {direction} op {way_name} voor {distance}"}},"end of road":{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},straight:{default:"Ga in de aangegeven richting",name:"Ga naar {way_name}",destination:"Ga richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},fork:{default:{default:"Ga {modifier} op de splitsing",name:"Houd {modifier} aan, tot {way_name}",destination:"Houd {modifier}, in de richting van {destination}"},"slight left":{default:"Links aanhouden op de splitsing",name:"Houd links aan, tot {way_name}",destination:"Houd links aan, richting {destination}"},"slight right":{default:"Rechts aanhouden op de splitsing",name:"Houd rechts aan, tot {way_name}",destination:"Houd rechts aan, richting {destination}"},"sharp left":{default:"Neem bij de splitsing, een scherpe bocht, naar links ",name:"Neem een scherpe bocht naar links, tot aan {way_name}",destination:"Neem een scherpe bocht naar links, richting {destination}"},"sharp right":{default:"Neem op de splitsing, een scherpe bocht, naar rechts",name:"Neem een scherpe bocht naar rechts, tot aan {way_name}",destination:"Neem een scherpe bocht naar rechts, richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},merge:{default:{default:"Bij de splitsing {modifier}",name:"Bij de splitsing {modifier} naar {way_name}",destination:"Bij de splitsing {modifier} richting {destination}"},straight:{default:"Samenvoegen",name:"Ga verder op {way_name}",destination:"Ga verder richting {destination}"},"slight left":{default:"Bij de splitsing links aanhouden",name:"Bij de splitsing links aanhouden naar {way_name}",destination:"Bij de splitsing links aanhouden richting {destination}"},"slight right":{default:"Bij de splitsing rechts aanhouden",name:"Bij de splitsing rechts aanhouden naar {way_name}",destination:"Bij de splitsing rechts aanhouden richting {destination}"},"sharp left":{default:"Bij de splitsing linksaf",name:"Bij de splitsing linksaf naar {way_name}",destination:"Bij de splitsing linksaf richting {destination}"},"sharp right":{default:"Bij de splitsing rechtsaf",name:"Bij de splitsing rechtsaf naar {way_name}",destination:"Bij de splitsing rechtsaf richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},"new name":{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},straight:{default:"Ga in de aangegeven richting",name:"Ga rechtdoor naar {way_name}",destination:"Ga rechtdoor richting {destination}"},"sharp left":{default:"Neem een scherpe bocht, naar links",name:"Linksaf naar {way_name}",destination:"Linksaf richting {destination}"},"sharp right":{default:"Neem een scherpe bocht, naar rechts",name:"Rechtsaf naar {way_name}",destination:"Rechtsaf richting {destination}"},"slight left":{default:"Links aanhouden",name:"Links aanhouden naar {way_name}",destination:"Links aanhouden richting {destination}"},"slight right":{default:"Rechts aanhouden",name:"Rechts aanhouden naar {way_name}",destination:"Rechts aanhouden richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},notification:{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},"off ramp":{default:{default:"Neem de afrit",name:"Neem de afrit naar {way_name}",destination:"Neem de afrit richting {destination}",exit:"Neem afslag {exit}",exit_destination:"Neem afslag {exit} richting {destination}"},left:{default:"Neem de afrit links",name:"Neem de afrit links naar {way_name}",destination:"Neem de afrit links richting {destination}",exit:"Neem afslag {exit} aan de linkerkant",exit_destination:"Neem afslag {exit} aan de linkerkant richting {destination}"},right:{default:"Neem de afrit rechts",name:"Neem de afrit rechts naar {way_name}",destination:"Neem de afrit rechts richting {destination}",exit:"Neem afslag {exit} aan de rechterkant",exit_destination:"Neem afslag {exit} aan de rechterkant richting {destination}"},"sharp left":{default:"Neem de afrit links",name:"Neem de afrit links naar {way_name}",destination:"Neem de afrit links richting {destination}",exit:"Neem afslag {exit} aan de linkerkant",exit_destination:"Neem afslag {exit} aan de linkerkant richting {destination}"},"sharp right":{default:"Neem de afrit rechts",name:"Neem de afrit rechts naar {way_name}",destination:"Neem de afrit rechts richting {destination}",exit:"Neem afslag {exit} aan de rechterkant",exit_destination:"Neem afslag {exit} aan de rechterkant richting {destination}"},"slight left":{default:"Neem de afrit links",name:"Neem de afrit links naar {way_name}",destination:"Neem de afrit links richting {destination}",exit:"Neem afslag {exit} aan de linkerkant",exit_destination:"Neem afslag {exit} aan de linkerkant richting {destination}"},"slight right":{default:"Neem de afrit rechts",name:"Neem de afrit rechts naar {way_name}",destination:"Neem de afrit rechts richting {destination}",exit:"Neem afslag {exit} aan de rechterkant",exit_destination:"Neem afslag {exit} aan de rechterkant richting {destination}"}},"on ramp":{default:{default:"Neem de oprit",name:"Neem de oprit naar {way_name}",destination:"Neem de oprit richting {destination}"},left:{default:"Neem de oprit links",name:"Neem de oprit links naar {way_name}",destination:"Neem de oprit links richting {destination}"},right:{default:"Neem de oprit rechts",name:"Neem de oprit rechts naar {way_name}",destination:"Neem de oprit rechts richting {destination}"},"sharp left":{default:"Neem de oprit links",name:"Neem de oprit links naar {way_name}",destination:"Neem de oprit links richting {destination}"},"sharp right":{default:"Neem de oprit rechts",name:"Neem de oprit rechts naar {way_name}",destination:"Neem de oprit rechts richting {destination}"},"slight left":{default:"Neem de oprit links",name:"Neem de oprit links naar {way_name}",destination:"Neem de oprit links richting {destination}"},"slight right":{default:"Neem de oprit rechts",name:"Neem de oprit rechts naar {way_name}",destination:"Neem de oprit rechts richting {destination}"}},rotary:{default:{default:{default:"Betreedt de rotonde",name:"Betreedt rotonde en sla af op {way_name}",destination:"Betreedt rotonde en sla af richting {destination}"},name:{default:"Ga het knooppunt {rotary_name} op",name:"Verlaat het knooppunt {rotary_name} naar {way_name}",destination:"Verlaat het knooppunt {rotary_name} richting {destination}"},exit:{default:"Betreedt rotonde en neem afslag {exit_number}",name:"Betreedt rotonde en neem afslag {exit_number} naar {way_name}",destination:"Betreedt rotonde en neem afslag {exit_number} richting {destination}"},name_exit:{default:"Ga het knooppunt {rotary_name} op en neem afslag {exit_number}",name:"Ga het knooppunt {rotary_name} op en neem afslag {exit_number} naar {way_name}",destination:"Ga het knooppunt {rotary_name} op en neem afslag {exit_number} richting {destination}"}}},roundabout:{default:{exit:{default:"Betreedt rotonde en neem afslag {exit_number}",name:"Betreedt rotonde en neem afslag {exit_number} naar {way_name}",destination:"Betreedt rotonde en neem afslag {exit_number} richting {destination}"},default:{default:"Betreedt de rotonde",name:"Betreedt rotonde en sla af op {way_name}",destination:"Betreedt rotonde en sla af richting {destination}"}}},"roundabout turn":{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},left:{default:"Ga linksaf",name:"Ga linksaf naar {way_name}",destination:"Ga linksaf richting {destination}"},right:{default:"Ga rechtsaf",name:"Ga rechtsaf naar {way_name}",destination:"Ga rechtsaf richting {destination}"},straight:{default:"Ga in de aangegeven richting",name:"Ga naar {way_name}",destination:"Ga richting {destination}"}},"exit roundabout":{default:{default:"Verlaat de rotonde",name:"Verlaat de rotonde en ga verder op {way_name}",destination:"Verlaat de rotonde richting {destination}"}},"exit rotary":{default:{default:"Verlaat de rotonde",name:"Verlaat de rotonde en ga verder op {way_name}",destination:"Verlaat de rotonde richting {destination}"}},turn:{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},left:{default:"Ga linksaf",name:"Ga linksaf naar {way_name}",destination:"Ga linksaf richting {destination}"},right:{default:"Ga rechtsaf",name:"Ga rechtsaf naar {way_name}",destination:"Ga rechtsaf richting {destination}"},straight:{default:"Ga rechtdoor",name:"Ga rechtdoor naar {way_name}",destination:"Ga rechtdoor richting {destination}"}},"use lane":{no_lanes:{default:"Rechtdoor"},default:{default:"{lane_instruction}"}}}}},{}],37:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1.",2:"2.",3:"3.",4:"4.",5:"5.",6:"6.",7:"7.",8:"8.",9:"9.",10:"10."},direction:{north:"nord",northeast:"nordøst",east:"øst",southeast:"sørøst",south:"sør",southwest:"sørvest",west:"vest",northwest:"nordvest"},modifier:{left:"venstre",right:"høyre","sharp left":"skarp venstre","sharp right":"skarp høyre","slight left":"litt til venstre","slight right":"litt til høyre",straight:"rett frem", 2508uturn:"U-sving"},lanes:{xo:"Hold til høyre",ox:"Hold til venstre",xox:"Hold deg i midten",oxo:"Hold til venstre eller høyre"}},modes:{ferry:{default:"Ta ferja",name:"Ta ferja {way_name}",destination:"Ta ferja til {destination}"}},phrase:{"two linked by distance":"{instruction_one}, deretter {instruction_two} om {distance}","two linked":"{instruction_one}, deretter {instruction_two}","one in distance":"Om {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"avkjørsel {exit}"},arrive:{default:{default:"Du har ankommet din {nth} destinasjon",upcoming:"Du vil ankomme din {nth} destinasjon",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}"},left:{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din venstre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din venstre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din venstre side"},right:{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din høyre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din høyre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din høyre side"},"sharp left":{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din venstre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din venstre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din venstre side"},"sharp right":{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din høyre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din høyre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din høyre side"},"slight right":{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din høyre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din høyre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din høyre side"},"slight left":{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din venstre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din venstre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din venstre side"},straight:{default:"Du har ankommet din {nth} destinasjon, rett forut",upcoming:"Du vil ankomme din {nth} destinasjon, rett forut",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, rett forut"}},continue:{default:{default:"Ta til {modifier}",name:"Ta til {modifier} for Ã¥ bli værende pÃ¥ {way_name}",destination:"Ta til {modifier} mot {destination}",exit:"Ta til {modifier} inn pÃ¥ {way_name}"},straight:{default:"Fortsett rett frem",name:"Fortsett rett frem for Ã¥ bli værende pÃ¥ {way_name}",destination:"Fortsett mot {destination}",distance:"Fortsett rett frem, {distance} ",namedistance:"Fortsett pÃ¥ {way_name}, {distance}"},"sharp left":{default:"Sving skarpt til venstre",name:"Sving skarpt til venstre for Ã¥ bli værende pÃ¥ {way_name}",destination:"Sving skarpt til venstre mot {destination}"},"sharp right":{default:"Sving skarpt til høyre",name:"Sving skarpt til høyre for Ã¥ bli værende pÃ¥ {way_name}",destination:"Sving skarpt mot {destination}"},"slight left":{default:"Sving svakt til venstre",name:"Sving svakt til venstre for Ã¥ bli værende pÃ¥ {way_name}",destination:"Sving svakt til venstre mot {destination}"},"slight right":{default:"Sving svakt til høyre",name:"Sving svakt til høyre for Ã¥ bli værende pÃ¥ {way_name}",destination:"Sving svakt til høyre mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving og fortsett pÃ¥ {way_name}",destination:"Ta en U-sving mot {destination}"}},depart:{default:{default:"Kjør i retning {direction}",name:"Kjør i retning {direction} pÃ¥ {way_name}",namedistance:"Kjør i retning {direction} pÃ¥ {way_name}, {distance}"}},"end of road":{default:{default:"Sving {modifier}",name:"Ta til {modifier} inn pÃ¥ {way_name}",destination:"Sving {modifier} mot {destination}"},straight:{default:"Fortsett rett frem",name:"Fortsett rett frem til {way_name}",destination:"Fortsett rett frem mot {destination}"},uturn:{default:"Ta en U-sving i enden av veien",name:"Ta en U-sving til {way_name} i enden av veien",destination:"Ta en U-sving mot {destination} i enden av veien"}},fork:{default:{default:"Hold til {modifier} i veikrysset",name:"Hold til {modifier} inn pÃ¥ {way_name}",destination:"Hold til {modifier} mot {destination}"},"slight left":{default:"Hold til venstre i veikrysset",name:"Hold til venstre inn pÃ¥ {way_name}",destination:"Hold til venstre mot {destination}"},"slight right":{default:"Hold til høyre i veikrysset",name:"Hold til høyre inn pÃ¥ {way_name}",destination:"Hold til høyre mot {destination}"},"sharp left":{default:"Sving skarpt til venstre i veikrysset",name:"Sving skarpt til venstre inn pÃ¥ {way_name}",destination:"Sving skarpt til venstre mot {destination}"},"sharp right":{default:"Sving skarpt til høyre i veikrysset",name:"Sving skarpt til høyre inn pÃ¥ {way_name}",destination:"Svings skarpt til høyre mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving til {way_name}",destination:"Ta en U-sving mot {destination}"}},merge:{default:{default:"Hold {modifier} kjørefelt",name:"Hold {modifier} kjørefelt inn pÃ¥ {way_name}",destination:"Hold {modifier} kjørefelt mot {destination}"},straight:{default:"Hold kjørefelt",name:"Hold kjørefelt inn pÃ¥ {way_name}",destination:"Hold kjørefelt mot {destination}"},"slight left":{default:"Hold venstre kjørefelt",name:"Hold venstre kjørefelt inn pÃ¥ {way_name}",destination:"Hold venstre kjørefelt mot {destination}"},"slight right":{default:"Hold høyre kjørefelt",name:"Hold høyre kjørefelt inn pÃ¥ {way_name}",destination:"Hold høyre kjørefelt mot {destination}"},"sharp left":{default:"Hold venstre kjørefelt",name:"Hold venstre kjørefelt inn pÃ¥ {way_name}",destination:"Hold venstre kjørefelt mot {destination}"},"sharp right":{default:"Hold høyre kjørefelt",name:"Hold høyre kjørefelt inn pÃ¥ {way_name}",destination:"Hold høyre kjørefelt mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving til {way_name}",destination:"Ta en U-sving mot {destination}"}},"new name":{default:{default:"Fortsett {modifier}",name:"Fortsett {modifier} til {way_name}",destination:"Fortsett {modifier} mot {destination}"},straight:{default:"Fortsett rett frem",name:"Fortsett inn pÃ¥ {way_name}",destination:"Fortsett mot {destination}"},"sharp left":{default:"Sving skarpt til venstre",name:"Sving skarpt til venstre inn pÃ¥ {way_name}",destination:"Sving skarpt til venstre mot {destination}"},"sharp right":{default:"Sving skarpt til høyre",name:"Sving skarpt til høyre inn pÃ¥ {way_name}",destination:"Svings skarpt til høyre mot {destination}"},"slight left":{default:"Fortsett litt mot venstre",name:"Fortsett litt mot venstre til {way_name}",destination:"Fortsett litt mot venstre mot {destination}"},"slight right":{default:"Fortsett litt mot høyre",name:"Fortsett litt mot høyre til {way_name}",destination:"Fortsett litt mot høyre mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving til {way_name}",destination:"Ta en U-sving mot {destination}"}},notification:{default:{default:"Fortsett {modifier}",name:"Fortsett {modifier} til {way_name}",destination:"Fortsett {modifier} mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving til {way_name}",destination:"Ta en U-sving mot {destination}"}},"off ramp":{default:{default:"Ta avkjørselen",name:"Ta avkjørselen inn pÃ¥ {way_name}",destination:"Ta avkjørselen mot {destination}",exit:"Ta avkjørsel {exit}",exit_destination:"Ta avkjørsel {exit} mot {destination}"},left:{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ venstre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ venstre side mot {destination}"},right:{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ høyre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ høyre side mot {destination}"},"sharp left":{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ venstre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ venstre side mot {destination}"},"sharp right":{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ høyre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ høyre side mot {destination}"},"slight left":{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ venstre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ venstre side mot {destination}"},"slight right":{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ høyre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ høyre side mot {destination}"}},"on ramp":{default:{default:"Ta avkjørselen",name:"Ta avkjørselen inn pÃ¥ {way_name}",destination:"Ta avkjørselen mot {destination}"},left:{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}"},right:{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}"},"sharp left":{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}"},"sharp right":{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}"},"slight left":{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}"},"slight right":{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}"}},rotary:{default:{default:{default:"Kjør inn i rundkjøringen",name:"Kjør inn i rundkjøringen og deretter ut pÃ¥ {way_name}",destination:"Kjør inn i rundkjøringen og deretter ut mot {destination}"},name:{default:"Kjør inn i {rotary_name}",name:"Kjør inn i {rotary_name} og deretter ut pÃ¥ {way_name}",destination:"Kjør inn i {rotary_name} og deretter ut mot {destination}"},exit:{default:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel",name:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel ut pÃ¥ {way_name}",destination:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel ut mot {destination} "},name_exit:{default:"Kjør inn i {rotary_name} og ta {exit_number} avkjørsel",name:"Kjør inn i {rotary_name} og ta {exit_number} avkjørsel inn pÃ¥ {way_name}",destination:"Kjør inn i {rotary_name} og ta {exit_number} avkjørsel mot {destination}"}}},roundabout:{default:{exit:{default:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel",name:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel inn pÃ¥ {way_name}",destination:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel ut mot {destination} "},default:{default:"Kjør inn i rundkjøringen",name:"Kjør inn i rundkjøringen og deretter ut pÃ¥ {way_name}",destination:"Kjør inn i rundkjøringen og deretter ut mot {destination}"}}},"roundabout turn":{default:{default:"Ta en {modifier}",name:"Ta en {modifier} inn pÃ¥ {way_name}",destination:"Ta en {modifier} mot {destination}"},left:{default:"Sving til venstre",name:"Sving til venstre inn pÃ¥ {way_name}",destination:"Sving til venstre mot {destination}"},right:{default:"Sving til høyre",name:"Sving til høyre inn pÃ¥ {way_name}",destination:"Sving til høyre mot {destination}"},straight:{default:"Fortsett rett frem",name:"Fortsett rett frem til {way_name}",destination:"Fortsett rett frem mot {destination}"}},"exit roundabout":{default:{default:"Kjør ut av rundkjøringen",name:"Kjør ut av rundkjøringen og inn pÃ¥ {way_name}",destination:"Kjør ut av rundkjøringen mot {destination}"}},"exit rotary":{default:{default:"Kjør ut av rundkjøringen",name:"Kjør ut av rundkjøringen og inn pÃ¥ {way_name}",destination:"Kjør ut av rundkjøringen mot {destination}"}},turn:{default:{default:"Ta en {modifier}",name:"Ta en {modifier} inn pÃ¥ {way_name}",destination:"Ta en {modifier} mot {destination}"},left:{default:"Sving til venstre",name:"Sving til venstre inn pÃ¥ {way_name}",destination:"Sving til venstre mot {destination}"},right:{default:"Sving til høyre",name:"Sving til høyre inn pÃ¥ {way_name}",destination:"Sving til høyre mot {destination}"},straight:{default:"Kjør rett frem",name:"Kjør rett frem og inn pÃ¥ {way_name}",destination:"Kjør rett frem mot {destination}"}},"use lane":{no_lanes:{default:"Fortsett rett frem"},default:{default:"{lane_instruction}"}}}}},{}],38:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1.",2:"2.",3:"3.",4:"4.",5:"5.",6:"6.",7:"7.",8:"8.",9:"9.",10:"10."},direction:{north:"póÅnoc",northeast:"póÅnocny wschód",east:"wschód",southeast:"poÅudniowy wschód",south:"poÅudnie",southwest:"poÅudniowy zachód",west:"zachód",northwest:"póÅnocny zachód"},modifier:{left:"lewo",right:"prawo","sharp left":"ostro w lewo","sharp right":"ostro w prawo","slight left":"Åagodnie w lewo","slight right":"Åagodnie w prawo",straight:"prosto",uturn:"zawróÄ"},lanes:{xo:"Trzymaj siÄ prawej strony",ox:"Trzymaj siÄ lewej strony",xox:"Trzymaj siÄ Årodka",oxo:"Trzymaj siÄ lewej lub prawej strony"}},modes:{ferry:{default:"Weź prom",name:"Weź prom {way_name}",destination:"Weź prom w kierunku {destination}"}},phrase:{"two linked by distance":"{instruction_one}, nastÄpnie za {distance} {instruction_two}","two linked":"{instruction_one}, nastÄpnie {instruction_two}","one in distance":"Za {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Dojechano do miejsca docelowego {nth}",upcoming:"Dojechano do miejsca docelowego {nth}",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}"},left:{default:"Dojechano do miejsca docelowego {nth}, po lewej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po lewej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po lewej stronie"},right:{default:"Dojechano do miejsca docelowego {nth}, po prawej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po prawej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po prawej stronie"},"sharp left":{default:"Dojechano do miejsca docelowego {nth}, po lewej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po lewej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po lewej stronie"},"sharp right":{default:"Dojechano do miejsca docelowego {nth}, po prawej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po prawej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po prawej stronie"},"slight right":{default:"Dojechano do miejsca docelowego {nth}, po prawej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po prawej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po prawej stronie"},"slight left":{default:"Dojechano do miejsca docelowego {nth}, po lewej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po lewej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po lewej stronie"},straight:{default:"Dojechano do miejsca docelowego {nth} , prosto",upcoming:"Dojechano do miejsca docelowego {nth} , prosto",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, prosto"}},continue:{default:{default:"SkrÄÄ {modifier}",name:"SkrÄÄ w {modifier}, aby pozostaÄ na {way_name}",destination:"SkrÄÄ {modifier} w kierunku {destination}",exit:"SkrÄÄ {modifier} na {way_name}"},straight:{default:"Kontynuuj prosto",name:"Jedź dalej prosto, aby pozostaÄ na {way_name}",destination:"Kontynuuj w kierunku {destination}",distance:"Jedź dalej prosto przez {distance}",namedistance:"Jedź dalej {way_name} przez {distance}"},"sharp left":{default:"SkrÄÄ ostro w lewo",name:"SkrÄÄ w lewo w ostry zakrÄt, aby pozostaÄ na {way_name}",destination:"SkrÄÄ ostro w lewo w kierunku {destination}"},"sharp right":{default:"SkrÄÄ ostro w prawo",name:"SkrÄÄ w prawo w ostry zakrÄt, aby pozostaÄ na {way_name}",destination:"SkrÄÄ ostro w prawo w kierunku {destination}"},"slight left":{default:"SkrÄÄ w lewo w Åagodny zakrÄt",name:"SkrÄÄ w lewo w Åagodny zakrÄt, aby pozostaÄ na {way_name}",destination:"SkrÄÄ w lewo w Åagodny zakrÄt na {destination}"},"slight right":{default:"SkrÄÄ w prawo w Åagodny zakrÄt",name:"SkrÄÄ w prawo w Åagodny zakrÄt, aby pozostaÄ na {way_name}",destination:"SkrÄÄ w prawo w Åagodny zakrÄt na {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä i jedź dalej {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},depart:{default:{default:"Kieruj siÄ {direction}",name:"Kieruj siÄ {direction} na {way_name}",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"SkrÄÄ {modifier}",name:"SkrÄÄ {modifier} na {way_name}",destination:"SkrÄÄ {modifier} w kierunku {destination}"},straight:{default:"Kontynuuj prosto",name:"Kontynuuj prosto na {way_name}",destination:"Kontynuuj prosto w kierunku {destination}"},uturn:{default:"ZawrÃ³Ä na koÅcu ulicy",name:"ZawrÃ³Ä na koÅcu ulicy na {way_name}",destination:"ZawrÃ³Ä na koÅcu ulicy w kierunku {destination}"}},fork:{default:{default:"Na rozwidleniu trzymaj siÄ {modifier}",name:"Na rozwidleniu trzymaj siÄ {modifier} na {way_name}",destination:"Na rozwidleniu trzymaj siÄ {modifier} w kierunku {destination}"},"slight left":{default:"Na rozwidleniu trzymaj siÄ lewej strony",name:"Na rozwidleniu trzymaj siÄ lewej strony w {way_name}",destination:"Na rozwidleniu trzymaj siÄ lewej strony w kierunku {destination}"},"slight right":{default:"Na rozwidleniu trzymaj siÄ prawej strony",name:"Na rozwidleniu trzymaj siÄ prawej strony na {way_name}",destination:"Na rozwidleniu trzymaj siÄ prawej strony w kierunku {destination}"},"sharp left":{default:"Na rozwidleniu skrÄÄ ostro w lewo",name:"SkrÄÄ ostro w lewo w {way_name}",destination:"SkrÄÄ ostro w lewo w kierunku {destination}"},"sharp right":{default:"Na rozwidleniu skrÄÄ ostro w prawo",name:"SkrÄÄ ostro w prawo na {way_name}",destination:"SkrÄÄ ostro w prawo w kierunku {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä na {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},merge:{default:{default:"WÅÄ cz siÄ {modifier}",name:"WÅÄ cz siÄ {modifier} na {way_name}",destination:"WÅÄ cz siÄ {modifier} w kierunku {destination}"},straight:{default:"WÅÄ cz siÄ prosto",name:"WÅÄ cz siÄ prosto na {way_name}",destination:"WÅÄ cz siÄ prosto w kierunku {destination}"},"slight left":{default:"WÅÄ cz siÄ z lewej strony",name:"WÅÄ cz siÄ z lewej strony na {way_name}",destination:"WÅÄ cz siÄ z lewej strony w kierunku {destination}"},"slight right":{default:"WÅÄ cz siÄ z prawej strony",name:"WÅÄ cz siÄ z prawej strony na {way_name}",destination:"WÅÄ cz siÄ z prawej strony w kierunku {destination}"},"sharp left":{default:"WÅÄ cz siÄ z lewej strony",name:"WÅÄ cz siÄ z lewej strony na {way_name}",destination:"WÅÄ cz siÄ z lewej strony w kierunku {destination}"},"sharp right":{default:"WÅÄ cz siÄ z prawej strony",name:"WÅÄ cz siÄ z prawej strony na {way_name}",destination:"WÅÄ cz siÄ z prawej strony w kierunku {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä na {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},"new name":{default:{default:"Kontynuuj {modifier}",name:"Kontynuuj {modifier} na {way_name}",destination:"Kontynuuj {modifier} w kierunku {destination}"},straight:{default:"Kontynuuj prosto",name:"Kontynuuj na {way_name}",destination:"Kontynuuj w kierunku {destination}"},"sharp left":{default:"SkrÄÄ ostro w lewo",name:"SkrÄÄ ostro w lewo w {way_name}",destination:"SkrÄÄ ostro w lewo w kierunku {destination}"},"sharp right":{default:"SkrÄÄ ostro w prawo",name:"SkrÄÄ ostro w prawo na {way_name}",destination:"SkrÄÄ ostro w prawo w kierunku {destination}"},"slight left":{default:"Kontynuuj Åagodnie w lewo",name:"Kontynuuj Åagodnie w lewo na {way_name}",destination:"Kontynuuj Åagodnie w lewo w kierunku {destination}"},"slight right":{default:"Kontynuuj Åagodnie w prawo",name:"Kontynuuj Åagodnie w prawo na {way_name}",destination:"Kontynuuj Åagodnie w prawo w kierunku {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä na {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},notification:{default:{default:"Kontynuuj {modifier}",name:"Kontynuuj {modifier} na {way_name}",destination:"Kontynuuj {modifier} w kierunku {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä na {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},"off ramp":{default:{default:"Zjedź",name:"Weź zjazd na {way_name}",destination:"Weź zjazd w kierunku {destination}",exit:"Zjedź zjazdem {exit}",exit_destination:"Zjedź zjazdem {exit} na {destination}"},left:{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po lewej stronie",exit_destination:"Zjedź zjazdem {exit} po lewej stronie na {destination}"},right:{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po prawej stronie",exit_destination:"Zjedź zjazdem {exit} po prawej stronie na {destination}"},"sharp left":{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po lewej stronie",exit_destination:"Zjedź zjazdem {exit} po lewej stronie na {destination}"},"sharp right":{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po prawej stronie",exit_destination:"Zjedź zjazdem {exit} po prawej stronie na {destination}"},"slight left":{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po lewej stronie",exit_destination:"Zjedź zjazdem {exit} po lewej stronie na {destination}"},"slight right":{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po prawej stronie",exit_destination:"Zjedź zjazdem {exit} po prawej stronie na {destination}"}},"on ramp":{default:{default:"Weź zjazd",name:"Weź zjazd na {way_name}",destination:"Weź zjazd w kierunku {destination}"},left:{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}"},right:{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}"},"sharp left":{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}"},"sharp right":{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}"},"slight left":{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}"},"slight right":{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}"}},rotary:{default:{default:{default:"Wjedź na rondo",name:"Wjedź na rondo i skrÄÄ na {way_name}",destination:"Wjedź na rondo i skrÄÄ w kierunku {destination}"},name:{default:"Wjedź na {rotary_name}",name:"Wjedź na {rotary_name} i skrÄÄ na {way_name}",destination:"Wjedź na {rotary_name} i skrÄÄ w kierunku {destination}"},exit:{default:"Wjedź na rondo i wyjedź {exit_number} zjazdem",name:"Wjedź na rondo i wyjedź {exit_number} zjazdem na {way_name}",destination:"Wjedź na rondo i wyjedź {exit_number} zjazdem w kierunku {destination}"},name_exit:{default:"Wjedź na {rotary_name} i wyjedź {exit_number} zjazdem",name:"Wjedź na {rotary_name} i wyjedź {exit_number} zjazdem na {way_name}",destination:"Wjedź na {rotary_name} i wyjedź {exit_number} zjazdem w kierunku {destination}"}}},roundabout:{default:{exit:{default:"Wjedź na rondo i wyjedź {exit_number} zjazdem",name:"Wjedź na rondo i wyjedź {exit_number} zjazdem na {way_name}",destination:"Wjedź na rondo i wyjedź {exit_number} zjazdem w kierunku {destination}"},default:{default:"Wjedź na rondo",name:"Wjedź na rondo i wyjedź na {way_name}",destination:"Wjedź na rondo i wyjedź w kierunku {destination}"}}},"roundabout turn":{default:{default:"{modifier}",name:"{modifier} na {way_name}",destination:"{modifier} w kierunku {destination}"},left:{default:"SkrÄÄ w lewo",name:"SkrÄÄ w lewo na {way_name}",destination:"SkrÄÄ w lewo w kierunku {destination}"},right:{default:"SkrÄÄ w prawo",name:"SkrÄÄ w prawo na {way_name}",destination:"SkrÄÄ w prawo w kierunku {destination}"},straight:{default:"Kontynuuj prosto",name:"Kontynuuj prosto na {way_name}",destination:"Kontynuuj prosto w kierunku {destination}"}},"exit roundabout":{default:{default:"{modifier}",name:"{modifier} na {way_name}",destination:"{modifier} w kierunku {destination}"},left:{default:"SkrÄÄ w lewo",name:"SkrÄÄ w lewo na {way_name}",destination:"SkrÄÄ w lewo w kierunku {destination}"},right:{default:"SkrÄÄ w prawo",name:"SkrÄÄ w prawo na {way_name}",destination:"SkrÄÄ w prawo w kierunku {destination}"},straight:{default:"Kontynuuj prosto",name:"Kontynuuj prosto na {way_name}",destination:"Kontynuuj prosto w kierunku {destination}"}},"exit rotary":{default:{default:"{modifier}",name:"{modifier} na {way_name}",destination:"{modifier} w kierunku {destination}"},left:{default:"SkrÄÄ w lewo",name:"SkrÄÄ w lewo na {way_name}",destination:"SkrÄÄ w lewo w kierunku {destination}"},right:{default:"SkrÄÄ w prawo",name:"SkrÄÄ w prawo na {way_name}",destination:"SkrÄÄ w prawo w kierunku {destination}"},straight:{default:"Jedź prosto",name:"Jedź prosto na {way_name}",destination:"Jedź prosto w kierunku {destination}"}},turn:{default:{default:"{modifier}",name:"{modifier} na {way_name}",destination:"{modifier} w kierunku {destination}"},left:{default:"SkrÄÄ w lewo",name:"SkrÄÄ w lewo na {way_name}",destination:"SkrÄÄ w lewo w kierunku {destination}"},right:{default:"SkrÄÄ w prawo",name:"SkrÄÄ w prawo na {way_name}",destination:"SkrÄÄ w prawo w kierunku {destination}"},straight:{default:"Jedź prosto",name:"Jedź prosto na {way_name}",destination:"Jedź prosto w kierunku {destination}"}},"use lane":{no_lanes:{default:"Kontynuuj prosto"},default:{default:"{lane_instruction}"}}}}},{}],39:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1º",2:"2º",3:"3º",4:"4º",5:"5º",6:"6º",7:"7º",8:"8º",9:"9º",10:"10º"},direction:{north:"norte",northeast:"nordeste",east:"leste",southeast:"sudeste",south:"sul",southwest:"sudoeste",west:"oeste",northwest:"noroeste"},modifier:{left:"à esquerda",right:"à direita","sharp left":"fechada à esquerda","sharp right":"fechada à direita","slight left":"suave à esquerda","slight right":"suave à direita",straight:"em frente",uturn:"retorno"},lanes:{xo:"Mantenha-se à direita",ox:"Mantenha-se à esquerda",xox:"Mantenha-se ao centro",oxo:"Mantenha-se à esquerda ou direita"}},modes:{ferry:{default:"Pegue a balsa",name:"Pegue a balsa {way_name}",destination:"Pegue a balsa sentido {destination}"}},phrase:{"two linked by distance":"{instruction_one}, então, em {distance}, {instruction_two}","two linked":"{instruction_one}, então {instruction_two}","one in distance":"Em {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"saÃda {exit}"},arrive:{default:{default:"Você chegou ao seu {nth} destino",upcoming:"Você chegará ao seu {nth} destino",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou a {waypoint_name}"},left:{default:"Você chegou ao seu {nth} destino, à esquerda",upcoming:"Você chegará ao seu {nth} destino, à esquerda",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à esquerda"},right:{default:"Você chegou ao seu {nth} destino, à direita",upcoming:"Você chegará ao seu {nth} destino, à direita",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à direita"},"sharp left":{default:"Você chegou ao seu {nth} destino, à esquerda",upcoming:"Você chegará ao seu {nth} destino, à esquerda",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à esquerda"},"sharp right":{default:"Você chegou ao seu {nth} destino, à direita",upcoming:"Você chegará ao seu {nth} destino, à direita",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à direita"},"slight right":{default:"Você chegou ao seu {nth} destino, à direita",upcoming:"Você chegará ao seu {nth} destino, à direita",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à direita"},"slight left":{default:"Você chegou ao seu {nth} destino, à esquerda",upcoming:"Você chegará ao seu {nth} destino, à esquerda",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à esquerda"},straight:{default:"Você chegou ao seu {nth} destino, em frente",upcoming:"Você vai chegar ao seu {nth} destino, em frente",short:"Você chegou","short-upcoming":"Você vai chegar",named:"You have arrived at {waypoint_name}, straight ahead"}},continue:{default:{default:"Vire {modifier}",name:"Vire {modifier} para manter-se na {way_name}",destination:"Vire {modifier} sentido {destination}",exit:"Vire {modifier} em {way_name}"},straight:{default:"Continue em frente",name:"Continue em frente para manter-se na {way_name}",destination:"Continue em direção à {destination}",distance:"Continue em frente por {distance}",namedistance:"Continue na {way_name} por {distance}"},"sharp left":{default:"Faça uma curva fechada a esquerda",name:"Faça uma curva fechada a esquerda para manter-se na {way_name}",destination:"Faça uma curva fechada a esquerda sentido {destination}"},"sharp right":{default:"Faça uma curva fechada a direita",name:"Faça uma curva fechada a direita para manter-se na {way_name}",destination:"Faça uma curva fechada a direita sentido {destination}"},"slight left":{default:"Faça uma curva suave a esquerda",name:"Faça uma curva suave a esquerda para manter-se na {way_name}",destination:"Faça uma curva suave a esquerda em direção a {destination}"},"slight right":{default:"Faça uma curva suave a direita", 2509name:"Faça uma curva suave a direita para manter-se na {way_name}",destination:"Faça uma curva suave a direita em direção a {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno e continue em {way_name}",destination:"Faça o retorno sentido {destination}"}},depart:{default:{default:"Siga {direction}",name:"Siga {direction} em {way_name}",namedistance:"Siga {direction} na {way_name} por {distance}"}},"end of road":{default:{default:"Vire {modifier}",name:"Vire {modifier} em {way_name}",destination:"Vire {modifier} sentido {destination}"},straight:{default:"Continue em frente",name:"Continue em frente em {way_name}",destination:"Continue em frente sentido {destination}"},uturn:{default:"Faça o retorno no fim da rua",name:"Faça o retorno em {way_name} no fim da rua",destination:"Faça o retorno sentido {destination} no fim da rua"}},fork:{default:{default:"Mantenha-se {modifier} na bifurcação",name:"Mantenha-se {modifier} na bifurcação em {way_name}",destination:"Mantenha-se {modifier} na bifurcação sentido {destination}"},"slight left":{default:"Mantenha-se à esquerda na bifurcação",name:"Mantenha-se à esquerda na bifurcação em {way_name}",destination:"Mantenha-se à esquerda na bifurcação sentido {destination}"},"slight right":{default:"Mantenha-se à direita na bifurcação",name:"Mantenha-se à direita na bifurcação em {way_name}",destination:"Mantenha-se à direita na bifurcação sentido {destination}"},"sharp left":{default:"Faça uma curva fechada à esquerda na bifurcação",name:"Faça uma curva fechada à esquerda em {way_name}",destination:"Faça uma curva fechada à esquerda sentido {destination}"},"sharp right":{default:"Faça uma curva fechada à direita na bifurcação",name:"Faça uma curva fechada à direita em {way_name}",destination:"Faça uma curva fechada à direita sentido {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno em {way_name}",destination:"Faça o retorno sentido {destination}"}},merge:{default:{default:"Entre {modifier}",name:"Entre {modifier} na {way_name}",destination:"Entre {modifier} em direção à {destination}"},straight:{default:"Mesclar",name:"Entre reto na {way_name}",destination:"Entre reto em direção à {destination}"},"slight left":{default:"Entre à esquerda",name:"Entre à esquerda na {way_name}",destination:"Entre à esquerda em direção à {destination}"},"slight right":{default:"Entre à direita",name:"Entre à direita na {way_name}",destination:"Entre à direita em direção à {destination}"},"sharp left":{default:"Entre à esquerda",name:"Entre à esquerda na {way_name}",destination:"Entre à esquerda em direção à {destination}"},"sharp right":{default:"Entre à direita",name:"Entre à direita na {way_name}",destination:"Entre à direita em direção à {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno em {way_name}",destination:"Faça o retorno sentido {destination}"}},"new name":{default:{default:"Continue {modifier}",name:"Continue {modifier} em {way_name}",destination:"Continue {modifier} sentido {destination}"},straight:{default:"Continue em frente",name:"Continue em {way_name}",destination:"Continue em direção à {destination}"},"sharp left":{default:"Faça uma curva fechada à esquerda",name:"Faça uma curva fechada à esquerda em {way_name}",destination:"Faça uma curva fechada à esquerda sentido {destination}"},"sharp right":{default:"Faça uma curva fechada à direita",name:"Faça uma curva fechada à direita em {way_name}",destination:"Faça uma curva fechada à direita sentido {destination}"},"slight left":{default:"Continue ligeiramente à esquerda",name:"Continue ligeiramente à esquerda em {way_name}",destination:"Continue ligeiramente à esquerda sentido {destination}"},"slight right":{default:"Continue ligeiramente à direita",name:"Continue ligeiramente à direita em {way_name}",destination:"Continue ligeiramente à direita sentido {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno em {way_name}",destination:"Faça o retorno sentido {destination}"}},notification:{default:{default:"Continue {modifier}",name:"Continue {modifier} em {way_name}",destination:"Continue {modifier} sentido {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno em {way_name}",destination:"Faça o retorno sentido {destination}"}},"off ramp":{default:{default:"Pegue a rampa",name:"Pegue a rampa em {way_name}",destination:"Pegue a rampa sentido {destination}",exit:"Pegue a saÃda {exit}",exit_destination:"Pegue a saÃda {exit} em direção à {destination}"},left:{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}",exit:"Pegue a saÃda {exit} à esquerda",exit_destination:"Pegue a saÃda {exit} à esquerda em direção à {destination}"},right:{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}",exit:"Pegue a saÃda {exit} à direita",exit_destination:"Pegue a saÃda {exit} à direita em direção à {destination}"},"sharp left":{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}",exit:"Pegue a saÃda {exit} à esquerda",exit_destination:"Pegue a saÃda {exit} à esquerda em direção à {destination}"},"sharp right":{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}",exit:"Pegue a saÃda {exit} à direita",exit_destination:"Pegue a saÃda {exit} à direita em direção à {destination}"},"slight left":{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}",exit:"Pegue a saÃda {exit} à esquerda",exit_destination:"Pegue a saÃda {exit} à esquerda em direção à {destination}"},"slight right":{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}",exit:"Pegue a saÃda {exit} à direita",exit_destination:"Pegue a saÃda {exit} à direita em direção à {destination}"}},"on ramp":{default:{default:"Pegue a rampa",name:"Pegue a rampa em {way_name}",destination:"Pegue a rampa sentido {destination}"},left:{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}"},right:{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentid {destination}"},"sharp left":{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}"},"sharp right":{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}"},"slight left":{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}"},"slight right":{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}"}},rotary:{default:{default:{default:"Entre na rotatória",name:"Entre na rotatória e saia na {way_name}",destination:"Entre na rotatória e saia sentido {destination}"},name:{default:"Entre em {rotary_name}",name:"Entre em {rotary_name} e saia em {way_name}",destination:"Entre em {rotary_name} e saia sentido {destination}"},exit:{default:"Entre na rotatória e pegue a {exit_number} saÃda",name:"Entre na rotatória e pegue a {exit_number} saÃda na {way_name}",destination:"Entre na rotatória e pegue a {exit_number} saÃda sentido {destination}"},name_exit:{default:"Entre em {rotary_name} e saia na {exit_number} saÃda",name:"Entre em {rotary_name} e saia na {exit_number} saÃda em {way_name}",destination:"Entre em {rotary_name} e saia na {exit_number} saÃda sentido {destination}"}}},roundabout:{default:{exit:{default:"Entre na rotatória e pegue a {exit_number} saÃda",name:"Entre na rotatória e pegue a {exit_number} saÃda na {way_name}",destination:"Entre na rotatória e pegue a {exit_number} saÃda sentido {destination}"},default:{default:"Entre na rotatória",name:"Entre na rotatória e saia na {way_name}",destination:"Entre na rotatória e saia sentido {destination}"}}},"roundabout turn":{default:{default:"Siga {modifier}",name:"Siga {modifier} em {way_name}",destination:"Siga {modifier} sentido {destination}"},left:{default:"Vire à esquerda",name:"Vire à esquerda em {way_name}",destination:"Vire à esquerda sentido {destination}"},right:{default:"Vire à direita",name:"Vire à direita em {way_name}",destination:"Vire à direita sentido {destination}"},straight:{default:"Continue em frente",name:"Continue em frente em {way_name}",destination:"Continue em frente sentido {destination}"}},"exit roundabout":{default:{default:"Saia da rotatória",name:"Exit the traffic circle onto {way_name}",destination:"Exit the traffic circle towards {destination}"}},"exit rotary":{default:{default:"Saia da rotatória",name:"Exit the traffic circle onto {way_name}",destination:"Exit the traffic circle towards {destination}"}},turn:{default:{default:"Siga {modifier}",name:"Siga {modifier} em {way_name}",destination:"Siga {modifier} sentido {destination}"},left:{default:"Vire à esquerda",name:"Vire à esquerda em {way_name}",destination:"Vire à esquerda sentido {destination}"},right:{default:"Vire à direita",name:"Vire à direita em {way_name}",destination:"Vire à direita sentido {destination}"},straight:{default:"Siga em frente",name:"Siga em frente em {way_name}",destination:"Siga em frente sentido {destination}"}},"use lane":{no_lanes:{default:"Continue em frente"},default:{default:"{lane_instruction}"}}}}},{}],40:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1º",2:"2º",3:"3º",4:"4º",5:"5º",6:"6º",7:"7º",8:"8º",9:"9º",10:"10º"},direction:{north:"norte",northeast:"nordeste",east:"este",southeast:"sudeste",south:"sul",southwest:"sudoeste",west:"oeste",northwest:"noroeste"},modifier:{left:"à esquerda",right:"à direita","sharp left":"acentuadamente à esquerda","sharp right":"acentuadamente à direita","slight left":"ligeiramente à esquerda","slight right":"ligeiramente à direita",straight:"em frente",uturn:"inversão de marcha"},lanes:{xo:"Mantenha-se à direita",ox:"Mantenha-se à esquerda",xox:"Mantenha-se ao meio",oxo:"Mantenha-se à esquerda ou à direita"}},modes:{ferry:{default:"Apanhe o ferry",name:"Apanhe o ferry {way_name}",destination:"Apanhe o ferry para {destination}"}},phrase:{"two linked by distance":"{instruction_one}, depois, a {distance}, {instruction_two}","two linked":"{instruction_one}, depois {instruction_two}","one in distance":"A {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"saÃda {exit}"},arrive:{default:{default:"Chegou ao seu {nth} destino",upcoming:"Está a chegar ao seu {nth} destino",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}"},left:{default:"Chegou ao seu {nth} destino, à esquerda",upcoming:"Está a chegar ao seu {nth} destino, à esquerda",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à esquerda"},right:{default:"Chegou ao seu {nth} destino, à direita",upcoming:"Está a chegar ao seu {nth} destino, à direita",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à direita"},"sharp left":{default:"Chegou ao seu {nth} destino, à esquerda",upcoming:"Está a chegar ao seu {nth} destino, à esquerda",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à esquerda"},"sharp right":{default:"Chegou ao seu {nth} destino, à direita",upcoming:"Está a chegar ao seu {nth} destino, à direita",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à direita"},"slight right":{default:"Chegou ao seu {nth} destino, à direita",upcoming:"Está a chegar ao seu {nth} destino, à direita",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à direita"},"slight left":{default:"Chegou ao seu {nth} destino, à esquerda",upcoming:"Está a chegar ao seu {nth} destino, à esquerda",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à esquerda"},straight:{default:"Chegou ao seu {nth} destino, em frente",upcoming:"Está a chegar ao seu {nth} destino, em frente",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, em frente"}},continue:{default:{default:"Vire {modifier}",name:"Vire {modifier} para se manter em {way_name}",destination:"Vire {modifier} em direção a {destination}",exit:"Vire {modifier} para {way_name}"},straight:{default:"Continue em frente",name:"Continue em frente para se manter em {way_name}",destination:"Continue em direção a {destination}",distance:"Continue em frente por {distance}",namedistance:"Continue em {way_name} por {distance}"},"sharp left":{default:"Vire acentuadamente à esquerda",name:"Vire acentuadamente à esquerda para se manter em {way_name}",destination:"Vire acentuadamente à esquerda em direção a {destination}"},"sharp right":{default:"Vire acentuadamente à direita",name:"Vire acentuadamente à direita para se manter em {way_name}",destination:"Vire acentuadamente à direita em direção a {destination}"},"slight left":{default:"Vire ligeiramente à esquerda",name:"Vire ligeiramente à esquerda para se manter em {way_name}",destination:"Vire ligeiramente à esquerda em direção a {destination}"},"slight right":{default:"Vire ligeiramente à direita",name:"Vire ligeiramente à direita para se manter em {way_name}",destination:"Vire ligeiramente à direita em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha e continue em {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},depart:{default:{default:"Dirija-se para {direction}",name:"Dirija-se para {direction} em {way_name}",namedistance:"Dirija-se para {direction} em {way_name} por {distance}"}},"end of road":{default:{default:"Vire {modifier}",name:"Vire {modifier} para {way_name}",destination:"Vire {modifier} em direção a {destination}"},straight:{default:"Continue em frente",name:"Continue em frente para {way_name}",destination:"Continue em frente em direção a {destination}"},uturn:{default:"No final da estrada faça uma inversão de marcha",name:"No final da estrada faça uma inversão de marcha para {way_name} ",destination:"No final da estrada faça uma inversão de marcha em direção a {destination}"}},fork:{default:{default:"Na bifurcação mantenha-se {modifier}",name:"Mantenha-se {modifier} para {way_name}",destination:"Mantenha-se {modifier} em direção a {destination}"},"slight left":{default:"Na bifurcação mantenha-se à esquerda",name:"Mantenha-se à esquerda para {way_name}",destination:"Mantenha-se à esquerda em direção a {destination}"},"slight right":{default:"Na bifurcação mantenha-se à direita",name:"Mantenha-se à direita para {way_name}",destination:"Mantenha-se à direita em direção a {destination}"},"sharp left":{default:"Na bifurcação vire acentuadamente à esquerda",name:"Vire acentuadamente à esquerda para {way_name}",destination:"Vire acentuadamente à esquerda em direção a {destination}"},"sharp right":{default:"Na bifurcação vire acentuadamente à direita",name:"Vire acentuadamente à direita para {way_name}",destination:"Vire acentuadamente à direita em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha para {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},merge:{default:{default:"Una-se ao tráfego {modifier}",name:"Una-se ao tráfego {modifier} para {way_name}",destination:"Una-se ao tráfego {modifier} em direção a {destination}"},straight:{default:"Una-se ao tráfego",name:" Una-se ao tráfego para {way_name}",destination:"Una-se ao tráfego em direção a {destination}"},"slight left":{default:"Una-se ao tráfego à esquerda",name:"Una-se ao tráfego à esquerda para {way_name}",destination:"Una-se ao tráfego à esquerda em direção a {destination}"},"slight right":{default:"Una-se ao tráfego à direita",name:"Una-se ao tráfego à direita para {way_name}",destination:"Una-se ao tráfego à direita em direção a {destination}"},"sharp left":{default:"Una-se ao tráfego à esquerda",name:"Una-se ao tráfego à esquerda para {way_name}",destination:"Una-se ao tráfego à esquerda em direção a {destination}"},"sharp right":{default:"Una-se ao tráfego à direita",name:"Una-se ao tráfego à direita para {way_name}",destination:"Una-se ao tráfego à direita em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha para {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},"new name":{default:{default:"Continue {modifier}",name:"Continue {modifier} para {way_name}",destination:"Continue {modifier} em direção a {destination}"},straight:{default:"Continue em frente",name:"Continue para {way_name}",destination:"Continue em direção a {destination}"},"sharp left":{default:"Vire acentuadamente à esquerda",name:"Vire acentuadamente à esquerda para {way_name}",destination:"Vire acentuadamente à esquerda em direção a{destination}"},"sharp right":{default:"Vire acentuadamente à direita",name:"Vire acentuadamente à direita para {way_name}",destination:"Vire acentuadamente à direita em direção a {destination}"},"slight left":{default:"Continue ligeiramente à esquerda",name:"Continue ligeiramente à esquerda para {way_name}",destination:"Continue ligeiramente à esquerda em direção a {destination}"},"slight right":{default:"Continue ligeiramente à direita",name:"Continue ligeiramente à direita para {way_name}",destination:"Continue ligeiramente à direita em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha para {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},notification:{default:{default:"Continue {modifier}",name:"Continue {modifier} para {way_name}",destination:"Continue {modifier} em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha para {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},"off ramp":{default:{default:"Saia na saÃda",name:"Saia na saÃda para {way_name}",destination:"Saia na saÃda em direção a {destination}",exit:"Saia na saÃda {exit}",exit_destination:"Saia na saÃda {exit} em direção a {destination}"},left:{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}",exit:"Saia na saÃda {exit} à esquerda",exit_destination:"Saia na saÃda {exit} à esquerda em direção a {destination}"},right:{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}",exit:"Saia na saÃda {exit} à direita",exit_destination:"Saia na saÃda {exit} à direita em direção a {destination}"},"sharp left":{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}",exit:"Saia na saÃda {exit} à esquerda",exit_destination:"Saia na saÃda {exit} à esquerda em direção a {destination}"},"sharp right":{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}",exit:"Saia na saÃda {exit} à direita",exit_destination:"Saia na saÃda {exit} à direita em direção a {destination}"},"slight left":{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}",exit:"Saia na saÃda {exit} à esquerda",exit_destination:"Saia na saÃda {exit} à esquerda em direção a {destination}"},"slight right":{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}",exit:"Saia na saÃda {exit} à direita",exit_destination:"Saia na saÃda {exit} à direita em direção a {destination}"}},"on ramp":{default:{default:"Saia na saÃda",name:"Saia na saÃda para {way_name}",destination:"Saia na saÃda em direção a {destination}"},left:{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}"},right:{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}"},"sharp left":{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}"},"sharp right":{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}"},"slight left":{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}"},"slight right":{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}"}},rotary:{default:{default:{default:"Entre na rotunda",name:"Entre na rotunda e saia para {way_name}",destination:"Entre na rotunda e saia em direção a {destination}"},name:{default:"Entre em {rotary_name}",name:"Entre em {rotary_name} e saia para {way_name}",destination:"Entre em {rotary_name} e saia em direção a {destination}"},exit:{default:"Entre na rotunda e saia na saÃda {exit_number}",name:"Entre na rotunda e saia na saÃda {exit_number} para {way_name}",destination:"Entre na rotunda e saia na saÃda {exit_number} em direção a {destination}"},name_exit:{default:"Entre em {rotary_name} e saia na saÃda {exit_number}",name:"Entre em {rotary_name} e saia na saÃda {exit_number} para {way_name}",destination:"Entre em{rotary_name} e saia na saÃda {exit_number} em direção a {destination}"}}},roundabout:{default:{exit:{default:"Entre na rotunda e saia na saÃda {exit_number}",name:"Entre na rotunda e saia na saÃda {exit_number} para {way_name}",destination:"Entre na rotunda e saia na saÃda {exit_number} em direção a {destination}"},default:{default:"Entre na rotunda",name:"Entre na rotunda e saia para {way_name}",destination:"Entre na rotunda e saia em direção a {destination}"}}},"roundabout turn":{default:{default:"Siga {modifier}",name:"Siga {modifier} para {way_name}",destination:"Siga {modifier} em direção a {destination}"},left:{default:"Vire à esquerda",name:"Vire à esquerda para {way_name}",destination:"Vire à esquerda em direção a {destination}"},right:{default:"Vire à direita",name:"Vire à direita para {way_name}",destination:"Vire à direita em direção a {destination}"},straight:{default:"Continue em frente",name:"Continue em frente para {way_name}",destination:"Continue em frente em direção a {destination}"}},"exit roundabout":{default:{default:"Saia da rotunda",name:"Saia da rotunda para {way_name}",destination:"Saia da rotunda em direção a {destination}"}},"exit rotary":{default:{default:"Saia da rotunda",name:"Saia da rotunda para {way_name}",destination:"Saia da rotunda em direção a {destination}"}},turn:{default:{default:"Siga {modifier}",name:"Siga {modifier} para{way_name}",destination:"Siga {modifier} em direção a {destination}"},left:{default:"Vire à esquerda",name:"Vire à esquerda para {way_name}",destination:"Vire à esquerda em direção a {destination}"},right:{default:"Vire à direita",name:"Vire à direita para {way_name}",destination:"Vire à direita em direção a {destination}"},straight:{default:"Vá em frente",name:"Vá em frente para {way_name}",destination:"Vá em frente em direção a {destination}"}},"use lane":{no_lanes:{default:"Continue em frente"},default:{default:"{lane_instruction}"}}}}},{}],41:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"prima",2:"a doua",3:"a treia",4:"a patra",5:"a cincea",6:"a Èasea",7:"a Èaptea",8:"a opta",9:"a noua",10:"a zecea"},direction:{north:"nord",northeast:"nord-est",east:"est",southeast:"sud-est",south:"sud",southwest:"sud-vest",west:"vest",northwest:"nord-vest"},modifier:{left:"stânga",right:"dreapta","sharp left":"puternic stânga","sharp right":"puternic dreapta","slight left":"uÈor stânga","slight right":"uÈor dreapta",straight:"înainte",uturn:"întoarcere"},lanes:{xo:"ÈineÈi stânga",ox:"ÈineÈi dreapta",xox:"ÈineÈi pe mijloc",oxo:"ÈineÈi pe laterale"}},modes:{ferry:{default:"LuaÈi feribotul",name:"LuaÈi feribotul {way_name}",destination:"LuaÈi feribotul spre {destination}"}},phrase:{"two linked by distance":"{instruction_one}, apoi în {distance}, {instruction_two}","two linked":"{instruction_one} apoi {instruction_two}","one in distance":"Ãn {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"ieÈirea {exit}"},arrive:{default:{default:"AÈi ajuns la {nth} destinaÈie",upcoming:"AÈi ajuns la {nth} destinaÈie",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}"},left:{default:"AÈi ajuns la {nth} destinaÈie, pe stânga",upcoming:"AÈi ajuns la {nth} destinaÈie, pe stânga",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe stânga"},right:{default:"AÈi ajuns la {nth} destinaÈie, pe dreapta",upcoming:"AÈi ajuns la {nth} destinaÈie, pe dreapta",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe dreapta"},"sharp left":{default:"AÈi ajuns la {nth} destinaÈie, pe stânga",upcoming:"AÈi ajuns la {nth} destinaÈie, pe stânga",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe stânga"},"sharp right":{default:"AÈi ajuns la {nth} destinaÈie, pe dreapta",upcoming:"AÈi ajuns la {nth} destinaÈie, pe dreapta",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe dreapta"},"slight right":{default:"AÈi ajuns la {nth} destinaÈie, pe dreapta",upcoming:"AÈi ajuns la {nth} destinaÈie, pe dreapta",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe dreapta"},"slight left":{default:"AÈi ajuns la {nth} destinaÈie, pe stânga",upcoming:"AÈi ajuns la {nth} destinaÈie, pe stânga",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe stânga"},straight:{default:"AÈi ajuns la {nth} destinaÈie, în faÈÄ",upcoming:"AÈi ajuns la {nth} destinaÈie, în faÈÄ",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, în faÈÄ"}},continue:{default:{default:"ViraÈi {modifier}",name:"ViraÈi {modifier} pe {way_name}",destination:"ViraÈi {modifier} spre {destination}",exit:"ViraÈi {modifier} pe {way_name}"},straight:{default:"MergeÈi înainte",name:"MergeÈi înainte pe {way_name}",destination:"ContinuaÈi spre {destination}",distance:"MergeÈi înainte pentru {distance}",namedistance:"ContinuaÈi pe {way_name} pentru {distance}"},"sharp left":{default:"ViraÈi puternic la stânga",name:"ViraÈi puternic la stânga pe {way_name}",destination:"ViraÈi puternic la stânga spre {destination}"},"sharp right":{default:"ViraÈi puternic la dreapta",name:"ViraÈi puternic la dreapta pe {way_name}",destination:"ViraÈi puternic la dreapta spre {destination}"},"slight left":{default:"ViraÈi uÈor la stânga",name:"ViraÈi uÈor la stânga pe {way_name}",destination:"ViraÈi uÈor la stânga spre {destination}"},"slight right":{default:"ViraÈi uÈor la dreapta",name:"ViraÈi uÈor la dreapta pe {way_name}",destination:"ViraÈi uÈor la dreapta spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ Èi continuaÈi pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},depart:{default:{default:"MergeÈi spre {direction}",name:"MergeÈi spre {direction} pe {way_name}",namedistance:"MergeÈi spre {direction} pe {way_name} pentru {distance}"}},"end of road":{default:{default:"ViraÈi {modifier}",name:"ViraÈi {modifier} pe {way_name}",destination:"ViraÈi {modifier} spre {destination}"},straight:{default:"ContinuaÈi înainte",name:"ContinuaÈi înainte pe {way_name}",destination:"ContinuaÈi înainte spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ la sfârÈitul drumului",name:"ÃntoarceÈi-vÄ pe {way_name} la sfârÈitul drumului",destination:"ÃntoarceÈi-vÄ spre {destination} la sfârÈitul drumului"}},fork:{default:{default:"ÈineÈi {modifier} la bifurcaÈie",name:"ÈineÈi {modifier} la bifurcaÈie pe {way_name}",destination:"ÈineÈi {modifier} la bifurcaÈie spre {destination}"},"slight left":{default:"ÈineÈi pe stânga la bifurcaÈie",name:"ÈineÈi pe stânga la bifurcaÈie pe {way_name}",destination:"ÈineÈi pe stânga la bifurcaÈie spre {destination}"},"slight right":{default:"ÈineÈi pe dreapta la bifurcaÈie",name:"ÈineÈi pe dreapta la bifurcaÈie pe {way_name}",destination:"ÈineÈi pe dreapta la bifurcaÈie spre {destination}"},"sharp left":{default:"ViraÈi puternic stânga la bifurcaÈie",name:"ViraÈi puternic stânga la bifurcaÈie pe {way_name}",destination:"ViraÈi puternic stânga la bifurcaÈie spre {destination}"},"sharp right":{default:"ViraÈi puternic dreapta la bifurcaÈie",name:"ViraÈi puternic dreapta la bifurcaÈie pe {way_name}",destination:"ViraÈi puternic dreapta la bifurcaÈie spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},merge:{default:{default:"IntraÈi în {modifier}",name:"IntraÈi în {modifier} pe {way_name}",destination:"IntraÈi în {modifier} spre {destination}"},straight:{default:"IntraÈi",name:"IntraÈi pe {way_name}",destination:"IntraÈi spre {destination}"},"slight left":{default:"IntraÈi în stânga",name:"IntraÈi în stânga pe {way_name}",destination:"IntraÈi în stânga spre {destination}"},"slight right":{default:"IntraÈi în dreapta",name:"IntraÈi în dreapta pe {way_name}",destination:"IntraÈi în dreapta spre {destination}"},"sharp left":{default:"IntraÈi în stânga",name:"IntraÈi în stânga pe {way_name}",destination:"IntraÈi în stânga spre {destination}"},"sharp right":{default:"IntraÈi în dreapta",name:"IntraÈi în dreapta pe {way_name}",destination:"IntraÈi în dreapta spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},"new name":{default:{default:"ContinuaÈi {modifier}",name:"ContinuaÈi {modifier} pe {way_name}",destination:"ContinuaÈi {modifier} spre {destination}"},straight:{default:"ContinuaÈi înainte",name:"ContinuaÈi pe {way_name}",destination:"ContinuaÈi spre {destination}"},"sharp left":{default:"ViraÈi puternic la stânga",name:"ViraÈi puternic la stânga pe {way_name}",destination:"ViraÈi puternic la stânga spre {destination}"},"sharp right":{default:"ViraÈi puternic la dreapta",name:"ViraÈi puternic la dreapta pe {way_name}",destination:"ViraÈi puternic la dreapta spre {destination}"},"slight left":{default:"ContinuaÈi uÈor la stânga",name:"ContinuaÈi uÈor la stânga pe {way_name}",destination:"ContinuaÈi uÈor la stânga spre {destination}"},"slight right":{default:"ContinuaÈi uÈor la dreapta",name:"ContinuaÈi uÈor la dreapta pe {way_name}",destination:"ContinuaÈi uÈor la dreapta spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},notification:{default:{default:"ContinuaÈi {modifier}",name:"ContinuaÈi {modifier} pe {way_name}",destination:"ContinuaÈi {modifier} spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},"off ramp":{default:{default:"UrmaÈi breteaua",name:"UrmaÈi breteaua pe {way_name}",destination:"UrmaÈi breteaua spre {destination}",exit:"UrmaÈi ieÈirea {exit}",exit_destination:"UrmaÈi ieÈirea {exit} spre {destination}"},left:{default:"UrmaÈi breteaua din stânga", 2510name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe stânga",exit_destination:"UrmaÈi ieÈirea {exit} pe stânga spre {destination}"},right:{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe dreapta",exit_destination:"UrmaÈi ieÈirea {exit} pe dreapta spre {destination}"},"sharp left":{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe stânga",exit_destination:"UrmaÈi ieÈirea {exit} pe stânga spre {destination}"},"sharp right":{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe dreapta",exit_destination:"UrmaÈi ieÈirea {exit} pe dreapta spre {destination}"},"slight left":{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe stânga",exit_destination:"UrmaÈi ieÈirea {exit} pe stânga spre {destination}"},"slight right":{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe dreapta",exit_destination:"UrmaÈi ieÈirea {exit} pe dreapta spre {destination}"}},"on ramp":{default:{default:"UrmaÈi breteaua de intrare",name:"UrmaÈi breteaua pe {way_name}",destination:"UrmaÈi breteaua spre {destination}"},left:{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}"},right:{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}"},"sharp left":{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}"},"sharp right":{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}"},"slight left":{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}"},"slight right":{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}"}},rotary:{default:{default:{default:"IntraÈi în sensul giratoriu",name:"IntraÈi în sensul giratoriu Èi ieÈiÈi pe {way_name}",destination:"IntraÈi în sensul giratoriu Èi ieÈiÈi spre {destination}"},name:{default:"IntraÈi în {rotary_name}",name:"IntraÈi în {rotary_name} Èi ieÈiÈi pe {way_name}",destination:"IntraÈi în {rotary_name} Èi ieÈiÈi spre {destination}"},exit:{default:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire",name:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire pe {way_name}",destination:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire spre {destination}"},name_exit:{default:"IntraÈi în {rotary_name} Èi urmaÈi {exit_number} ieÈire",name:"IntraÈi în {rotary_name} Èi urmaÈi {exit_number} ieÈire pe {way_name}",destination:"IntraÈi în {rotary_name} Èi urmaÈi {exit_number} ieÈire spre {destination}"}}},roundabout:{default:{exit:{default:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire",name:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire pe {way_name}",destination:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire spre {destination}"},default:{default:"IntraÈi în sensul giratoriu",name:"IntraÈi în sensul giratoriu Èi ieÈiÈi pe {way_name}",destination:"IntraÈi în sensul giratoriu Èi ieÈiÈi spre {destination}"}}},"roundabout turn":{default:{default:"La sensul giratoriu viraÈi {modifier}",name:"La sensul giratoriu viraÈi {modifier} pe {way_name}",destination:"La sensul giratoriu viraÈi {modifier} spre {destination}"},left:{default:"La sensul giratoriu viraÈi la stânga",name:"La sensul giratoriu viraÈi la stânga pe {way_name}",destination:"La sensul giratoriu viraÈi la stânga spre {destination}"},right:{default:"La sensul giratoriu viraÈi la dreapta",name:"La sensul giratoriu viraÈi la dreapta pe {way_name}",destination:"La sensul giratoriu viraÈi la dreapta spre {destination}"},straight:{default:"La sensul giratoriu continuaÈi înainte",name:"La sensul giratoriu continuaÈi înainte pe {way_name}",destination:"La sensul giratoriu continuaÈi înainte spre {destination}"}},"exit roundabout":{default:{default:"IeÈiÈi din sensul giratoriu",name:"IeÈiÈi din sensul giratoriu pe {way_name}",destination:"IeÈiÈi din sensul giratoriu spre {destination}"}},"exit rotary":{default:{default:"IeÈiÈi din sensul giratoriu",name:"IeÈiÈi din sensul giratoriu pe {way_name}",destination:"IeÈiÈi din sensul giratoriu spre {destination}"}},turn:{default:{default:"ViraÈi {modifier}",name:"ViraÈi {modifier} pe {way_name}",destination:"ViraÈi {modifier} spre {destination}"},left:{default:"ViraÈi la stânga",name:"ViraÈi la stânga pe {way_name}",destination:"ViraÈi la stânga spre {destination}"},right:{default:"ViraÈi la dreapta",name:"ViraÈi la dreapta pe {way_name}",destination:"ViraÈi la dreapta spre {destination}"},straight:{default:"MergeÈi înainte",name:"MergeÈi înainte pe {way_name}",destination:"MergeÈi înainte spre {destination}"}},"use lane":{no_lanes:{default:"MergeÈi înainte"},default:{default:"{lane_instruction}"}}}}},{}],42:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"пеÑвÑй",2:"вÑоÑой",3:"ÑÑеÑий",4:"ÑеÑвÑÑÑÑй",5:"пÑÑÑй",6:"ÑеÑÑой",7:"ÑедÑмой",8:"воÑÑмой",9:"девÑÑÑй",10:"деÑÑÑÑй"},direction:{north:"ÑевеÑном",northeast:"ÑевеÑо-воÑÑоÑном",east:"воÑÑоÑном",southeast:"Ñго-воÑÑоÑном",south:"Ñжном",southwest:"Ñго-западном",west:"западном",northwest:"ÑевеÑо-западном"},modifier:{left:"налево",right:"напÑаво","sharp left":"налево","sharp right":"напÑаво","slight left":"левее","slight right":"пÑавее",straight:"пÑÑмо",uturn:"на ÑазвоÑоÑ"},lanes:{xo:"ÐеÑжиÑеÑÑ Ð¿Ñавее",ox:"ÐеÑжиÑеÑÑ Ð»ÐµÐ²ÐµÐµ",xox:"ÐеÑжиÑеÑÑ Ð¿Ð¾ÑеÑедине",oxo:"ÐеÑжиÑеÑÑ Ñлева или ÑпÑава"}},modes:{ferry:{default:"ÐогÑÑзиÑеÑÑ Ð½Ð° паÑом",name:"ÐогÑÑзиÑеÑÑ Ð½Ð° паÑом {way_name}",destination:"ÐогÑÑзиÑеÑÑ Ð½Ð° паÑом в напÑавлении {destination}"}},phrase:{"two linked by distance":"{instruction_one}, заÑем ÑеÑез {distance} {instruction_two}","two linked":"{instruction_one}, заÑем {instruction_two}","one in distance":"ЧеÑез {distance} {instruction_one}","name and ref":"{name} ({ref})","exit with number":"ÑÑезд {exit}"},arrive:{default:{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}"},left:{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ Ñлева",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева"},right:{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ ÑпÑава",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава"},"sharp left":{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева Ñзади",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ Ñлева Ñзади",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева Ñзади"},"sharp right":{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава Ñзади",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ ÑпÑава Ñзади",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава Ñзади"},"slight right":{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава впеÑеди",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ ÑпÑава впеÑеди",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава впеÑеди"},"slight left":{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева впеÑеди",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ Ñлева впеÑеди",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева впеÑеди"},straight:{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¿ÐµÑед Ðами",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ Ð¿ÐµÑед Ðами",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¿ÐµÑед Ðами"}},continue:{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} по {way_name:dative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}",exit:"ÐвигайÑеÑÑ {modifier} на {way_name:accusative}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐÑодолжиÑе движение по {way_name:dative}",destination:"ÐÑодолжиÑе движение в напÑавлении {destination}",distance:"ÐвигайÑеÑÑ Ð¿ÑÑмо {distance}",namedistance:"ÐвигайÑеÑÑ Ð¿ÑÑмо {distance} по {way_name:dative}"},"sharp left":{default:"Резко повеÑниÑе налево",name:"Резко повеÑниÑе налево на {way_name:accusative}",destination:"Резко повеÑниÑе налево в напÑавлении {destination}"},"sharp right":{default:"Резко повеÑниÑе напÑаво",name:"Резко повеÑниÑе напÑаво на {way_name:accusative}",destination:"Резко повеÑниÑе напÑаво в напÑавлении {destination}"},"slight left":{default:"Ðлавно повеÑниÑе налево",name:"Ðлавно повеÑниÑе налево на {way_name:accusative}",destination:"Ðлавно повеÑниÑе налево в напÑавлении {destination}"},"slight right":{default:"Ðлавно повеÑниÑе напÑаво",name:"Ðлавно повеÑниÑе напÑаво на {way_name:accusative}",destination:"Ðлавно повеÑниÑе напÑаво в напÑавлении {destination}"},uturn:{default:"РазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð¸ пÑодолжиÑе движение по {way_name:dative}",destination:"РазвеÑниÑеÑÑ Ð² напÑавлении {destination}"}},depart:{default:{default:"ÐвигайÑеÑÑ Ð² {direction} напÑавлении",name:"ÐвигайÑеÑÑ Ð² {direction} напÑавлении по {way_name:dative}",namedistance:"ÐвигайÑеÑÑ {distance} в {direction} напÑавлении по {way_name:dative}"}},"end of road":{default:{default:"ÐовеÑниÑе {modifier}",name:"ÐовеÑниÑе {modifier} на {way_name:accusative}",destination:"ÐовеÑниÑе {modifier} в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐвигайÑеÑÑ Ð¿ÑÑмо по {way_name:dative}",destination:"ÐвигайÑеÑÑ Ð¿ÑÑмо в напÑавлении {destination}"},uturn:{default:"РконÑе доÑоги ÑазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð² конÑе {way_name:genitive}",destination:"РконÑе доÑоги ÑазвеÑниÑеÑÑ Ð² напÑавлении {destination}"}},fork:{default:{default:"Ðа Ñазвилке двигайÑеÑÑ {modifier}",name:"Ðа Ñазвилке двигайÑеÑÑ {modifier} на {way_name:accusative}",destination:"Ðа Ñазвилке двигайÑеÑÑ {modifier} в напÑавлении {destination}"},"slight left":{default:"Ðа Ñазвилке деÑжиÑеÑÑ Ð»ÐµÐ²ÐµÐµ",name:"Ðа Ñазвилке деÑжиÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {way_name:accusative}",destination:"Ðа Ñазвилке деÑжиÑеÑÑ Ð»ÐµÐ²ÐµÐµ и пÑодолжиÑе движение в напÑавлении {destination}"},"slight right":{default:"Ðа Ñазвилке деÑжиÑеÑÑ Ð¿Ñавее",name:"Ðа Ñазвилке деÑжиÑеÑÑ Ð¿Ñавее на {way_name:accusative}",destination:"Ðа Ñазвилке деÑжиÑеÑÑ Ð¿Ñавее и пÑодолжиÑе движение в напÑавлении {destination}"},"sharp left":{default:"Ðа Ñазвилке Ñезко повеÑниÑе налево",name:"Резко повеÑниÑе налево на {way_name:accusative}",destination:"Резко повеÑниÑе налево и пÑодолжиÑе движение в напÑавлении {destination}"},"sharp right":{default:"Ðа Ñазвилке Ñезко повеÑниÑе напÑаво",name:"Резко повеÑниÑе напÑаво на {way_name:accusative}",destination:"Резко повеÑниÑе напÑаво и пÑодолжиÑе движение в напÑавлении {destination}"},uturn:{default:"Ðа Ñазвилке ÑазвеÑниÑеÑÑ",name:"Ðа Ñазвилке ÑазвеÑниÑеÑÑ Ð½Ð° {way_name:prepositional}",destination:"Ðа Ñазвилке ÑазвеÑниÑеÑÑ Ð¸ пÑодолжиÑе движение в напÑавлении {destination}"}},merge:{default:{default:"ÐеÑеÑÑÑойÑеÑÑ {modifier}",name:"ÐеÑеÑÑÑойÑеÑÑ {modifier} на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ {modifier} в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐÑодолжиÑе движение по {way_name:dative}",destination:"ÐÑодолжиÑе движение в напÑавлении {destination}"},"slight left":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ",name:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ в напÑавлении {destination}"},"slight right":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее",name:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее в напÑавлении {destination}"},"sharp left":{default:"ÐеÑеÑÑÑаивайÑеÑÑ Ð»ÐµÐ²ÐµÐµ",name:"ÐеÑеÑÑÑаивайÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {way_name:accusative}",destination:"ÐеÑеÑÑÑаивайÑеÑÑ Ð»ÐµÐ²ÐµÐµ в напÑавлении {destination}"},"sharp right":{default:"ÐеÑеÑÑÑаивайÑеÑÑ Ð¿Ñавее",name:"ÐеÑеÑÑÑаивайÑеÑÑ Ð¿Ñавее на {way_name:accusative}",destination:"ÐеÑеÑÑÑаивайÑеÑÑ Ð¿Ñавее в напÑавлении {destination}"},uturn:{default:"РазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð½Ð° {way_name:prepositional}",destination:"РазвеÑниÑеÑÑ Ð² напÑавлении {destination}"}},"new name":{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} на {way_name:accusative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐÑодолжиÑе движение по {way_name:dative}",destination:"ÐÑодолжиÑе движение в напÑавлении {destination}"},"sharp left":{default:"Резко повеÑниÑе налево",name:"Резко повеÑниÑе налево на {way_name:accusative}",destination:"Резко повеÑниÑе налево и пÑодолжиÑе движение в напÑавлении {destination}"},"sharp right":{default:"Резко повеÑниÑе напÑаво",name:"Резко повеÑниÑе напÑаво на {way_name:accusative}",destination:"Резко повеÑниÑе напÑаво и пÑодолжиÑе движение в напÑавлении {destination}"},"slight left":{default:"Ðлавно повеÑниÑе налево",name:"Ðлавно повеÑниÑе налево на {way_name:accusative}",destination:"Ðлавно повеÑниÑе налево в напÑавлении {destination}"},"slight right":{default:"Ðлавно повеÑниÑе напÑаво",name:"Ðлавно повеÑниÑе напÑаво на {way_name:accusative}",destination:"Ðлавно повеÑниÑе напÑаво в напÑавлении {destination}"},uturn:{default:"РазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð½Ð° {way_name:prepositional}",destination:"РазвеÑниÑеÑÑ Ð¸ пÑодолжиÑе движение в напÑавлении {destination}"}},notification:{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} по {way_name:dative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}"},uturn:{default:"РазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð½Ð° {way_name:prepositional}",destination:"РазвеÑниÑеÑÑ Ð¸ пÑодолжиÑе движение в напÑавлении {destination}"}},"off ramp":{default:{default:"СвеÑниÑе на ÑÑезд",name:"СвеÑниÑе на ÑÑезд на {way_name:accusative}",destination:"СвеÑниÑе на ÑÑезд в напÑавлении {destination}",exit:"СвеÑниÑе на ÑÑезд {exit}",exit_destination:"СвеÑниÑе на ÑÑезд {exit} в напÑавлении {destination}"},left:{default:"СвеÑниÑе на левÑй ÑÑезд",name:"СвеÑниÑе на левÑй ÑÑезд на {way_name:accusative}",destination:"СвеÑниÑе на левÑй ÑÑезд в напÑавлении {destination}",exit:"СвеÑниÑе на ÑÑезд {exit} Ñлева",exit_destination:"СвеÑниÑе на ÑÑезд {exit} Ñлева в напÑавлении {destination}"},right:{default:"СвеÑниÑе на пÑавÑй ÑÑезд",name:"СвеÑниÑе на пÑавÑй ÑÑезд на {way_name:accusative}",destination:"СвеÑниÑе на пÑавÑй ÑÑезд в напÑавлении {destination}",exit:"СвеÑниÑе на ÑÑезд {exit} ÑпÑава",exit_destination:"СвеÑниÑе на ÑÑезд {exit} ÑпÑава в напÑавлении {destination}"},"sharp left":{default:"ÐовеÑниÑе налево на ÑÑезд",name:"ÐовеÑниÑе налево на ÑÑезд на {way_name:accusative}",destination:"ÐовеÑниÑе налево на ÑÑезд в напÑавлении {destination}",exit:"ÐовеÑниÑе налево на ÑÑезд {exit}",exit_destination:"ÐовеÑниÑе налево на ÑÑезд {exit} в напÑавлении {destination}"},"sharp right":{default:"ÐовеÑниÑе напÑаво на ÑÑезд",name:"ÐовеÑниÑе напÑаво на ÑÑезд на {way_name:accusative}",destination:"ÐовеÑниÑе напÑаво на ÑÑезд в напÑавлении {destination}",exit:"ÐовеÑниÑе напÑаво на ÑÑезд {exit}",exit_destination:"ÐовеÑниÑе напÑаво на ÑÑезд {exit} в напÑавлении {destination}"},"slight left":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на ÑÑезд",name:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на ÑÑезд на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на ÑÑезд в напÑавлении {destination}",exit:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {exit}",exit_destination:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на ÑÑезд {exit} в напÑавлении {destination}"},"slight right":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд",name:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд в напÑавлении {destination}",exit:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд {exit}",exit_destination:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд {exit} в напÑавлении {destination}"}},"on ramp":{default:{default:"СвеÑниÑе на авÑомагиÑÑÑалÑ",name:"СвеÑниÑе на вÑезд на {way_name:accusative}",destination:"СвеÑниÑе на вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},left:{default:"СвеÑниÑе на левÑй вÑезд на авÑомагиÑÑÑалÑ",name:"СвеÑниÑе на левÑй вÑезд на {way_name:accusative}",destination:"СвеÑниÑе на левÑй вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},right:{default:"СвеÑниÑе на пÑавÑй вÑезд на авÑомагиÑÑÑалÑ",name:"СвеÑниÑе на пÑавÑй вÑезд на {way_name:accusative}",destination:"СвеÑниÑе на пÑавÑй вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},"sharp left":{default:"ÐовеÑниÑе на левÑй вÑезд на авÑомагиÑÑÑалÑ",name:"ÐовеÑниÑе на левÑй вÑезд на {way_name:accusative}",destination:"ÐовеÑниÑе на левÑй вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},"sharp right":{default:"ÐовеÑниÑе на пÑавÑй вÑезд на авÑомагиÑÑÑалÑ",name:"ÐовеÑниÑе на пÑавÑй вÑезд на {way_name:accusative}",destination:"ÐовеÑниÑе на пÑавÑй вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},"slight left":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на вÑезд на авÑомагиÑÑÑалÑ",name:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},"slight right":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на вÑезд на авÑомагиÑÑÑалÑ",name:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"}},rotary:{default:{default:{default:"ÐÑодолжиÑе движение по кÑÑговой ÑазвÑзке",name:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {way_name:accusative}",destination:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе в напÑавлении {destination}"},name:{default:"ÐÑодолжиÑе движение по {rotary_name:dative}",name:"Ðа {rotary_name:prepositional} ÑвеÑниÑе на {way_name:accusative}",destination:"Ðа {rotary_name:prepositional} ÑвеÑниÑе в напÑавлении {destination}"},exit:{default:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд",name:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд на {way_name:accusative}",destination:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд в напÑавлении {destination}"},name_exit:{default:"Ðа {rotary_name:prepositional} ÑвеÑниÑе на {exit_number} ÑÑезд",name:"Ðа {rotary_name:prepositional} ÑвеÑниÑе на {exit_number} ÑÑезд на {way_name:accusative}",destination:"Ðа {rotary_name:prepositional} ÑвеÑниÑе на {exit_number} ÑÑезд в напÑавлении {destination}"}}},roundabout:{default:{exit:{default:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд",name:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд на {way_name:accusative}",destination:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд в напÑавлении {destination}"},default:{default:"ÐÑодолжиÑе движение по кÑÑговой ÑазвÑзке",name:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {way_name:accusative}",destination:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе в напÑавлении {destination}"}}},"roundabout turn":{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} на {way_name:accusative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}"},left:{default:"СвеÑниÑе налево",name:"СвеÑниÑе налево на {way_name:accusative}",destination:"СвеÑниÑе налево в напÑавлении {destination}"},right:{default:"СвеÑниÑе напÑаво",name:"СвеÑниÑе напÑаво на {way_name:accusative}",destination:"СвеÑниÑе напÑаво в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐвигайÑеÑÑ Ð¿ÑÑмо по {way_name:dative}",destination:"ÐвигайÑеÑÑ Ð¿ÑÑмо в напÑавлении {destination}"}},"exit roundabout":{default:{default:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки",name:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки на {way_name:accusative}",destination:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки в напÑавлении {destination}"}},"exit rotary":{default:{default:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки",name:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки на {way_name:accusative}",destination:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки в напÑавлении {destination}"}},turn:{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} на {way_name:accusative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}"},left:{default:"ÐовеÑниÑе налево",name:"ÐовеÑниÑе налево на {way_name:accusative}",destination:"ÐовеÑниÑе налево в напÑавлении {destination}"},right:{default:"ÐовеÑниÑе напÑаво",name:"ÐовеÑниÑе напÑаво на {way_name:accusative}",destination:"ÐовеÑниÑе напÑаво в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐвигайÑеÑÑ Ð¿Ð¾ {way_name:dative}",destination:"ÐвигайÑеÑÑ Ð² напÑавлении {destination}"}},"use lane":{no_lanes:{default:"ÐÑодолжайÑе движение пÑÑмо"},default:{default:"{lane_instruction}"}}}}},{}],43:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1:a",2:"2:a",3:"3:e",4:"4:e",5:"5:e",6:"6:e",7:"7:e",8:"8:e",9:"9:e",10:"10:e"},direction:{north:"norr",northeast:"nordost",east:"öster",southeast:"sydost",south:"söder",southwest:"sydväst",west:"väster",northwest:"nordväst"},modifier:{left:"vänster",right:"höger","sharp left":"vänster","sharp right":"höger","slight left":"vänster","slight right":"höger",straight:"rakt fram",uturn:"U-sväng"},lanes:{xo:"HÃ¥ll till höger",ox:"HÃ¥ll till vänster",xox:"HÃ¥ll till mitten",oxo:"HÃ¥ll till vänster eller höger"}},modes:{ferry:{default:"Ta färjan",name:"Ta färjan pÃ¥ {way_name}",destination:"Ta färjan mot {destination}"}},phrase:{"two linked by distance":"{instruction_one}, sedan efter {distance}, {instruction_two}","two linked":"{instruction_one}, sedan {instruction_two}","one in distance":"Om {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Du är framme vid din {nth} destination",upcoming:"Du är snart framme vid din {nth} destination",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}"},left:{default:"Du är framme vid din {nth} destination, till vänster",upcoming:"Du är snart framme vid din {nth} destination, till vänster",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till vänster"},right:{default:"Du är framme vid din {nth} destination, till höger",upcoming:"Du är snart framme vid din {nth} destination, till höger",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till höger"},"sharp left":{default:"Du är framme vid din {nth} destination, till vänster",upcoming:"Du är snart framme vid din {nth} destination, till vänster",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till vänster"},"sharp right":{default:"Du är framme vid din {nth} destination, till höger",upcoming:"Du är snart framme vid din {nth} destination, till höger",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till höger"},"slight right":{default:"Du är framme vid din {nth} destination, till höger",upcoming:"Du är snart framme vid din {nth} destination, till höger",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till höger"},"slight left":{default:"Du är framme vid din {nth} destination, till vänster",upcoming:"Du är snart framme vid din {nth} destination, till vänster",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till vänster"},straight:{default:"Du är framme vid din {nth} destination, rakt fram",upcoming:"Du är snart framme vid din {nth} destination, rakt fram",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, rakt fram"}},continue:{default:{default:"Sväng {modifier}",name:"Sväng {modifier} och fortsätt pÃ¥ {way_name}",destination:"Sväng {modifier} mot {destination}",exit:"Sväng {modifier} in pÃ¥ {way_name}"},straight:{default:"Fortsätt rakt fram",name:"Kör rakt fram och fortsätt pÃ¥ {way_name}",destination:"Fortsätt mot {destination}",distance:"Fortsätt rakt fram i {distance}",namedistance:"Fortsätt pÃ¥ {way_name} i {distance}"},"sharp left":{default:"Sväng vänster",name:"Sväng vänster och fortsätt pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},"sharp right":{default:"Sväng höger",name:"Sväng höger och fortsätt pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},"slight left":{default:"Sväng vänster",name:"Sväng vänster och fortsätt pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},"slight right":{default:"Sväng höger",name:"Sväng höger och fortsätt pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng och fortsätt pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},depart:{default:{default:"Kör Ã¥t {direction}",name:"Kör Ã¥t {direction} pÃ¥ {way_name}",namedistance:"Kör {distance} Ã¥t {direction} pÃ¥ {way_name}"}},"end of road":{default:{default:"Sväng {modifier}",name:"Sväng {modifier} in pÃ¥ {way_name}",destination:"Sväng {modifier} mot {destination}"},straight:{default:"Fortsätt rakt fram",name:"Fortsätt rakt fram in pÃ¥ {way_name}",destination:"Fortsätt rakt fram mot {destination}"},uturn:{default:"Gör en U-sväng i slutet av vägen",name:"Gör en U-sväng in pÃ¥ {way_name} i slutet av vägen",destination:"Gör en U-sväng mot {destination} i slutet av vägen"}},fork:{default:{default:"HÃ¥ll till {modifier} där vägen delar sig",name:"HÃ¥ll till {modifier} in pÃ¥ {way_name}",destination:"HÃ¥ll till {modifier} mot {destination}"},"slight left":{default:"HÃ¥ll till vänster där vägen delar sig",name:"HÃ¥ll till vänster in pÃ¥ {way_name}",destination:"HÃ¥ll till vänster mot {destination}"},"slight right":{default:"HÃ¥ll till höger där vägen delar sig",name:"HÃ¥ll till höger in pÃ¥ {way_name}",destination:"HÃ¥ll till höger mot {destination}"},"sharp left":{default:"Sväng vänster där vägen delar sig",name:"Sväng vänster in pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},"sharp right":{default:"Sväng höger där vägen delar sig",name:"Sväng höger in pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng in pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},merge:{default:{default:"Byt till {modifier} körfält",name:"Byt till {modifier} körfält, in pÃ¥ {way_name}",destination:"Byt till {modifier} körfält, mot {destination}"},straight:{default:"Fortsätt",name:"Kör in pÃ¥ {way_name}",destination:"Kör mot {destination}"},"slight left":{default:"Byt till vänstra körfältet",name:"Byt till vänstra körfältet, in pÃ¥ {way_name}",destination:"Byt till vänstra körfältet, mot {destination}"},"slight right":{default:"Byt till högra körfältet",name:"Byt till högra körfältet, in pÃ¥ {way_name}",destination:"Byt till högra körfältet, mot {destination}"},"sharp left":{default:"Byt till vänstra körfältet",name:"Byt till vänstra körfältet, in pÃ¥ {way_name}",destination:"Byt till vänstra körfältet, mot {destination}"},"sharp right":{default:"Byt till högra körfältet",name:"Byt till högra körfältet, in pÃ¥ {way_name}",destination:"Byt till högra körfältet, mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng in pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},"new name":{default:{default:"Fortsätt {modifier}",name:"Fortsätt {modifier} pÃ¥ {way_name}",destination:"Fortsätt {modifier} mot {destination}"},straight:{default:"Fortsätt rakt fram",name:"Fortsätt in pÃ¥ {way_name}",destination:"Fortsätt mot {destination}"},"sharp left":{default:"Gör en skarp vänstersväng",name:"Gör en skarp vänstersväng in pÃ¥ {way_name}",destination:"Gör en skarp vänstersväng mot {destination}"},"sharp right":{default:"Gör en skarp högersväng",name:"Gör en skarp högersväng in pÃ¥ {way_name}",destination:"Gör en skarp högersväng mot {destination}"},"slight left":{default:"Fortsätt med lätt vänstersväng",name:"Fortsätt med lätt vänstersväng in pÃ¥ {way_name}",destination:"Fortsätt med lätt vänstersväng mot {destination}"},"slight right":{default:"Fortsätt med lätt högersväng",name:"Fortsätt med lätt högersväng in pÃ¥ {way_name}",destination:"Fortsätt med lätt högersväng mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng in pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},notification:{default:{default:"Fortsätt {modifier}",name:"Fortsätt {modifier} pÃ¥ {way_name}",destination:"Fortsätt {modifier} mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng in pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},"off ramp":{default:{default:"Ta avfarten",name:"Ta avfarten in pÃ¥ {way_name}",destination:"Ta avfarten mot {destination}",exit:"Ta avfart {exit} ",exit_destination:"Ta avfart {exit} mot {destination}"},left:{default:"Ta avfarten till vänster",name:"Ta avfarten till vänster in pÃ¥ {way_name}",destination:"Ta avfarten till vänster mot {destination}",exit:"Ta avfart {exit} till vänster",exit_destination:"Ta avfart {exit} till vänster mot {destination}"},right:{default:"Ta avfarten till höger",name:"Ta avfarten till höger in pÃ¥ {way_name}",destination:"Ta avfarten till höger mot {destination}",exit:"Ta avfart {exit} till höger",exit_destination:"Ta avfart {exit} till höger mot {destination}"},"sharp left":{default:"Ta avfarten till vänster",name:"Ta avfarten till vänster in pÃ¥ {way_name}",destination:"Ta avfarten till vänster mot {destination}",exit:"Ta avfart {exit} till vänster",exit_destination:"Ta avfart {exit} till vänster mot {destination}"},"sharp right":{default:"Ta avfarten till höger",name:"Ta avfarten till höger in pÃ¥ {way_name}",destination:"Ta avfarten till höger mot {destination}",exit:"Ta avfart {exit} till höger",exit_destination:"Ta avfart {exit} till höger mot {destination}"},"slight left":{default:"Ta avfarten till vänster",name:"Ta avfarten till vänster in pÃ¥ {way_name}",destination:"Ta avfarten till vänster mot {destination}",exit:"Ta avfart {exit} till vänster",exit_destination:"Ta avfart{exit} till vänster mot {destination}"},"slight right":{default:"Ta avfarten till höger",name:"Ta avfarten till höger in pÃ¥ {way_name}",destination:"Ta avfarten till höger mot {destination}",exit:"Ta avfart {exit} till höger",exit_destination:"Ta avfart {exit} till höger mot {destination}"}},"on ramp":{default:{default:"Ta pÃ¥farten",name:"Ta pÃ¥farten in pÃ¥ {way_name}",destination:"Ta pÃ¥farten mot {destination}"},left:{default:"Ta pÃ¥farten till vänster",name:"Ta pÃ¥farten till vänster in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till vänster mot {destination}"},right:{default:"Ta pÃ¥farten till höger",name:"Ta pÃ¥farten till höger in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till höger mot {destination}"},"sharp left":{default:"Ta pÃ¥farten till vänster",name:"Ta pÃ¥farten till vänster in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till vänster mot {destination}"},"sharp right":{default:"Ta pÃ¥farten till höger",name:"Ta pÃ¥farten till höger in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till höger mot {destination}"},"slight left":{default:"Ta pÃ¥farten till vänster", 2511name:"Ta pÃ¥farten till vänster in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till vänster mot {destination}"},"slight right":{default:"Ta pÃ¥farten till höger",name:"Ta pÃ¥farten till höger in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till höger mot {destination}"}},rotary:{default:{default:{default:"Kör in i rondellen",name:"I rondellen, ta avfarten in pÃ¥ {way_name}",destination:"I rondellen, ta av mot {destination}"},name:{default:"Kör in i {rotary_name}",name:"I {rotary_name}, ta av in pÃ¥ {way_name}",destination:"I {rotary_name}, ta av mot {destination}"},exit:{default:"I rondellen, ta {exit_number} avfarten",name:"I rondellen, ta {exit_number} avfarten in pÃ¥ {way_name}",destination:"I rondellen, ta {exit_number} avfarten mot {destination}"},name_exit:{default:"I {rotary_name}, ta {exit_number} avfarten",name:"I {rotary_name}, ta {exit_number} avfarten in pÃ¥ {way_name}",destination:"I {rotary_name}, ta {exit_number} avfarten mot {destination}"}}},roundabout:{default:{exit:{default:"I rondellen, ta {exit_number} avfarten",name:"I rondellen, ta {exit_number} avfarten in pÃ¥ {way_name}",destination:"I rondellen, ta {exit_number} avfarten mot {destination}"},default:{default:"Kör in i rondellen",name:"I rondellen, ta avfarten in pÃ¥ {way_name}",destination:"I rondellen, ta av mot {destination}"}}},"roundabout turn":{default:{default:"Sväng {modifier}",name:"Sväng {modifier} in pÃ¥ {way_name}",destination:"Sväng {modifier} mot {destination}"},left:{default:"Sväng vänster",name:"Sväng vänster in pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},right:{default:"Sväng höger",name:"Sväng höger in pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},straight:{default:"Fortsätt rakt fram",name:"Fortsätt rakt fram in pÃ¥ {way_name}",destination:"Fortsätt rakt fram mot {destination}"}},"exit roundabout":{default:{default:"Kör ut ur rondellen",name:"Kör ut ur rondellen in pÃ¥ {way_name}",destination:"Kör ut ur rondellen mot {destination}"}},"exit rotary":{default:{default:"Kör ut ur rondellen",name:"Kör ut ur rondellen in pÃ¥ {way_name}",destination:"Kör ut ur rondellen mot {destination}"}},turn:{default:{default:"Sväng {modifier}",name:"Sväng {modifier} in pÃ¥ {way_name}",destination:"Sväng {modifier} mot {destination}"},left:{default:"Sväng vänster",name:"Sväng vänster in pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},right:{default:"Sväng höger",name:"Sväng höger in pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},straight:{default:"Kör rakt fram",name:"Kör rakt fram in pÃ¥ {way_name}",destination:"Kör rakt fram mot {destination}"}},"use lane":{no_lanes:{default:"Fortsätt rakt fram"},default:{default:"{lane_instruction}"}}}}},{}],44:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"birinci",2:"ikinci",3:"üçüncü",4:"dördüncü",5:"beÅinci",6:"altıncı",7:"yedinci",8:"sekizinci",9:"dokuzuncu",10:"onuncu"},direction:{north:"kuzey",northeast:"kuzeydoÄu",east:"doÄu",southeast:"güneydoÄu",south:"güney",southwest:"güneybatı",west:"batı",northwest:"kuzeybatı"},modifier:{left:"sol",right:"saÄ","sharp left":"keskin sol","sharp right":"keskin saÄ","slight left":"hafif sol","slight right":"hafif saÄ",straight:"düz",uturn:"U dönüÅü"},lanes:{xo:"SaÄda kalın",ox:"Solda kalın",xox:"Ortada kalın",oxo:"Solda veya saÄda kalın"}},modes:{ferry:{default:"Vapur kullan",name:"{way_name} vapurunu kullan",destination:"{destination} istikametine giden vapuru kullan"}},phrase:{"two linked by distance":"{instruction_one} ve {distance} sonra {instruction_two}","two linked":"{instruction_one} ve sonra {instruction_two}","one in distance":"{distance} sonra, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"{nth} hedefinize ulaÅtınız",upcoming:"{nth} hedefinize ulaÅtınız",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız"},left:{default:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz solunuzdadır"},right:{default:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz saÄınızdadır"},"sharp left":{default:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz solunuzdadır"},"sharp right":{default:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz saÄınızdadır"},"slight right":{default:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz saÄınızdadır"},"slight left":{default:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz solunuzdadır"},straight:{default:"{nth} hedefinize ulaÅtınız, hedefiniz karÅınızdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz karÅınızdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz karÅınızdadır"}},continue:{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde kalmak için {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön",exit:"{way_name} üzerinde {modifier} yöne dön"},straight:{default:"Düz devam edin",name:"{way_name} üzerinde kalmak için düz devam et",destination:"{destination} istikametinde devam et",distance:"{distance} boyunca düz devam et",namedistance:"{distance} boyunca {way_name} üzerinde devam et"},"sharp left":{default:"Sola keskin dönüŠyap",name:"{way_name} üzerinde kalmak için sola keskin dönüŠyap",destination:"{destination} istikametinde sola keskin dönüŠyap"},"sharp right":{default:"SaÄa keskin dönüŠyap",name:"{way_name} üzerinde kalmak için saÄa keskin dönüŠyap",destination:"{destination} istikametinde saÄa keskin dönüŠyap"},"slight left":{default:"Sola hafif dönüŠyap",name:"{way_name} üzerinde kalmak için sola hafif dönüŠyap",destination:"{destination} istikametinde sola hafif dönüŠyap"},"slight right":{default:"SaÄa hafif dönüŠyap",name:"{way_name} üzerinde kalmak için saÄa hafif dönüŠyap",destination:"{destination} istikametinde saÄa hafif dönüŠyap"},uturn:{default:"U dönüÅü yapın",name:"Bir U-dönüÅü yap ve {way_name} devam et",destination:"{destination} istikametinde bir U-dönüÅü yap"}},depart:{default:{default:"{direction} tarafına yönelin",name:"{way_name} üzerinde {direction} yöne git",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"{modifier} tarafa dönün",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},straight:{default:"Düz devam edin",name:"{way_name} üzerinde düz devam et",destination:"{destination} istikametinde düz devam et"},uturn:{default:"Yolun sonunda U dönüÅü yapın",name:"Yolun sonunda {way_name} üzerinde bir U-dönüÅü yap",destination:"Yolun sonunda {destination} istikametinde bir U-dönüÅü yap"}},fork:{default:{default:"Yol ayrımında {modifier} yönde kal",name:"{way_name} üzerindeki yol ayrımında {modifier} yönde kal",destination:"{destination} istikametindeki yol ayrımında {modifier} yönde kal"},"slight left":{default:"Ãatalın solundan devam edin",name:"Ãatalın solundan {way_name} yoluna doÄru ",destination:"{destination} istikametindeki yol ayrımında solda kal"},"slight right":{default:"Ãatalın saÄından devam edin",name:"{way_name} üzerindeki yol ayrımında saÄda kal",destination:"{destination} istikametindeki yol ayrımında saÄda kal"},"sharp left":{default:"Ãatalda keskin sola dönün",name:"{way_name} yoluna doÄru sola keskin dönüŠyapın",destination:"{destination} istikametinde sola keskin dönüŠyap"},"sharp right":{default:"Ãatalda keskin saÄa dönün",name:"{way_name} yoluna doÄru saÄa keskin dönüŠyapın",destination:"{destination} istikametinde saÄa keskin dönüŠyap"},uturn:{default:"U dönüÅü yapın",name:"{way_name} yoluna U dönüÅü yapın",destination:"{destination} istikametinde bir U-dönüÅü yap"}},merge:{default:{default:"{modifier} yöne gir",name:"{way_name} üzerinde {modifier} yöne gir",destination:"{destination} istikametinde {modifier} yöne gir"},straight:{default:"düz yöne gir",name:"{way_name} üzerinde düz yöne gir",destination:"{destination} istikametinde düz yöne gir"},"slight left":{default:"Sola gir",name:"{way_name} üzerinde sola gir",destination:"{destination} istikametinde sola gir"},"slight right":{default:"SaÄa gir",name:"{way_name} üzerinde saÄa gir",destination:"{destination} istikametinde saÄa gir"},"sharp left":{default:"Sola gir",name:"{way_name} üzerinde sola gir",destination:"{destination} istikametinde sola gir"},"sharp right":{default:"SaÄa gir",name:"{way_name} üzerinde saÄa gir",destination:"{destination} istikametinde saÄa gir"},uturn:{default:"U dönüÅü yapın",name:"{way_name} yoluna U dönüÅü yapın",destination:"{destination} istikametinde bir U-dönüÅü yap"}},"new name":{default:{default:"{modifier} yönde devam et",name:"{way_name} üzerinde {modifier} yönde devam et",destination:"{destination} istikametinde {modifier} yönde devam et"},straight:{default:"Düz devam et",name:"{way_name} üzerinde devam et",destination:"{destination} istikametinde devam et"},"sharp left":{default:"Sola keskin dönüŠyapın",name:"{way_name} yoluna doÄru sola keskin dönüŠyapın",destination:"{destination} istikametinde sola keskin dönüŠyap"},"sharp right":{default:"SaÄa keskin dönüŠyapın",name:"{way_name} yoluna doÄru saÄa keskin dönüŠyapın",destination:"{destination} istikametinde saÄa keskin dönüŠyap"},"slight left":{default:"Hafif soldan devam edin",name:"{way_name} üzerinde hafif solda devam et",destination:"{destination} istikametinde hafif solda devam et"},"slight right":{default:"Hafif saÄdan devam edin",name:"{way_name} üzerinde hafif saÄda devam et",destination:"{destination} istikametinde hafif saÄda devam et"},uturn:{default:"U dönüÅü yapın",name:"{way_name} yoluna U dönüÅü yapın",destination:"{destination} istikametinde bir U-dönüÅü yap"}},notification:{default:{default:"{modifier} yönde devam et",name:"{way_name} üzerinde {modifier} yönde devam et",destination:"{destination} istikametinde {modifier} yönde devam et"},uturn:{default:"U dönüÅü yapın",name:"{way_name} yoluna U dönüÅü yapın",destination:"{destination} istikametinde bir U-dönüÅü yap"}},"off ramp":{default:{default:"BaÄlantı yoluna geç",name:"{way_name} üzerindeki baÄlantı yoluna geç",destination:"{destination} istikametine giden baÄlantı yoluna geç",exit:"{exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} çıkıŠyoluna geç"},left:{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç",exit:"Soldaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} sol çıkıŠyoluna geç"},right:{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç",exit:"SaÄdaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} saÄ Ã§Ä±kıŠyoluna geç"},"sharp left":{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç",exit:"Soldaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} sol çıkıŠyoluna geç"},"sharp right":{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç",exit:"SaÄdaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} saÄ Ã§Ä±kıŠyoluna geç"},"slight left":{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç",exit:"Soldaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} sol çıkıŠyoluna geç"},"slight right":{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç",exit:"SaÄdaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} saÄ Ã§Ä±kıŠyoluna geç"}},"on ramp":{default:{default:"BaÄlantı yoluna geç",name:"{way_name} üzerindeki baÄlantı yoluna geç",destination:"{destination} istikametine giden baÄlantı yoluna geç"},left:{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç"},right:{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç"},"sharp left":{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç"},"sharp right":{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç"},"slight left":{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç"},"slight right":{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç"}},rotary:{default:{default:{default:"Dönel kavÅaÄa gir",name:"Dönel kavÅaÄa gir ve {way_name} üzerinde çık",destination:"Dönel kavÅaÄa gir ve {destination} istikametinde çık"},name:{default:"{rotary_name} dönel kavÅaÄa gir",name:"{rotary_name} dönel kavÅaÄa gir ve {way_name} üzerinde çık",destination:"{rotary_name} dönel kavÅaÄa gir ve {destination} istikametinde çık"},exit:{default:"Dönel kavÅaÄa gir ve {exit_number} numaralı çıkıÅa gir",name:"Dönel kavÅaÄa gir ve {way_name} üzerindeki {exit_number} numaralı çıkıÅa gir",destination:"Dönel kavÅaÄa gir ve {destination} istikametindeki {exit_number} numaralı çıkıÅa gir"},name_exit:{default:"{rotary_name} dönel kavÅaÄa gir ve {exit_number} numaralı çıkıÅa gir",name:"{rotary_name} dönel kavÅaÄa gir ve {way_name} üzerindeki {exit_number} numaralı çıkıÅa gir",destination:"{rotary_name} dönel kavÅaÄa gir ve {destination} istikametindeki {exit_number} numaralı çıkıÅa gir"}}},roundabout:{default:{exit:{default:"Göbekli kavÅaÄa gir ve {exit_number} numaralı çıkıÅa gir",name:"Göbekli kavÅaÄa gir ve {way_name} üzerindeki {exit_number} numaralı çıkıÅa gir",destination:"Göbekli kavÅaÄa gir ve {destination} istikametindeki {exit_number} numaralı çıkıÅa gir"},default:{default:"Göbekli kavÅaÄa gir",name:"Göbekli kavÅaÄa gir ve {way_name} üzerinde çık",destination:"Göbekli kavÅaÄa gir ve {destination} istikametinde çık"}}},"roundabout turn":{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},left:{default:"Sola dön",name:"{way_name} üzerinde sola dön",destination:"{destination} istikametinde sola dön"},right:{default:"SaÄa dön",name:"{way_name} üzerinde saÄa dön",destination:"{destination} istikametinde saÄa dön"},straight:{default:"Düz devam et",name:"{way_name} üzerinde düz devam et",destination:"{destination} istikametinde düz devam et"}},"exit roundabout":{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},left:{default:"Sola dön",name:"{way_name} üzerinde sola dön",destination:"{destination} istikametinde sola dön"},right:{default:"SaÄa dön",name:"{way_name} üzerinde saÄa dön",destination:"{destination} istikametinde saÄa dön"},straight:{default:"Düz devam et",name:"{way_name} üzerinde düz devam et",destination:"{destination} istikametinde düz devam et"}},"exit rotary":{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},left:{default:"Sola dön",name:"{way_name} üzerinde sola dön",destination:"{destination} istikametinde sola dön"},right:{default:"SaÄa dön",name:"{way_name} üzerinde saÄa dön",destination:"{destination} istikametinde saÄa dön"},straight:{default:"Düz devam et",name:"{way_name} üzerinde düz devam et",destination:"{destination} istikametinde düz devam et"}},turn:{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},left:{default:"Sola dönün",name:"{way_name} üzerinde sola dön",destination:"{destination} istikametinde sola dön"},right:{default:"SaÄa dönün",name:"{way_name} üzerinde saÄa dön",destination:"{destination} istikametinde saÄa dön"},straight:{default:"Düz git",name:"{way_name} üzerinde düz git",destination:"{destination} istikametinde düz git"}},"use lane":{no_lanes:{default:"Düz devam edin"},default:{default:"{lane_instruction}"}}}}},{}],45:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1й",2:"2й",3:"3й",4:"4й",5:"5й",6:"6й",7:"7й",8:"8й",9:"9й",10:"10й"},direction:{north:"пÑвнÑÑ",northeast:"пÑвнÑÑний ÑÑ Ñд",east:"ÑÑ Ñд",southeast:"пÑвденний ÑÑ Ñд",south:"пÑвденÑ",southwest:"пÑвденний Ð·Ð°Ñ Ñд",west:"Ð·Ð°Ñ Ñд",northwest:"пÑвнÑÑний Ð·Ð°Ñ Ñд"},modifier:{left:"лÑвоÑÑÑ",right:"пÑавоÑÑÑ","sharp left":"ÑÑзко лÑвоÑÑÑ","sharp right":"ÑÑзко пÑавоÑÑÑ","slight left":"плавно лÑвоÑÑÑ","slight right":"плавно пÑавоÑÑÑ",straight:"пÑÑмо",uturn:"ÑозвоÑоÑ"},lanes:{xo:"ТÑимайÑеÑÑ Ð¿ÑавоÑÑÑ",ox:"ТÑимайÑеÑÑ Ð»ÑвоÑÑÑ",xox:"ТÑимайÑеÑÑ Ð² ÑеÑединÑ",oxo:"ТÑимайÑеÑÑ Ð¿ÑавоÑÑÑ Ð°Ð±Ð¾ лÑвоÑÑÑ"}},modes:{ferry:{default:"СкоÑиÑÑайÑеÑÑ Ð¿Ð¾Ñомом",name:"СкоÑиÑÑайÑеÑÑ Ð¿Ð¾Ñомом {way_name}",destination:"СкоÑиÑÑайÑеÑÑ Ð¿Ð¾Ñомом Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},phrase:{"two linked by distance":"{instruction_one}, поÑÑм, ÑеÑез {distance}, {instruction_two}","two linked":"{instruction_one}, поÑÑм {instruction_two}","one in distance":"ЧеÑез {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"з'Ñзд {exit}"},arrive:{default:{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name}"},left:{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â лÑвоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, лÑвоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} лÑвоÑÑÑ"},right:{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â пÑавоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, пÑавоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} пÑавоÑÑÑ"},"sharp left":{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â лÑвоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, лÑвоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} лÑвоÑÑÑ"},"sharp right":{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â пÑавоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, пÑавоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} пÑавоÑÑÑ"},"slight right":{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â пÑавоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, пÑавоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} пÑавоÑÑÑ"},"slight left":{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â лÑвоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, лÑвоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} лÑвоÑÑÑ"},straight:{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â пÑÑмо пеÑед вами",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, пÑÑмо пеÑед вами",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} пÑÑмо пеÑед вами"}},continue:{default:{default:"ÐовеÑнÑÑÑ {modifier}",name:"ÐовеÑнÑÑÑ{modifier} залиÑаÑÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐовеÑнÑÑÑ {modifier} на {way_name}"},straight:{default:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо",name:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо залиÑаÑÑиÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",distance:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо {distance}",namedistance:"ÐÑодовжÑйÑе ÑÑÑ Ð¿Ð¾ {way_name} {distance}"},"sharp left":{default:"ÐовеÑнÑÑÑ ÑÑзко лÑвоÑÑÑ",name:"ÐовеÑнÑÑÑ ÑÑзко лÑвоÑÑÑ Ñоб залиÑиÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ ÑÑзко лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"ÐовеÑнÑÑÑ ÑÑзко пÑавоÑÑÑ",name:"ÐовеÑнÑÑÑ ÑÑзко пÑавоÑÑÑ Ñоб залиÑиÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ ÑÑзко пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"ÐовеÑнÑÑÑ ÑÑзко лÑвоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ Ñоб залиÑиÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ Ñоб залиÑиÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñа ÑÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},depart:{default:{default:"ÐÑÑмÑйÑе на {direction}",name:"ÐÑÑмÑйÑе на {direction} по {way_name}",namedistance:"ÐÑÑмÑйÑе на {direction} по {way_name} {distance}"}},"end of road":{default:{default:"ÐовеÑнÑÑÑ {modifier}",name:"ÐовеÑнÑÑÑ {modifier} на {way_name}",destination:"ÐовеÑнÑÑÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо",name:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо до {way_name}",destination:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð² кÑнÑÑ Ð´Ð¾Ñоги",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name} в кÑнÑÑ Ð´Ð¾Ñоги",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination} в кÑнÑÑ Ð´Ð¾Ñоги"}},fork:{default:{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑимайÑеÑÑ {modifier}",name:"ТÑимайÑеÑÑ {modifier} Ñ ÑÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° {way_name}",destination:"ТÑимайÑеÑÑ {modifier} в напÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑимайÑеÑÑ Ð»ÑвоÑÑÑ",name:"ТÑимайÑеÑÑ Ð»ÑвоÑÑÑ Ñ ÑÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° {way_name}",destination:"ТÑимайÑеÑÑ Ð»ÑвоÑÑÑ Ð² напÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑимайÑеÑÑ Ð¿ÑавоÑÑÑ",name:"ТÑимайÑеÑÑ Ð¿ÑавоÑÑÑ Ñ ÑÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° {way_name}",destination:"ТÑимайÑеÑÑ Ð¿ÑавоÑÑÑ Ð² напÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑзко повеÑнÑÑÑ Ð»ÑвоÑÑÑ",name:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑзко повеÑнÑÑÑ Ð¿ÑавоÑÑÑ",name:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},merge:{default:{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ {modifier}",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ {modifier} на {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑокÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"new name":{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ",name:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ",name:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},notification:{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"off ramp":{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit}",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},left:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},right:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"on ramp":{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},left:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},right:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},rotary:{default:{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ колÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ð´Ð¾ {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ð² напÑÑÐ¼ÐºÑ {destination}"},name:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ð² напÑÑÐ¼ÐºÑ {destination}"},exit:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑенÑÑÑ Ñ {exit_number} з'Ñзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},name_exit:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд в напÑÑÐ¼ÐºÑ {destination}"}}},roundabout:{default:{exit:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑенÑÑÑ Ñ {exit_number} з'Ñзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ колÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ð´Ð¾ {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ð² напÑÑÐ¼ÐºÑ {destination}"}}},"roundabout turn":{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} в напÑÑÐ¼ÐºÑ {destination}"},left:{default:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},right:{default:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо",name:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо до {way_name}",destination:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"exit roundabout":{default:{default:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾",name:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾ на {way_name} зʼÑздÑ",destination:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾ в напÑÑÐ¼ÐºÑ {destination}"}},"exit rotary":{default:{default:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾",name:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾ на {way_name} зʼÑздÑ",destination:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾ в напÑÑÐ¼ÐºÑ {destination}"}},turn:{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} в напÑÑÐ¼ÐºÑ {destination}"},left:{default:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},right:{default:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ", 2512name:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо по {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"use lane":{no_lanes:{default:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо"},default:{default:"{lane_instruction}"}}}}},{}],46:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"Äầu tiên",2:"thứ 2",3:"thứ 3",4:"thứ 4",5:"thứ 5",6:"thú 6",7:"thứ 7",8:"thứ 8",9:"thứ 9",10:"thứ 10"},direction:{north:"bắc",northeast:"Äông bắc",east:"Äông",southeast:"Äông nam",south:"nam",southwest:"tây nam",west:"tây",northwest:"tây bắc"},modifier:{left:"trái",right:"phải","sharp left":"trái gắt","sharp right":"phải gắt","slight left":"trái nghiêng","slight right":"phải nghiêng",straight:"thẳng",uturn:"ngược"},lanes:{xo:"Äi bên phải",ox:"Äi bên trái",xox:"Äi và o giữa",oxo:"Äi bên trái hay bên phải"}},modes:{ferry:{default:"Lên phà ",name:"Lên phà {way_name}",destination:"Lên phà Äi {destination}"}},phrase:{"two linked by distance":"{instruction_one}, rá»i {distance} nữa thì {instruction_two}","two linked":"{instruction_one}, rá»i {instruction_two}","one in distance":"{distance} nữa thì {instruction_one}","name and ref":"{name} ({ref})","exit with number":"lá»i ra {exit}"},arrive:{default:{default:"Äến nÆ¡i {nth}",upcoming:"Äến nÆ¡i {nth}",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name}"},left:{default:"Äến nÆ¡i {nth} á» bên trái",upcoming:"Äến nÆ¡i {nth} á» bên trái",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên trái"},right:{default:"Äến nÆ¡i {nth} á» bên phải",upcoming:"Äến nÆ¡i {nth} á» bên phải",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên phải"},"sharp left":{default:"Äến nÆ¡i {nth} á» bên trái",upcoming:"Äến nÆ¡i {nth} á» bên trái",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên trái"},"sharp right":{default:"Äến nÆ¡i {nth} á» bên phải",upcoming:"Äến nÆ¡i {nth} á» bên phải",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên phải"},"slight right":{default:"Äến nÆ¡i {nth} á» bên phải",upcoming:"Äến nÆ¡i {nth} á» bên phải",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên phải"},"slight left":{default:"Äến nÆ¡i {nth} á» bên trái",upcoming:"Äến nÆ¡i {nth} á» bên trái",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên trái"},straight:{default:"Äến nÆ¡i {nth} á» trưá»c mặt",upcoming:"Äến nÆ¡i {nth} á» trưá»c mặt",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» trưá»c mặt"}},continue:{default:{default:"Quẹo {modifier}",name:"Quẹo {modifier} Äá» chạy tiếp trên {way_name}",destination:"Quẹo {modifier} vá» {destination}",exit:"Quẹo {modifier} và o {way_name}"},straight:{default:"Chạy thẳng",name:"Chạy tiếp trên {way_name}",destination:"Chạy tiếp vá» {destination}",distance:"Chạy thẳng cho {distance}",namedistance:"Chạy tiếp trên {way_name} cho {distance}"},"sharp left":{default:"Quẹo gắt bên trái",name:"Quẹo gắt bên trái Äá» chạy tiếp trên {way_name}",destination:"Quẹo gắt bên trái vá» {destination}"},"sharp right":{default:"Quẹo gắt bên phải",name:"Quẹo gắt bên phải Äá» chạy tiếp trên {way_name}",destination:"Quẹo gắt bên phải vá» {destination}"},"slight left":{default:"Nghiêng vá» bên trái",name:"Nghiêng vá» bên trái Äá» chạy tiếp trên {way_name}",destination:"Nghiêng vá» bên trái vá» {destination}"},"slight right":{default:"Nghiêng vá» bên phải",name:"Nghiêng vá» bên phải Äá» chạy tiếp trên {way_name}",destination:"Nghiêng vá» bên phải vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại trên {way_name}",destination:"Quẹo ngược vá» {destination}"}},depart:{default:{default:"Äi vá» hưá»ng {direction}",name:"Äi vá» hưá»ng {direction} trên {way_name}",namedistance:"Äi vá» hưá»ng {direction} trên {way_name} cho {distance}"}},"end of road":{default:{default:"Quẹo {modifier}",name:"Quẹo {modifier} và o {way_name}",destination:"Quẹo {modifier} vá» {destination}"},straight:{default:"Chạy thẳng",name:"Chạy tiếp trên {way_name}",destination:"Chạy tiếp vá» {destination}"},uturn:{default:"Quẹo ngược lại tại cuá»i ÄÆ°á»ng",name:"Quẹo ngược và o {way_name} tại cuá»i ÄÆ°á»ng",destination:"Quẹo ngược vá» {destination} tại cuá»i ÄÆ°á»ng"}},fork:{default:{default:"Äi bên {modifier} á» ngã ba",name:"Giữ bên {modifier} và o {way_name}",destination:"Giữ bên {modifier} vá» {destination}"},"slight left":{default:"Nghiêng vá» bên trái á» ngã ba",name:"Giữ bên trái và o {way_name}",destination:"Giữ bên trái vá» {destination}"},"slight right":{default:"Nghiêng vá» bên phải á» ngã ba",name:"Giữ bên phải và o {way_name}",destination:"Giữ bên phải vá» {destination}"},"sharp left":{default:"Quẹo gắt bên trái á» ngã ba",name:"Quẹo gắt bên trái và o {way_name}",destination:"Quẹo gắt bên trái vá» {destination}"},"sharp right":{default:"Quẹo gắt bên phải á» ngã ba",name:"Quẹo gắt bên phải và o {way_name}",destination:"Quẹo gắt bên phải vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại {way_name}",destination:"Quẹo ngược lại vá» {destination}"}},merge:{default:{default:"Nháºp sang {modifier}",name:"Nháºp sang {modifier} và o {way_name}",destination:"Nháºp sang {modifier} vá» {destination}"},straight:{default:"Nháºp ÄÆ°á»ng",name:"Nháºp và o {way_name}",destination:"Nháºp ÄÆ°á»ng vá» {destination}"},"slight left":{default:"Nháºp sang trái",name:"Nháºp sang trái và o {way_name}",destination:"Nháºp sang trái vá» {destination}"},"slight right":{default:"Nháºp sang phải",name:"Nháºp sang phải và o {way_name}",destination:"Nháºp sang phải vá» {destination}"},"sharp left":{default:"Nháºp sang trái",name:"Nháºp sang trái và o {way_name}",destination:"Nháºp sang trái vá» {destination}"},"sharp right":{default:"Nháºp sang phải",name:"Nháºp sang phải và o {way_name}",destination:"Nháºp sang phải vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại {way_name}",destination:"Quẹo ngược lại vá» {destination}"}},"new name":{default:{default:"Chạy tiếp bên {modifier}",name:"Chạy tiếp bên {modifier} trên {way_name}",destination:"Chạy tiếp bên {modifier} vá» {destination}"},straight:{default:"Chạy thẳng",name:"Chạy tiếp trên {way_name}",destination:"Chạy tiếp vá» {destination}"},"sharp left":{default:"Quẹo gắt bên trái",name:"Quẹo gắt bên trái và o {way_name}",destination:"Quẹo gắt bên trái vá» {destination}"},"sharp right":{default:"Quẹo gắt bên phải",name:"Quẹo gắt bên phải và o {way_name}",destination:"Quẹo gắt bên phải vá» {destination}"},"slight left":{default:"Nghiêng vá» bên trái",name:"Nghiêng vá» bên trái và o {way_name}",destination:"Nghiêng vá» bên trái vá» {destination}"},"slight right":{default:"Nghiêng vá» bên phải",name:"Nghiêng vá» bên phải và o {way_name}",destination:"Nghiêng vá» bên phải vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại {way_name}",destination:"Quẹo ngược lại vá» {destination}"}},notification:{default:{default:"Chạy tiếp bên {modifier}",name:"Chạy tiếp bên {modifier} trên {way_name}",destination:"Chạy tiếp bên {modifier} vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại {way_name}",destination:"Quẹo ngược lại vá» {destination}"}},"off ramp":{default:{default:"Äi ÄÆ°á»ng nhánh",name:"Äi ÄÆ°á»ng nhánh {way_name}",destination:"Äi ÄÆ°á»ng nhánh vá» {destination}",exit:"Äi theo lá»i ra {exit}",exit_destination:"Äi theo lá»i ra {exit} vá» {destination}"},left:{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}",exit:"Äi theo lá»i ra {exit} bên trái",exit_destination:"Äi theo lá»i ra {exit} bên trái vá» {destination}"},right:{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}",exit:"Äi theo lá»i ra {exit} bên phải",exit_destination:"Äi theo lá»i ra {exit} bên phải vá» {destination}"},"sharp left":{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}",exit:"Äi theo lá»i ra {exit} bên trái",exit_destination:"Äi theo lá»i ra {exit} bên trái vá» {destination}"},"sharp right":{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}",exit:"Äi theo lá»i ra {exit} bên phải",exit_destination:"Äi theo lá»i ra {exit} bên phải vá» {destination}"},"slight left":{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}",exit:"Äi theo lá»i ra {exit} bên trái",exit_destination:"Äi theo lá»i ra {exit} bên trái vá» {destination}"},"slight right":{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}",exit:"Äi theo lá»i ra {exit} bên phải",exit_destination:"Äi theo lá»i ra {exit} bên phải vá» {destination}"}},"on ramp":{default:{default:"Äi ÄÆ°á»ng nhánh",name:"Äi ÄÆ°á»ng nhánh {way_name}",destination:"Äi ÄÆ°á»ng nhánh vá» {destination}"},left:{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}"},right:{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}"},"sharp left":{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}"},"sharp right":{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}"},"slight left":{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}"},"slight right":{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}"}},rotary:{default:{default:{default:"Äi và o bùng binh",name:"Äi và o bùng binh và ra tại {way_name}",destination:"Äi và o bùng binh và ra vá» {destination}"},name:{default:"Äi và o {rotary_name}",name:"Äi và o {rotary_name} và ra tại {way_name}",destination:"Äi và {rotary_name} và ra vá» {destination}"},exit:{default:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number}",name:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number} tức {way_name}",destination:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number} vá» {destination}"},name_exit:{default:"Äi và o {rotary_name} và ra tại ÄÆ°á»ng {exit_number}",name:"Äi và o {rotary_name} và ra tại ÄÆ°á»ng {exit_number} tức {way_name}",destination:"Äi và o {rotary_name} và ra tại ÄÆ°á»ng {exit_number} vá» {destination}"}}},roundabout:{default:{exit:{default:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number}",name:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number} tức {way_name}",destination:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number} vá» {destination}"},default:{default:"Äi và o bùng binh",name:"Äi và o bùng binh và ra tại {way_name}",destination:"Äi và o bùng binh và ra vá» {destination}"}}},"roundabout turn":{default:{default:"Quẹo {modifier}",name:"Quẹo {modifier} và o {way_name}",destination:"Quẹo {modifier} vá» {destination}"},left:{default:"Quẹo trái",name:"Quẹo trái và o {way_name}",destination:"Quẹo trái vá» {destination}"},right:{default:"Quẹo phải",name:"Quẹo phải và o {way_name}",destination:"Quẹo phải vá» {destination}"},straight:{default:"Chạy thẳng",name:"Chạy tiếp trên {way_name}",destination:"Chạy tiếp vá» {destination}"}},"exit roundabout":{default:{default:"Ra bùng binh",name:"Ra bùng binh và o {way_name}",destination:"Ra bùng binh vá» {destination}"}},"exit rotary":{default:{default:"Ra bùng binh",name:"Ra bùng binh và o {way_name}",destination:"Ra bùng binh vá» {destination}"}},turn:{default:{default:"Quẹo {modifier}",name:"Quẹo {modifier} và o {way_name}",destination:"Quẹo {modifier} vá» {destination}"},left:{default:"Quẹo trái",name:"Quẹo trái và o {way_name}",destination:"Quẹo trái vá» {destination}"},right:{default:"Quẹo phải",name:"Quẹo phải và o {way_name}",destination:"Quẹo phải vá» {destination}"},straight:{default:"Chạy thẳng",name:"Chạy thẳng và o {way_name}",destination:"Chạy thẳng vá» {destination}"}},"use lane":{no_lanes:{default:"Chạy thẳng"},default:{default:"{lane_instruction}"}}}}},{}],47:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:false},v5:{constants:{ordinalize:{1:"第ä¸",2:"第äº",3:"第ä¸",4:"第å",5:"第äº",6:"第å ",7:"第ä¸",8:"ç¬¬å «",9:"第ä¹",10:"第å"},direction:{north:"å",northeast:"ä¸å",east:"ä¸",southeast:"ä¸å",south:"å",southwest:"西å",west:"西",northwest:"西å"},modifier:{left:"åå·¦",right:"åå³","sharp left":"æ¥åå·¦","sharp right":"æ¥åå³","slight left":"ç¨åå·¦","slight right":"ç¨åå³",straight:"ç´è¡",uturn:"è°å¤´"},lanes:{xo:"é å³è¡é©¶",ox:"é å·¦è¡é©¶",xox:"ä¿æå¨éè·¯ä¸é´è¡é©¶",oxo:"ä¿æå¨é路左侧æå³ä¾§è¡é©¶"}},modes:{ferry:{default:"ä¹å轮渡",name:"ä¹å{way_name}轮渡",destination:"ä¹åå¼å¾{destination}ç轮渡"}},phrase:{"two linked by distance":"{instruction_one}ï¼{distance}å{instruction_two}","two linked":"{instruction_one}ï¼éå{instruction_two}","one in distance":"{distance}å{instruction_one}","name and ref":"{name}ï¼{ref}ï¼","exit with number":"åºå£{exit}"},arrive:{default:{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}"},left:{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å·¦è¾¹ã"},right:{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å³è¾¹ã"},"sharp left":{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å·¦è¾¹ã"},"sharp right":{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å³è¾¹ã"},"slight right":{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å³è¾¹ã"},"slight left":{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å·¦è¾¹ã"},straight:{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨æ¨æ£åæ¹",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨æ¨æ£åæ¹",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨åæ¹ã"}},continue:{default:{default:"{modifier}è¡é©¶",name:"å¨{way_name}ä¸ç»§ç»{modifier}è¡é©¶",destination:"{modifier}è¡é©¶ï¼{destination}æ¹å",exit:"{modifier}è¡é©¶ï¼é©¶å ¥{way_name}"},straight:{default:"ç»§ç»ç´è¡",name:"å¨{way_name}ä¸ç»§ç»ç´è¡",destination:"ç»§ç»ç´è¡ï¼åå¾{destination}",distance:"ç»§ç»ç´è¡{distance}",namedistance:"ç»§ç»å¨{way_name}ä¸ç´è¡{distance}"},"sharp left":{default:"忹左æ¥è½¬å¼¯",name:"忹左æ¥è½¬å¼¯ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"å·¦æ¥è½¬å¼¯ï¼åå¾{destination}"},"sharp right":{default:"忹峿¥è½¬å¼¯",name:"忹峿¥è½¬å¼¯ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"峿¥è½¬å¼¯ï¼åå¾{destination}"},"slight left":{default:"åæ¹ç¨å左转",name:"åæ¹ç¨å左转ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"ç¨å左转ï¼åå¾{destination}"},"slight right":{default:"åæ¹ç¨åå³è½¬",name:"åæ¹ç¨åå³è½¬ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"åæ¹ç¨åå³è½¬ï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},depart:{default:{default:"åºåå{direction}",name:"åºåå{direction}ï¼é©¶å ¥{way_name}",namedistance:"åºåå{direction}ï¼å¨{way_name}ä¸ç»§ç»è¡é©¶{distance}"}},"end of road":{default:{default:"{modifier}è¡é©¶",name:"{modifier}è¡é©¶ï¼é©¶å ¥{way_name}",destination:"{modifier}è¡é©¶ï¼åå¾{destination}"},straight:{default:"ç»§ç»ç´è¡",name:"ç»§ç»ç´è¡ï¼é©¶å ¥{way_name}",destination:"ç»§ç»ç´è¡ï¼åå¾{destination}"},uturn:{default:"å¨é路尽头è°å¤´",name:"å¨é路尽头è°å¤´é©¶å ¥{way_name}",destination:"å¨é路尽头è°å¤´ï¼åå¾{destination}"}},fork:{default:{default:"å¨å²éä¿æ{modifier}",name:"å¨å²éå£ä¿æ{modifier}ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£ä¿æ{modifier}ï¼åå¾{destination}"},"slight left":{default:"å¨å²éå£ä¿æå·¦ä¾§è¡é©¶",name:"å¨å²éå£ä¿æå·¦ä¾§è¡é©¶ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£ä¿æå·¦ä¾§è¡é©¶ï¼åå¾{destination}"},"slight right":{default:"å¨å²éå£ä¿æå³ä¾§è¡é©¶",name:"å¨å²éå£ä¿æå³ä¾§è¡é©¶ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£ä¿æå³ä¾§è¡é©¶ï¼åå¾{destination}"},"sharp left":{default:"å¨å²éå£å·¦æ¥è½¬å¼¯",name:"å¨å²éå£å·¦æ¥è½¬å¼¯ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£å·¦æ¥è½¬å¼¯ï¼åå¾{destination}"},"sharp right":{default:"å¨å²éå£å³æ¥è½¬å¼¯",name:"å¨å²éå£å³æ¥è½¬å¼¯ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£å³æ¥è½¬å¼¯ï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼é©¶å ¥{way_name}",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},merge:{default:{default:"{modifier}å¹¶é",name:"{modifier}å¹¶éï¼é©¶å ¥{way_name}",destination:"{modifier}å¹¶éï¼åå¾{destination}"},straight:{default:"ç´è¡å¹¶é",name:"ç´è¡å¹¶éï¼é©¶å ¥{way_name}",destination:"ç´è¡å¹¶éï¼åå¾{destination}"},"slight left":{default:"ç¨å左并é",name:"ç¨å左并éï¼é©¶å ¥{way_name}",destination:"ç¨å左并éï¼åå¾{destination}"},"slight right":{default:"ç¨åå³å¹¶é",name:"ç¨åå³å¹¶éï¼é©¶å ¥{way_name}",destination:"ç¨åå³å¹¶éï¼åå¾{destination}"},"sharp left":{default:"æ¥å左并é",name:"æ¥å左并éï¼é©¶å ¥{way_name}",destination:"æ¥å左并éï¼åå¾{destination}"},"sharp right":{default:"æ¥åå³å¹¶é",name:"æ¥åå³å¹¶éï¼é©¶å ¥{way_name}",destination:"æ¥åå³å¹¶éï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼é©¶å ¥{way_name}",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},"new name":{default:{default:"ç»§ç»{modifier}",name:"ç»§ç»{modifier}ï¼é©¶å ¥{way_name}",destination:"ç»§ç»{modifier}ï¼åå¾{destination}"},straight:{default:"ç»§ç»ç´è¡",name:"ç»§ç»å¨{way_name}ä¸ç´è¡",destination:"ç»§ç»ç´è¡ï¼åå¾{destination}"},"sharp left":{default:"忹左æ¥è½¬å¼¯",name:"忹左æ¥è½¬å¼¯ï¼é©¶å ¥{way_name}",destination:"å·¦æ¥è½¬å¼¯ï¼åå¾{destination}"},"sharp right":{default:"忹峿¥è½¬å¼¯",name:"忹峿¥è½¬å¼¯ï¼é©¶å ¥{way_name}",destination:"峿¥è½¬å¼¯ï¼åå¾{destination}"},"slight left":{default:"ç»§ç»ç¨åå·¦",name:"ç»§ç»ç¨åå·¦ï¼é©¶å ¥{way_name}",destination:"ç»§ç»ç¨åå·¦ï¼åå¾{destination}"},"slight right":{default:"ç»§ç»ç¨åå³",name:"ç»§ç»ç¨åå³ï¼é©¶å ¥{way_name}",destination:"ç»§ç»ç¨åå³ï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼ä¸{way_name}",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},notification:{default:{default:"ç»§ç»{modifier}",name:"ç»§ç»{modifier}ï¼é©¶å ¥{way_name}",destination:"ç»§ç»{modifier}ï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼é©¶å ¥{way_name}",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},"off ramp":{default:{default:"ä¸åé",name:"ä¸åéï¼é©¶å ¥{way_name}",destination:"ä¸åéï¼åå¾{destination}",exit:"ä»{exit}åºå£é©¶åº",exit_destination:"ä»{exit}åºå£é©¶åºï¼åå¾{destination}"},left:{default:"ä¸å·¦ä¾§åé",name:"ä¸å·¦ä¾§åéï¼ä¸{way_name}",destination:"ä¸å·¦ä¾§åéï¼åå¾{destination}",exit:"ä»å·¦ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å·¦ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},right:{default:"ä¸å³ä¾§åé",name:"ä¸å³ä¾§åéï¼é©¶å ¥{way_name}",destination:"ä¸å³ä¾§åéï¼åå¾{destination}",exit:"ä»å³ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å³ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},"sharp left":{default:"æ¥åå·¦ä¸åé",name:"æ¥åå·¦ä¸åéï¼é©¶å ¥{way_name}",destination:"æ¥åå·¦ä¸åéï¼åå¾{destination}",exit:"ä»å·¦ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å·¦ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},"sharp right":{default:"æ¥åå³ä¸åé",name:"æ¥åå³ä¸åéï¼é©¶å ¥{way_name}",destination:"æ¥åå³ä¸åéï¼åå¾{destination}",exit:"ä»å³ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å³ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},"slight left":{default:"ç¨åå·¦ä¸åé",name:"ç¨åå·¦ä¸åéï¼é©¶å ¥{way_name}",destination:"ç¨åå·¦ä¸åéï¼åå¾{destination}",exit:"ä»å·¦ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å·¦ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},"slight right":{default:"ç¨åå³ä¸åé",name:"ç¨åå³ä¸åéï¼é©¶å ¥{way_name}",destination:"ç¨åå³ä¸åéï¼åå¾{destination}",exit:"ä»å³ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å³ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"}},"on ramp":{default:{default:"ä¸åé",name:"ä¸åéï¼é©¶å ¥{way_name}",destination:"ä¸åéï¼åå¾{destination}"},left:{default:"ä¸å·¦ä¾§åé",name:"ä¸å·¦ä¾§åéï¼é©¶å ¥{way_name}",destination:"ä¸å·¦ä¾§åéï¼åå¾{destination}"},right:{default:"ä¸å³ä¾§åé",name:"ä¸å³ä¾§åéï¼é©¶å ¥{way_name}",destination:"ä¸å³ä¾§åéï¼åå¾{destination}"},"sharp left":{default:"æ¥åå·¦ä¸åé",name:"æ¥åå·¦ä¸åéï¼é©¶å ¥{way_name}",destination:"æ¥åå·¦ä¸åéï¼åå¾{destination}"},"sharp right":{default:"æ¥åå³ä¸åé",name:"æ¥åå³ä¸åéï¼é©¶å ¥{way_name}",destination:"æ¥åå³ä¸åéï¼åå¾{destination}"},"slight left":{default:"ç¨åå·¦ä¸åé",name:"ç¨åå·¦ä¸åéï¼é©¶å ¥{way_name}",destination:"ç¨åå·¦ä¸åéï¼åå¾{destination}"},"slight right":{default:"ç¨åå³ä¸åé",name:"ç¨åå³ä¸åéï¼é©¶å ¥{way_name}",destination:"ç¨åå³ä¸åéï¼åå¾{destination}"}},rotary:{default:{default:{default:"è¿å ¥ç¯å²",name:"éè¿ç¯å²åé©¶å ¥{way_name}",destination:"éè¿ç¯å²ååå¾{destination}"},name:{default:"è¿å ¥{rotary_name}ç¯å²",name:"éè¿{rotary_name}ç¯å²åé©¶å ¥{way_name}",destination:"éè¿{rotary_name}ç¯å²ååå¾{destination}"},exit:{default:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åº",name:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åºï¼ä¸{way_name}",destination:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åºï¼åå¾{destination}"},name_exit:{default:"è¿å ¥{rotary_name}ç¯å²åä»{exit_number}åºå£é©¶åº",name:"è¿å ¥{rotary_name}ç¯å²åä»{exit_number}åºå£é©¶åºï¼ä¸{way_name}",destination:"è¿å ¥{rotary_name}ç¯å²åä»{exit_number}åºå£é©¶åºï¼åå¾{destination}"}}},roundabout:{default:{exit:{default:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åº",name:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åºï¼ä¸{way_name}",destination:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åºï¼åå¾{destination}"},default:{default:"è¿å ¥ç¯å²",name:"éè¿ç¯å²åé©¶å ¥{way_name}",destination:"éè¿ç¯å²ååå¾{destination}"}}},"roundabout turn":{default:{default:"{modifier}转弯",name:"{modifier}转弯ï¼é©¶å ¥{way_name}",destination:"{modifier}转弯ï¼åå¾{destination}"},left:{default:"左转",name:"左转ï¼é©¶å ¥{way_name}",destination:"左转ï¼åå¾{destination}"},right:{default:"å³è½¬",name:"å³è½¬ï¼é©¶å ¥{way_name}",destination:"å³è½¬ï¼åå¾{destination}"},straight:{default:"ç»§ç»ç´è¡",name:"ç»§ç»ç´è¡ï¼é©¶å ¥{way_name}",destination:"ç»§ç»ç´è¡ï¼åå¾{destination}"}},"exit roundabout":{default:{default:"驶离ç¯å²",name:"驶离ç¯å²ï¼é©¶å ¥{way_name}",destination:"驶离ç¯å²ï¼åå¾{destination}"}},"exit rotary":{default:{default:"驶离ç¯å²",name:"驶离ç¯å²ï¼é©¶å ¥{way_name}",destination:"驶离ç¯å²ï¼åå¾{destination}"}},turn:{default:{default:"{modifier}转弯",name:"{modifier}转弯ï¼é©¶å ¥{way_name}",destination:"{modifier}转弯ï¼åå¾{destination}"},left:{default:"左转",name:"左转ï¼é©¶å ¥{way_name}",destination:"左转ï¼åå¾{destination}"},right:{default:"å³è½¬",name:"å³è½¬ï¼é©¶å ¥{way_name}",destination:"å³è½¬ï¼åå¾{destination}"},straight:{default:"ç´è¡",name:"ç´è¡ï¼é©¶å ¥{way_name}",destination:"ç´è¡ï¼åå¾{destination}"}},"use lane":{no_lanes:{default:"ç»§ç»ç´è¡"},default:{default:"{lane_instruction}"}}}}},{}],48:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.Class.extend({options:{timeout:500,blurTimeout:100,noResultsMessage:"No results found."},initialize:function(elem,callback,context,options){L.setOptions(this,options);this._elem=elem;this._resultFn=options.resultFn?L.Util.bind(options.resultFn,options.resultContext):null;this._autocomplete=options.autocompleteFn?L.Util.bind(options.autocompleteFn,options.autocompleteContext):null;this._selectFn=L.Util.bind(callback,context);this._container=L.DomUtil.create("div","leaflet-routing-geocoder-result");this._resultTable=L.DomUtil.create("table","",this._container);L.DomEvent.addListener(this._elem,"input",this._keyPressed,this);L.DomEvent.addListener(this._elem,"keypress",this._keyPressed,this);L.DomEvent.addListener(this._elem,"keydown",this._keyDown,this);L.DomEvent.addListener(this._elem,"blur",function(){if(this._isOpen){this.close()}},this)},close:function(){L.DomUtil.removeClass(this._container,"leaflet-routing-geocoder-result-open");this._isOpen=false},_open:function(){var rect=this._elem.getBoundingClientRect();if(!this._container.parentElement){var scrollX=window.pageXOffset!==undefined?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft;var scrollY=window.pageYOffset!==undefined?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop;this._container.style.left=rect.left+scrollX+"px";this._container.style.top=rect.bottom+scrollY+"px";this._container.style.width=rect.right-rect.left+"px";document.body.appendChild(this._container)}L.DomUtil.addClass(this._container,"leaflet-routing-geocoder-result-open");this._isOpen=true},_setResults:function(results){var i,tr,td,text;delete this._selection;this._results=results;while(this._resultTable.firstChild){this._resultTable.removeChild(this._resultTable.firstChild)}for(i=0;i<results.length;i++){tr=L.DomUtil.create("tr","",this._resultTable);tr.setAttribute("data-result-index",i);td=L.DomUtil.create("td","",tr);text=document.createTextNode(results[i].name);td.appendChild(text);L.DomEvent.addListener(td,"mousedown",L.DomEvent.preventDefault);L.DomEvent.addListener(td,"click",this._createClickListener(results[i]))}if(!i){tr=L.DomUtil.create("tr","",this._resultTable);td=L.DomUtil.create("td","leaflet-routing-geocoder-no-results",tr);td.innerHTML=this.options.noResultsMessage}this._open();if(results.length>0){this._select(1)}},_createClickListener:function(r){var resultSelected=this._resultSelected(r);return L.bind(function(){this._elem.blur();resultSelected()},this)},_resultSelected:function(r){return L.bind(function(){this.close();this._elem.value=r.name;this._lastCompletedText=r.name;this._selectFn(r)},this)},_keyPressed:function(e){var index;if(this._isOpen&&e.keyCode===13&&this._selection){index=parseInt(this._selection.getAttribute("data-result-index"),10);this._resultSelected(this._results[index])();L.DomEvent.preventDefault(e);return}if(e.keyCode===13){L.DomEvent.preventDefault(e);this._complete(this._resultFn,true);return}if(this._autocomplete&&document.activeElement===this._elem){if(this._timer){clearTimeout(this._timer)}this._timer=setTimeout(L.Util.bind(function(){this._complete(this._autocomplete)},this),this.options.timeout);return}this._unselect()},_select:function(dir){var sel=this._selection;if(sel){L.DomUtil.removeClass(sel.firstChild,"leaflet-routing-geocoder-selected");sel=sel[dir>0?"nextSibling":"previousSibling"]}if(!sel){sel=this._resultTable[dir>0?"firstChild":"lastChild"]}if(sel){L.DomUtil.addClass(sel.firstChild,"leaflet-routing-geocoder-selected");this._selection=sel}},_unselect:function(){if(this._selection){L.DomUtil.removeClass(this._selection.firstChild,"leaflet-routing-geocoder-selected")}delete this._selection},_keyDown:function(e){if(this._isOpen){switch(e.keyCode){case 27:this.close();L.DomEvent.preventDefault(e);return;case 38:this._select(-1);L.DomEvent.preventDefault(e);return;case 40:this._select(1);L.DomEvent.preventDefault(e);return}}},_complete:function(completeFn,trySelect){var v=this._elem.value;function completeResults(results){this._lastCompletedText=v;if(trySelect&&results.length===1){this._resultSelected(results[0])()}else{this._setResults(results)}}if(!v){return}if(v!==this._lastCompletedText){completeFn(v,completeResults,this)}else if(trySelect){completeResults.call(this,this._results)}}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],49:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var Itinerary=_dereq_("./itinerary");var Line=_dereq_("./line");var Plan=_dereq_("./plan");var OSRMv1=_dereq_("./osrm-v1");module.exports=Itinerary.extend({options:{fitSelectedRoutes:"smart",routeLine:function(route,options){return new Line(route,options)},autoRoute:true,routeWhileDragging:false,routeDragInterval:500,waypointMode:"connect",showAlternatives:false,defaultErrorHandler:function(e){console.error("Routing error:",e.error)}},initialize:function(options){L.Util.setOptions(this,options);this._router=this.options.router||new OSRMv1(options);this._plan=this.options.plan||new Plan(this.options.waypoints,options);this._requestCount=0;Itinerary.prototype.initialize.call(this,options);this.on("routeselected",this._routeSelected,this);if(this.options.defaultErrorHandler){this.on("routingerror",this.options.defaultErrorHandler)}this._plan.on("waypointschanged",this._onWaypointsChanged,this);if(options.routeWhileDragging){this._setupRouteDragging()}},_onZoomEnd:function(){if(!this._selectedRoute||!this._router.requiresMoreDetail){return}var map=this._map;if(this._router.requiresMoreDetail(this._selectedRoute,map.getZoom(),map.getBounds())){this.route({callback:L.bind(function(err,routes){var i;if(!err){for(i=0;i<routes.length;i++){this._routes[i].properties=routes[i].properties}this._updateLineCallback(err,routes)}},this),simplifyGeometry:false,geometryOnly:true})}},onAdd:function(map){if(this.options.autoRoute){this.route()}var container=Itinerary.prototype.onAdd.call(this,map);this._map=map;this._map.addLayer(this._plan);this._map.on("zoomend",this._onZoomEnd,this);if(this._plan.options.geocoder){container.insertBefore(this._plan.createGeocoders(),container.firstChild)}return container},onRemove:function(map){map.off("zoomend",this._onZoomEnd,this);if(this._line){map.removeLayer(this._line)}map.removeLayer(this._plan);if(this._alternatives&&this._alternatives.length>0){for(var i=0,len=this._alternatives.length;i<len;i++){map.removeLayer(this._alternatives[i])}}return Itinerary.prototype.onRemove.call(this,map)},getWaypoints:function(){return this._plan.getWaypoints()},setWaypoints:function(waypoints){this._plan.setWaypoints(waypoints);return this},spliceWaypoints:function(){var removed=this._plan.spliceWaypoints.apply(this._plan,arguments);return removed},getPlan:function(){return this._plan},getRouter:function(){return this._router},_routeSelected:function(e){var route=this._selectedRoute=e.route,alternatives=this.options.showAlternatives&&e.alternatives,fitMode=this.options.fitSelectedRoutes,fitBounds=fitMode==="smart"&&!this._waypointsVisible()||fitMode!=="smart"&&fitMode;this._updateLines({route:route,alternatives:alternatives});if(fitBounds){this._map.fitBounds(this._line.getBounds())}if(this.options.waypointMode==="snap"){this._plan.off("waypointschanged",this._onWaypointsChanged,this);this.setWaypoints(route.waypoints);this._plan.on("waypointschanged",this._onWaypointsChanged,this)}},_waypointsVisible:function(){var wps=this.getWaypoints(),mapSize,bounds,boundsSize,i,p;try{mapSize=this._map.getSize();for(i=0;i<wps.length;i++){p=this._map.latLngToLayerPoint(wps[i].latLng);if(bounds){bounds.extend(p)}else{bounds=L.bounds([p])}}boundsSize=bounds.getSize();return(boundsSize.x>mapSize.x/5||boundsSize.y>mapSize.y/5)&&this._waypointsInViewport()}catch(e){return false}},_waypointsInViewport:function(){var wps=this.getWaypoints(),mapBounds,i;try{mapBounds=this._map.getBounds()}catch(e){return false}for(i=0;i<wps.length;i++){if(mapBounds.contains(wps[i].latLng)){return true}}return false},_updateLines:function(routes){var addWaypoints=this.options.addWaypoints!==undefined?this.options.addWaypoints:true;this._clearLines();this._alternatives=[];if(routes.alternatives)routes.alternatives.forEach(function(alt,i){this._alternatives[i]=this.options.routeLine(alt,L.extend({isAlternative:true},this.options.altLineOptions||this.options.lineOptions));this._alternatives[i].addTo(this._map);this._hookAltEvents(this._alternatives[i])},this);this._line=this.options.routeLine(routes.route,L.extend({addWaypoints:addWaypoints,extendToWaypoints:this.options.waypointMode==="connect"},this.options.lineOptions));this._line.addTo(this._map);this._hookEvents(this._line)},_hookEvents:function(l){l.on("linetouched",function(e){this._plan.dragNewWaypoint(e)},this)},_hookAltEvents:function(l){l.on("linetouched",function(e){var alts=this._routes.slice();var selected=alts.splice(e.target._route.routesIndex,1)[0];this.fire("routeselected",{route:selected,alternatives:alts})},this)},_onWaypointsChanged:function(e){if(this.options.autoRoute){this.route({})}if(!this._plan.isReady()){this._clearLines();this._clearAlts()}this.fire("waypointschanged",{waypoints:e.waypoints})},_setupRouteDragging:function(){var timer=0,waypoints;this._plan.on("waypointdrag",L.bind(function(e){waypoints=e.waypoints;if(!timer){timer=setTimeout(L.bind(function(){this.route({waypoints:waypoints,geometryOnly:true,callback:L.bind(this._updateLineCallback,this)});timer=undefined},this),this.options.routeDragInterval)}},this));this._plan.on("waypointdragend",function(){if(timer){clearTimeout(timer);timer=undefined}this.route()},this)},_updateLineCallback:function(err,routes){if(!err){routes=routes.slice();var selected=routes.splice(this._selectedRoute.routesIndex,1)[0];this._updateLines({route:selected,alternatives:this.options.showAlternatives?routes:[]})}else if(err.type!=="abort"){this._clearLines()}},route:function(options){var ts=++this._requestCount,wps;if(this._pendingRequest&&this._pendingRequest.abort){this._pendingRequest.abort();this._pendingRequest=null}options=options||{};if(this._plan.isReady()){if(this.options.useZoomParameter){options.z=this._map&&this._map.getZoom()}wps=options&&options.waypoints||this._plan.getWaypoints();this.fire("routingstart",{waypoints:wps}) 2513;this._pendingRequest=this._router.route(wps,function(err,routes){this._pendingRequest=null;if(options.callback){return options.callback.call(this,err,routes)}if(ts===this._requestCount){this._clearLines();this._clearAlts();if(err&&err.type!=="abort"){this.fire("routingerror",{error:err});return}routes.forEach(function(route,i){route.routesIndex=i});if(!options.geometryOnly){this.fire("routesfound",{waypoints:wps,routes:routes});this.setAlternatives(routes)}else{var selectedRoute=routes.splice(0,1)[0];this._routeSelected({route:selectedRoute,alternatives:routes})}}},this,options)}},_clearLines:function(){if(this._line){this._map.removeLayer(this._line);delete this._line}if(this._alternatives&&this._alternatives.length){for(var i in this._alternatives){this._map.removeLayer(this._alternatives[i])}this._alternatives=[]}}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./itinerary":55,"./line":56,"./osrm-v1":59,"./plan":60}],50:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.Control.extend({options:{header:"Routing error",formatMessage:function(error){if(error.status<0){return"Calculating the route caused an error. Technical description follows: <code><pre>"+error.message+"</pre></code"}else{return"The route could not be calculated. "+error.message}}},initialize:function(routingControl,options){L.Control.prototype.initialize.call(this,options);routingControl.on("routingerror",L.bind(function(e){if(this._element){this._element.children[1].innerHTML=this.options.formatMessage(e.error);this._element.style.visibility="visible"}},this)).on("routingstart",L.bind(function(){if(this._element){this._element.style.visibility="hidden"}},this))},onAdd:function(){var header,message;this._element=L.DomUtil.create("div","leaflet-bar leaflet-routing-error");this._element.style.visibility="hidden";header=L.DomUtil.create("h3",null,this._element);message=L.DomUtil.create("span",null,this._element);header.innerHTML=this.options.header;return this._element},onRemove:function(){delete this._element}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],51:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var Localization=_dereq_("./localization");module.exports=L.Class.extend({options:{units:"metric",unitNames:null,language:"en",roundingSensitivity:1,distanceTemplate:"{value} {unit}"},initialize:function(options){L.setOptions(this,options);var langs=L.Util.isArray(this.options.language)?this.options.language:[this.options.language,"en"];this._localization=new Localization(langs)},formatDistance:function(d,sensitivity){var un=this.options.unitNames||this._localization.localize("units"),simpleRounding=sensitivity<=0,round=simpleRounding?function(v){return v}:L.bind(this._round,this),v,yards,data,pow10;if(this.options.units==="imperial"){yards=d/.9144;if(yards>=1e3){data={value:round(d/1609.344,sensitivity),unit:un.miles}}else{data={value:round(yards,sensitivity),unit:un.yards}}}else{v=round(d,sensitivity);data={value:v>=1e3?v/1e3:v,unit:v>=1e3?un.kilometers:un.meters}}if(simpleRounding){data.value=data.value.toFixed(-sensitivity)}return L.Util.template(this.options.distanceTemplate,data)},_round:function(d,sensitivity){var s=sensitivity||this.options.roundingSensitivity,pow10=Math.pow(10,(Math.floor(d/s)+"").length-1),r=Math.floor(d/pow10),p=r>5?pow10:pow10/2;return Math.round(d/p)*p},formatTime:function(t){var un=this.options.unitNames||this._localization.localize("units");t=Math.round(t/30)*30;if(t>86400){return Math.round(t/3600)+" "+un.hours}else if(t>3600){return Math.floor(t/3600)+" "+un.hours+" "+Math.round(t%3600/60)+" "+un.minutes}else if(t>300){return Math.round(t/60)+" "+un.minutes}else if(t>60){return Math.floor(t/60)+" "+un.minutes+(t%60!==0?" "+t%60+" "+un.seconds:"")}else{return t+" "+un.seconds}},formatInstruction:function(instr,i){if(instr.text===undefined){return this.capitalize(L.Util.template(this._getInstructionTemplate(instr,i),L.extend({},instr,{exitStr:instr.exit?this._localization.localize("formatOrder")(instr.exit):"",dir:this._localization.localize(["directions",instr.direction]),modifier:this._localization.localize(["directions",instr.modifier])})))}else{return instr.text}},getIconName:function(instr,i){switch(instr.type){case"Head":if(i===0){return"depart"}break;case"WaypointReached":return"via";case"Roundabout":return"enter-roundabout";case"DestinationReached":return"arrive"}switch(instr.modifier){case"Straight":return"continue";case"SlightRight":return"bear-right";case"Right":return"turn-right";case"SharpRight":return"sharp-right";case"TurnAround":case"Uturn":return"u-turn";case"SharpLeft":return"sharp-left";case"Left":return"turn-left";case"SlightLeft":return"bear-left"}},capitalize:function(s){return s.charAt(0).toUpperCase()+s.substring(1)},_getInstructionTemplate:function(instr,i){var type=instr.type==="Straight"?i===0?"Head":"Continue":instr.type,strings=this._localization.localize(["instructions",type]);if(!strings){strings=[this._localization.localize(["directions",type])," "+this._localization.localize(["instructions","Onto"])]}return strings[0]+(strings.length>1&&instr.road?strings[1]:"")}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./localization":57}],52:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var Autocomplete=_dereq_("./autocomplete");var Localization=_dereq_("./localization");function selectInputText(input){if(input.setSelectionRange){input.setSelectionRange(0,9999)}else{input.select()}}module.exports=L.Class.extend({includes:typeof L.Evented!=="undefined"&&L.Evented.prototype||L.Mixin.Events,options:{createGeocoder:function(i,nWps,options){var container=L.DomUtil.create("div","leaflet-routing-geocoder"),input=L.DomUtil.create("input","",container),remove=options.addWaypoints?L.DomUtil.create("span","leaflet-routing-remove-waypoint",container):undefined;input.disabled=!options.addWaypoints;return{container:container,input:input,closeButton:remove}},geocoderPlaceholder:function(i,numberWaypoints,geocoderElement){var l=new Localization(geocoderElement.options.language).localize("ui");return i===0?l.startPlaceholder:i<numberWaypoints-1?L.Util.template(l.viaPlaceholder,{viaNumber:i}):l.endPlaceholder},geocoderClass:function(){return""},waypointNameFallback:function(latLng){var ns=latLng.lat<0?"S":"N",ew=latLng.lng<0?"W":"E",lat=(Math.round(Math.abs(latLng.lat)*1e4)/1e4).toString(),lng=(Math.round(Math.abs(latLng.lng)*1e4)/1e4).toString();return ns+lat+", "+ew+lng},maxGeocoderTolerance:200,autocompleteOptions:{},language:"en"},initialize:function(wp,i,nWps,options){L.setOptions(this,options);var g=this.options.createGeocoder(i,nWps,this.options),closeButton=g.closeButton,geocoderInput=g.input;geocoderInput.setAttribute("placeholder",this.options.geocoderPlaceholder(i,nWps,this));geocoderInput.className=this.options.geocoderClass(i,nWps);this._element=g;this._waypoint=wp;this.update();geocoderInput.value=wp.name;L.DomEvent.addListener(geocoderInput,"click",function(){selectInputText(this)},geocoderInput);if(closeButton){L.DomEvent.addListener(closeButton,"click",function(){this.fire("delete",{waypoint:this._waypoint})},this)}new Autocomplete(geocoderInput,function(r){geocoderInput.value=r.name;wp.name=r.name;wp.latLng=r.center;this.fire("geocoded",{waypoint:wp,value:r})},this,L.extend({resultFn:this.options.geocoder.geocode,resultContext:this.options.geocoder,autocompleteFn:this.options.geocoder.suggest,autocompleteContext:this.options.geocoder},this.options.autocompleteOptions))},getContainer:function(){return this._element.container},setValue:function(v){this._element.input.value=v},update:function(force){var wp=this._waypoint,wpCoords;wp.name=wp.name||"";if(wp.latLng&&(force||!wp.name)){wpCoords=this.options.waypointNameFallback(wp.latLng);if(this.options.geocoder&&this.options.geocoder.reverse){this.options.geocoder.reverse(wp.latLng,67108864,function(rs){if(rs.length>0&&rs[0].center.distanceTo(wp.latLng)<this.options.maxGeocoderTolerance){wp.name=rs[0].name}else{wp.name=wpCoords}this._update()},this)}else{wp.name=wpCoords;this._update()}}},focus:function(){var input=this._element.input;input.focus();selectInputText(input)},_update:function(){var wp=this._waypoint,value=wp&&wp.name?wp.name:"";this.setValue(value);this.fire("reversegeocoded",{waypoint:wp,value:value})}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./autocomplete":48,"./localization":57}],53:[function(_dereq_,module,exports){(function(global){var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null,Control=_dereq_("./control"),Itinerary=_dereq_("./itinerary"),Line=_dereq_("./line"),OSRMv1=_dereq_("./osrm-v1"),Plan=_dereq_("./plan"),Waypoint=_dereq_("./waypoint"),Autocomplete=_dereq_("./autocomplete"),Formatter=_dereq_("./formatter"),GeocoderElement=_dereq_("./geocoder-element"),Localization=_dereq_("./localization"),ItineraryBuilder=_dereq_("./itinerary-builder"),Mapbox=_dereq_("./mapbox"),ErrorControl=_dereq_("./error-control");L.routing={control:function(options){return new Control(options)},itinerary:function(options){return Itinerary(options)},line:function(route,options){return new Line(route,options)},plan:function(waypoints,options){return new Plan(waypoints,options)},waypoint:function(latLng,name,options){return new Waypoint(latLng,name,options)},osrmv1:function(options){return new OSRMv1(options)},localization:function(options){return new Localization(options)},formatter:function(options){return new Formatter(options)},geocoderElement:function(wp,i,nWps,plan){return new L.Routing.GeocoderElement(wp,i,nWps,plan)},itineraryBuilder:function(options){return new ItineraryBuilder(options)},mapbox:function(accessToken,options){return new Mapbox(accessToken,options)},errorControl:function(routingControl,options){return new ErrorControl(routingControl,options)},autocomplete:function(elem,callback,context,options){return new Autocomplete(elem,callback,context,options)}};module.exports=L.Routing={Control:Control,Itinerary:Itinerary,Line:Line,OSRMv1:OSRMv1,Plan:Plan,Waypoint:Waypoint,Autocomplete:Autocomplete,Formatter:Formatter,GeocoderElement:GeocoderElement,Localization:Localization,Formatter:Formatter,ItineraryBuilder:ItineraryBuilder,control:L.routing.control,itinerary:L.routing.itinerary,line:L.routing.line,plan:L.routing.plan,waypoint:L.routing.waypoint,osrmv1:L.routing.osrmv1,geocoderElement:L.routing.geocoderElement,mapbox:L.routing.mapbox,errorControl:L.routing.errorControl}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./autocomplete":48,"./control":49,"./error-control":50,"./formatter":51,"./geocoder-element":52,"./itinerary":55,"./itinerary-builder":54,"./line":56,"./localization":57,"./mapbox":58,"./osrm-v1":59,"./plan":60,"./waypoint":61}],54:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.Class.extend({options:{containerClassName:""},initialize:function(options){L.setOptions(this,options)},createContainer:function(className){var table=L.DomUtil.create("table",(className||"")+" "+this.options.containerClassName),colgroup=L.DomUtil.create("colgroup","",table);L.DomUtil.create("col","leaflet-routing-instruction-icon",colgroup);L.DomUtil.create("col","leaflet-routing-instruction-text",colgroup);L.DomUtil.create("col","leaflet-routing-instruction-distance",colgroup);return table},createStepsContainer:function(){return L.DomUtil.create("tbody","")},createStep:function(text,distance,icon,steps){var row=L.DomUtil.create("tr","",steps),span,td;td=L.DomUtil.create("td","",row);span=L.DomUtil.create("span","leaflet-routing-icon leaflet-routing-icon-"+icon,td);td.appendChild(span);td=L.DomUtil.create("td","",row);td.appendChild(document.createTextNode(text));td=L.DomUtil.create("td","",row);td.appendChild(document.createTextNode(distance));return row}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],55:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var Formatter=_dereq_("./formatter");var ItineraryBuilder=_dereq_("./itinerary-builder");module.exports=L.Control.extend({includes:typeof L.Evented!=="undefined"&&L.Evented.prototype||L.Mixin.Events,options:{pointMarkerStyle:{radius:5,color:"#03f",fillColor:"white",opacity:1,fillOpacity:.7},summaryTemplate:"<h2>{name}</h2><h3>{distance}, {time}</h3>",timeTemplate:"{time}",containerClassName:"",alternativeClassName:"",minimizedClassName:"",itineraryClassName:"",totalDistanceRoundingSensitivity:-1,show:true,collapsible:undefined,collapseBtn:function(itinerary){var collapseBtn=L.DomUtil.create("span",itinerary.options.collapseBtnClass);L.DomEvent.on(collapseBtn,"click",itinerary._toggle,itinerary);itinerary._container.insertBefore(collapseBtn,itinerary._container.firstChild)},collapseBtnClass:"leaflet-routing-collapse-btn"},initialize:function(options){L.setOptions(this,options);this._formatter=this.options.formatter||new Formatter(this.options);this._itineraryBuilder=this.options.itineraryBuilder||new ItineraryBuilder({containerClassName:this.options.itineraryClassName})},onAdd:function(map){var collapsible=this.options.collapsible;collapsible=collapsible||collapsible===undefined&&map.getSize().x<=640;this._container=L.DomUtil.create("div","leaflet-routing-container leaflet-bar "+(!this.options.show?"leaflet-routing-container-hide ":"")+(collapsible?"leaflet-routing-collapsible ":"")+this.options.containerClassName);this._altContainer=this.createAlternativesContainer();this._container.appendChild(this._altContainer);L.DomEvent.disableClickPropagation(this._container);L.DomEvent.addListener(this._container,"mousewheel",function(e){L.DomEvent.stopPropagation(e)});if(collapsible){this.options.collapseBtn(this)}return this._container},onRemove:function(){},createAlternativesContainer:function(){return L.DomUtil.create("div","leaflet-routing-alternatives-container")},setAlternatives:function(routes){var i,alt,altDiv;this._clearAlts();this._routes=routes;for(i=0;i<this._routes.length;i++){alt=this._routes[i];altDiv=this._createAlternative(alt,i);this._altContainer.appendChild(altDiv);this._altElements.push(altDiv)}this._selectRoute({route:this._routes[0],alternatives:this._routes.slice(1)});return this},show:function(){L.DomUtil.removeClass(this._container,"leaflet-routing-container-hide")},hide:function(){L.DomUtil.addClass(this._container,"leaflet-routing-container-hide")},_toggle:function(){var collapsed=L.DomUtil.hasClass(this._container,"leaflet-routing-container-hide");this[collapsed?"show":"hide"]()},_createAlternative:function(alt,i){var altDiv=L.DomUtil.create("div","leaflet-routing-alt "+this.options.alternativeClassName+(i>0?" leaflet-routing-alt-minimized "+this.options.minimizedClassName:"")),template=this.options.summaryTemplate,data=L.extend({name:alt.name,distance:this._formatter.formatDistance(alt.summary.totalDistance,this.options.totalDistanceRoundingSensitivity),time:this._formatter.formatTime(alt.summary.totalTime)},alt);altDiv.innerHTML=typeof template==="function"?template(data):L.Util.template(template,data);L.DomEvent.addListener(altDiv,"click",this._onAltClicked,this);this.on("routeselected",this._selectAlt,this);altDiv.appendChild(this._createItineraryContainer(alt));return altDiv},_clearAlts:function(){var el=this._altContainer;while(el&&el.firstChild){el.removeChild(el.firstChild)}this._altElements=[]},_createItineraryContainer:function(r){var container=this._itineraryBuilder.createContainer(),steps=this._itineraryBuilder.createStepsContainer(),i,instr,step,distance,text,icon;container.appendChild(steps);for(i=0;i<r.instructions.length;i++){instr=r.instructions[i];text=this._formatter.formatInstruction(instr,i);distance=this._formatter.formatDistance(instr.distance);icon=this._formatter.getIconName(instr,i);step=this._itineraryBuilder.createStep(text,distance,icon,steps);if(instr.index){this._addRowListeners(step,r.coordinates[instr.index])}}return container},_addRowListeners:function(row,coordinate){L.DomEvent.addListener(row,"mouseover",function(){this._marker=L.circleMarker(coordinate,this.options.pointMarkerStyle).addTo(this._map)},this);L.DomEvent.addListener(row,"mouseout",function(){if(this._marker){this._map.removeLayer(this._marker);delete this._marker}},this);L.DomEvent.addListener(row,"click",function(e){this._map.panTo(coordinate);L.DomEvent.stopPropagation(e)},this)},_onAltClicked:function(e){var altElem=e.target||window.event.srcElement;while(!L.DomUtil.hasClass(altElem,"leaflet-routing-alt")){altElem=altElem.parentElement}var j=this._altElements.indexOf(altElem);var alts=this._routes.slice();var route=alts.splice(j,1)[0];this.fire("routeselected",{route:route,alternatives:alts})},_selectAlt:function(e){var altElem,j,n,classFn;altElem=this._altElements[e.route.routesIndex];if(L.DomUtil.hasClass(altElem,"leaflet-routing-alt-minimized")){for(j=0;j<this._altElements.length;j++){n=this._altElements[j];classFn=j===e.route.routesIndex?"removeClass":"addClass";L.DomUtil[classFn](n,"leaflet-routing-alt-minimized");if(this.options.minimizedClassName){L.DomUtil[classFn](n,this.options.minimizedClassName)}if(j!==e.route.routesIndex)n.scrollTop=0}}L.DomEvent.stop(e)},_selectRoute:function(routes){if(this._marker){this._map.removeLayer(this._marker);delete this._marker}this.fire("routeselected",routes)}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./formatter":51,"./itinerary-builder":54}],56:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.LayerGroup.extend({includes:typeof L.Evented!=="undefined"&&L.Evented.prototype||L.Mixin.Events,options:{styles:[{color:"black",opacity:.15,weight:9},{color:"white",opacity:.8,weight:6},{color:"red",opacity:1,weight:2}],missingRouteStyles:[{color:"black",opacity:.15,weight:7},{color:"white",opacity:.6,weight:4},{color:"gray",opacity:.8,weight:2,dashArray:"7,12"}],addWaypoints:true,extendToWaypoints:true,missingRouteTolerance:10},initialize:function(route,options){L.setOptions(this,options);L.LayerGroup.prototype.initialize.call(this,options);this._route=route;if(this.options.extendToWaypoints){this._extendToWaypoints()}this._addSegment(route.coordinates,this.options.styles,this.options.addWaypoints)},getBounds:function(){return L.latLngBounds(this._route.coordinates)},_findWaypointIndices:function(){var wps=this._route.inputWaypoints,indices=[],i;for(i=0;i<wps.length;i++){indices.push(this._findClosestRoutePoint(wps[i].latLng))}return indices},_findClosestRoutePoint:function(latlng){var minDist=Number.MAX_VALUE,minIndex,i,d;for(i=this._route.coordinates.length-1;i>=0;i--){d=latlng.distanceTo(this._route.coordinates[i]);if(d<minDist){minIndex=i;minDist=d}}return minIndex},_extendToWaypoints:function(){var wps=this._route.inputWaypoints,wpIndices=this._getWaypointIndices(),i,wpLatLng,routeCoord;for(i=0;i<wps.length;i++){wpLatLng=wps[i].latLng;routeCoord=L.latLng(this._route.coordinates[wpIndices[i]]);if(wpLatLng.distanceTo(routeCoord)>this.options.missingRouteTolerance){this._addSegment([wpLatLng,routeCoord],this.options.missingRouteStyles)}}},_addSegment:function(coords,styles,mouselistener){var i,pl;for(i=0;i<styles.length;i++){pl=L.polyline(coords,styles[i]);this.addLayer(pl);if(mouselistener){pl.on("mousedown",this._onLineTouched,this)}}},_findNearestWpBefore:function(i){var wpIndices=this._getWaypointIndices(),j=wpIndices.length-1;while(j>=0&&wpIndices[j]>i){j--}return j},_onLineTouched:function(e){var afterIndex=this._findNearestWpBefore(this._findClosestRoutePoint(e.latlng));this.fire("linetouched",{afterIndex:afterIndex,latlng:e.latlng});L.DomEvent.stop(e)},_getWaypointIndices:function(){if(!this._wpIndices){this._wpIndices=this._route.waypointIndices||this._findWaypointIndices()}return this._wpIndices}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],57:[function(_dereq_,module,exports){(function(){"use strict";var spanish={directions:{N:"norte",NE:"noreste",E:"este",SE:"sureste",S:"sur",SW:"suroeste",W:"oeste",NW:"noroeste",SlightRight:"leve giro a la derecha",Right:"derecha",SharpRight:"giro pronunciado a la derecha",SlightLeft:"leve giro a la izquierda",Left:"izquierda",SharpLeft:"giro pronunciado a la izquierda",Uturn:"media vuelta"},instructions:{Head:["Derecho {dir}"," sobre {road}"],Continue:["Continuar {dir}"," en {road}"],TurnAround:["Dar vuelta"],WaypointReached:["Llegó a un punto del camino"],Roundabout:["Tomar {exitStr} salida en la rotonda"," en {road}"],DestinationReached:["Llegada a destino"],Fork:["En el cruce gira a {modifier}"," hacia {road}"],Merge:["Incorpórate {modifier}"," hacia {road}"],OnRamp:["Gira {modifier} en la salida"," hacia {road}"],OffRamp:["Toma la salida {modifier}"," hacia {road}"],EndOfRoad:["Gira {modifier} al final de la carretera"," hacia {road}"],Onto:"hacia {road}"},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Inicio",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Destino"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"h",minutes:"min",seconds:"s"}};L.Routing=L.Routing||{};var Localization=L.Class.extend({initialize:function(langs){this._langs=L.Util.isArray(langs)?langs.slice():[langs,"en"];for(var i=0,l=this._langs.length;i<l;i++){var generalizedCode=/([A-Za-z]+)/.exec(this._langs[i])[1];if(!Localization[this._langs[i]]){if(Localization[generalizedCode]){this._langs[i]=generalizedCode}else{throw new Error('No localization for language "'+this._langs[i]+'".')}}}},localize:function(keys){var dict,key,value;keys=L.Util.isArray(keys)?keys:[keys];for(var i=0,l=this._langs.length;i<l;i++){dict=Localization[this._langs[i]];for(var j=0,nKeys=keys.length;dict&&j<nKeys;j++){key=keys[j];value=dict[key];dict=value}if(value){return value}}}});module.exports=L.extend(Localization,{en:{directions:{N:"north",NE:"northeast",E:"east",SE:"southeast",S:"south",SW:"southwest",W:"west",NW:"northwest",SlightRight:"slight right",Right:"right",SharpRight:"sharp right",SlightLeft:"slight left",Left:"left",SharpLeft:"sharp left",Uturn:"Turn around"},instructions:{Head:["Head {dir}"," on {road}"],Continue:["Continue {dir}"],TurnAround:["Turn around"],WaypointReached:["Waypoint reached"],Roundabout:["Take the {exitStr} exit in the roundabout"," onto {road}"],DestinationReached:["Destination reached"],Fork:["At the fork, turn {modifier}"," onto {road}"],Merge:["Merge {modifier}"," onto {road}"],OnRamp:["Turn {modifier} on the ramp"," onto {road}"],OffRamp:["Take the ramp on the {modifier}"," onto {road}"],EndOfRoad:["Turn {modifier} at the end of the road"," onto {road}"],Onto:"onto {road}"},formatOrder:function(n){var i=n%10-1,suffix=["st","nd","rd"];return suffix[i]?n+suffix[i]:n+"th"},ui:{startPlaceholder:"Start",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"End"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"h",minutes:"min",seconds:"s"}},de:{directions:{N:"Norden",NE:"Nordosten",E:"Osten",SE:"Südosten",S:"Süden",SW:"Südwesten",W:"Westen",NW:"Nordwesten",SlightRight:"leicht rechts",Right:"rechts",SharpRight:"scharf rechts",SlightLeft:"leicht links",Left:"links",SharpLeft:"scharf links",Uturn:"Wenden"},instructions:{Head:["Richtung {dir}"," auf {road}"],Continue:["Geradeaus Richtung {dir}"," auf {road}"],SlightRight:["Leicht rechts abbiegen"," auf {road}"],Right:["Rechts abbiegen"," auf {road}"],SharpRight:["Scharf rechts abbiegen"," auf {road}"],TurnAround:["Wenden"],SharpLeft:["Scharf links abbiegen"," auf {road}"],Left:["Links abbiegen"," auf {road}"],SlightLeft:["Leicht links abbiegen"," auf {road}"],WaypointReached:["Zwischenhalt erreicht"],Roundabout:["Nehmen Sie die {exitStr} Ausfahrt im Kreisverkehr"," auf {road}"],DestinationReached:["Sie haben ihr Ziel erreicht"],Fork:["An der Kreuzung {modifier}"," auf {road}"],Merge:["Fahren Sie {modifier} weiter"," auf {road}"],OnRamp:["Fahren Sie {modifier} auf die Auffahrt"," auf {road}"],OffRamp:["Nehmen Sie die Ausfahrt {modifier}"," auf {road}"],EndOfRoad:["Fahren Sie {modifier} am Ende der StraÃe"," auf {road}"],Onto:"auf {road}"},formatOrder:function(n){return n+"."},ui:{startPlaceholder:"Start",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Ziel"}},sv:{directions:{N:"norr",NE:"nordost",E:"öst",SE:"sydost",S:"syd",SW:"sydväst",W:"väst",NW:"nordväst",SlightRight:"svagt höger",Right:"höger",SharpRight:"skarpt höger",SlightLeft:"svagt vänster",Left:"vänster",SharpLeft:"skarpt vänster",Uturn:"Vänd"},instructions:{Head:["à k Ã¥t {dir}"," till {road}"],Continue:["Fortsätt {dir}"],SlightRight:["Svagt höger"," till {road}"],Right:["Sväng höger"," till {road}"],SharpRight:["Skarpt höger"," till {road}"],TurnAround:["Vänd"],SharpLeft:["Skarpt vänster"," till {road}"],Left:["Sväng vänster"," till {road}"],SlightLeft:["Svagt vänster"," till {road}"],WaypointReached:["Viapunkt nÃ¥dd"],Roundabout:["Tag {exitStr} avfarten i rondellen"," till {road}"],DestinationReached:["Framme vid resans mÃ¥l"],Fork:["Tag av {modifier}"," till {road}"],Merge:["Anslut {modifier} "," till {road}"],OnRamp:["Tag pÃ¥farten {modifier}"," till {road}"],OffRamp:["Tag avfarten {modifier}"," till {road}"],EndOfRoad:["Sväng {modifier} vid vägens slut"," till {road}"],Onto:"till {road}"},formatOrder:function(n){return["första","andra","tredje","fjärde","femte","sjätte","sjunde","Ã¥ttonde","nionde","tionde"][n-1]},ui:{startPlaceholder:"FrÃ¥n",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Till"}},es:spanish,sp:spanish,nl:{directions:{N:"noordelijke",NE:"noordoostelijke",E:"oostelijke",SE:"zuidoostelijke",S:"zuidelijke",SW:"zuidewestelijke",W:"westelijke",NW:"noordwestelijke"},instructions:{Head:["Vertrek in {dir} richting"," de {road} op"],Continue:["Ga in {dir} richting"," de {road} op"],SlightRight:["Volg de weg naar rechts"," de {road} op"],Right:["Ga rechtsaf"," de {road} op"],SharpRight:["Ga scherpe bocht naar rechts"," de {road} op"],TurnAround:["Keer om"],SharpLeft:["Ga scherpe bocht naar links"," de {road} op"],Left:["Ga linksaf"," de {road} op"],SlightLeft:["Volg de weg naar links"," de {road} op"],WaypointReached:["Aangekomen bij tussenpunt"],Roundabout:["Neem de {exitStr} afslag op de rotonde"," de {road} op"],DestinationReached:["Aangekomen op eindpunt"]},formatOrder:function(n){if(n===1||n>=20){return n+"ste"}else{return n+"de"}},ui:{startPlaceholder:"Vertrekpunt",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Bestemming"}},fr:{directions:{N:"nord",NE:"nord-est",E:"est",SE:"sud-est",S:"sud",SW:"sud-ouest",W:"ouest",NW:"nord-ouest"},instructions:{Head:["Tout droit au {dir}"," sur {road}"],Continue:["Continuer au {dir}"," sur {road}"],SlightRight:["Légèrement à droite"," sur {road}"],Right:["A droite"," sur {road}"],SharpRight:["Complètement à droite"," sur {road}"],TurnAround:["Faire demi-tour"],SharpLeft:["Complètement à gauche"," sur {road}"],Left:["A gauche"," sur {road}"],SlightLeft:["Légèrement à gauche"," sur {road}"],WaypointReached:["Point d'étape atteint"],Roundabout:["Au rond-point, prenez la {exitStr} sortie"," sur {road}"],DestinationReached:["Destination atteinte"]},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Départ",viaPlaceholder:"Intermédiaire {viaNumber}",endPlaceholder:"Arrivée"}},it:{directions:{N:"nord",NE:"nord-est",E:"est",SE:"sud-est",S:"sud",SW:"sud-ovest",W:"ovest",NW:"nord-ovest"},instructions:{Head:["Dritto verso {dir}"," su {road}"],Continue:["Continuare verso {dir}"," su {road}"],SlightRight:["Mantenere la destra"," su {road}"],Right:["A destra"," su {road}"],SharpRight:["Strettamente a destra"," su {road}"],TurnAround:["Fare inversione di marcia"],SharpLeft:["Strettamente a sinistra"," su {road}"],Left:["A sinistra"," sur {road}"],SlightLeft:["Mantenere la sinistra"," su {road}"],WaypointReached:["Punto di passaggio raggiunto"],Roundabout:["Alla rotonda, prendere la {exitStr} uscita"],DestinationReached:["Destinazione raggiunta"]},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Partenza",viaPlaceholder:"Intermedia {viaNumber}",endPlaceholder:"Destinazione"}},pt:{directions:{N:"norte",NE:"nordeste",E:"leste",SE:"sudeste",S:"sul",SW:"sudoeste",W:"oeste",NW:"noroeste",SlightRight:"curva ligeira a direita",Right:"direita",SharpRight:"curva fechada a direita",SlightLeft:"ligeira a esquerda",Left:"esquerda",SharpLeft:"curva fechada a esquerda",Uturn:"Meia volta"},instructions:{Head:["Siga {dir}"," na {road}"],Continue:["Continue {dir}"," na {road}"],SlightRight:["Curva ligeira a direita"," na {road}"],Right:["Curva a direita"," na {road}"],SharpRight:["Curva fechada a direita"," na {road}"],TurnAround:["Retorne"],SharpLeft:["Curva fechada a esquerda"," na {road}"],Left:["Curva a esquerda"," na {road}"],SlightLeft:["Curva ligueira a esquerda"," na {road}"],WaypointReached:["Ponto de interesse atingido"],Roundabout:["Pegue a {exitStr} saÃda na rotatória"," na {road}"],DestinationReached:["Destino atingido"],Fork:["Na encruzilhada, vire a {modifier}"," na {road}"],Merge:["Entre à {modifier}"," na {road}"],OnRamp:["Vire {modifier} na rampa"," na {road}"],OffRamp:["Entre na rampa na {modifier}"," na {road}"],EndOfRoad:["Vire {modifier} no fim da rua"," na {road}"],Onto:"na {road}"},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Origem",viaPlaceholder:"Intermédio {viaNumber}",endPlaceholder:"Destino"}},sk:{directions:{N:"sever",NE:"serverovýchod",E:"východ",SE:"juhovýchod",S:"juh",SW:"juhozápad",W:"západ",NW:"serverozápad"},instructions:{Head:["Mierte na {dir}"," na {road}"],Continue:["PokraÄujte na {dir}"," na {road}"],SlightRight:["Mierne doprava"," na {road}"],Right:["Doprava"," na {road}"],SharpRight:["Prudko doprava"," na {road}"],TurnAround:["OtoÄte sa"],SharpLeft:["Prudko doľava"," na {road}"],Left:["Doľava"," na {road}"],SlightLeft:["Mierne doľava"," na {road}"],WaypointReached:["Ste v prejazdovom bode."],Roundabout:["OdboÄte na {exitStr} výjazde"," na {road}"],DestinationReached:["PriÅ¡li ste do cieľa."]},formatOrder:function(n){var i=n%10-1,suffix=[".",".","."];return suffix[i]?n+suffix[i]:n+"."},ui:{startPlaceholder:"ZaÄiatok",viaPlaceholder:"Cez {viaNumber}",endPlaceholder:"Koniec"}},el:{directions:{N:"βÏÏεια",NE:"βοÏειοαναÏολικά",E:"αναÏολικά",SE:"νοÏιοαναÏολικά",S:"νÏÏια",SW:"νοÏÎ¹Î¿Î´Ï Ïικά",W:"Î´Ï Ïικά",NW:"βοÏÎµÎ¹Î¿Î´Ï Ïικά"},instructions:{Head:["ÎαÏÎµÏ Î¸Ï Î½Î¸ÎµÎ¯Ïε {dir}"," ÏÏην {road}"],Continue:["Î£Ï Î½ÎµÏίÏÏε {dir}"," ÏÏην {road}"],SlightRight:["ÎλαÏÏÏÏ Î´ÎµÎ¾Î¹Î¬"," ÏÏην {road}"],Right:["Îεξιά"," ÏÏην {road}"],SharpRight:["ÎÏÏÏομη δεξιά ÏÏÏοÏή"," ÏÏην {road}"],TurnAround:["ÎάνÏε αναÏÏÏοÏή"],SharpLeft:["ÎÏÏÏομη αÏιÏÏεÏή ÏÏÏοÏή"," ÏÏην {road}"],Left:["ÎÏιÏÏεÏά"," ÏÏην {road}"],SlightLeft:["ÎλαÏÏÏÏ Î±ÏιÏÏεÏά"," ÏÏην {road}"],WaypointReached:["ΦÏάÏαÏε ÏÏο Ïημείο αναÏοÏάÏ"],Roundabout:["ÎÎºÎ¿Î»Î¿Ï Î¸Î®ÏÏε Ïην {exitStr} Îξοδο ÏÏο ÎºÏ ÎºÎ»Î¹ÎºÏ ÎºÏμβο"," ÏÏην {road}"],DestinationReached:["ΦÏάÏαÏε ÏÏον ÏÏοοÏιÏÎ¼Ï ÏαÏ"]},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"ÎÏεÏηÏία",viaPlaceholder:"μÎÏÏ {viaNumber}",endPlaceholder:"Î ÏοοÏιÏμÏÏ"}},ca:{ 2514directions:{N:"nord",NE:"nord-est",E:"est",SE:"sud-est",S:"sud",SW:"sud-oest",W:"oest",NW:"nord-oest",SlightRight:"lleu gir a la dreta",Right:"dreta",SharpRight:"gir pronunciat a la dreta",SlightLeft:"gir pronunciat a l'esquerra",Left:"esquerra",SharpLeft:"lleu gir a l'esquerra",Uturn:"mitja volta"},instructions:{Head:["Recte {dir}"," sobre {road}"],Continue:["Continuar {dir}"],TurnAround:["Donar la volta"],WaypointReached:["Ha arribat a un punt del camÃ"],Roundabout:["Agafar {exitStr} sortida a la rotonda"," a {road}"],DestinationReached:["Arribada al destÃ"],Fork:["A la cruïlla gira a la {modifier}"," cap a {road}"],Merge:["Incorpora't {modifier}"," a {road}"],OnRamp:["Gira {modifier} a la sortida"," cap a {road}"],OffRamp:["Pren la sortida {modifier}"," cap a {road}"],EndOfRoad:["Gira {modifier} al final de la carretera"," cap a {road}"],Onto:"cap a {road}"},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Origen",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"DestÃ"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"h",minutes:"min",seconds:"s"}},ru:{directions:{N:"ÑевеÑ",NE:"ÑевеÑовоÑÑок",E:"воÑÑок",SE:"ÑговоÑÑок",S:"Ñг",SW:"Ñгозапад",W:"запад",NW:"ÑевеÑозапад",SlightRight:"плавно напÑаво",Right:"напÑаво",SharpRight:"Ñезко напÑаво",SlightLeft:"плавно налево",Left:"налево",SharpLeft:"Ñезко налево",Uturn:"ÑазвеÑнÑÑÑÑÑ"},instructions:{Head:["ÐаÑаÑÑ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ðµ на {dir}"," по {road}"],Continue:["ÐÑодолжаÑÑ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ðµ на {dir}"," по {road}"],SlightRight:["ÐлавнÑй повоÑÐ¾Ñ Ð½Ð°Ð¿Ñаво"," на {road}"],Right:["ÐапÑаво"," на {road}"],SharpRight:["Резкий повоÑÐ¾Ñ Ð½Ð°Ð¿Ñаво"," на {road}"],TurnAround:["РазвеÑнÑÑÑÑÑ"],SharpLeft:["Резкий повоÑÐ¾Ñ Ð½Ð°Ð»ÐµÐ²Ð¾"," на {road}"],Left:["ÐовоÑÐ¾Ñ Ð½Ð°Ð»ÐµÐ²Ð¾"," на {road}"],SlightLeft:["ÐлавнÑй повоÑÐ¾Ñ Ð½Ð°Ð»ÐµÐ²Ð¾"," на {road}"],WaypointReached:["ТоÑка доÑÑигнÑÑа"],Roundabout:["{exitStr} ÑÑезд Ñ ÐºÐ¾Ð»ÑÑа"," на {road}"],DestinationReached:["ÐконÑание маÑÑÑÑÑа"],Fork:["Ðа Ñазвилке повеÑниÑе {modifier}"," на {road}"],Merge:["ÐеÑеÑÑÑойÑеÑÑ {modifier}"," на {road}"],OnRamp:["ÐовеÑниÑе {modifier} на ÑÑезд"," на {road}"],OffRamp:["СÑезжайÑе на {modifier}"," на {road}"],EndOfRoad:["ÐовеÑниÑе {modifier} в конÑе доÑоги"," на {road}"],Onto:"на {road}"},formatOrder:function(n){return n+"-й"},ui:{startPlaceholder:"ÐаÑало",viaPlaceholder:"ЧеÑез {viaNumber}",endPlaceholder:"ÐонеÑ"},units:{meters:"м",kilometers:"км",yards:"ÑÑд",miles:"ми",hours:"Ñ",minutes:"м",seconds:"Ñ"}},pl:{directions:{N:"póÅnoc",NE:"póÅnocny wschód",E:"wschód",SE:"poÅudniowy wschód",S:"poÅudnie",SW:"poÅudniowy zachód",W:"zachód",NW:"póÅnocny zachód",SlightRight:"lekko w prawo",Right:"w prawo",SharpRight:"ostro w prawo",SlightLeft:"lekko w lewo",Left:"w lewo",SharpLeft:"ostro w lewo",Uturn:"zawróÄ"},instructions:{Head:["Kieruj siÄ na {dir}"," na {road}"],Continue:["Jedź dalej przez {dir}"],TurnAround:["ZawróÄ"],WaypointReached:["Punkt poÅredni"],Roundabout:["Wyjedź {exitStr} zjazdem na rondzie"," na {road}"],DestinationReached:["Dojechano do miejsca docelowego"],Fork:["Na rozwidleniu {modifier}"," na {road}"],Merge:["Zjedź {modifier}"," na {road}"],OnRamp:["Wjazd {modifier}"," na {road}"],OffRamp:["Zjazd {modifier}"," na {road}"],EndOfRoad:["SkrÄÄ {modifier} na koÅcu drogi"," na {road}"],Onto:"na {road}"},formatOrder:function(n){return n+"."},ui:{startPlaceholder:"PoczÄ tek",viaPlaceholder:"Przez {viaNumber}",endPlaceholder:"Koniec"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"godz",minutes:"min",seconds:"s"}}})})()},{}],58:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var OSRMv1=_dereq_("./osrm-v1");module.exports=OSRMv1.extend({options:{serviceUrl:"https://api.mapbox.com/directions/v5",profile:"mapbox/driving",useHints:false},initialize:function(accessToken,options){L.Routing.OSRMv1.prototype.initialize.call(this,options);this.options.requestParameters=this.options.requestParameters||{};this.options.requestParameters.access_token=accessToken}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./osrm-v1":59}],59:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null,corslite=_dereq_("@mapbox/corslite"),polyline=_dereq_("@mapbox/polyline"),osrmTextInstructions=_dereq_("osrm-text-instructions")("v5");var Waypoint=_dereq_("./waypoint");module.exports=L.Class.extend({options:{serviceUrl:"https://router.project-osrm.org/route/v1",profile:"driving",timeout:30*1e3,routingOptions:{alternatives:true,steps:true},polylinePrecision:5,useHints:true,suppressDemoServerWarning:false,language:"en"},initialize:function(options){L.Util.setOptions(this,options);this._hints={locations:{}};if(!this.options.suppressDemoServerWarning&&this.options.serviceUrl.indexOf("//router.project-osrm.org")>=0){console.warn("You are using OSRM's demo server. "+"Please note that it is **NOT SUITABLE FOR PRODUCTION USE**.\n"+"Refer to the demo server's usage policy: "+"https://github.com/Project-OSRM/osrm-backend/wiki/Api-usage-policy\n\n"+"To change, set the serviceUrl option.\n\n"+"Please do not report issues with this server to neither "+"Leaflet Routing Machine or OSRM - it's for\n"+"demo only, and will sometimes not be available, or work in "+"unexpected ways.\n\n"+"Please set up your own OSRM server, or use a paid service "+"provider for production.")}},route:function(waypoints,callback,context,options){var timedOut=false,wps=[],url,timer,wp,i,xhr;options=L.extend({},this.options.routingOptions,options);url=this.buildRouteUrl(waypoints,options);if(this.options.requestParameters){url+=L.Util.getParamString(this.options.requestParameters,url)}timer=setTimeout(function(){timedOut=true;callback.call(context||callback,{status:-1,message:"OSRM request timed out."})},this.options.timeout);for(i=0;i<waypoints.length;i++){wp=waypoints[i];wps.push(new Waypoint(wp.latLng,wp.name,wp.options))}return xhr=corslite(url,L.bind(function(err,resp){var data,error={};clearTimeout(timer);if(!timedOut){if(!err){try{data=JSON.parse(resp.responseText);try{return this._routeDone(data,wps,options,callback,context)}catch(ex){error.status=-3;error.message=ex.toString()}}catch(ex){error.status=-2;error.message="Error parsing OSRM response: "+ex.toString()}}else{error.message="HTTP request failed: "+err.type+(err.target&&err.target.status?" HTTP "+err.target.status+": "+err.target.statusText:"");error.url=url;error.status=-1;error.target=err}callback.call(context||callback,error)}else{xhr.abort()}},this))},requiresMoreDetail:function(route,zoom,bounds){if(!route.properties.isSimplified){return false}var waypoints=route.inputWaypoints,i;for(i=0;i<waypoints.length;++i){if(!bounds.contains(waypoints[i].latLng)){return true}}return false},_routeDone:function(response,inputWaypoints,options,callback,context){var alts=[],actualWaypoints,i,route;context=context||callback;if(response.code!=="Ok"){callback.call(context,{status:response.code});return}actualWaypoints=this._toWaypoints(inputWaypoints,response.waypoints);for(i=0;i<response.routes.length;i++){route=this._convertRoute(response.routes[i]);route.inputWaypoints=inputWaypoints;route.waypoints=actualWaypoints;route.properties={isSimplified:!options||!options.geometryOnly||options.simplifyGeometry};alts.push(route)}this._saveHintData(response.waypoints,inputWaypoints);callback.call(context,null,alts)},_convertRoute:function(responseRoute){var result={name:"",coordinates:[],instructions:[],summary:{totalDistance:responseRoute.distance,totalTime:responseRoute.duration}},legNames=[],waypointIndices=[],index=0,legCount=responseRoute.legs.length,hasSteps=responseRoute.legs[0].steps.length>0,i,j,leg,step,geometry,type,modifier,text,stepToText;if(this.options.stepToText){stepToText=this.options.stepToText}else{stepToText=L.bind(osrmTextInstructions.compile,osrmTextInstructions,this.options.language)}for(i=0;i<legCount;i++){leg=responseRoute.legs[i];legNames.push(leg.summary&&leg.summary.charAt(0).toUpperCase()+leg.summary.substring(1));for(j=0;j<leg.steps.length;j++){step=leg.steps[j];geometry=this._decodePolyline(step.geometry);result.coordinates.push.apply(result.coordinates,geometry);type=this._maneuverToInstructionType(step.maneuver,i===legCount-1);modifier=this._maneuverToModifier(step.maneuver);text=stepToText(step,{legCount:legCount,legIndex:i});if(type){if(i==0&&step.maneuver.type=="depart"||step.maneuver.type=="arrive"){waypointIndices.push(index)}result.instructions.push({type:type,distance:step.distance,time:step.duration,road:step.name,direction:this._bearingToDirection(step.maneuver.bearing_after),exit:step.maneuver.exit,index:index,mode:step.mode,modifier:modifier,text:text})}index+=geometry.length}}result.name=legNames.join(", ");if(!hasSteps){result.coordinates=this._decodePolyline(responseRoute.geometry)}else{result.waypointIndices=waypointIndices}return result},_bearingToDirection:function(bearing){var oct=Math.round(bearing/45)%8;return["N","NE","E","SE","S","SW","W","NW"][oct]},_maneuverToInstructionType:function(maneuver,lastLeg){switch(maneuver.type){case"new name":return"Continue";case"depart":return"Head";case"arrive":return lastLeg?"DestinationReached":"WaypointReached";case"roundabout":case"rotary":return"Roundabout";case"merge":case"fork":case"on ramp":case"off ramp":case"end of road":return this._camelCase(maneuver.type);default:return this._camelCase(maneuver.modifier)}},_maneuverToModifier:function(maneuver){var modifier=maneuver.modifier;switch(maneuver.type){case"merge":case"fork":case"on ramp":case"off ramp":case"end of road":modifier=this._leftOrRight(modifier)}return modifier&&this._camelCase(modifier)},_camelCase:function(s){var words=s.split(" "),result="";for(var i=0,l=words.length;i<l;i++){result+=words[i].charAt(0).toUpperCase()+words[i].substring(1)}return result},_leftOrRight:function(d){return d.indexOf("left")>=0?"Left":"Right"},_decodePolyline:function(routeGeometry){var cs=polyline.decode(routeGeometry,this.options.polylinePrecision),result=new Array(cs.length),i;for(i=cs.length-1;i>=0;i--){result[i]=L.latLng(cs[i])}return result},_toWaypoints:function(inputWaypoints,vias){var wps=[],i,viaLoc;for(i=0;i<vias.length;i++){viaLoc=vias[i].location;wps.push(new Waypoint(L.latLng(viaLoc[1],viaLoc[0]),inputWaypoints[i].name,inputWaypoints[i].options))}return wps},buildRouteUrl:function(waypoints,options){var locs=[],hints=[],wp,latLng,computeInstructions,computeAlternative=true;for(var i=0;i<waypoints.length;i++){wp=waypoints[i];latLng=wp.latLng;locs.push(latLng.lng+","+latLng.lat);hints.push(this._hints.locations[this._locationKey(latLng)]||"")}computeInstructions=true;return this.options.serviceUrl+"/"+this.options.profile+"/"+locs.join(";")+"?"+(options.geometryOnly?options.simplifyGeometry?"":"overview=full":"overview=false")+"&alternatives="+computeAlternative.toString()+"&steps="+computeInstructions.toString()+(this.options.useHints?"&hints="+hints.join(";"):"")+(options.allowUTurns?"&continue_straight="+!options.allowUTurns:"")},_locationKey:function(location){return location.lat+","+location.lng},_saveHintData:function(actualWaypoints,waypoints){var loc;this._hints={locations:{}};for(var i=actualWaypoints.length-1;i>=0;i--){loc=waypoints[i].latLng;this._hints.locations[this._locationKey(loc)]=actualWaypoints[i].hint}}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./waypoint":61,"@mapbox/corslite":1,"@mapbox/polyline":2,"osrm-text-instructions":3}],60:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var GeocoderElement=_dereq_("./geocoder-element");var Waypoint=_dereq_("./waypoint");module.exports=(L.Layer||L.Class).extend({includes:typeof L.Evented!=="undefined"&&L.Evented.prototype||L.Mixin.Events,options:{dragStyles:[{color:"black",opacity:.15,weight:9},{color:"white",opacity:.8,weight:6},{color:"red",opacity:1,weight:2,dashArray:"7,12"}],draggableWaypoints:true,routeWhileDragging:false,addWaypoints:true,reverseWaypoints:false,addButtonClassName:"",language:"en",createGeocoderElement:function(wp,i,nWps,plan){return new GeocoderElement(wp,i,nWps,plan)},createMarker:function(i,wp){var options={draggable:this.draggableWaypoints},marker=L.marker(wp.latLng,options);return marker},geocodersClassName:""},initialize:function(waypoints,options){L.Util.setOptions(this,options);this._waypoints=[];this.setWaypoints(waypoints)},isReady:function(){var i;for(i=0;i<this._waypoints.length;i++){if(!this._waypoints[i].latLng){return false}}return true},getWaypoints:function(){var i,wps=[];for(i=0;i<this._waypoints.length;i++){wps.push(this._waypoints[i])}return wps},setWaypoints:function(waypoints){var args=[0,this._waypoints.length].concat(waypoints);this.spliceWaypoints.apply(this,args);return this},spliceWaypoints:function(){var args=[arguments[0],arguments[1]],i;for(i=2;i<arguments.length;i++){args.push(arguments[i]&&arguments[i].hasOwnProperty("latLng")?arguments[i]:new Waypoint(arguments[i]))}[].splice.apply(this._waypoints,args);while(this._waypoints.length<2){this.spliceWaypoints(this._waypoints.length,0,null)}this._updateMarkers();this._fireChanged.apply(this,args)},onAdd:function(map){this._map=map;this._updateMarkers()},onRemove:function(){var i;this._removeMarkers();if(this._newWp){for(i=0;i<this._newWp.lines.length;i++){this._map.removeLayer(this._newWp.lines[i])}}delete this._map},createGeocoders:function(){var container=L.DomUtil.create("div","leaflet-routing-geocoders "+this.options.geocodersClassName),waypoints=this._waypoints,addWpBtn,reverseBtn;this._geocoderContainer=container;this._geocoderElems=[];if(this.options.addWaypoints){addWpBtn=L.DomUtil.create("button","leaflet-routing-add-waypoint "+this.options.addButtonClassName,container);addWpBtn.setAttribute("type","button");L.DomEvent.addListener(addWpBtn,"click",function(){this.spliceWaypoints(waypoints.length,0,null)},this)}if(this.options.reverseWaypoints){reverseBtn=L.DomUtil.create("button","leaflet-routing-reverse-waypoints",container);reverseBtn.setAttribute("type","button");L.DomEvent.addListener(reverseBtn,"click",function(){this._waypoints.reverse();this.setWaypoints(this._waypoints)},this)}this._updateGeocoders();this.on("waypointsspliced",this._updateGeocoders);return container},_createGeocoder:function(i){var geocoder=this.options.createGeocoderElement(this._waypoints[i],i,this._waypoints.length,this.options);geocoder.on("delete",function(){if(i>0||this._waypoints.length>2){this.spliceWaypoints(i,1)}else{this.spliceWaypoints(i,1,new Waypoint)}},this).on("geocoded",function(e){this._updateMarkers();this._fireChanged();this._focusGeocoder(i+1);this.fire("waypointgeocoded",{waypointIndex:i,waypoint:e.waypoint})},this).on("reversegeocoded",function(e){this.fire("waypointgeocoded",{waypointIndex:i,waypoint:e.waypoint})},this);return geocoder},_updateGeocoders:function(){var elems=[],i,geocoderElem;for(i=0;i<this._geocoderElems.length;i++){this._geocoderContainer.removeChild(this._geocoderElems[i].getContainer())}for(i=this._waypoints.length-1;i>=0;i--){geocoderElem=this._createGeocoder(i);this._geocoderContainer.insertBefore(geocoderElem.getContainer(),this._geocoderContainer.firstChild);elems.push(geocoderElem)}this._geocoderElems=elems.reverse()},_removeMarkers:function(){var i;if(this._markers){for(i=0;i<this._markers.length;i++){if(this._markers[i]){this._map.removeLayer(this._markers[i])}}}this._markers=[]},_updateMarkers:function(){var i,m;if(!this._map){return}this._removeMarkers();for(i=0;i<this._waypoints.length;i++){if(this._waypoints[i].latLng){m=this.options.createMarker(i,this._waypoints[i],this._waypoints.length);if(m){m.addTo(this._map);if(this.options.draggableWaypoints){this._hookWaypointEvents(m,i)}}}else{m=null}this._markers.push(m)}},_fireChanged:function(){this.fire("waypointschanged",{waypoints:this.getWaypoints()});if(arguments.length>=2){this.fire("waypointsspliced",{index:Array.prototype.shift.call(arguments),nRemoved:Array.prototype.shift.call(arguments),added:arguments})}},_hookWaypointEvents:function(m,i,trackMouseMove){var eventLatLng=function(e){return trackMouseMove?e.latlng:e.target.getLatLng()},dragStart=L.bind(function(e){this.fire("waypointdragstart",{index:i,latlng:eventLatLng(e)})},this),drag=L.bind(function(e){this._waypoints[i].latLng=eventLatLng(e);this.fire("waypointdrag",{index:i,latlng:eventLatLng(e)})},this),dragEnd=L.bind(function(e){this._waypoints[i].latLng=eventLatLng(e);this._waypoints[i].name="";if(this._geocoderElems){this._geocoderElems[i].update(true)}this.fire("waypointdragend",{index:i,latlng:eventLatLng(e)});this._fireChanged()},this),mouseMove,mouseUp;if(trackMouseMove){mouseMove=L.bind(function(e){this._markers[i].setLatLng(e.latlng);drag(e)},this);mouseUp=L.bind(function(e){this._map.dragging.enable();this._map.off("mouseup",mouseUp);this._map.off("mousemove",mouseMove);dragEnd(e)},this);this._map.dragging.disable();this._map.on("mousemove",mouseMove);this._map.on("mouseup",mouseUp);dragStart({latlng:this._waypoints[i].latLng})}else{m.on("dragstart",dragStart);m.on("drag",drag);m.on("dragend",dragEnd)}},dragNewWaypoint:function(e){var newWpIndex=e.afterIndex+1;if(this.options.routeWhileDragging){this.spliceWaypoints(newWpIndex,0,e.latlng);this._hookWaypointEvents(this._markers[newWpIndex],newWpIndex,true)}else{this._dragNewWaypoint(newWpIndex,e.latlng)}},_dragNewWaypoint:function(newWpIndex,initialLatLng){var wp=new Waypoint(initialLatLng),prevWp=this._waypoints[newWpIndex-1],nextWp=this._waypoints[newWpIndex],marker=this.options.createMarker(newWpIndex,wp,this._waypoints.length+1),lines=[],draggingEnabled=this._map.dragging.enabled(),mouseMove=L.bind(function(e){var i,latLngs;if(marker){marker.setLatLng(e.latlng)}for(i=0;i<lines.length;i++){latLngs=lines[i].getLatLngs();latLngs.splice(1,1,e.latlng);lines[i].setLatLngs(latLngs)}L.DomEvent.stop(e)},this),mouseUp=L.bind(function(e){var i;if(marker){this._map.removeLayer(marker)}for(i=0;i<lines.length;i++){this._map.removeLayer(lines[i])}this._map.off("mousemove",mouseMove);this._map.off("mouseup",mouseUp);this.spliceWaypoints(newWpIndex,0,e.latlng);if(draggingEnabled){this._map.dragging.enable()}L.DomEvent.stop(e)},this),i;if(marker){marker.addTo(this._map)}for(i=0;i<this.options.dragStyles.length;i++){lines.push(L.polyline([prevWp.latLng,initialLatLng,nextWp.latLng],this.options.dragStyles[i]).addTo(this._map))}if(draggingEnabled){this._map.dragging.disable()}this._map.on("mousemove",mouseMove);this._map.on("mouseup",mouseUp)},_focusGeocoder:function(i){if(this._geocoderElems[i]){this._geocoderElems[i].focus()}else{document.activeElement.blur()}}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./geocoder-element":52,"./waypoint":61}],61:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.Class.extend({options:{allowUTurn:false},initialize:function(latLng,name,options){L.Util.setOptions(this,options);this.latLng=L.latLng(latLng);this.name=name}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}]},{},[53]);
2515 2516(function (L) { 2517 if (!L) return; 2518 2519 /** 2520 * ---------------------------------------- 2521 * MARKER EXTENSIONS 2522 * ---------------------------------------- 2523 */ 2524 2525 // Save original setIcon method for safe override 2526 if (!L.Marker.prototype._setIconOriginal) { 2527 L.Marker.prototype._setIconOriginal = L.Marker.prototype.setIcon; 2528 } 2529 2530 // Extend L.Marker with Google Mapsâlike methods 2531 L.Marker.include({ 2532 2533 /** 2534 * Mimics Google Maps setMap() to add or remove marker from map. 2535 */ 2536 setMap: function (map) { 2537 if (map) { 2538 this._mapRef = map; 2539 this.addTo(map); 2540 this._visible = true; 2541 } else if (this._mapRef) { 2542 this._mapRef.removeLayer(this); 2543 this._visible = false; 2544 } 2545 }, 2546 2547 /** 2548 * Show or hide marker on map. 2549 */ 2550 setVisible: function (show) { 2551 if (!this._mapRef && this._map) { 2552 this._mapRef = this._map; 2553 } 2554 2555 if (show) { 2556 this._mapRef && this.addTo(this._mapRef); 2557 this._visible = true; 2558 } else if (this._mapRef) { 2559 this._mapRef.removeLayer(this); 2560 this._visible = false; 2561 } 2562 }, 2563 2564 /** 2565 * Return true if marker is currently visible. 2566 */ 2567 getVisible: function () { 2568 return !!this._visible; 2569 }, 2570 2571 /** 2572 * Returns current position of the marker. 2573 */ 2574 getPosition: function () { 2575 return this.getLatLng(); 2576 }, 2577 2578 /** 2579 * Sets marker position to the given latlng. 2580 */ 2581 setPosition: function (latlng) { 2582 return this.setLatLng(latlng); 2583 }, 2584 2585 /** 2586 * Binds a reference to the map, used internally for visibility. 2587 */ 2588 bindMap: function (map) { 2589 this._mapRef = map; 2590 this._visible = true; 2591 }, 2592 2593 /** 2594 * Apply animation classes (limited to CSS classes like bounce). 2595 */ 2596 setAnimation: function (animationType) { 2597 const el = this._icon; 2598 if (!el) return; 2599 2600 el.classList.remove('leaflet-bounce-animation'); 2601 2602 if (animationType === 'bounce') { 2603 el.classList.add('leaflet-bounce-animation'); 2604 } 2605 }, 2606 2607 /** 2608 * Safe override of setIcon to accept URL strings (like Google). 2609 */ 2610 setIcon: function (icon) { 2611 // If icon is a string, convert to default L.icon 2612 if (typeof icon === 'string') { 2613 icon = L.icon({ 2614 iconUrl: icon, 2615 iconSize: [32, 32], 2616 iconAnchor: [16, 32], 2617 popupAnchor: [0, -55] 2618 }); 2619 } 2620 2621 // If icon is an object with Google-style format 2622 if (icon && icon.url) { 2623 const size = icon.scaledSize || [32, 32]; 2624 icon = L.icon({ 2625 iconUrl: icon.url, 2626 iconSize: size, 2627 iconAnchor: [size[0] / 2, size[1]], 2628 popupAnchor: [0, -Math.max(40, size[1])] 2629 }); 2630 } 2631 2632 return this._setIconOriginal(icon); 2633 } 2634 }); 2635 2636 /** 2637 * ---------------------------------------- 2638 * POPUP EXTENSIONS 2639 * ---------------------------------------- 2640 */ 2641 L.Popup.include({ 2642 2643 /** 2644 * Opens popup at marker position on given map (Google-style). 2645 */ 2646 open: function (map, marker) { 2647 if (!map || !marker) return this; 2648 2649 const latlng = marker.getLatLng(); 2650 this.setLatLng(latlng); 2651 2652 if (!this._map) { 2653 map.openPopup(this); 2654 } 2655 2656 return this; 2657 }, 2658 2659 /** 2660 * Closes popup from its parent map. 2661 */ 2662 close: function () { 2663 if (this._map) { 2664 this._map.closePopup(this); 2665 } 2666 } 2667 }); 2668 2669 /** 2670 * ---------------------------------------- 2671 * POLYLINE EXTENSIONS 2672 * ---------------------------------------- 2673 */ 2674 if (L.Polyline) { 2675 L.Polyline.include({ 2676 2677 /** 2678 * Mimics Google Maps Polyline setMap() method. 2679 */ 2680 setMap: function (map) { 2681 if (map) { 2682 if (!map.hasLayer(this)) { 2683 this.addTo(map); 2684 } 2685 } else if (this._map) { 2686 this._map.removeLayer(this); 2687 } 2688 } 2689 }); 2690 } 2691 2692 /** 2693 * ---------------------------------------- 2694 * MAP EXTENSIONS 2695 * ---------------------------------------- 2696 */ 2697 L.Map.include({ 2698 2699 /** 2700 * Placeholder for setOptions() (noop for Leaflet). 2701 */ 2702 setOptions: function (options) {
2703 console.warn('setOptions() called in Leaflet. This method does nothing.'); 2704 return this; 2705 }, 2706 2707 /** 2708 * Mimics Google Maps setCenter(), accepting [lat, lng] or LatLng object. 2709 */ 2710 setCenter: function (position) { 2711 if (!position) return; 2712 2713 const latlng = Array.isArray(position) 2714 ? L.latLng(position[0], position[1]) 2715 : position; 2716 2717 this.panTo(latlng); 2718 } 2719 }); 2720 2721})(window.L); 2722 2723/** 2724 * WpgmpBaseMaps class - provides shared map functionality. 2725 */ 2726(function ($, window, document) { 2727 2728class WpgmpBaseMaps { 2729 constructor(element, map_data = {},places = []) { 2730 var options; 2731 this.element = element; 2732 this.map_data = $.extend({}, {}, map_data); 2733 options = this.map_data.map_options; 2734 this.settings = $.extend({ 2735 "min_zoom": "0", 2736 "max_zoom": "19", 2737 "zoom": "5", 2738 "map_type_id": "ROADMAP", 2739 "scroll_wheel": true, 2740 "map_visual_refresh": false, 2741 "full_screen_control": false, 2742 "full_screen_control_position": "BOTTOM_RIGHT", 2743 "zoom_control": true, 2744 "zoom_control_style": "SMALL", 2745 "zoom_control_position": "TOP_LEFT", 2746 "camera_control_position" : "BOTTOM_RIGHT", 2747 "map_type_control": true, 2748 "map_type_control_style": "HORIZONTAL_BAR", 2749 "map_type_control_position": "RIGHT_TOP", 2750 "scale_control": true, 2751 "street_view_control": true, 2752 "street_view_control_position": "TOP_LEFT", 2753 "overview_map_control": true, 2754 "camera_control": true, 2755 "center_lat": "40.6153983", 2756 "center_lng": "-74.2535216", 2757 "draggable": true, 2758 "gesture": "auto", 2759 }, {}, options); 2760 this.container = $("div[rel='" + $(this.element).attr("id") + "']"); 2761 $(document).find(".wpgmp_map_container_placeholder").remove(); 2762 $(document).find(".wpgmp_hide_map_container").removeClass("wpgmp_hide_map_container"); 2763 2764 2765 this.drawingmanager = {}; 2766 this.places = []; 2767 this.show_places = []; 2768 this.places_for_category_tabs = []; 2769 this.categories = {}; 2770 this.tabs = []; 2771 this.all_shapes = []; 2772 this.wpgmp_polylines = []; 2773 this.wpgmp_polygons = []; 2774 this.wpgmp_circles = []; 2775 this.wpgmp_shape_events = []; 2776 this.wpgmp_rectangles = []; 2777 this.per_page_value = 0; 2778 this.last_remove_cat_id = ''; 2779 this.last_selected_cat_id = ''; 2780 this.last_category_chkbox_action = ''; 2781 this.current_amenities = []; 2782 this.route_directions = []; 2783 this.search_area = ''; 2784 this.filter_position = ''; 2785 this.filter_content = ''; 2786 this.markerClusterer = null; 2787 this.url_filters = []; 2788 this.wpgmp_search_form = ''; 2789 this.enable_search_term = false; 2790 this.search_term = ''; 2791 this.filters = {}; 2792 this.addonInfo = []; 2793 } 2794 2795 // ----------------------------- 2796 // ð Lifecycle 2797 // ----------------------------- 2798 init() { 2799 2800 var map_obj = this; 2801 2802 } 2803 map_loaded() { } 2804 /** 2805 * Resizes and re-centers the map 2806 * Preserves the zoom level and current center position 2807 */ 2808resize_map() { 2809 const map_obj = this; 2810 const isGoogle = map_obj.isMapProvider("google"); 2811 const map = map_obj.map; 2812 2813 if (!map) return; 2814 2815 const center = map.getCenter(); 2816 const zoom = map.getZoom(); 2817 2818 if (isGoogle) { 2819 google.maps.event.trigger(map, "resize"); 2820 map.setCenter(center); 2821 map.setZoom(zoom); 2822 } else { 2823 setTimeout(() => { 2824 map.invalidateSize(true);
2825 map.setView(center, zoom); 2826 }, 200); 2827 } 2828} 2829 2830 responsive_map() { 2831 const map_obj = this; 2832 const isGoogle = map_obj.isMapProvider("google"); 2833 const map = map_obj.map; 2834 2835 window.addEventListener("resize", function () { 2836 const zoom = map.getZoom(); 2837 const center = map.getCenter(); 2838 2839 if (isGoogle) { 2840 google.maps.event.trigger(map, "resize"); 2841 map.setZoom(zoom); 2842 map.setCenter(center); 2843 map.getBounds(); 2844 if (map_obj.map_data.marker_cluster) { 2845 map_obj.set_marker_cluster(); 2846 } 2847 } else { 2848 setTimeout(() => { 2849 map.invalidateSize(true); 2850 map.setView(center, zoom); 2851 }, 200); 2852 } 2853 }); 2854 } 2855 2856 2857 // ----------------------------- 2858 // ð Marker Management 2859 // ----------------------------- 2860 createMarker() { } 2861 marker_bind(marker, handler) { 2862 const map_obj = this; 2863 2864 // If no handler is provided, use default logic 2865 const defaultHandler = function () { 2866 const position = map_obj.isMapProvider("google") 2867 ? marker.getPosition() 2868 : marker.getLatLng(); 2869 2870 const lat = map_obj.isMapProvider("google") ? position.lat() : position.lat; 2871 const lng = map_obj.isMapProvider("google") ? position.lng() : position.lng; 2872 2873 map_obj.wpgmp_geocode(lat, lng).then((result) => { 2874 $("#googlemap_address").val(result.address); 2875 $(".google_latitude").val(result.latitude); 2876 $(".google_longitude").val(result.longitude); 2877 $(".google_city").val(result.city); 2878 $(".google_state").val(result.state); 2879 $(".google_country").val(result.country); 2880 $(".google_postal_code").val(result.postal_code); 2881 }).catch((err) => { 2882 console.error(err); 2883 }); 2884 }; 2885 2886 const dragendHandler = handler || defaultHandler; 2887 2888 if (map_obj.isMapProvider("google")) { 2889 google.maps.event.addListener(marker, "dragend", dragendHandler); 2890 } else { 2891 marker.on("dragend", dragendHandler); 2892 } 2893 } 2894 2895 create_markers() { 2896 const map_obj = this; 2897 const isGoogle = map_obj.isMapProvider("google"); 2898 const places = map_obj.map_data.places; 2899 const remove_keys = []; 2900 const spiderfier_enabled = map_obj.map_data.map_marker_spiderfier_setting?.marker_spiderfy === "true"; 2901 let oms; 2902 2903 if (isGoogle && spiderfier_enabled) { 2904 let oms_args = { 2905 markersWontMove: true, 2906 markersWontHide: true, 2907 basicFormatEvents: true, 2908 keepSpiderfied: true, 2909 }; 2910 2911 if (map_obj.map_data.map_marker_spiderfier_setting.marker_enable_spiral === "true") { 2912 oms_args.circleSpiralSwitchover = map_obj.map_data.map_marker_spiderfier_setting.minimum_markers; 2913 } 2914 2915 oms = new OverlappingMarkerSpiderfier(map_obj.map, oms_args); 2916 } 2917 2918 $.each(places, function (key, place) { 2919 if (!(place.location.lat && place.location.lng)) { 2920 remove_keys.push(key); 2921 return; 2922 } 2923 2924 place.categories ??= {}; 2925 place.location.icon ??= map_obj.settings.marker_default_icon; 2926 2927 // Create marker 2928 if (isGoogle) { 2929 2930 place.marker = map_obj.create_google_marker({ 2931 map: map_obj.map, 2932 position: place.location, 2933 iconUrl: place.location.icon, 2934 title:place.title, 2935 draggable: place.location.draggable, 2936 clickable: place.location.infowindow_disable, 2937 }); 2938 2939 place.marker.bindMap(map_obj.map); 2940 place.marker.setVisible(true); 2941 2942 if (map_obj.settings.infowindow_drop_animation || place.location.animation === "DROP") { 2943 place.marker.setAnimation(google.maps.Animation.DROP); 2944 } 2945 if (place.location.animation === "BOUNCE1") { 2946 place.marker.setAnimation(google.maps.Animation.BOUNCE); 2947 } 2948 2949 if (map_obj.settings.infowindow_filter_only) { 2950 place.marker.setVisible(false); 2951 } 2952 2953 } else { 2954 2955 place.marker = map_obj.create_leaflet_marker({ 2956 map: map_obj.map, 2957 position: [parseFloat(place.location.lat), parseFloat(place.location.lng)], 2958 iconUrl: place.location.icon, 2959 draggable: place.location.draggable, 2960 }); 2961 2962 place.marker.addTo(map_obj.map); 2963 place.marker.setVisible(true); 2964 2965 if (map_obj.settings.infowindow_filter_only) { 2966 place.marker.setVisible(false); 2967 } 2968 2969 if (place.location.infowindow_disable || place.source !== "manual") { 2970 place.marker.bindPopup(place.content); 2971 } 2972 2973 } 2974 2975 // 𪢠Marker bind if editing 2976 if (map_obj.map_data.page === "edit_location") { 2977 map_obj.marker_bind(place.marker); 2978 } 2979 2980 // Infowindow content replacement 2981 const location_categories = Object.values(place.categories).map(cat => "<div class='fc-badge'>"+cat.name+"</div>"); 2982 const marker_image = place.source === "post" 2983 ? place.location.extra_fields.post_featured_image 2984 : place.location.marker_image; 2985 2986 let template = place.source === "post" 2987 ? map_obj.settings.infowindow_geotags_setting 2988 : map_obj.settings.infowindow_setting; 2989 2990 const post_info_class = place.source === "post" 2991 ? `wpgmp_infowindow_post fc-infobox-${map_obj.settings.infowindow_post_skin.name} fc-item-${map_obj.settings.infowindow_post_skin.name}` 2992 : `fc-infobox-${map_obj.settings.infowindow_skin?.name} fc-infowindow-${map_obj.settings.infowindow_skin?.name || "default"}`; 2993 2994 2995 template ??= place.content; 2996 2997 const replaceData = { 2998 "{marker_id}": place.id, 2999 "{marker_title}": place.title, 3000 "{marker_address}": place.address, 3001 "{marker_latitude}": place.location.lat, 3002 "{marker_longitude}": place.location.lng, 3003 "{marker_city}": place.location.city, 3004 "{marker_state}": place.location.state, 3005 "{marker_country}": place.location.country, 3006 "{marker_postal_code}": place.location.postal_code, 3007 "{marker_zoom}": place.location.zoom, 3008 "{marker_icon}": place.location.icon, 3009 "{marker_category}": location_categories.join(""), 3010 "{marker_message}": place.content, 3011 "{marker_image}": marker_image, 3012 "{get_directions_link}": `https://www.google.com/maps/place/${parseFloat(place.location.lat)},${parseFloat(place.location.lng)}` 3013 }; 3014 3015 // Inject extra fields 3016 if (place.location.extra_fields) { 3017 for (const [key, val] of Object.entries(place.location.extra_fields)) { 3018 replaceData[`{${key}}`] = val || "<div class='wpgmp_empty'>wpgmp_empty</div>"; 3019 } 3020 } 3021 3022 template = template.replace(/{#if (.*?)}([\s\S]*?){\/if}/g, (_, key, content) => { 3023 const val = replaceData[`{${key}}`]; 3024 return val && val !== "<div class='wpgmp_empty'>wpgmp_empty</div>" ? content : ""; 3025 }); 3026 3027 if (map_obj.map_data.map_options.link_extra_field) { 3028 const anchor_tag = map_obj.map_data.map_options.link_extra_field; 3029 for (const prop_an in anchor_tag) { 3030 if (replaceData[prop_an] && replaceData[prop_an] !== "<div class='wpgmp_empty'>wpgmp_empty</div>") { 3031 template = template.replace(prop_an, anchor_tag[prop_an]); 3032 } 3033 } 3034 } 3035 3036 for (const prop in replaceData) { 3037 template = template.replaceAll(prop, replaceData[prop] ?? ""); 3038 } 3039 3040 const tempObject = $("<div/>").html(template); 3041 tempObject.find(".wpgmp_extra_field:contains('wpgmp_empty')").remove(); 3042 tempObject.find(".wpgmp_empty").prev().remove(); 3043 tempObject.find(".wpgmp_empty").remove(); 3044 3045 let content = tempObject.prop("outerHTML") || ""; 3046
3047 if (map_obj.settings.map_infowindow_customisations && map_obj.settings.show_infowindow_header) { 3048 content = `<div class="wpgmp_infowindow ${post_info_class}"><div class="wpgmp_iw_head"><div class="wpgmp_iw_head_content">${place.title}</div></div><div class="wpgmp_iw_content">${content}</div></div>`; 3049 } else { 3050 content = `<div class="wpgmp_infowindow ${post_info_class}"><div class="wpgmp_iw_content">${content}</div></div>`; 3051 } 3052 3053 place.infowindow_data = content; 3054 place.infowindow = map_obj.infowindow_marker; 3055 3056 3057 3058 let on_event = map_obj.settings.infowindow_open_event; 3059 if (map_obj.isMobile) on_event = "click"; 3060 if (oms && on_event === "click") on_event = "spider_click"; 3061 3062 3063 if (map_obj.useAdvancedMarker && place.marker?.content && on_event == 'mouseover') { 3064 const content = place.marker.content; 3065 3066 content.addEventListener(on_event, function () { 3067 3068 map_obj.places.forEach(p => { 3069 p.infowindow?.close?.(); 3070 p.marker?.setAnimation?.(null); 3071 }); 3072 3073 map_obj.openInfoWindow(place); 3074 3075 if (map_obj.settings.infowindow_bounce_animation === on_event) { 3076 map_obj.toggle_bounce(place.marker); 3077 } 3078 }); 3079 } else { 3080 // Fallback for classic markers (already working for you) 3081 map_obj.event_listener(place.marker, on_event, function () { 3082 3083 map_obj.places.forEach(p => { 3084 p.infowindow?.close?.(); 3085 p.marker?.setAnimation?.(null); 3086 }); 3087 3088 map_obj.openInfoWindow(place); 3089 3090 if (map_obj.settings.infowindow_bounce_animation === on_event) { 3091 map_obj.toggle_bounce(place.marker); 3092 } 3093 }); 3094 } 3095 3096 3097 if (oms) oms.addMarker(place.marker); 3098 3099 if (on_event === "mouseover") { 3100 map_obj.event_listener(place.marker, "click", function () { 3101 if (map_obj.settings.infowindow_click_change_zoom > 0) { 3102 map_obj.map.setZoom(map_obj.settings.infowindow_click_change_zoom); 3103 } 3104 if (map_obj.settings.infowindow_click_change_center) { 3105 map_obj.map.setCenter(place.marker.getPosition()); 3106 } 3107 }); 3108 } 3109 3110 if (map_obj.settings.infowindow_bounce_animation === "mouseover" && on_event !== "mouseover") { 3111 map_obj.event_listener(place.marker, "mouseover", function () { 3112 if(isGoogle){ 3113 place.marker.setAnimation(google.maps.Animation.BOUNCE); 3114 }else{ 3115 place.marker.setAnimation("bounce"); 3116 } 3117 3118 }); 3119 map_obj.event_listener(place.marker, "mouseout", function () { 3120 place.marker.setAnimation(null); 3121 }); 3122 } 3123 3124 if (map_obj.settings.infowindow_bounce_animation) { 3125 if (isGoogle) { 3126 google.maps.event.addListener(place.infowindow, "closeclick", function () { 3127 place.marker.setAnimation(null); 3128 }); 3129 } 3130 } 3131 3132 if (place.location.infowindow_default_open || map_obj.settings.default_infowindow_open) { 3133 setTimeout(function(){ 3134 map_obj.openInfoWindow(place); 3135 },500) 3136 } 3137 map_obj.places.push(place); 3138 }); 3139 3140 remove_keys.forEach(key => delete places[key]); 3141 } 3142 3143 display_markers() { 3144 const map_obj = this; 3145 3146 map_obj.show_places = []; 3147 const categories = {}; 3148 3149 for (const place of map_obj.places) { 3150 3151 if (map_obj.settings.infowindow_filter_only === true) { 3152 place.marker.setVisible(false); 3153 } else { 3154 place.marker.setVisible(true); 3155 map_obj.show_places.push(place); 3156 } 3157 3158 if (place.categories) { 3159 $.each(place.categories, (_, category) => { 3160 if (!categories[category.name]) { 3161 categories[category.name] = category; 3162 } 3163 }); 3164 } 3165 } 3166 3167 map_obj.categories = categories; 3168 } 3169 placeMarker(lat, lng) { 3170 const map_obj = this; 3171 const isGoogle = map_obj.isMapProvider("google"); 3172 const position = isGoogle 3173 ? {"lat":lat,"lng":lng} 3174 : L.latLng(lat, lng); 3175 // ðï¸ Remove existing marker (Leaflet: setMap(null), Google: setMap(null)) 3176 if (map_obj.searchMarker) { 3177 map_obj.searchMarker.setMap(null); 3178 } 3179 3180 // Create new marker 3181 if (isGoogle) { 3182 3183 map_obj.searchMarker = map_obj.create_google_marker({ 3184 map: map_obj.map, 3185 position, 3186 iconUrl: map_obj.settings.marker_default_icon || '', 3187 draggable: true, 3188 anchorPoint: { x: 0, y: -29 }, 3189 }); 3190 3191 3192 } else { 3193 3194 map_obj.searchMarker = map_obj.create_leaflet_marker({ 3195 map: map_obj.map, 3196 position, 3197 iconUrl: map_obj.settings.marker_default_icon || "", 3198 draggable: true, 3199 }); 3200 3201 3202 } 3203 3204 // Add to map using .setMap()
3205 map_obj.searchMarker.setMap(map_obj.map); 3206 3207 // ind marker events if defined 3208 if (typeof map_obj.marker_bind === "function") { 3209 map_obj.marker_bind(map_obj.searchMarker); 3210 } 3211 3212 // Center and zoom 3213 map_obj.map.setCenter(position); 3214 map_obj.map.setZoom(17); 3215 } 3216 3217 toggle_bounce(marker) { 3218 const isGoogle = this.isMapProvider("google"); 3219 if (isGoogle) { 3220 if (marker.getAnimation() !== null) { 3221 marker.setAnimation(null); 3222 } else { 3223 marker.setAnimation(google.maps.Animation.BOUNCE); 3224 } 3225 } else { 3226 const el = marker._icon; 3227 if (!el) return; 3228 const className = 'leaflet-bounce-animation'; 3229 if (el.classList.contains(className)) { 3230 el.classList.remove(className); 3231 } else { 3232 el.classList.add(className); 3233 } 3234 } 3235 } 3236 show_center_circle() { 3237 const map_obj = this; 3238 const isGoogle = map_obj.isMapProvider("google"); 3239 3240 if (!map_obj.settings.center_circle_radius) { 3241 map_obj.settings.center_circle_radius = 5; 3242 } 3243 3244 const radiusInMeters = parseFloat(map_obj.settings.center_circle_radius) * 1000; 3245 const center = map_obj.map.getCenter(); 3246 3247 3248 3249 if (isGoogle) { 3250 // Remove previous circle if it exists 3251 if (map_obj.set_center_circle) { 3252 map_obj.set_center_circle.setMap(null); 3253 } 3254 3255 map_obj.set_center_circle = new google.maps.Circle({ 3256 map: map_obj.map, 3257 center: center, 3258 fillColor: map_obj.settings.center_circle_fillcolor, 3259 fillOpacity: map_obj.settings.center_circle_fillopacity, 3260 strokeColor: map_obj.settings.center_circle_strokecolor, 3261 strokeOpacity: map_obj.settings.center_circle_strokeopacity, 3262 strokeWeight: map_obj.settings.center_circle_strokeweight, 3263 radius: radiusInMeters 3264 }); 3265 } else { 3266 map_obj.set_center_circle = L.circle(center, { 3267 fillColor: map_obj.settings.center_circle_fillcolor, 3268 fillOpacity: map_obj.settings.center_circle_fillopacity, 3269 color: map_obj.settings.center_circle_strokecolor, 3270 opacity: map_obj.settings.center_circle_strokeopacity, 3271 weight: map_obj.settings.center_circle_strokeweight, 3272 radius: radiusInMeters 3273 }).addTo(map_obj.map); 3274 } 3275 } 3276 3277 /** 3278 * Adds a marker to the center of the map and binds an optional infowindow 3279 */ 3280show_center_marker() { 3281 const map_obj = this; 3282 const isGoogle = map_obj.isMapProvider("google"); 3283 const center = map_obj.map.getCenter(); 3284 const hasInfo = map_obj.settings.center_marker_infowindow !== ""; 3285 3286 if (isGoogle) { 3287 3288 map_obj.map_center_marker = map_obj.create_google_marker({ 3289 map: map_obj.map, 3290 position: {lat:center.lat(),lng:center.lng()}, 3291 title: map_obj.settings.center_marker_infowindow, 3292 iconUrl: map_obj.settings.center_marker_icon, 3293 clickable: hasInfo, 3294 }); 3295 3296 3297 if (!map_obj.map_center_info) { 3298 map_obj.map_center_info = map_obj.infowindow_marker; 3299 } 3300 3301 if (hasInfo) { 3302 google.maps.event.addListener(map_obj.map_center_marker, "click", function () { 3303 map_obj.map_center_info.setPosition(center); 3304 const content = map_obj.settings.map_infowindow_customisations === true 3305 ? `<div class='fc-infobox-root'><div class='fc-infobox'><div class='fc-infobox-body'>${map_obj.settings.center_marker_infowindow}</div></div></div>` 3306 : map_obj.settings.center_marker_infowindow; 3307 map_obj.map_center_info.setContent(content); 3308 map_obj.map_center_info.open(map_obj.map, this); 3309 }); 3310 } 3311 } else { 3312 3313 map_obj.map_center_marker = map_obj.create_leaflet_marker({ 3314 map: map_obj.map, 3315 position: center, 3316 iconUrl: map_obj.settings.center_marker_icon, 3317 draggable: true, 3318 }); 3319 3320 3321 if (!map_obj.map_center_info) { 3322 map_obj.map_center_info = map_obj.infowindow_marker; 3323 } 3324 3325 if (hasInfo) { 3326 map_obj.event_listener(map_obj.map_center_marker, "click", function () { 3327 const content = `<div class='fc-infobox-root'><div class='fc-infobox'><div class='fc-infobox-body'>${map_obj.settings.center_marker_infowindow}</div></div></div>`; 3328 const latlng = map_obj.map.getCenter(); 3329 map_obj.map_center_info.setContent(content).setLatLng(latlng).openOn(map_obj.map); 3330 }); 3331 } 3332 } 3333} 3334 3335 // Unified version to center the map based on user's current location 3336center_by_nearest() { 3337 const map_obj = this; 3338 const isGoogle = map_obj.isMapProvider("google"); 3339 3340 this.get_current_location( 3341 function (user_position) { 3342 if (!map_obj.user_location_marker) { 3343 if (isGoogle) { 3344 3345 map_obj.user_location_marker = map_obj.create_google_marker({ 3346 map: map_obj.map, 3347 position: {"lat":user_position.lat(),"lng":user_position.lng()}, 3348 title: wpgmp_local.center_location_message, 3349 iconUrl: map_obj.map_data.map_options.center_marker_icon, 3350 }); 3351 3352 3353 } else { 3354 3355 map_obj.user_location_marker = map_obj.create_leaflet_marker({ 3356 map: map_obj.map, 3357 position: user_position, 3358 iconUrl: map_obj.settings.center_marker_icon, 3359 title: wpgmp_local.center_location_message, 3360 }); 3361 3362 3363 } 3364 } 3365 3366 if (!map_obj.map_center_info) { 3367 map_obj.map_center_info = map_obj.infowindow_marker; 3368 } 3369 3370 if (map_obj.settings.center_marker_infowindow !== "") { 3371 const showInfo = function () { 3372 const content = map_obj.settings.map_infowindow_customisations 3373 ? `<div class='wpgmp_infowindow'><div class='wpgmp_iw_content'>${map_obj.settings.center_marker_infowindow}</div></div>` 3374 : map_obj.settings.center_marker_infowindow; 3375 3376 if (isGoogle) { 3377 map_obj.map_center_info.setPosition(user_position); 3378 map_obj.map_center_info.setContent(content); 3379 map_obj.map_center_info.open(map_obj.map, map_obj.user_location_marker); 3380 } else { 3381 map_obj.map_center_info.setContent(content); 3382 map_obj.map_center_info.setLatLng(user_position).openOn(map_obj.map); 3383 } 3384 }; 3385 3386 if (isGoogle) { 3387 google.maps.event.addListener(map_obj.user_location_marker, "click", showInfo); 3388 } else { 3389 map_obj.event_listener(map_obj.user_location_marker, "click", showInfo); 3390 } 3391 } 3392 3393 if (isGoogle) { 3394 map_obj.map.setCenter(user_position); 3395 } else {
3396 map_obj.map.setView(user_position, map_obj.settings.zoom); 3397 } 3398 3399 if (map_obj.settings.show_center_circle === true) { 3400 map_obj.show_center_circle(); 3401 } 3402 3403 if ( 3404 map_obj.map_data.listing && 3405 map_obj.map_data.listing.apply_default_radius === true 3406 ) { 3407 map_obj.search_area = user_position; 3408 } 3409 }, 3410 function (user_position) { 3411 // Fallback on error with same logic 3412 if (!map_obj.user_location_marker) { 3413 map_obj.user_location_marker = L.marker(user_position, { 3414 icon: L.icon({ 3415 iconUrl: map_obj.settings.center_marker_icon, 3416 iconAnchor: [16, 32], 3417 popupAnchor: [0, -30] 3418 }), 3419 title: wpgmp_local.center_location_message 3420 }).addTo(map_obj.map); 3421 } 3422 3423 if (!map_obj.map_center_info) { 3424 map_obj.map_center_info = map_obj.infowindow_marker; 3425 } 3426 3427 if (map_obj.settings.center_marker_infowindow !== "") { 3428 map_obj.event_listener(map_obj.user_location_marker, "click", function () { 3429 const content = `<div class='wpgmp_infowindow'><div class='wpgmp_iw_content'>${map_obj.settings.center_marker_infowindow}</div></div>`; 3430 map_obj.map_center_info.setContent(content); 3431 map_obj.map_center_info.setLatLng(user_position).openOn(map_obj.map); 3432 }); 3433 } 3434 3435 map_obj.map.panTo(user_position); 3436 3437 if (map_obj.settings.show_center_circle === true) { 3438 map_obj.show_center_circle(); 3439 } 3440 3441 if ( 3442 map_obj.map_data.listing && 3443 map_obj.map_data.listing.apply_default_radius === true 3444 ) { 3445 map_obj.search_area = user_position; 3446 } 3447 } 3448 ); 3449} 3450 3451 /** 3452 * Adjusts the map viewport to fit all visible markers 3453 */ 3454fit_bounds() { 3455 const map_obj = this; 3456 const isGoogle = map_obj.isMapProvider("google"); 3457 const places = map_obj.map_data.places || []; 3458 let bounds; 3459 if (places.length === 0) return; 3460 3461 if (isGoogle) { 3462 bounds = new google.maps.LatLngBounds(); 3463 places.forEach((place) => { 3464 if (place.location.lat && place.location.lng) { 3465 bounds.extend(new google.maps.LatLng( 3466 parseFloat(place.location.lat), 3467 parseFloat(place.location.lng) 3468 )); 3469 } 3470 }); 3471 map_obj.map.fitBounds(bounds); 3472 } else { 3473 bounds = new L.LatLngBounds(); 3474 places.forEach((place) => { 3475 if (place.location.lat && place.location.lng) { 3476 bounds.extend(L.latLng( 3477 parseFloat(place.location.lat), 3478 parseFloat(place.location.lng) 3479 )); 3480 } 3481 }); 3482 map_obj.map.fitBounds(bounds); 3483 } 3484 3485 // Set center marker and circle to bounds center 3486 const center = isGoogle ? bounds.getCenter() : bounds.getCenter(); 3487 3488 if (map_obj.map_center_marker) { 3489 map_obj.map_center_marker.setPosition(center); 3490 } 3491 3492 if (map_obj.set_center_circle) { 3493 if (isGoogle ) { 3494 map_obj.set_center_circle.setCenter(center); 3495 } else { 3496 map_obj.set_center_circle.setLatLng(center); 3497 } 3498 } 3499} 3500 3501 open_infowindow(current_place_id) { 3502 const map_obj = this; 3503 const isGoogle = map_obj.isMapProvider("google"); 3504 const open_event = map_obj.settings.infowindow_open_event || 'click'; 3505 const zoom = parseInt(map_obj.settings.infowindow_click_change_zoom); 3506 const shouldZoom = !isNaN(zoom) && zoom > 0; 3507 const shouldCenter = map_obj.settings.infowindow_click_change_center === true; 3508 3509 const all_places = map_obj.map_data.places || []; 3510 3511 for (const place of all_places) { 3512 const marker = place.marker; 3513 3514 if (!marker || marker.getVisible?.() === false) continue; 3515 3516 // If this is the target place 3517 if (parseInt(place.id) === parseInt(current_place_id)) { 3518 if (shouldZoom) { 3519 map_obj.map.setZoom(zoom); 3520 } 3521 3522 if (shouldCenter) { 3523 map_obj.map.setCenter(marker.getPosition()); 3524 } 3525 3526 // Trigger the configured open event 3527 if (isGoogle) { 3528 google.maps.event.trigger(marker, open_event); 3529 } else { 3530 marker.fire(open_event); 3531 } 3532 } 3533 } 3534 } 3535 openInfoWindow(place) { 3536 const map_obj = this; 3537 const isGoogle = map_obj.isMapProvider("google"); 3538 let skin = "default"; 3539
3540 if (place.source === "post") { 3541 skin = map_obj.settings.infowindow_post_skin?.name || "default"; 3542 } else if ( 3543 map_obj.map_data.page !== "edit_location" && 3544 map_obj.settings.infowindow_skin 3545 ) { 3546 skin = map_obj.settings.infowindow_skin.name; 3547 } 3548 3549 // Handle redirect actions 3550 const action = place.location.onclick_action; 3551 const openInNewTab = place.location.open_new_tab === "yes"; 3552 if (action === "post") { 3553 window.open(place.location.redirect_permalink, openInNewTab ? "_blank" : "_self"); 3554 return; 3555 } else if (action === "custom_link") { 3556 window.open(place.location.redirect_custom_link, openInNewTab ? "_blank" : "_self"); 3557 return; 3558 } 3559 3560 // Infowindow logic 3561 if (isGoogle && skin !== "default") { 3562 const infoboxText = document.createElement("div"); 3563 infoboxText.className = "wpgmp_infobox wpgmp-infowindow-addon"; 3564 infoboxText.innerHTML = place.infowindow_data; 3565 3566 place.infowindow = map_obj.infobox; 3567 place.infowindow.setOptions({ 3568 content: infoboxText, 3569 disableAutoPan: false, 3570 alignBottom: true, 3571 maxWidth: 0, 3572 zIndex: null, 3573 closeBoxMargin: "0", 3574 closeBoxURL: "", 3575 infoBoxClearance: new google.maps.Size(25, 25), 3576 isHidden: false, 3577 pane: "floatPane", 3578 enableEventPropagation: true, 3579 }); 3580 3581 const mapOptions = map_obj?.map_data?.map_options || {}; 3582 let width = "100%"; 3583 if( map_obj.settings.map_infowindow_customisations ) { 3584 width = mapOptions.infowindow_width || '100%'; 3585 } 3586 const markerSize = map_obj.getMarkerSize?.() || [32, 32]; 3587 3588 // Calculate offsetX 3589 let offsetX = -175; 3590 if (width !== '100%') { 3591 const numericWidth = parseInt(width); 3592 if (!isNaN(numericWidth)) { 3593 offsetX = -(numericWidth / 2); 3594 } 3595 } 3596 3597 if (map_obj.isMobile) { 3598 offsetX = -175; 3599 } 3600 3601 // Calculate offsetY based on marker height 3602 const markerHeight = parseInt(markerSize[1]) || 32; 3603 const offsetY = -(markerHeight) -15; 3604 // Apply offset to infowindow 3605 3606 place.infowindow.setOptions({ 3607 pixelOffset: new google.maps.Size(offsetX, offsetY), 3608 }); 3609 3610 } else { 3611 3612 let offsetX = 0; 3613 const markerSize = map_obj.getMarkerSize?.() || [32, 32]; 3614 const markerHeight = parseInt(markerSize[1]) || 32; 3615 const offsetY = -(markerHeight / 2); 3616 place.infowindow = isGoogle 3617 ? map_obj.infowindow_marker 3618 : L.popup({offset:[offsetX,offsetY]}); 3619 3620 place.infowindow.setContent(place.infowindow_data); 3621 } 3622 3623 // Open infowindow 3624 place.infowindow.open(map_obj.map, place.marker); 3625 3626 // Move to marker if configured 3627 if (map_obj.settings.infowindow_click_change_center) { 3628 map_obj.map.setCenter(place.marker.getPosition()); 3629 } 3630 3631 if ( 3632 map_obj.settings.infowindow_click_change_zoom && 3633 map_obj.settings.infowindow_click_change_zoom > 0 3634 ) { 3635 map_obj.map.setZoom(map_obj.settings.infowindow_click_change_zoom); 3636 map_obj.map.setCenter(place.marker.getPosition()); 3637 } 3638 3639 // Autofill directions 3640 if ( 3641 map_obj.map_data.map_tabs?.direction_tab?.dir_tab === true 3642 ) { 3643 $(map_obj.container).find(".start_point").val(place.address); 3644 $(map_obj.container).find(".start_point").data("longitude", place.location.lng); 3645 $(map_obj.container).find(".start_point").data("latitude", place.location.lat); 3646 } 3647 3648 // Cleanup 3649 $(map_obj.container).find(".wpgmp_extra_field:contains('wpgmp_empty')").remove(); 3650 $(map_obj.container).find(".wpgmp_empty").prev().remove(); 3651 $(map_obj.container).find(".wpgmp_empty").remove(); 3652 3653 // Dispatch marker click event for addons to hook into 3654 $(document).trigger("wpgmp_marker_clicked", [this, place]); 3655 3656 } 3657 create_element(controlDiv, map, html_element) { 3658 3659 // Set CSS for the control border 3660 controlDiv.className = 'wpgmp-control-outer'; 3661 var controlUI = document.createElement('div'); 3662 controlUI.className = 'wpgmp-control-inner'; 3663 controlDiv.appendChild(controlUI); 3664 3665 // Set CSS for the control interior 3666 var controlText = document.createElement('div'); 3667 controlText.className = 'wpgmp-control-content'; 3668 controlText.innerHTML = html_element; 3669 controlUI.appendChild(controlText); 3670 3671 } 3672 // ----------------------------- 3673 // ð Templates & Rendering 3674 // ----------------------------- 3675 renderCategories(template, data) { 3676 let rendered = template; 3677 3678 // Handle the case where parent categories do not exist 3679 if (!data || data.length === 0) { 3680 rendered = rendered.replace( 3681 /\{#each parent_categories\}[\s\S]+?\{\/parent_categories\}/g, 3682 "No categories available." 3683 ); 3684 return rendered; 3685 } 3686 3687 // Replace the each block for parent and child categories 3688 const parentPattern = 3689 /\{#each parent_categories\}([\s\S]+?)\{\/parent_categories\}/g; 3690 rendered = rendered.replace( 3691 parentPattern, 3692 function (match, parentTemplate) { 3693 let result = ""; 3694 3695 data.forEach((parentCategory) => {
3696 let parentHTML = parentTemplate; 3697 // Replace placeholders for parent category 3698 parentHTML = parentHTML.replace( 3699 /\{parent_id\}/g, 3700 parentCategory.parent_id || "" 3701 ); 3702 parentHTML = parentHTML.replace( 3703 /\{child_list\}/g, 3704 parentCategory.child_list || "" 3705 ); 3706 parentHTML = parentHTML.replace( 3707 /\{parent_category\}/g, 3708 parentCategory.parent_category || "Unknown Category" 3709 ); 3710 3711 // Handle child categories 3712 let childPattern = 3713 /\{#each child_categories\}([\s\S]+?)\{\/child_categories\}/g; 3714 3715 if ( 3716 parentCategory.child_categories && 3717 parentCategory.child_categories.length > 0 3718 ) { 3719 parentHTML = parentHTML.replace( 3720 childPattern, 3721 function (childMatch, childTemplate) { 3722 let childResult = ""; 3723 parentCategory.child_categories.forEach((child) => { 3724 let childTemp = childTemplate; 3725 childTemp = childTemp.replace( 3726 /\{child_id\}/g, 3727 child.child_id || "" 3728 ); 3729 childTemp = childTemp.replace( 3730 /\{child_category\}/g, 3731 child.child_category || "Unknown Child Category" 3732 ); 3733 childResult += childTemp; 3734 }); 3735 return childResult; 3736 } 3737 ); 3738 } else { 3739 // If no child categories exist, remove the entire child category box 3740 parentHTML = parentHTML.replace(childPattern, ""); 3741 } 3742 3743 result += parentHTML; 3744 }); 3745 3746 return result; 3747 } 3748 ); 3749 3750 return rendered; 3751 } 3752 renderTemplate(template, data) { 3753 var rendered = template; 3754 3755 // Handle if-else condition outside of each loop 3756 var ifPattern = /\{#if (\w+)\}([\s\S]+?)\{else\}([\s\S]+?)\{\/if\}/g; 3757 rendered = rendered.replace( 3758 ifPattern, 3759 function (ifMatch, ifKey, ifTrue, ifFalse) { 3760 return data[ifKey] ? ifTrue : ifFalse; 3761 } 3762 ); 3763 3764 var ifSimplePattern = /\{#if (\w+)\}([\s\S]+?)\{\/if\}/g; 3765 rendered = rendered.replace( 3766 ifSimplePattern, 3767 function (ifMatch, ifKey, ifTrue) { 3768 return data[ifKey] ? ifTrue : ""; 3769 } 3770 ); 3771 3772 // Replace the each block for all_filters 3773 var eachPattern = /\{#each all_filters\}([\s\S]+?)\{\/all_filters\}/g; 3774 rendered = rendered.replace(eachPattern, function (match, p2) { 3775 var result = ""; 3776 3777 var allFilters = data["all_filters"]; 3778 3779 // Iterate over all filters (facility, bathrooms, etc.) 3780 for (var filterName in allFilters) { 3781 var filterData = allFilters[filterName]; 3782 3783 var firstKey = Object.keys(filterData)[0]; // Gets the first key 3784 var filterLabel = filterData[firstKey].label; // Gets the corresponding value 3785 3786 var filterTemplate = p2; 3787 3788 // Replace {filter_name} with the filter key (e.g., facility, bathrooms) 3789 filterTemplate = filterTemplate.replace( 3790 /\{filter_name\}/g, 3791 filterName 3792 ); 3793 filterTemplate = filterTemplate.replace( 3794 /\{filter_label\}/g, 3795 filterLabel 3796 ); 3797 3798 // Now handle the inner {#each filter} loop for options 3799 var innerEachPattern = /\{#each filter\}([\s\S]+?)\{\/filter\}/g; 3800 filterTemplate = filterTemplate.replace( 3801 innerEachPattern, 3802 function (innerMatch, innerP2) { 3803 var innerResult = ""; 3804 3805 for (var key in filterData) { 3806 var option = { 3807 id: key.toLowerCase(), 3808 name: filterData[key].name, 3809 label: filterData[key].label, 3810 }; 3811 3812 if (filterName != "category") { 3813 option.id = filterData[key].id; 3814 } 3815 3816 var optionTemplate = innerP2; 3817 3818 // Replace the placeholders {id} and {name} 3819 optionTemplate = optionTemplate.replace(/\{id\}/g, option.id); 3820 3821 optionTemplate = optionTemplate.replace( 3822 /\{name\}/g, 3823 option.name 3824 ); 3825 3826 innerResult += optionTemplate; 3827 } 3828 return innerResult; 3829 } 3830 ); 3831 3832 result += filterTemplate; 3833 } 3834 3835 return result; 3836 }); 3837 3838 var eachPattern = /\{#each ([\w%_-]+)\}([\s\S]+?)\{\/\1\}/g; // Updated to allow dashes 3839 rendered = rendered.replace(eachPattern, function (match, p1, p2) { 3840 var items = data[p1]; 3841 var result = ""; 3842 3843 if ( 3844 typeof items === "object" && 3845 items !== null && 3846 !Array.isArray(items) 3847 ) { 3848 for (var key in items) { 3849 var item; 3850 if (p1 == "routes") { 3851 item = { 3852 id: key.toLowerCase(), 3853 name: items[key][0], 3854 color: items[key][1], 3855 }; 3856 } else { 3857 item = { id: key.toLowerCase(), name: items[key] }; 3858 } 3859 3860 var itemTemplate = p2; 3861 3862 // Handle if-else condition inside each loop 3863 itemTemplate = itemTemplate.replace( 3864 ifPattern, 3865 function (ifMatch, ifKey, ifTrue, ifFalse) { 3866 return item[ifKey] ? ifTrue : ifFalse; 3867 } 3868 ); 3869 3870 itemTemplate = itemTemplate.replace( 3871 ifSimplePattern, 3872 function (ifMatch, ifKey, ifTrue) { 3873 return item[ifKey] ? ifTrue : ""; 3874 } 3875 ); 3876 3877 // Replace the placeholders within each item 3878 for (var fieldKey in item) { 3879 itemTemplate = itemTemplate.replace( 3880 new RegExp("\\{" + fieldKey + "\\}", "g"), 3881 item[fieldKey] 3882 ); // Escape braces 3883 } 3884 result += itemTemplate; 3885 } 3886 } 3887 3888 return result; 3889 }); 3890 3891 // Replace the placeholders outside the each block 3892 for (var key in data) { 3893 if (!Array.isArray(data[key]) && typeof data[key] === "object") { 3894 // Skip objects being handled within each block 3895 continue; 3896 } 3897 rendered = rendered.replace( 3898 new RegExp("\\{" + key + "\\}", "g"), 3899 data[key] 3900 ); // Escape braces 3901 } 3902 3903 return rendered; 3904 } 3905 3906 create_filters() { 3907 var map_obj = this; 3908 var options = ""; 3909 var filters = {}; 3910 var places = this.map_data.places; 3911 var wpgmp_listing_filter = this.map_data.listing; 3912 var wpgmp_alltfilter = wpgmp_listing_filter.display_taxonomies_all_filter; 3913 3914 $.each(places, function (index, place) { 3915 if (typeof place.categories == "undefined") { 3916 place.categories = {}; 3917 } 3918 $.each(place.categories, function (cat_index, category) { 3919 if (typeof filters[category.type] == "undefined") { 3920 filters[category.type] = {}; 3921 } 3922 3923 if (category.name) { 3924 if ( 3925 category.extension_fields && 3926 category.extension_fields.cat_order 3927 ) { 3928 filters[category.type][category.name] = { 3929 id: category.id, 3930 order: category.extension_fields.cat_order, 3931 name: category.name, 3932 }; 3933 } else { 3934 filters[category.type][category.name] = { 3935 id: category.id, 3936 order: 0, 3937 name: category.name, 3938 }; 3939 } 3940 } 3941 }); 3942 }); 3943 // now create select boxes 3944 3945 var content = "", 3946 by = "name", 3947 type = "", 3948 inorder = "asc"; 3949 3950 if (map_obj.map_data.listing) { 3951 if (map_obj.map_data.listing.default_sorting) { 3952 if (map_obj.map_data.listing.default_sorting.orderby == "listorder") { 3953 by = "order"; 3954 type = "num"; 3955 inorder = map_obj.map_data.listing.default_sorting.inorder; 3956 } 3957 inorder = map_obj.map_data.listing.default_sorting.inorder; 3958 } 3959 } 3960 3961 if ( 3962 map_obj.map_data.checkbox_filter_addon_enable != undefined && 3963 map_obj.map_data.checkbox_filter_addon_enable == true 3964 ) { 3965 $.each(filters, function (index, options) { 3966 if ( 3967 wpgmp_listing_filter.display_category_filter === true && 3968 index == "category" 3969 ) { 3970 content += '<div class="wpgmp_filters_checklist">'; 3971 content += 3972 '<label data-filter = "place_' + 3973 index + 3974 '" >Select ' + 3975 index + 3976 "</label>"; 3977 options = map_obj.sort_object_by_keyvalue( 3978 options, 3979 by, 3980 type, 3981 inorder 3982 ); 3983 $.each(options, function (name, value) { 3984 if (value != "" && value != null) 3985 content += 3986 "<input data-filter='checklist' type='checkbox' data-name = 'category' value='" + 3987 value.id + 3988 "'><span class='wpgmp_checklist_title'>" + 3989 value.name + 3990 "</span>"; 3991 }); 3992 content += "</div>"; 3993 } else if (wpgmp_listing_filter.display_taxonomies_filter === true) { 3994 if (wpgmp_alltfilter === null) return false;
3995 3996 if (wpgmp_alltfilter.indexOf(index) > -1) { 3997 content += '<div class="wpgmp_filters_checklist">'; 3998 content += 3999 '<label data-filter = "place_' + 4000 index + 4001 '" >Select ' + 4002 index + 4003 "</label>"; 4004 4005 $.each(options, function (name, value) { 4006 if (value != "" && value != null) 4007 content += 4008 "<input data-filter='checklist' type='checkbox' data-name = 'category' value='" + 4009 value.id + 4010 "'><span class='wpgmp_checklist_title'>" + 4011 value.name + 4012 "</span>"; 4013 }); 4014 content += "</div>"; 4015 } 4016 } 4017 }); 4018 } else { 4019 $.each(filters, function (index, options) { 4020 if ( 4021 wpgmp_listing_filter.display_category_filter === true && 4022 index == "category" 4023 ) { 4024 if (map_obj.map_data.map_options.select_category) { 4025 wpgmp_local.select_category = map_obj.map_data.map_options.select_category; 4026 } 4027 content += 4028 '<select data-wpgmp-filter="true" data-wpgmp-map-id="'+map_obj.map_data.map_property.map_id+'" data-wpgmp-filter-by="category" data-filter="dropdown" data-name="category" name="place_' + 4029 index + 4030 '">'; 4031 content += 4032 '<option value="">' + wpgmp_local.select_category + "</option>"; 4033 options = map_obj.sort_object_by_keyvalue( 4034 options, 4035 by, 4036 type, 4037 inorder 4038 ); 4039 $.each(options, function (name, value) { 4040 content += 4041 "<option value='" + value.id + "'>" + value.name + "</option>"; 4042 }); 4043 content += "</select>"; 4044 } else if (wpgmp_listing_filter.display_taxonomies_filter === true) { 4045 if (wpgmp_alltfilter === null) return false; 4046 4047 if (wpgmp_alltfilter.indexOf(index) > -1) { 4048 content += 4049 '<select data-filter="dropdown" data-name="category" name="place_' + 4050 index + 4051 '">'; 4052 content += '<option value="">Select ' + index + "</option>"; 4053 $.each(options, function (name, value) { 4054 content += 4055 "<option value='" + value + "'>" + name + "</option>"; 4056 }); 4057 content += "</select>"; 4058 } 4059 } 4060 }); 4061 } 4062 4063 if (map_obj.map_data.map_options.advance_template) { 4064 if (!map_obj.template_data) { 4065 map_obj.template_data = {}; // Ensure template_data exists 4066 } 4067 if (!Array.isArray(map_obj.template_data.filter)) { 4068 map_obj.template_data.filter = []; // Ensure filter is an array 4069 } 4070 map_obj.template_data.filter.push(filters); 4071 } 4072 4073 return content; 4074 } 4075 4076 update_places_listing() { 4077 var map_obj = this; 4078 4079 if (map_obj.per_page_value > 0) 4080 map_obj.per_page_value = map_obj.per_page_value; 4081 else 4082 map_obj.per_page_value = 4083 map_obj.map_data.listing.pagination.listing_per_page; 4084 4085 $(map_obj.container) 4086 .find(".location_pagination" + map_obj.map_data.map_property.map_id) 4087 .pagination(map_obj.show_places.length, { 4088 callback: map_obj.display_places_listing, 4089 map_data: map_obj, 4090 items_per_page: map_obj.per_page_value, 4091 prev_text: wpgmp_local.prev, 4092 next_text: wpgmp_local.next, 4093 }); 4094 } 4095 4096 display_filters_listing() { 4097 if (this.map_data.listing) { 4098 var hide_locations = this.map_data.listing.hide_locations; 4099 4100 var wpgmpgl = this.map_data.listing.list_grid; 4101 4102 if (hide_locations != true) { 4103 var content = '<div class="wpgmp_listing_container" aria-live="polite" aria-atomic="true">'; 4104 4105 content += 4106 "<div class='wpgmp_categories wpgmp_print_listing " + 4107 wpgmpgl + 4108 "' data-container='wpgmp-listing-" + 4109 $(this.element).attr("id") + 4110 "'></div>"; 4111 4112 content += "</div>"; 4113 $(this.map_data.listing.listing_container).html(content); 4114 } 4115 } 4116 } 4117 4118 display_filters() { 4119 var hide_locations = this.map_data.listing.hide_locations; 4120 var listing_header = this.map_data.listing.listing_header; 4121 var content = ""; 4122 if (listing_header != undefined) { 4123 content += 4124 '<div class="wpgmp_before_listing">' + 4125 this.map_data.listing.listing_header + 4126 "</div>"; 4127 } 4128 if (this.map_data.listing.display_search_form === true) { 4129 var autosuggest_class = ""; 4130 4131 if (this.map_data.listing.search_field_autosuggest === true) { 4132 autosuggest_class = "wpgmp_auto_suggest"; 4133 } 4134 4135 if (this.map_data.map_options.search_placeholder) { 4136 wpgmp_local.search_placeholder = this.map_data.map_options.search_placeholder; 4137 } 4138 4139 content += 4140 '<div class="wpgmp_listing_header">
4140<div class="wpgmp_search_form"><input type="text" rel="24" data-input="wpgmp-search-text" name="wpgmp_search_input" class="wpgmp_search_input ' + 4141 autosuggest_class + 4142 '" placeholder="' + 4143 wpgmp_local.search_placeholder + 4144 '"></div></div>'; 4145 } 4146 4147 content += 4148 '<div class="categories_filter">' + 4149 this.create_filters() + 4150 '<div data-container="wpgmp-filters-container"></div>'; 4151 4152 if (hide_locations != true) content += this.create_sorting() + ""; 4153 4154 if ( 4155 hide_locations != true && 4156 this.map_data.listing.display_location_per_page_filter === true 4157 ) { 4158 content += " " + this.create_perpage_option() + " "; 4159 } 4160 4161 content += " " + this.create_radius() + " "; 4162 4163 if ( 4164 hide_locations != true && 4165 this.map_data.listing.display_print_option === true 4166 ) { 4167 content += " " + wpgmp_local.img_print; 4168 } 4169 4170 if ( 4171 hide_locations != true && 4172 this.map_data.listing.display_grid_option === true 4173 ) { 4174 content += " " + wpgmp_local.img_grid + wpgmp_local.img_list; 4175 } 4176 4177 if ( 4178 typeof this.map_data.map_options.display_reset_button != "undefined" && 4179 this.map_data.map_options.display_reset_button === true 4180 ) { 4181 content += 4182 '<div class="categories_filter_reset"><input type="button" class="categories_filter_reset_btn" name="categories_filter_reset_btn" value="' + 4183 this.map_data.map_options.map_reset_button_text + 4184 '"></div>'; 4185 } 4186 4187 content += "</div>"; 4188 4189 return content; 4190 } 4191 4192 set_icon_marker(place, iconUrl, iconSize = [32, 32]) { 4193 if (!place || !place.marker || !iconUrl) return; 4194 4195 const isGoogle = this.isMapProvider('google'); 4196 const isSvg = iconUrl.toLowerCase().includes('image/svg') || iconUrl.toLowerCase().endsWith('.svg'); 4197 4198 if (isGoogle) { 4199 const icon = { url: iconUrl }; 4200 4201 if (isSvg) { 4202 icon.scaledSize = new google.maps.Size(iconSize[0], iconSize[1]); 4203 } 4204 4205 place.marker.setIcon(icon); 4206 4207 } else { 4208 const icon = { url: iconUrl }; 4209 4210 if (isSvg) { 4211 icon.scaledSize = [iconSize[0], iconSize[1]]; 4212 } 4213 4214 place.marker.setIcon(icon); 4215 } 4216 } 4217 4218 4219 display_places_listing(page_index, jq) { 4220 var content = ""; 4221 var map_obj = this; 4222 var category_selector_dropdown = $('select[name = "place_category"]'); 4223 var items_per_page = 10; 4224 if (map_obj.items_per_page) items_per_page = map_obj.items_per_page; 4225 else 4226 items_per_page = 4227 map_obj.map_data.map_data.listing.pagination.listing_per_page; 4228 4229 if ($.isFunction($.fn.locationSortByDistance)) { 4230 var distance_image = 4231 map_obj.map_data.map_data.plugin_url + 4232 "assets/images/location-icon.png"; 4233 if ( 4234 ($("#search_location_autocomplete").val() != "" && 4235 map_obj.map_data.is_place_changed) || 4236 map_obj.map_data.is_location_allowed 4237 ) { 4238 map_obj.map_data.show_places = 4239 map_obj.map_data.sorted_locations_by_search; 4240 } 4241 } 4242 4243 var data_source = map_obj.map_data.show_places; 4244 4245 var listing_container = 4246 map_obj.map_data.map_data.listing.listing_container; 4247 4248 var listing_placeholder = 4249 map_obj.map_data.map_data.listing.listing_placeholder; 4250 4251 var max_elem = Math.min( 4252 (page_index + 1) * items_per_page, 4253 data_source.length 4254 ); 4255 var link = ""; 4256 var onclick_action = ""; 4257 if (max_elem > 0) { 4258 for (var i = page_index * items_per_page; i < max_elem; i++) { 4259 var place = data_source[i]; 4260 var temp_listing_placeholder = listing_placeholder; 4261 if (place.marker.getVisible() === true) { 4262 if (place.id) { 4263 if (place.location.onclick_action == "marker") { 4264 link = 4265 '<a href="javascript:void(0);" class="place_title" data-zoom="' + 4266 place.location.zoom + 4267 '" data-marker="' + 4268 place.id + 4269 '" >' + 4270 place.title + 4271 "</a>"; 4272 onclick_action = 4273 'href="javascript:void(0);" data-zoom="' + 4274 place.location.zoom + 4275 '" data-marker="' + 4276 place.id + 4277 '"'; 4278 } else if (place.location.onclick_action == "post") { 4279 link = 4280 '<a href="' + 4281 place.location.redirect_permalink + 4282 '" target="_blank">' + 4283 place.title + 4284 "</a>"; 4285 onclick_action = 4286 'href="' + 4287 place.location.redirect_permalink + 4288 '" target="_blank"'; 4289 } else if (place.location.onclick_action == "custom_link") { 4290 link = 4291 '<a href="' + 4292 place.location.redirect_custom_link + 4293 '" target="_blank">' + 4294 place.title + 4295 "</a>"; 4296 onclick_action = 4297 'href="' + 4298 place.location.redirect_custom_link + 4299 '" target="_blank"'; 4300 } else { 4301 link = 4302 '<a href="javascript:void(0);" class="place_title" data-zoom="' + 4303 place.location.zoom + 4304 '" data-marker="' + 4305 place.id + 4306 '" >' + 4307 place.title + 4308 "</a>"; 4309 onclick_action = 4310 'href="javascript:void(0);" data-zoom="' + 4311 place.location.zoom + 4312 '" data-marker="' + 4313 place.id + 4314 '"'; 4315 } 4316 } 4317 4318 var image = []; 4319 var category_name = []; 4320 var wpgmp_arr = {}; 4321 4322 if (place.categories) { 4323 for (var c = 0; c < place.categories.length; c++) { 4324 if (place.categories[c].icon !== "") { 4325 image.push( 4326 "<img title='" + 4327 place.categories[c].name + 4328 "' alt='" + 4329 place.categories[c].name + 4330 "' src='" + 4331 place.categories[c].icon + 4332 "' />" 4333 ); 4334 } 4335 4336 if ( 4337 place.categories[c].type == "category" && 4338 place.categories[c].name != "" 4339 ) { 4340 if ( 4341 map_obj.map_data.map_data.map_options.advance_template == 4342 true 4343 ) { 4344 category_name.push( 4345 '<span class="wep-chip">' + 4346 place.categories[c].name + 4347 "</span>" 4348 ); 4349 } else { 4350 category_name.push('<div class="fc-badge">'+place.categories[c].name+'</div>'); 4351 } 4352 } 4353 4354 if (place.categories[c].type != "category") { 4355 if (typeof place.categories[c].name == "undefined") continue; 4356 4357 if (place.categories[c].name) var sep = ","; 4358 4359 if (typeof wpgmp_arr[place.categories[c].type] == "undefined") 4360 wpgmp_arr[place.categories[c].type] = ""; 4361 4362 wpgmp_arr[place.categories[c].type] += 4363 place.categories[c].name + sep; 4364 } 4365 } 4366 } 4367 4368 var marker_image = ""; 4369 4370 if (place.source == "post") { 4371 marker_image = place.location.extra_fields.post_featured_image; 4372 } else { 4373 marker_image = place.location.marker_image; 4374 } 4375 4376 category_name = category_name.join(""); 4377 4378 var replaceData = { 4379 "{marker_id}": place.id, 4380 "{marker_title}": link, 4381 "{marker_address}": place.address, 4382 "{marker_latitude}": place.location.lat, 4383 "{marker_longitude}": place.location.lng, 4384 "{marker_city}": place.location.city, 4385 "{marker_state}": place.location.state, 4386 "{marker_country}": place.location.country, 4387 "{marker_postal_code}": place.location.postal_code, 4388 "{marker_zoom}": place.location.zoom, 4389 "{marker_icon}": image, 4390 "{marker_category}": category_name, 4391 "{marker_message}": place.content, 4392 "{marker_image}": marker_image, 4393 "{marker_featured_image}": marker_image, 4394 "{wpgmp_listing_html}": place.listing_hook, 4395 "{onclick_action}
4395": onclick_action, 4396 "{distance}": "", 4397 "{get_directions_link}": 4398 "http://www.google.com/maps/place/" + 4399 parseFloat(place.location.lat) + 4400 "," + 4401 parseFloat(place.location.lng), 4402 }; 4403 4404 if ($.isFunction($.fn.locationSortByDistance)) { 4405 if ( 4406 typeof place.distance !== "undefined" && 4407 place.distance !== null && 4408 place.distance !== "NaN" 4409 ) { 4410 var dimension = 4411 map_obj.map_data.map_data.listing.radius_dimension; 4412 if (dimension == "km") { 4413 if ((place.distance / 1000).toFixed(2) != "NaN") { 4414 place.distance = (place.distance / 1000).toFixed(2) + " Km"; 4415 place.location.extra_fields.distance = 4416 '<img width="21px" height="26px" src="' + 4417 distance_image + 4418 '" style="width: 21px!important;height: 26px!important;margin-right: 3px!important;margin-top: 0px!important;"><span class="distance_calculate">' + 4419 place.distance + 4420 "</span>"; 4421 } 4422 } else { 4423 if ((place.distance / 1000).toFixed(2) != "NaN") { 4424 place.distance = (place.distance / 1000).toFixed(2); 4425 place.distance = 4426 (place.distance / 1.6).toFixed(2) + " Miles"; 4427 place.location.extra_fields.distance = 4428 '<img width="21px" height="26px" src="' + 4429 distance_image + 4430 '" style="width: 21px!important;height: 26px!important;margin-right: 3px!important;margin-top: 0px!important;"><span class="distance_calculate">' + 4431 place.distance + 4432 "</span>"; 4433 } 4434 } 4435 } 4436 } 4437 4438 //Add extra fields of locations 4439 if (typeof place.location.extra_fields != "undefined") { 4440 for (var extra in place.location.extra_fields) { 4441 if (!place.location.extra_fields[extra]) { 4442 replaceData["{" + extra + "}"] = 4443 "<div class='wpgmp_empty'>wpgmp_empty</div>"; 4444 } else { 4445 replaceData["{" + extra + "}"] = 4446 place.location.extra_fields[extra]; 4447 } 4448 } 4449 } 4450 4451 temp_listing_placeholder = temp_listing_placeholder.replace( 4452 /{#if (.*?)}([\s\S]*?){\/if}/g, 4453 function (match, p1, p2) { 4454 const key = "{" + p1 + "}"; 4455 const value = replaceData[key]; 4456 return value && 4457 value !== "<div class='wpgmp_empty'>wpgmp_empty</div>" 4458 ? p2 4459 : ""; 4460 } 4461 ); 4462 4463 if ( 4464 map_obj.map_data.map_data.map_options.link_extra_field != 4465 undefined && 4466 map_obj.map_data.map_data.map_options.link_extra_field != "" 4467 ) { 4468 var anchor_tag = 4469 map_obj.map_data.map_data.map_options.link_extra_field; 4470 for (var prop_an in anchor_tag) { 4471 if ( 4472 replaceData[prop_an] != 4473 "<div class='wpgmp_empty'>wpgmp_empty</div>" && 4474 prop_an != "" 4475 ) { 4476 temp_listing_placeholder = temp_listing_placeholder.replace( 4477 prop_an, 4478 anchor_tag[prop_an] 4479 ); 4480 } 4481 } 4482 } 4483 4484 for (var prop in replaceData) { 4485 if ( 4486 replaceData[prop] == undefined || 4487 replaceData[prop] == "undefined" 4488 ) 4489 replaceData[prop] = ""; 4490 } 4491 4492 if (wpgmp_arr) { 4493 for (var n in wpgmp_arr) { 4494 replaceData["{" + n + "}"] = wpgmp_remove_last_comma( 4495 wpgmp_arr[n] 4496 ); 4497 } 4498 } 4499 4500 var wpgmp_remove_last_comma = function (strng) { 4501 var n = strng.lastIndexOf(","); 4502 var a = strng.substring(0, n); 4503 return a; 4504 }; 4505 4506 temp_listing_placeholder = temp_listing_placeholder.replace( 4507 /{[^{}]+}/g, 4508 function (match) { 4509 if (match in replaceData) { 4510 return replaceData[match]; 4511 } else { 4512 return ""; 4513 } 4514 } 4515 ); 4516 4517 content += temp_listing_placeholder; 4518 } 4519 } 4520 } else { 4521 content = 4522 "<div class='wpgmp_no_locations'>" + 4523 wpgmp_local.wpgmp_location_no_results + 4524 "</div>"; 4525 } 4526 4527 for (var j = 0; j < data_source.length; j++) { 4528 place = data_source[j]; 4529 if ( 4530 typeof place.categories.length !== undefined && 4531 place.categories.length > 1 4532 ) { 4533 var iconSize = map_obj.map_data.getMarkerSize(); 4534 if (category_selector_dropdown.val() !== "") { 4535 if (place.categories) { 4536 for (var c = 0; c < place.categories.length; c++) { 4537 if ( 4538 category_selector_dropdown.val() == place.categories[c].id 4539 ) { 4540 4541 map_obj.map_data.set_icon_marker(place, place.categories[c].icon,iconSize); 4542 4543 break; 4544 } 4545 } 4546 } 4547 } else { 4548 4549 map_obj.map_data.set_icon_marker(place, place.location.icon,iconSize); 4550 4551 } 4552 } 4553 } 4554 4555 // content += '<div id="wpgmp_pagination"></div>'; 4556 4557 if (map_obj.map_data.map_data.map_options.advance_template === true) { 4558 var $listingElement = $(document).find( 4559 '[data-listing-content="true"][data-wpgmp-map-id]' 4560 ); 4561 var allClasses = $listingElement.attr("class").split(" "); 4562 listing_container = "." + allClasses[0]; 4563 $(listing_container).html(content); 4564 } else { 4565 content =
4566 '<div class="fc-' + 4567 map_obj.map_data.map_data.listing.list_item_skin.type + 4568 "-" + 4569 map_obj.map_data.map_data.listing.list_item_skin.name + 4570 ' fc-wait"><div data-page="2" class="fc-component-6" data-layout="' + 4571 map_obj.map_data.map_data.listing.list_item_skin.name + 4572 '" >' + 4573 content + 4574 "</div></div>"; 4575 $(listing_container).find(".wpgmp_categories").html(content); 4576 } 4577 4578 $(listing_container) 4579 .find(".wpgmp_extra_field:contains('wpgmp_empty')") 4580 .remove(); 4581 $(listing_container).find(".wpgmp_empty").prev().remove(); 4582 $(listing_container).find(".wpgmp_empty").remove(); 4583 4584 if (map_obj.map_data.map_data.listing.list_grid == "wpgmp_listing_grid") { 4585 $(window).on("load", function () { 4586 try { 4587 var container = $(listing_container).find(".wpgmp_listing_grid"); 4588 4589 if (container.length) { 4590 var msnry = container.data("masonry"); 4591 if (msnry) { 4592 msnry.destroy(); 4593 } 4594 4595 container.imagesLoaded(function () { 4596 // init Masonry after all images have loaded 4597 container.masonry({ 4598 itemSelector: ".wpgmp_locations", 4599 columnWidth: ".wpgmp_locations", 4600 percentPosition: true, 4601 }); 4602 4603 // Now safe to call reload 4604 container.masonry("layout"); 4605 }); 4606 } 4607 } catch (err) { 4608 console.log(err); 4609 } 4610 }); 4611 } 4612 return false; 4613 } 4614 // ----------------------------- 4615 // ð Filters & Listings 4616 // ----------------------------- 4617 apply_filters() { 4618 var map_obj = this; 4619 var filters = map_obj.filters; 4620 var showAll = true; 4621 var show = true; 4622 map_obj.show_places = []; 4623 // Filter by search box. 4624 if ($.isFunction($.fn.locationSortByDistance)) { 4625 map_obj.sorted_locations_by_search = []; 4626 } else { 4627 if ( 4628 $(map_obj.container).find('[data-input="wpgmp-search-text"]').length > 4629 0 4630 ) { 4631 map_obj.search_term = $(map_obj.container) 4632 .find('[data-input="wpgmp-search-text"]') 4633 .val() 4634 .trim(); 4635 4636 if (map_obj.search_term.length > 0) { 4637 map_obj.search_term = map_obj.search_term.toLowerCase(); 4638 map_obj.enable_search_term = true; 4639 } 4640 } 4641 } 4642 4643 if ( 4644 (map_obj.map_data.map_tabs && 4645 map_obj.map_data.map_tabs.category_tab && 4646 map_obj.map_data.map_tabs.category_tab.cat_tab === true) || 4647 $(map_obj.container).find("input[data-marker-category]").length > 0 4648 ) { 4649 var all_selected_category_sel = $(map_obj.container).find( 4650 "input[data-marker-category]:checked" 4651 ); 4652 var all_selected_category = []; 4653 var all_not_selected_location = []; 4654 if (all_selected_category_sel.length > 0) { 4655 $.each( 4656 all_selected_category_sel, 4657 function (index, selected_category) { 4658 all_selected_category.push( 4659 $(selected_category).data("marker-category") 4660 ); 4661 var all_not_selected_location_sel = $(selected_category) 4662 .closest('[data-container="wpgmp-category-tab-item"]') 4663 .find("input[data-marker-location]:not(:checked)"); 4664 if (all_not_selected_location_sel.length > 0) { 4665 $.each( 4666 all_not_selected_location_sel, 4667 function (index, not_selected_location) { 4668 all_not_selected_location.push( 4669 $(not_selected_location).data("marker-location") 4670 ); 4671 } 4672 ); 4673 } 4674 } 4675 ); 4676 } 4677 var all_selected_location_sel = $(map_obj.container) 4678 .find('[data-container="wpgmp-category-tab-item"]') 4679 .find("input[data-marker-location]:checked"); 4680 var all_selected_location = []; 4681 if (all_selected_location_sel.length > 0) { 4682 $.each( 4683 all_selected_location_sel, 4684 function (index, selected_location) { 4685 all_selected_location.push( 4686 $(selected_location).data("marker-location") 4687 ); 4688 } 4689 ); 4690 } 4691 } 4692 4693 if (typeof map_obj.map_data.places != "undefined") { 4694 $.each(map_obj.map_data.places, function (place_key, place) { 4695 show = true; 4696 if (typeof filters != "undefined") { 4697 $.each(filters, function (filter_key, filter_values) { 4698 var in_fields = false;
4699 4700 if ($.isArray(filter_values)) { 4701 if ( 4702 typeof place.categories != "undefined" && 4703 filter_key == "category" 4704 ) { 4705 $.each(place.categories, function (cat_index, category) { 4706 if ($.inArray(category.id, filter_values) > -1) { 4707 in_fields = true; 4708 } 4709 }); 4710 } 4711 4712 if (typeof place.custom_filters != "undefined") { 4713 $.each(place.custom_filters, function (k, val) { 4714 if (filter_key == k) { 4715 in_fields = false; 4716 if ($.isArray(val)) { 4717 $.each(val, function (index, value) { 4718 if ($.inArray(value, filter_values) > -1) 4719 in_fields = true; 4720 }); 4721 } else if (val == filter_values.val) in_fields = true; 4722 } 4723 }); 4724 } 4725 4726 if (typeof place[filter_key] != "undefined") { 4727 if ( 4728 $.inArray(place[filter_key].toLowerCase(), filter_values) > 4729 -1 4730 ) { 4731 in_fields = true; 4732 } 4733 } else if (typeof place.location[filter_key] != "undefined") { 4734 if ( 4735 $.inArray( 4736 place.location[filter_key].toLowerCase(), 4737 filter_values 4738 ) > -1 4739 ) { 4740 in_fields = true; 4741 } 4742 } else if ( 4743 place.location.extra_fields && 4744 typeof place.location.extra_fields[filter_key] != "undefined" 4745 ) { 4746 var dropdown_value = filter_values[0]; 4747 4748 if (place.location.extra_fields[filter_key] != "") { 4749 var arrayResult = 4750 place.location.extra_fields[filter_key].split(","); 4751 4752 var trimmedArray = $.map(arrayResult, function (value) { 4753 return $.trim(value).toLowerCase(); 4754 }); 4755 } 4756 if (place.location.extra_fields[filter_key]) { 4757 var dropdown_val = 4758 place.location.extra_fields[filter_key].toLowerCase(); 4759 var dropdown_val_decoded = $("<div>") 4760 .html(dropdown_val) 4761 .text(); 4762 if ( 4763 dropdown_val && 4764 (dropdown_val.indexOf(dropdown_value) > -1 || 4765 dropdown_val_decoded.indexOf(dropdown_value) > -1) 4766 ) { 4767 in_fields = true; 4768 } else if ($.inArray(dropdown_val, filter_values) > -1) { 4769 in_fields = true; 4770 } else if ( 4771 trimmedArray != undefined && 4772 $.inArray(dropdown_value, trimmedArray) > -1 4773 ) { 4774 in_fields = true; 4775 } else if (Array.isArray(dropdown_value) && trimmedArray !== undefined && dropdown_value.some(value => trimmedArray.includes(value))) { 4776 in_fields = true; 4777 } 4778 } 4779 } 4780 4781 if (map_obj.addonInfo !== "") { 4782 $.each(map_obj.addonInfo, function (key, method) { 4783 var method_name = method.filtration_logic; 4784 4785 if ( 4786 typeof map_obj[method_name] !== "undefined" && 4787 $.isFunction(map_obj[method_name]) 4788 ) { 4789 in_fields = map_obj[method_name]( 4790 in_fields, 4791 place, 4792 filter_values, 4793 filter_key 4794 ); 4795 } 4796 }); 4797 } 4798 4799 if (in_fields == false) show = false; 4800 } else { 4801 filter_values.val = ""; 4802 } 4803 }); 4804 } 4805 4806 var search_fields = map_obj.map_data.map_options.search_fields; 4807 var exclude_fields = map_obj.map_data.map_options.exclude_fields; 4808 4809 if (Array.isArray(exclude_fields) && exclude_fields.length > 0) { 4810 if (exclude_fields.includes("{post_title}")) { 4811 if (!exclude_fields.includes("{post_link}")) { 4812 exclude_fields.push("{post_link}"); 4813 } 4814 if (!exclude_fields.includes("{marker_title}")) { 4815 exclude_fields.push("{marker_title}"); 4816 } 4817 } 4818 4819 if (exclude_fields.includes("{post_content}")) { 4820 if (!exclude_fields.includes("{post_excerpt}")) { 4821 exclude_fields.push("{post_excerpt}"); 4822 } 4823 if (!exclude_fields.includes("{marker_message}")) { 4824 exclude_fields.push("{marker_message}"); 4825 } 4826 } 4827 4828 if ( 4829 exclude_fields.includes("{post_excerpt}") && 4830 !exclude_fields.includes("{post_content}") 4831 ) { 4832 exclude_fields.push("{post_content}"); 4833 } 4834 4835 if ( 4836 exclude_fields.includes("{marker_address}") && 4837 !exclude_fields.includes("{%_wpgmp_location_address%}") 4838 ) { 4839 exclude_fields.push("{%_wpgmp_location_address%}"); 4840 } 4841 4842 if ( 4843 exclude_fields.includes("{marker_city}") && 4844 !exclude_fields.includes("{%_wpgmp_location_city%}") 4845 ) { 4846 exclude_fields.push("{%_wpgmp_location_city%}"); 4847 } 4848 4849 if ( 4850 exclude_fields.includes("{marker_country}") && 4851 !exclude_fields.includes("{%_wpgmp_location_country%}") 4852 ) { 4853 exclude_fields.push("{%_wpgmp_location_country%}"); 4854 } 4855 4856 if ( 4857 exclude_fields.includes("{marker_state}") && 4858 !exclude_fields.includes("{%_wpgmp_location_state%}") 4859 ) { 4860 exclude_fields.push("{%_wpgmp_location_state%}"); 4861 } 4862 4863 if ( 4864 exclude_fields.includes("{marker_longitude}") && 4865 !exclude_fields.includes("{%_wpgmp_metabox_longitude%}") 4866 ) { 4867 exclude_fields.push("{%_wpgmp_metabox_longitude%}"); 4868 } 4869 4870 if ( 4871 exclude_fields.includes("{marker_latitude}") && 4872 !exclude_fields.includes("{%_wpgmp_metabox_latitude%}") 4873 ) { 4874 exclude_fields.push("{%_wpgmp_metabox_latitude%}"); 4875 } 4876 } 4877 var extra_fields_array = place.location.extra_fields; 4878 var flag_search = false;
4879 var flag_exclude = false; 4880 4881 var search_exclude = {}; 4882 if ( 4883 typeof exclude_fields !== "undefined" && 4884 exclude_fields.length > 0 4885 ) { 4886 flag_exclude = true; 4887 search_exclude = Object.keys(extra_fields_array) 4888 .filter((key) => !exclude_fields.includes(`{${key}}`)) 4889 .reduce((obj, key) => { 4890 obj[key] = extra_fields_array[key]; 4891 return obj; 4892 }, {}); 4893 } 4894 //search with only these field 4895 var search_fields_present = []; 4896 if ( 4897 typeof search_fields !== "undefined" && 4898 search_fields.length > 0 4899 ) { 4900 flag_search = true; 4901 for (var i = 0; i < search_fields.length; i++) { 4902 if ( 4903 extra_fields_array.hasOwnProperty(search_fields[i].slice(1, -1)) 4904 ) { 4905 search_fields_present.push(search_fields[i]); 4906 } 4907 } 4908 } 4909 4910 //Apply Search Filter. 4911 var search_term = map_obj.search_term; 4912 if (search_term && search_term.length > 0) { 4913 if (map_obj.enable_search_term === true && show === true) { 4914 if (flag_search == true || flag_exclude == true) { 4915 if ( 4916 place.title != undefined && 4917 place.title.toLowerCase().indexOf(search_term) >= 0 && 4918 ((flag_search && search_fields.includes("{marker_title}")) || 4919 (flag_exclude && 4920 !exclude_fields.includes("{marker_title}"))) 4921 ) { 4922 show = true; 4923 } else if ( 4924 place.content != undefined && 4925 place.content.toLowerCase().indexOf(search_term) >= 0 && 4926 ((flag_search == true && 4927 search_fields.includes("{marker_message}")) || 4928 (flag_exclude == true && 4929 !exclude_fields.includes("{marker_message}"))) 4930 ) { 4931 show = true; 4932 } else if ( 4933 String(place.location.lat) 4934 .toLowerCase() 4935 .indexOf(search_term) >= 0 && 4936 ((flag_search == true && 4937 search_fields.includes("{marker_latitude}")) || 4938 (flag_exclude == true && 4939 !exclude_fields.includes("{marker_latitude}"))) 4940 ) { 4941 show = true; 4942 } else if ( 4943 String(place.location.lng) 4944 .toLowerCase() 4945 .indexOf(search_term) >= 0 && 4946 ((flag_search == true && 4947 search_fields.includes("{marker_longitude}")) || 4948 (flag_exclude == true && 4949 !exclude_fields.includes("{marker_longitude}"))) 4950 ) { 4951 show = true; 4952 } else if ( 4953 place.address && 4954 place.address.toString().toLowerCase().indexOf(search_term) >= 4955 0 && 4956 ((flag_search == true && 4957 search_fields.includes("{marker_address}")) || 4958 (flag_exclude == true && 4959 !exclude_fields.includes("{marker_address}"))) 4960 ) { 4961 show = true; 4962 } else if ( 4963 place.location.state && 4964 place.location.state.toLowerCase().indexOf(search_term) >= 4965 0 && 4966 ((flag_search == true && 4967 search_fields.includes("{marker_state}")) || 4968 (flag_exclude == true && 4969 !exclude_fields.includes("{marker_state}"))) 4970 ) { 4971 show = true; 4972 } else if ( 4973 place.location.country && 4974 place.location.country.toLowerCase().indexOf(search_term) >= 4975 0 && 4976 ((flag_search == true && 4977 search_fields.includes("{marker_country}")) || 4978 (flag_exclude == true && 4979 !exclude_fields.includes("{marker_country}"))) 4980 ) { 4981 show = true; 4982 } else if ( 4983 place.location.postal_code && 4984 String(place.location.postal_code) 4985 .toLowerCase() 4986 .indexOf(search_term) >= 0 && 4987 ((flag_search == true && 4988 search_fields.includes("{marker_postal_code}")) || 4989 (flag_exclude == true && 4990 !exclude_fields.includes("{marker_postal_code}"))) 4991 ) { 4992 show = true; 4993 } else if ( 4994 place.location.city && 4995 place.location.city.toLowerCase().indexOf(search_term) >= 0 && 4996 ((flag_search == true && 4997 search_fields.includes("{marker_city}")) || 4998 (flag_exclude == true && 4999 !exclude_fields.includes("{marker_city}"))) 5000 ) { 5001 show = true; 5002 } else if ( 5003 typeof map_obj.search_area != "undefined" && 5004 map_obj.search_area != "" && 5005 map_obj.wpgmp_within_radius(place, map_obj.search_area) === 5006 true 5007 ) { 5008 show = true; 5009 } else { 5010 show = false;
5011 } 5012 5013 if (flag_search == true) { 5014 if (search_fields_present.length > 0) { 5015 for (const field of search_fields_present) { 5016 if (typeof place.location.extra_fields != "undefined") { 5017 $.each( 5018 place.location.extra_fields, 5019 function (field, value) { 5020 if ( 5021 value && 5022 $.inArray( 5023 "{" + field + "}", 5024 search_fields_present 5025 ) !== -1 5026 ) { 5027 value = value.toString(); 5028 if ( 5029 value && 5030 value.toLowerCase().indexOf(search_term) >= 0 5031 ) 5032 show = true; 5033 } 5034 } 5035 ); 5036 } 5037 } 5038 } 5039 } else if (flag_exclude == true) { 5040 for (var field in search_exclude) { 5041 var value = search_exclude[field]; 5042 5043 if (value) { 5044 value = value.toString(); 5045 5046 if ( 5047 value && 5048 value.toLowerCase().indexOf(search_term) >= 0 5049 ) { 5050 show = true; 5051 } 5052 } 5053 } 5054 } 5055 } else { 5056 if ( 5057 place.title != undefined && 5058 place.title.toLowerCase().indexOf(search_term) >= 0 5059 ) { 5060 show = true; 5061 } else if ( 5062 place.content != undefined && 5063 place.content.toLowerCase().indexOf(search_term) >= 0 5064 ) { 5065 show = true; 5066 } else if ( 5067 String(place.location.lat) 5068 .toLowerCase() 5069 .indexOf(search_term) >= 0 5070 ) { 5071 show = true; 5072 } else if ( 5073 String(place.location.lng) 5074 .toLowerCase() 5075 .indexOf(search_term) >= 0 5076 ) { 5077 show = true; 5078 } else if ( 5079 place.address && 5080 place.address.toString().toLowerCase().indexOf(search_term) >= 5081 0 5082 ) { 5083 show = true; 5084 } else if ( 5085 place.location.state && 5086 place.location.state.toLowerCase().indexOf(search_term) >= 0 5087 ) { 5088 show = true; 5089 } else if ( 5090 place.location.country && 5091 place.location.country.toLowerCase().indexOf(search_term) >= 0 5092 ) { 5093 show = true; 5094 } else if ( 5095 place.location.postal_code && 5096 String(place.location.postal_code) 5097 .toLowerCase() 5098 .indexOf(search_term) >= 0 5099 ) { 5100 show = true; 5101 } else if ( 5102 place.location.city && 5103 place.location.city.toLowerCase().indexOf(search_term) >= 0 5104 ) { 5105 show = true; 5106 } else if ( 5107 typeof map_obj.search_area != "undefined" && 5108 map_obj.search_area != "" && 5109 map_obj.wpgmp_within_radius(place, map_obj.search_area) === 5110 true 5111 ) { 5112 show = true; 5113 } else { 5114 show = false; 5115 } 5116 5117 if (typeof place.location.extra_fields != "undefined") { 5118 $.each(place.location.extra_fields, function (field, value) { 5119 if (value) { 5120 value = value.toString(); 5121 if ( 5122 value && 5123 value.toLowerCase().indexOf(search_term) >= 0 5124 ) 5125 show = true; 5126 } 5127 }); 5128 } 5129 } 5130 } 5131 } 5132 5133 //Exclude locations without category if location filters are choosed by user 5134 if ( 5135 (place.categories.length == undefined || 5136 place.categories.length == "undefined") && 5137 all_selected_category && 5138 all_selected_category.length > 0 && 5139 $(map_obj.container) 5140 .find('input[name="wpgmp_select_all"]') 5141 .is(":checked") == false && 5142 show 5143 ) { 5144 show = false;
5145 } 5146 5147 // if checked category 5148 if ( 5149 all_selected_category && 5150 show != false && 5151 place.categories.length != undefined 5152 ) { 5153 var in_checked_category = false; 5154 5155 if (all_selected_category.length === 0) { 5156 // means no any category selected so show those location without categories. 5157 if (typeof place.categories != "undefined") { 5158 $.each(place.categories, function (cat_index, category) { 5159 if (category.id === "") in_checked_category = true; 5160 }); 5161 } 5162 } else { 5163 if (typeof place.categories != "undefined") { 5164 $.each(place.categories, function (cat_index, category) { 5165 if (category.id === "") in_checked_category = true; 5166 else if ( 5167 $.inArray(parseInt(category.id), all_selected_category) > -1 5168 ) { 5169 in_checked_category = true; 5170 var iconSize = map_obj.getMarkerSize(); 5171 map_obj.set_icon_marker(place, category.icon,iconSize); 5172 5173 } 5174 }); 5175 } 5176 } 5177 5178 //Hide unchecked locations. 5179 if (all_not_selected_location.length !== 0) { 5180 if ( 5181 $.inArray(parseInt(place.id), all_not_selected_location) > -1 5182 ) { 5183 in_checked_category = false; 5184 } 5185 } 5186 5187 //var checked_categories = $(map_obj.container).find('input[data-marker-category]:checked').length; 5188 if (in_checked_category === false) show = false; 5189 else show = true; 5190 5191 //Show Here checked location. 5192 if (all_selected_location.length !== 0) { 5193 if ($.inArray(parseInt(place.id), all_selected_location) > -1) { 5194 show = true; 5195 } 5196 } 5197 } 5198 5199 if( show == true ) { 5200 place.marker.bindMap(map_obj.map); 5201 } 5202 place.marker.setVisible(show); 5203 5204 if (show == false) { 5205 place.infowindow.close(); 5206 } 5207 place.marker.setAnimation(null); 5208 if ($.isFunction($.fn.locationSortByDistance)) { 5209 if (show === true) { 5210 map_obj.show_places.push(place); 5211 map_obj.sorted_locations_by_search.push(place); 5212 } 5213 } else { 5214 if (show === true) map_obj.show_places.push(place); 5215 } 5216 }); 5217 5218 if ($.isFunction($.fn.locationSortByDistance)) {
5219 if (map_obj.search_place != undefined) { 5220 map_obj.is_place_changed = true; 5221 var sotred_locs = map_obj.shuffle_by_distance( 5222 map_obj.sorted_locations_by_search, 5223 map_obj.search_place 5224 ); 5225 map_obj.places = sotred_locs; 5226 } 5227 } 5228 } 5229 5230 if ( 5231 typeof map_obj.map_data.map_options.bound_map_after_filter !== 'undefined' && 5232 map_obj.map_data.map_options.bound_map_after_filter === true 5233 ) { 5234 const isGoogle = map_obj.isMapProvider("google"); 5235 5236 // Create a bounds object based on provider 5237 const bounds = isGoogle 5238 ? new google.maps.LatLngBounds() 5239 : new L.LatLngBounds(); 5240 5241 if (Array.isArray(map_obj.show_places) && map_obj.show_places.length > 0) { 5242 map_obj.show_places.forEach((place) => { 5243 const lat = parseFloat(place.location.lat); 5244 const lng = parseFloat(place.location.lng); 5245 5246 if (!isNaN(lat) && !isNaN(lng)) { 5247 const latLng = isGoogle 5248 ? new google.maps.LatLng(lat, lng) 5249 : L.latLng(lat, lng); 5250 5251 bounds.extend(latLng); 5252 } 5253 }); 5254 // Fit bounds to map 5255 if (isGoogle) { 5256 map_obj.map.fitBounds(bounds); 5257 } else { 5258 map_obj.map.fitBounds(bounds, { padding: [20, 20] }); // optional padding 5259 } 5260 } 5261 } 5262 5263 5264 if (map_obj.map_data.listing) { 5265 if ($(map_obj.container).find('[data-filter="map-sorting"]').val()) { 5266 var order_data = $(map_obj.container) 5267 .find('[data-filter="map-sorting"]') 5268 .val() 5269 .split("__"); 5270 var data_type = ""; 5271 if (order_data[0] !== "" && order_data[1] !== "") { 5272 if (typeof order_data[2] != "undefined") { 5273 data_type = order_data[2]; 5274 } 5275 map_obj.sorting(order_data[0], order_data[1], data_type); 5276 } 5277 } else { 5278 if ( 5279 map_obj.map_data.listing.default_sorting && 5280 map_obj.map_data.autosort 5281 ) { 5282 var data_type = ""; 5283 if ( 5284 map_obj.map_data.listing.default_sorting.orderby == "listorder" 5285 ) { 5286 data_type = "num"; 5287 } 5288 map_obj.sorting( 5289 map_obj.map_data.listing.default_sorting.orderby, 5290 map_obj.map_data.listing.default_sorting.inorder, 5291 data_type 5292 ); 5293 } 5294 } 5295 5296 map_obj.update_places_listing(); 5297 } 5298 5299 if (map_obj.map_data.marker_cluster) { 5300 setTimeout(function () { 5301 map_obj.set_marker_cluster(); 5302 }, 2000); 5303 } 5304 5305 const externalEvent = new CustomEvent("wpgmpApplyFilters", { detail: { map_obj }, }); 5306 document.dispatchEvent(externalEvent); 5307 5308 // document.addEventListener("wpgmpApplyFilters", function (event) { 5309 // // Access map object 5310 // const mapObj = event.detail.map_obj; 5311 // console.log("Map object received:", mapObj); 5312 // jQuery('.slp_results_count').text(mapObj.show_places.length); 5313 // }); 5314 } 5315 update_filters() { 5316 var map_obj = this; 5317 map_obj.filters = {}; 5318 var all_dropdowns = $(map_obj.container).find('[data-filter="dropdown"]'); 5319 var all_checkboxes = $(map_obj.container).find( 5320 '[data-filter="checklist"]:checked' 5321 ); 5322 var all_list = $(map_obj.container).find( 5323 '[data-filter="list"].fc_selected' 5324 ); 5325 const map_id = map_obj.map_data.map_property.map_id; 5326 $.each(all_dropdowns, function (index, element) { 5327 if ($(this).val() != "") { 5328 if (typeof map_obj.filters[$(this).data("name")] == "undefined") { 5329 map_obj.filters[$(this).data("name")] = []; 5330 } 5331 5332 map_obj.filters[$(this).data("name")].push($(this).val()); 5333 } 5334 }); 5335 5336 $.each(all_checkboxes, function (index, element) { 5337 if (typeof map_obj.filters[$(this).data("name")] == "undefined") { 5338 map_obj.filters[$(this).data("name")] = []; 5339 } 5340 5341 map_obj.filters[$(this).data("name")].push($(this).val()); 5342 }); 5343 5344 $.each(all_list, function (index, element) { 5345 if (typeof map_obj.filters[$(this).data("name")] == "undefined") { 5346 map_obj.filters[$(this).data("name")] = []; 5347 } 5348 5349 map_obj.filters[$(this).data("name")].push( 5350 $(this).data("value").toString() 5351 ); 5352 }); 5353 5354 $('[data-wpgmp-filter="true"][data-wpgmp-map-id="' + map_id + '"]').each( 5355 function () { 5356 const filterBy = $(this).data("wpgmp-filter-by"); 5357 const inputType = $(this).prop("type").toLowerCase(); 5358 let inputValue; 5359 if (inputType === "checkbox" && $(this).is(":checked")) { 5360 inputValue = $(this).val(); 5361 } else if (inputType === "select-one" || inputType === "select") { 5362 inputValue = $(this).find("option:selected").val(); 5363 } else if (inputType === "radio" && $(this).is(":checked")) { 5364 inputValue = $(this).val(); 5365 } 5366 5367 if (filterBy == "search" && $(this).val().length > 2) { 5368 map_obj.search_term = $(this).val().toLowerCase(); 5369 map_obj.enable_search_term = true; 5370 } else if (filterBy == "search" && $(this).val().length < 2) { 5371 map_obj.search_term = ""; 5372 map_obj.enable_search_term = true; 5373 } 5374 5375 if (inputValue !== undefined && inputValue !== "") {
5376 map_obj.filters[filterBy] = map_obj.filters[filterBy] || []; 5377 map_obj.filters[filterBy].push(inputValue); 5378 } 5379 } 5380 ); 5381 5382 if (map_obj.addonInfo !== "") { 5383 $.each(map_obj.addonInfo, function (key, method) { 5384 var method_name = method.filter_register_mthod; 5385 5386 if ( 5387 typeof map_obj[method_name] !== "undefined" && 5388 $.isFunction(map_obj[method_name]) 5389 ) { 5390 map_obj[method_name](); 5391 } 5392 }); 5393 } 5394 5395 this.apply_filters(); 5396 } 5397 apply_url_filters() { 5398 var map_obj = this; 5399 var search = location.search.substring(1); 5400 var url_filters = $.parseParams(search || ""); 5401 5402 if (!$.isEmptyObject(url_filters)) { 5403 map_obj.url_filters = url_filters; 5404 5405 $.each(url_filters, function (index, element) { 5406 if (index == "search") { 5407 $(map_obj.container) 5408 .find('[data-input="wpgmp-search-text"]') 5409 .val(element.trim()); 5410 if (map_obj.map_data.listing.apply_default_radius == true) { 5411 if (element.length >= 2) { 5412 5413 map_obj.wpgmp_set_search_area(element); 5414 5415 } 5416 } else { 5417 map_obj.update_filters(); 5418 } 5419 } 5420 }); 5421 } 5422 } 5423 5424 register_events() { 5425 const map_obj = this; 5426 const map_id = map_obj.map_data.map_property.map_id; 5427 const $container = $(map_obj.container); 5428 const template = map_obj.map_data.map_options.template_name; 5429 const hasSearchButton = !!$(`[data-wpgmp-filter="true"][data-wpgmp-search-button="true"]`).length; 5430 5431 $container.on("input change", ".wpgmp_error", function () { 5432 $(this).removeClass("wpgmp_error"); 5433 }); 5434 5435 // ------------------------------- 5436 // ð Filters (dropdown, checklist, list, radius, per-page) 5437 // ------------------------------- 5438 5439 // Accordion tab toggle UI (for listings/filters etc.) 5440 $("body").on("click", ".fc-accordion-tab", function () { 5441 if ($(this).hasClass("active")) { 5442 $(this).removeClass("active"); 5443 5444 var acc_child = $(this).next().removeClass("active"); 5445 } else { 5446 $(".fc-accordion-tab").removeClass("active"); 5447 5448 $(".fc-accordion dd").removeClass("active"); 5449 5450 $(this).addClass("active"); 5451 5452 var acc_child = $(this).next().addClass("active"); 5453 } 5454 }); 5455 5456 if (map_obj.map_data.listing) { 5457 // Hook for dynamic taxonomy filters 5458 $.each(map_obj.map_data.listing.filters, function (key, filter) { 5459 $(map_obj.container) 5460 .find('select[name="' + filter + '"]') 5461 .on("change", function () { 5462 map_obj.update_filters(); 5463 }); 5464 }); 5465 } 5466 5467 $container.on("change", `select[data-wpgmp-filter="true"][data-wpgmp-map-id="${map_id}"]`, () => { 5468 map_obj.update_filters(); 5469 }); 5470 5471 $container.on("change", `select[data-wpgmp-map-id="${map_id}"][data-name="radius"]`, function () { 5472 const $searchBox = $container.find('[data-input="wpgmp-search-text"]'); 5473 5474 $searchBox.removeClass("wpgmp_error"); 5475 // Prevent override if locationSortByDistance plugin is active or no search box 5476 if ($.isFunction($.fn.locationSortByDistance) || !$searchBox.length) return; 5477 5478 if (!$searchBox.val().trim()) { 5479 $searchBox.addClass("wpgmp_error").focus(); 5480 return; 5481 } 5482 5483 const query = $searchBox.val().trim(); 5484 if (query.length >= 2 && $(this).val() !== "") { 5485 map_obj.wpgmp_set_search_area(query); 5486 } else { 5487 map_obj.search_area = ""; 5488 map_obj.update_filters(); 5489 } 5490 }); 5491 5492 $container.on('click', '.categories_filter_reset_btn', function () { 5493 $(map_obj.container).find('.wpgmp_filter_wrappers select').each(function () { 5494 $(this).find('option:first').attr('selected', 'selected'); 5495 $(this).find('option:first').prop('selected', 'selected'); 5496 }); 5497 5498 $('.wpgmp_search_input').val(''); 5499 5500 if (map_obj.addonInfo !== '') { 5501 5502 $.each(map_obj.addonInfo, function (key, method) { 5503 var method_name = method.filter_reset_method; 5504 5505 if (typeof map_obj[method_name] !== 'undefined' && $.isFunction(map_obj[method_name])) { 5506 5507 map_obj[method_name](); 5508 } 5509 5510 }); 5511 5512 } 5513 map_obj.update_filters(); 5514 5515 }); 5516 5517 $container.on("change", '[data-filter="dropdown"]', () => map_obj.update_filters());
5518 $container.on("click", '[data-filter="checklist"]', () => map_obj.update_filters()); 5519 $container.on("click", '[data-filter="list"]', function () { 5520 $(this).toggleClass("fc_selected"); 5521 map_obj.update_filters(); 5522 }); 5523 5524 // Marker link scroll-to functionality 5525 $container.on("click", ".wpgmp_marker_link", function () { 5526 const markerId = $(this).data("marker"); 5527 const source = $(this).data("source"); 5528 $("html, body").animate( 5529 { scrollTop: $(map_obj.container).offset().top - 150 }, 5530 500 5531 ); 5532 map_obj.open_infowindow(markerId, source); 5533 }); 5534 5535 if (!hasSearchButton && (template !== 'layout_6' && template !== 'layout_7')) { 5536 $container.on("keyup", `input[data-wpgmp-filter="true"][data-wpgmp-map-id="${map_id}"]`, () => { 5537 map_obj.update_filters(); 5538 }); 5539 } 5540 5541 // Reset all filters (button with reset attribute) 5542 $container.on("click", '[data-filter-reset="true"]', () => { 5543 $('input[type="text"][data-wpgmp-filter="true"]').val(''); 5544 $('select[data-wpgmp-filter="true"]').prop("selectedIndex", 0); 5545 $('input[type="checkbox"][data-filter="checklist"], input[type="checkbox"][data-wpgmp-filter="true"]').prop("checked", false); 5546 $('[data-filter="list"].fc_selected').removeClass("fc_selected"); 5547 $('input[type="radio"][data-wpgmp-filter="true"]').prop("checked", false); 5548 map_obj.update_filters(); 5549 }); 5550 5551 // Advanced template â search button click triggers filtering 5552 $container.on("click", `[data-wpgmp-filter="true"][data-wpgmp-search-button="true"]`, () => { 5553 map_obj.update_filters(); 5554 }); 5555 5556 // ------------------------------- 5557 // ð Search Input 5558 // ------------------------------- 5559 $container.on("keyup", '[data-input="wpgmp-search-text"]', function () { 5560 const searchVal = $(this).val().trim(); 5561 $container.find('[data-filter="map-radius"]').val(""); 5562 map_obj.search_area = ""; 5563 5564 if (searchVal.length >= 2 && map_obj.map_data.listing.apply_default_radius === true) { 5565 5566 map_obj.wpgmp_set_search_area(searchVal); 5567 5568 } else { 5569 map_obj.update_filters(); 5570 } 5571 }); 5572 5573 // ------------------------------- 5574 // ð Sorting & Per Page 5575 // ------------------------------- 5576 $container.on("change", `select[data-wpgmp-map-id="${map_id}"][data-filter="map-sorting"]`, function () { 5577 const [orderby, order, type = ""] = $(this).val().split("__"); 5578 if (orderby && order) { 5579 map_obj.sorting(orderby, order, type); 5580 map_obj.update_places_listing(); 5581 } 5582 }); 5583 5584 $container.on("change", `select[data-wpgmp-map-id="${map_id}"][data-filter="map-perpage-location-sorting"]`, function () { 5585 map_obj.per_page_value = $(this).val(); 5586 map_obj.update_filters(); 5587 }); 5588 5589 // ------------------------------- 5590 // ðºï¸ Marker & InfoWindow Events 5591 // ------------------------------- 5592 5593 $container.on("click", ".wpgmp_location_container a[data-marker]", function (e) { 5594 e.preventDefault(); 5595 const markerId = $(this).data("marker"); 5596 if (!markerId || typeof map_obj.open_infowindow !== "function") return; 5597 5598 map_obj.open_infowindow(markerId); 5599 }); 5600 5601 // Listing infowindow (custom event trigger like 'click', 'hover') 5602 $container.on(map_obj.settings.listing_infowindow_open_event, ".wpgmp_locations a[data-marker]", function () { 5603 const $el = $(this); 5604 $("html, body").animate({ scrollTop: $container.offset().top - 150 }, 500); 5605 setTimeout(() => map_obj.open_infowindow($el.data("marker")), 300); 5606 }); 5607 5608 $container.on(map_obj.settings.listing_infowindow_open_event, ".wep-card__title a[data-marker]", function () { 5609 const $el = $(this); 5610 $("html, body").animate({ scrollTop: $container.offset().top - 150 }, 500); 5611 setTimeout(() => map_obj.open_infowindow($el.data("marker")), 300); 5612 }); 5613 5614 // ------------------------------- 5615 // ð Tabs & UI Toggles 5616 // ------------------------------- 5617 $container.on("click", ".wpgmp_toggle_container", function () { 5618 $container.find(".wpgmp_toggle_main_container").slideToggle("slow"); 5619 const txt = $(this).text(); 5620 $(this).text(txt === wpgmp_local.hide ? wpgmp_local.show : wpgmp_local.hide); 5621 }); 5622 5623 $container.on("click", "li[class^='wpgmp-tab-'] a", function () { 5624 const tabId = $(this).parent().attr("rel"); 5625 $container.find("li[class^='wpgmp-tab-'] a").removeClass("active"); 5626 $(this).addClass("active"); 5627 $container.find(".wpgmp_toggle_main_container div[id^='wpgmp_tab_']").hide(); 5628 $container.find(`#wpgmp_tab_${tabId}`).show(); 5629 }); 5630 5631 $container.find(".wpgmp_find_nearby_button").click(function () { 5632 const target = $(this).closest(".wpgmp_nearby_container"); 5633 const inputField = $(target).find(".wpgmp_auto_suggest"); 5634 const lat = inputField.data('latitude'); 5635 const lon = inputField.data('longitude'); 5636 5637 const radiusField = $(map_obj.container).find("input[name='wpgmp_radius']");
5638 const radius = radiusField.val(); 5639 5640 let hasError = false; 5641 5642 // Reset previous error classes 5643 inputField.removeClass("wpgmp_error"); 5644 radiusField.removeClass("wpgmp_error"); 5645 5646 // Validate location 5647 if (!lat || !lon) { 5648 inputField.addClass("wpgmp_error").focus(); 5649 hasError = true; 5650 } 5651 5652 // Validate radius 5653 if (!radius || isNaN(radius) || parseInt(radius) <= 0) { 5654 radiusField.addClass("wpgmp_error"); 5655 hasError = true; 5656 } 5657 5658 if (hasError) { 5659 return; // Stop execution 5660 } 5661 5662 const dim = $(map_obj.container).find("select[name='wpgmp_route_dimension']").val(); 5663 const amenities = $(map_obj.container).find('input[name^="wpgmp_place_types"]:checked'); 5664 const divide_by = (dim === 'miles') ? 1.60934 : 1; 5665 const circle_radius_meters = parseFloat(radius) * divide_by * 1000; 5666 5667 // Clear existing amenities 5668 if (map_obj.current_amenities?.length > 0) { 5669 map_obj.current_amenities.forEach((amenity) => { 5670 if (amenity.marker?.setMap) { 5671 amenity.marker.setMap(null); 5672 } 5673 }); 5674 } 5675 5676 map_obj.current_amenities = []; 5677 map_obj.amenity_infowindow = map_obj.infowindow_marker; 5678 5679 const place_types = amenities.map(function () { 5680 return $(this).val(); 5681 }).get(); 5682 5683 place_types.forEach(function (placeType) { 5684 const request = { 5685 location: new google.maps.LatLng(lat, lon), 5686 radius: circle_radius_meters, 5687 types: [placeType], 5688 rankBy: "DISTANCE" 5689 }; 5690 5691 map_obj.fetchNearbyAmenities(request, function (places) { 5692 places.forEach(function (place) { 5693 const marker = map_obj.createMarker(place); 5694 map_obj.current_amenities.push({ marker, place }); 5695 }); 5696 }); 5697 }); 5698 5699 // Center map and draw circle 5700 const centerLatLng = new google.maps.LatLng(lat, lon); 5701 map_obj.map.setCenter(centerLatLng); 5702 5703 if (map_obj.map_data.map_tabs.nearby_tab?.show_nearby_circle) { 5704 if (map_obj.set_nearbycenter_circle) { 5705 map_obj.set_nearbycenter_circle.setMap(null); 5706 } 5707 5708 map_obj.set_nearbycenter_circle = new google.maps.Circle({ 5709 map: map_obj.map, 5710 fillColor: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_fillcolor, 5711 fillOpacity: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_fillopacity, 5712 strokeColor: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_strokecolor, 5713 strokeOpacity: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_strokeopacity, 5714 strokeWeight: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_strokeweight, 5715 center: centerLatLng, 5716 radius: circle_radius_meters 5717 }); 5718 5719 map_obj.map.setZoom(parseInt(map_obj.map_data.map_tabs.nearby_tab.nearby_circle_zoom)); 5720 } 5721 }); 5722 5723 5724 5725 // ------------------------------- 5726 // ð¦ Category / Checkbox 5727 // ------------------------------- 5728 $container.on("change", "input[data-marker-category]", function () { 5729 const $el = $(this), isChecked = $el.is(":checked"); 5730 const catId = $el.data("marker-category"); 5731 const $wrap = $el.closest('[data-container="wpgmp-category-tab-item"]'); 5732 5733 map_obj.last_category_chkbox_action = isChecked ? "checked" : "unchecked"; 5734 if (isChecked) { 5735 map_obj.last_selected_cat_id = catId; 5736 $wrap.find("input[data-marker-location]").prop("checked", true); 5737 } else { 5738 map_obj.last_remove_cat_id = catId; 5739 $wrap.find("input[data-marker-location]").prop("checked", false); 5740 } 5741 5742 const childCats = $el.data("child-cats"); 5743 if (childCats) { 5744 childCats.toString().split(",").forEach(cat => { 5745 const $child = $el.closest(".wpgmp_tab_item").find(`[data-marker-category="${cat}"]`); 5746 $child.prop("checked", isChecked); 5747 $child.closest(".wpgmp_tab_item").find("input[data-marker-location]").prop("checked", isChecked); 5748 }); 5749 } 5750 5751 map_obj.update_filters(); 5752 }); 5753 5754 $container.on("change", "input[data-marker-location]", () => map_obj.update_filters()); 5755 5756 // ------------------------------- 5757 // ð¨ï¸ Print Listings 5758 // ------------------------------- 5759 $container.on("click", '[data-action="wpgmp-print"]', function () { 5760 const id = $(map_obj.element).attr("id"); 5761 const $default = $(`[data-container="wpgmp-listing-${id}"]`); 5762 const $custom = $(`[data-container="wpgmp-custom-listing-${id}"]`); 5763 $default.length && $default.print(); 5764 $custom.length && $custom.print(); 5765 }); 5766 5767 // ------------------------------- 5768 // ð Select All Categories 5769 // ------------------------------- 5770 if (map_obj.map_data.map_tabs?.category_tab?.select_all === true) { 5771 $container.on("click", 'input[name="wpgmp_select_all"]', function () { 5772 const isChecked = $(this).is(":checked"); 5773 $container.find("input[data-marker-category], input[data-marker-location]").prop("checked", isChecked); 5774 map_obj.update_filters(); 5775 }); 5776 } 5777 5778 // -------------------------------
5779 // ð View Details 5780 // ------------------------------- 5781 $container.on("click", "[data-view-details]", function (e) { 5782 e.preventDefault(); 5783 const id = $(this).data("view-details"); 5784 const target = $(this).attr("target"); 5785 5786 map_obj.places.forEach(place => { 5787 if (place.id == id) { 5788 if (place.source === "post") { 5789 const url = place.location.extra_fields.post_link; 5790 target === "_blank" ? window.open(url, "_blank") : location.href = url; 5791 } else { 5792 $("html, body").animate({ scrollTop: $container.offset().top - 150 }, 500); 5793 map_obj.open_infowindow(place.id); 5794 } 5795 } 5796 }); 5797 }); 5798 5799 // ------------------------------- 5800 // ð Locate Me Button 5801 // ------------------------------- 5802 $container.on("click", `[data-wpgmp='mcurrent_location'][data-wpgmp-map-id="${map_id}"]`, function () { 5803 const $this = $(this); 5804 const $input = $this.parent().find(".wpgmp_auto_suggest"); 5805 5806 map_obj.get_current_location( 5807 function (loc) { 5808 const lat = map_obj.isMapProvider("google") ? loc.lat() : loc.lat; 5809 const lng = map_obj.isMapProvider("google") ? loc.lng() : loc.lng; 5810 5811 $input.data("latitude", lat); 5812 $input.data("longitude", lng); 5813 5814 map_obj.wpgmp_geocode(lat, lng).then((result) => { 5815 $input.val(result.address); 5816 }).catch(console.error); 5817 }, 5818 function () {} 5819 ); 5820 5821 }); 5822 5823 5824 // ------------------------------- 5825 // ð Route Toggle Handling 5826 // ------------------------------- 5827 $container.find(".wpgmp_specific_route_item").prop("checked", true); 5828 5829 $container.on("change", `[data-wpgmp='route_toggle'][data-wpgmp-map-id="${map_id}"]`, function () { 5830 const route = map_obj.route_directions[$(this).val()]; 5831 if (route) route.setMap($(this).is(":checked") ? map_obj.map : null); 5832 }); 5833 5834 // ------------------------------- 5835 // ð Direction Button Logic 5836 // ------------------------------- 5837 if (typeof map_obj.register_direction_tab === "function") { 5838 map_obj.register_direction_tab(); 5839 } 5840 5841 // ------------------------------- 5842 // ð Drawing Events 5843 // -- 5844 $('.wpgmp-shape-delete').click(function (e) { 5845 e.preventDefault(); 5846 5847 map_obj.deleteSelectedShape(); 5848 $('.temp_row').addClass('hiderow'); 5849 }); 5850 5851 $('select[name="shape_stroke_opacity"]').change(function () { 5852 map_obj.set_shapes_options(map_obj.selectedShape); 5853 }); 5854 $('select[name="shape_stroke_weight"]').change(function () { 5855 map_obj.set_shapes_options(map_obj.selectedShape); 5856 }); 5857 5858 $('select[name="shape_fill_opacity"]').change(function () { 5859 map_obj.set_shapes_options(map_obj.selectedShape); 5860 }); 5861 5862 5863 if (typeof map_obj.map_data.shapes != 'undefined') { 5864 if (map_obj.map_data.shapes.drawing_editable === true) { 5865 5866 $('.shape_fill_color').wpColorPicker({ 5867 change: function(event, ui) { 5868 var polyOptions2 = { 5869 fillColor: $(this).val(), 5870 }; 5871 map_obj.selectedShape.setOptions(polyOptions2); 5872 } 5873 }); 5874 5875 $('.shape_stroke_color').wpColorPicker({ 5876 change: function(event, ui) { 5877 var polyOptions2 = { 5878 strokeColor: $(this).val(), 5879 }; 5880 map_obj.selectedShape.setOptions(polyOptions2); 5881 } 5882 }); 5883 } 5884 } 5885 5886 $('input[name="shape_click_url"]').change(function () { 5887 map_obj.set_shapes_options(map_obj.selectedShape); 5888 }); 5889 $('textarea[name="shape_click_message"]').blur(function () { 5890 map_obj.set_shapes_options(map_obj.selectedShape); 5891 }); 5892 5893 $("textarea[name='shape_path']").blur(function () { 5894 var cordinates = $(this).val().split(' '); 5895 if (cordinates.length == 1) { 5896 cordinates = $(this).val().split("\n"); 5897 } 5898 var path = []; 5899 $.each(cordinates, function (ind, cordinate) { 5900 var latlng = cordinate.split(','); 5901 path.push(new google.maps.LatLng(latlng[0], latlng[1])); 5902 }); 5903 map_obj.selectedShape.setPath(path); 5904 }); 5905 5906 $("input[name='shape_radius']").blur(function () { 5907 var radius = parseFloat($(this).val()); 5908 map_obj.selectedShape.setRadius(radius); 5909 }); 5910 5911 $("input[name='shape_center']").blur(function () { 5912 var latlng = $(this).val().split(','); 5913 map_obj.selectedShape.setCenter(new google.maps.LatLng(parseFloat(latlng[0]), parseFloat(latlng[1]))); 5914 }); 5915 5916 $("input[name='shape_northeast']").blur(function () { 5917 var ea = $(this).val().split(','); 5918 var sw = $("input[name='shape_southwest']").val().split(','); 5919 5920 map_obj.selectedShape.setBounds(new google.maps.LatLngBounds(new google.maps.LatLng(parseFloat(sw[0]), parseFloat(sw[1])), new google.maps.LatLng(parseFloat(ea[0]), parseFloat(ea[1])))); 5921 }); 5922 5923 $("input[name='shape_southwest']").blur(function () { 5924 var sw = $(this).val().split(','); 5925 var ea = $("input[name='shape_northeast']").val().split(','); 5926 5927 map_obj.selectedShape.setBounds(new google.maps.LatLngBounds(new google.maps.LatLng(parseFloat(sw[0]), parseFloat(sw[1])), new google.maps.LatLng(parseFloat(ea[0]), parseFloat(ea[1])))); 5928 }); 5929 5930 $("input[name='shape_center']").blur(function () { 5931 var latlng = $(this).val().split(','); 5932 map_obj.selectedShape.setCenter(new google.maps.LatLng(parseFloat(latlng[0]), parseFloat(latlng[1]))); 5933 }); 5934 5935 $('button[name="wpgmp_save_drawing"]').click(function (e) { 5936 5937 var all_shapes_cordinate = []; 5938
5939 all_shapes_cordinate.push('polylines=' + map_obj.wpgmp_save_polylines().join('::')); 5940 all_shapes_cordinate.push('polygons=' + map_obj.wpgmp_save_polygons().join('::')); 5941 all_shapes_cordinate.push('circles=' + map_obj.wpgmp_save_circles().join('::')); 5942 all_shapes_cordinate.push('rectangles=' + map_obj.wpgmp_save_rectangles().join('::')); 5943 5944 map_obj.wpgmp_save_shapes(all_shapes_cordinate); 5945 5946 }); 5947 5948 5949 5950 } 5951 5952 create_perpage_option() { 5953 var map_obj = this; 5954 var options = ""; 5955 var content = ""; 5956 5957 content += 5958 '<select name="map_perpage_location_sorting" data-wpgmp-map-id="'+this.map_data.map_property.map_id+'" data-filter="map-perpage-location-sorting" class="choose_salutation">'; 5959 content += 5960 '<option value="' + 5961 map_obj.map_data.listing.pagination.listing_per_page + 5962 '">' + 5963 wpgmp_local.show_locations + 5964 "</option>"; 5965 content += '<option value="25">25</option>'; 5966 content += '<option value="50">50</option>'; 5967 content += '<option value="100">100</option>'; 5968 content += '<option value="200">200</option>'; 5969 content += '<option value="500">500</option>'; 5970 content += 5971 '<option value="' + 5972 map_obj.show_places.length + 5973 '">' + 5974 wpgmp_local.all_location + 5975 "</option>"; 5976 content += "</select>"; 5977 5978 return content; 5979 } 5980 create_sorting() { 5981 var options = ""; 5982 5983 var content = ""; 5984 5985 if (this.map_data.listing.display_sorting_filter === true) { 5986 content += 5987 '<select name="map_sorting" data-wpgmp-map-id="'+this.map_data.map_property.map_id+'" data-filter="map-sorting"><option value="">' + 5988 wpgmp_local.sort_by + 5989 "</option>"; 5990 $.each(this.map_data.listing.sorting_options, function (id, name) { 5991 content += "<option value='" + id + "'>" + name + "</option>"; 5992 }); 5993 content += "</select>"; 5994 } 5995 5996 return content; 5997 } 5998 create_radius() { 5999 var options = ""; 6000 6001 var content = ""; 6002 if (this.map_data.listing.display_radius_filter === true) { 6003 var radius_options = this.map_data.listing.radius_options; 6004 6005 if (radius_options != undefined) { 6006 content += 6007 '<select data-name="radius" data-wpgmp-map-id="'+this.map_data.map_property.map_id+'" name="map_radius"><option value="">' + 6008 wpgmp_local.select_radius + 6009 "</option>"; 6010 var radius_dimension = this.map_data.listing.radius_dimension; 6011 $.each(radius_options.split(","), function (id, name) { 6012 if (radius_dimension == "miles") { 6013 content += 6014 "<option value='" + 6015 name + 6016 "'>" + 6017 name + 6018 " " + 6019 wpgmp_local.miles + 6020 "</option>"; 6021 } else { 6022 content += 6023 "<option value='" + 6024 name + 6025 "'>" + 6026 name + 6027 " " + 6028 wpgmp_local.km + 6029 "</option>"; 6030 } 6031 }); 6032 content += "</select>"; 6033 } 6034 } 6035 6036 return content; 6037 } 6038 custom_filters() { 6039 var map_obj = this; 6040 var options = ""; 6041 var places = this.map_data.places; 6042 var wpgmp_filters = this.map_data.filters; 6043 map_obj.template_data = []; 6044 this.filter_content = this.display_filters(); 6045 6046 this.filter_position = this.map_data.listing.filters_position; 6047 6048 if ( 6049 $(this.container).find(".wpgmp_filter_wrappers").length > 0 && 6050 map_obj.map_data.map_options.advance_template == false 6051 ) 6052 $(this.container) 6053 .find(".wpgmp_filter_wrappers") 6054 .html(this.filter_content); 6055 6056 if ( 6057 typeof wpgmp_filters == "undefined" || 6058 typeof wpgmp_filters.custom_filters == "undefined" || 6059 wpgmp_filters.custom_filters.length == 0 6060 ) { 6061 return; 6062 } 6063 6064 $.each( 6065 wpgmp_filters.custom_filters, 6066 function (template_shortcode, filter_options) { 6067 var all_filters = []; 6068 var content = ""; 6069 var filters = {}; 6070 $.each(filter_options, function (filter_type, filter_parameter) { 6071 $.each(filter_parameter, function (filter_name, filter_label) { 6072 $.each(places, function (index, place) { 6073 if (filter_name == "category") { 6074 if (typeof place.categories == "undefined") { 6075 place.categories = {}; 6076 } 6077 $.each(place.categories, function (cat_index, category) { 6078 if (typeof filters[category.type] == "undefined") { 6079 filters[category.type] = {}; 6080 } 6081 if (category.name) { 6082 filters[category.type][category.name] = category.id; 6083 } 6084 }); 6085 } else { 6086 if (typeof place[filter_name] != "undefined") { 6087 if (typeof filters[filter_name] == "undefined") { 6088 filters[filter_name] = {}; 6089 } 6090 if (place[filter_name]) { 6091 filters[filter_name][place[filter_name]] = 6092 place[filter_name]; 6093 } 6094 } 6095 6096 if ( 6097 typeof place.location.extra_fields[filter_name] != 6098 "undefined" 6099 ) { 6100 if (typeof filters[filter_name] == "undefined") { 6101 filters[filter_name] = {}; 6102 } 6103 if (place.location.extra_fields[filter_name]) { 6104 filters[filter_name][ 6105 place.location.extra_fields[filter_name] 6106 ] = place.location.extra_fields[filter_name]; 6107 } 6108 } 6109 6110 if (typeof place.location[filter_name] != "undefined") { 6111 if (typeof filters[filter_name] == "undefined") { 6112 filters[filter_name] = {}; 6113 } 6114 if (place.location[filter_name]) { 6115 filters[filter_name][place.location[filter_name]] = 6116 place.location[filter_name]; 6117 } 6118 } 6119 6120 if ( 6121 typeof place.custom_filters != "undefined" && 6122 typeof place.custom_filters[filter_name] != "undefined" 6123 ) { 6124 if (typeof filters[filter_name] == "undefined") { 6125 filters[filter_name] = {}; 6126 } 6127 if (place.custom_filters[filter_name]) { 6128 var options = place.custom_filters[filter_name]; 6129 if ($.isArray(options)) { 6130 $.each(options, function (index, value) { 6131 filters[filter_name][value] = value; 6132 }); 6133 } else { 6134 filters[filter_name][options] = options; 6135 } 6136 } 6137 } 6138 6139 // It could be radius filter. 6140 if (filter_name == "radius") { 6141 if (typeof filters[filter_name] == "undefined") { 6142 filters[filter_name] = {}; 6143 } 6144 6145 var radius_options = wpgmp_filters.radius_options; 6146 var radius_dimension = wpgmp_filters.radius_dimension; 6147 $.each(radius_options.split(","), function (id, name) { 6148 if (radius_dimension == "miles") { 6149 filters[filter_name][name + " " + wpgmp_local.miles] = 6150 name; 6151 } else { 6152 filters[filter_name][name + " " + wpgmp_local.km] = 6153 name; 6154 } 6155 }); 6156 } 6157 } 6158 }); 6159 }); 6160 6161 if (filter_type == "dropdown") { 6162 if (typeof filters != "undefined") { 6163 $.each(filters, function (index, options) { 6164 if(Object.keys(options).length < 1){ 6165 return true; 6166 } 6167 options = map_obj.sort_object_by_value(options); 6168 options = map_obj.sort_object_by_unique_values(options); 6169 options = map_obj.sort_numeric_value_filters(options); 6170 content += 6171 '<select data-filter="dropdown" name="place_' + 6172 index + 6173 '" data-name = "' + 6174 index + 6175 '">'; 6176 content += 6177 '<option value="">' + 6178 (filter_parameter[index] 6179 ? filter_parameter[index] 6180 : "Select " + index) + 6181 "</option>"; 6182 $.each(options, function (name, value) { 6183 var optionlabel = value; 6184 value = value.replace("'", "'"); 6185 value = value.replace('"', """); 6186 if (value != "" && value != null) 6187 content += 6188 "<option value='" + 6189 value.toLowerCase() + 6190 "'>" +
6191 optionlabel + 6192 "</option>"; 6193 }); 6194 content += "</select>"; 6195 }); 6196 } 6197 } 6198 6199 if (filter_type == "checklist") { 6200 if (typeof filters != "undefined") { 6201 $.each(filters, function (index, options) { 6202 options = map_obj.sort_object_by_value(options); 6203 options = map_obj.sort_object_by_unique_values(options); 6204 options = map_obj.sort_numeric_value_filters(options); 6205 6206 content += '<div class="wpgmp_filters_checklist">'; 6207 content += 6208 '<label data-filter = "place_' + 6209 index + 6210 '" >' + 6211 (filter_parameter[index] 6212 ? filter_parameter[index] 6213 : "Select " + index) + 6214 "</label>"; 6215 content += '<div class="wpgmp_checklist_wrap">'; 6216 $.each(options, function (name, value) { 6217 if (value != "" && value != null) 6218 content += 6219 "<div class='wpgmp_checkbox_input'><input data-filter='checklist' type='checkbox' data-name = '" + 6220 index + 6221 "' value='" + 6222 value.toLowerCase() + 6223 "'><span class='wpgmp_checklist_title'>" + 6224 value + 6225 "</span></div>"; 6226 }); 6227 content += "</div></div>"; 6228 }); 6229 } 6230 } 6231 6232 if (filter_type == "list") { 6233 if (typeof filters != "undefined") { 6234 $.each(filters, function (index, options) { 6235 content += '<div class="wpgmp_filters_list">'; 6236 content += 6237 '<label data-filter = "place_' + 6238 index + 6239 '" >' + 6240 (wpgmp_filters.custom_filters[index] 6241 ? wpgmp_filters.custom_filters[index] 6242 : "Select " + index) + 6243 "</label><ul>"; 6244 $.each(options, function (name, value) { 6245 if (value != "" && value != null) 6246 content += 6247 "<li data-filter='list' data-name = '" + 6248 index + 6249 "' data-value='" + 6250 value + 6251 "'>" + 6252 name + 6253 "</li>"; 6254 }); 6255 content += "</ul></div>"; 6256 }); 6257 } 6258 } 6259 if (map_obj.map_data.map_options.advance_template) { 6260 if (!map_obj.template_data) { 6261 map_obj.template_data = {}; // Ensure template_data exists 6262 } 6263 if (!Array.isArray(map_obj.template_data.filter)) { 6264 map_obj.template_data.filter = []; // Ensure filter is an array 6265 } 6266 map_obj.template_data.filter.push(filters); 6267 } 6268 }); 6269 6270 //$(map_obj.container).find("."+template_shortcode).html(content); 6271 if (map_obj.map_data.map_options.advance_template == false) { 6272 $(map_obj.container) 6273 .find(wpgmp_filters.filters_container) 6274 .append(content); 6275 } 6276 } 6277 ); 6278 6279 // now create select boxes 6280 } 6281 sort_numeric_value_filters(filter_options) { 6282 if (!filter_options.some(isNaN)) { 6283 filter_options.sort(function (a, b) { 6284 return a - b; 6285 }); 6286 } 6287 return filter_options; 6288 } 6289 6290 // ----------------------------- 6291 // ð¦ Sorting Utilities 6292 // ----------------------------- 6293 sorting(order_by, in_order, data_type) { 6294 switch (order_by) { 6295 case "category": 6296 if (this.places !== undefined) { 6297 this.places.sort(this.sortByCategory); 6298 } 6299 if (this.show_places !== undefined) { 6300 this.show_places.sort(this.sortByCategory); 6301 } 6302 if (in_order == "desc") { 6303 this.places.reverse(); 6304 this.show_places.reverse(); 6305 } 6306 break; 6307 6308 case "title": 6309 if (this.map_data.places !== undefined) { 6310 this.map_data.places.sort(this.sortByTitle); 6311 } 6312 if (this.show_places !== undefined) { 6313 this.show_places.sort(this.sortByTitle); 6314 } 6315 if (in_order == "desc") { 6316 this.map_data.places.reverse(); 6317 this.places.reverse(); 6318 this.show_places.reverse(); 6319 } 6320 break; 6321 6322 case "address": 6323 if (this.map_data.places !== undefined) { 6324 this.map_data.places.sort(this.sortByAddress); 6325 } 6326 if (this.show_places !== undefined) { 6327 this.show_places.sort(this.sortByAddress); 6328 } 6329 if (in_order == "desc") { 6330 this.places.reverse(); 6331 this.show_places.reverse(); 6332 } 6333 break; 6334 default: 6335 var first_place = this.map_data.places[0]; 6336 if (typeof first_place[order_by] != "undefined") { 6337 this.map_data.places.sort(this.sortByPlace(order_by, data_type)); 6338 this.show_places.sort(this.sortByPlace(order_by, data_type)); 6339 } else if (typeof first_place.location[order_by] != "undefined") { 6340 this.map_data.places.sort(this.sortByLocation(order_by, data_type)); 6341 this.show_places.sort(this.sortByLocation(order_by, data_type)); 6342 } else if ( 6343 typeof first_place.location.extra_fields[order_by] != "undefined" 6344 ) { 6345 this.map_data.places.sort( 6346 this.sortByExtraFields(order_by, data_type) 6347 ); 6348 this.show_places.sort(this.sortByExtraFields(order_by, data_type)); 6349 } 6350 6351 if (in_order == "desc") { 6352 this.places.reverse(); 6353 this.show_places.reverse(); 6354 } 6355 } 6356 } 6357 sorting_inside_tabs(data, in_order) { 6358 if (in_order == "asc") { 6359 data.sort(); 6360 } 6361 if (in_order == "desc") { 6362 data.sort(); 6363 data.reverse(); 6364 } 6365 return data; 6366 } 6367 sortByTitle(a, b) { 6368 var a_val = a.title.toLowerCase(); 6369 var b_val = b.title.toLowerCase(); 6370 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6371 } 6372 6373 sortByValue(a, b) { 6374 var a_val = a.toLowerCase(); 6375 var b_val = b.toLowerCase(); 6376 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6377 } 6378 sortByCategory(a, b) { 6379 if (b.categories[0] && a.categories[0]) { 6380 if (a.categories[0].name && b.categories[0].name) { 6381 var a_val = a.categories[0].name.toLowerCase(); 6382 var b_val = b.categories[0].name.toLowerCase(); 6383 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6384 } 6385 } 6386 } 6387 sortByAddress(a, b) { 6388 var a_val = a.address.toLowerCase(); 6389 var b_val = b.address.toLowerCase(); 6390 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6391 } 6392 sortByPlace(order_by, data_type) { 6393 return function (a, b) { 6394 if (b[order_by] && a[order_by]) { 6395 if (a[order_by] && b[order_by]) { 6396 var a_val = a[order_by].toLowerCase(); 6397 var b_val = b[order_by].toLowerCase(); 6398 if (data_type == "num") { 6399 a_val = parseInt(a_val); 6400 b_val = parseInt(b_val); 6401 } 6402 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6403 } 6404 } 6405 }; 6406 } 6407 sortByExtraFields(order_by, data_type) { 6408 return function (a, b) { 6409 if ( 6410 typeof b.location.extra_fields[order_by] != "undefined" && 6411 typeof a.location.extra_fields[order_by] != "undefined" 6412 ) { 6413 if (b.location.extra_fields[order_by] == null) { 6414 b.location.extra_fields[order_by] = ""; 6415 } 6416 6417 if (a.location.extra_fields[order_by] == null) { 6418 a.location.extra_fields[order_by] = ""; 6419 } 6420 6421 if (data_type == "num") { 6422 var a_val = parseInt(a.location.extra_fields[order_by]); 6423 var b_val = parseInt(b.location.extra_fields[order_by]); 6424 } else { 6425 var a_val = a.location.extra_fields[order_by].toLowerCase(); 6426 var b_val = b.location.extra_fields[order_by].toLowerCase(); 6427 } 6428 6429 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6430 } 6431 }; 6432 } 6433 sortByLocation(order_by, data_type) { 6434 return function (a, b) { 6435 if (b.location[order_by] && a.location[order_by]) { 6436 if (a.location[order_by] && b.location[order_by]) { 6437 var a_val = a.location[order_by].toLowerCase(); 6438 var b_val = b.location[order_by].toLowerCase(); 6439 if (data_type == "num") { 6440 a_val = parseInt(a_val); 6441 b_val = parseInt(b_val); 6442 } 6443 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6444 } 6445 } 6446 }; 6447 } 6448 sort_object_by_keyvalue(options, by, type, in_order) { 6449 var sortable = []; 6450 for (var key in options) { 6451 sortable.push(options[key]); 6452 } 6453 6454 sortable.sort(this.sortByPlace(by, type)); 6455 6456 if (in_order == "desc") { 6457 sortable.reverse(); 6458 } 6459 6460 return sortable; 6461 } 6462 sort_object_by_unique_values(options) { 6463 var new_options = []; 6464 var uniqueNames = []; 6465 for (var key in options) { 6466 if (options[key].indexOf(",") > -1) {
6467 options[key].split(/\s*,\s*/).forEach(function (single_option_value) { 6468 new_options.push(single_option_value.trim()); 6469 }); 6470 } else { 6471 new_options.push(options[key].trim()); 6472 } 6473 } 6474 6475 // var new_options = new_options.map(function(item) { 6476 // return item.toLowerCase(); 6477 // }); 6478 6479 uniqueNames = new_options.filter(function (item, pos) { 6480 return new_options.indexOf(item) == pos; 6481 }); 6482 6483 return uniqueNames.sort(); 6484 } 6485 sort_object_by_value(options) { 6486 var sortable = []; 6487 for (var key in options) { 6488 sortable.push(key); 6489 } 6490 6491 sortable.sort(this.sortByValue); 6492 var new_options = {}; 6493 for (var i = 0; i < sortable.length; i++) { 6494 new_options[sortable[i]] = options[sortable[i]]; 6495 } 6496 6497 return new_options; 6498 } 6499 6500 // ----------------------------- 6501 // ð Directions & Nearby 6502 // ----------------------------- 6503 get_user_position() { } 6504 6505 wpgmp_get_nearby_locations(lat1, lon1, radius) { 6506 var current_rd = "miles"; 6507 var map_obj = this; 6508 var radius_km = 6371; 6509 var max_radius_km = 0; 6510 6511 if (current_rd == "miles") { 6512 max_radius_km = radius * 1.61; 6513 } else if (current_rd == "km") { 6514 max_radius_km = radius; 6515 } 6516 6517 var distances = []; 6518 var closest = -1; 6519 var pi = Math.PI; 6520 var marker_info = {}; 6521 6522 $.each(map_obj.places, function (index, place) { 6523 var lat2 = place.location.lat; 6524 var lon2 = place.location.lng; 6525 6526 var chLat = lat2 - lat1; 6527 var chLon = lon2 - lon1; 6528 6529 var dLat = chLat * (pi / 180); 6530 var dLon = chLon * (pi / 180); 6531 6532 var rLat1 = lat1 * (pi / 180); 6533 var rLat2 = lat2 * (pi / 180); 6534 6535 var a = 6536 Math.sin(dLat / 2) * Math.sin(dLat / 2) + 6537 Math.sin(dLon / 2) * 6538 Math.sin(dLon / 2) * 6539 Math.cos(rLat1) * 6540 Math.cos(rLat2); 6541 var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); 6542 var d = radius_km * c; 6543 6544 if (max_radius_km !== 0) { 6545 if (d <= max_radius_km) { 6546 distances[d] = place; 6547 distances.sort(function (a, b) { 6548 return a - b; 6549 }); 6550 marker_info["marker" + place.id] = d; 6551 } 6552 } else { 6553 distances[d] = markers[i]; 6554 distances.sort(function (a, b) { 6555 return a - b; 6556 }); 6557 marker_info["marker" + place.id] = d; 6558 } 6559 }); 6560 6561 sortest_markers = map_obj.wpgmp_sort_distance(marker_info); 6562 6563 return sortest_markers; 6564 } 6565 wpgmp_within_radius(place, search_area) { 6566 const map_obj = this; 6567 const isGoogle = map_obj.isMapProvider("google"); 6568 6569 let radius = ""; 6570 const $radiusField = $(map_obj.container).find('[data-name="radius"]'); 6571 6572 if ($radiusField.length > 0) { 6573 radius = $radiusField.val(); 6574 } 6575 6576 const listing = map_obj.map_data.listing || {}; 6577 let dimension = listing.radius_dimension || "km"; 6578 6579 // Apply default if nothing selected 6580 if (
6581 listing.apply_default_radius === true && 6582 listing.default_radius && 6583 radius === "" 6584 ) { 6585 radius = listing.default_radius; 6586 dimension = listing.default_radius_dimension || "km"; 6587 } 6588 6589 // Convert to meters 6590 const radiusMeters = 6591 dimension === "km" 6592 ? parseFloat(radius) * 1000 6593 : parseFloat(radius) * 1609.34; 6594 6595 // Skip if input is not valid 6596 if (!radiusMeters || isNaN(radiusMeters)) return false; 6597 6598 let distance = 0; 6599 6600 if (isGoogle) { 6601 if ( 6602 typeof google.maps.geometry !== "undefined" && 6603 google.maps.geometry.spherical 6604 ) { 6605 distance = google.maps.geometry.spherical.computeDistanceBetween( 6606 place.marker.getPosition(), 6607 search_area 6608 ); 6609 } 6610 } else { 6611 const latlng1 = place.marker.getLatLng(); 6612 const latlng2 = search_area; 6613 distance = latlng1.distanceTo(latlng2); // returns meters 6614 } 6615 6616 return distance < radiusMeters; 6617 } 6618 6619 wpgmp_sort_distance(obj) { 6620 var arr = []; 6621 for (var prop in obj) { 6622 if (obj.hasOwnProperty(prop)) { 6623 arr.push({ 6624 key: prop, 6625 value: obj[prop], 6626 }); 6627 } 6628 } 6629 arr.sort(function (a, b) { 6630 return a.value - b.value; 6631 }); 6632 return arr; 6633 } 6634 wpgmp_direction_steps() { } 6635 6636 // ------------- Location Auto Suggest Control---------------- 6637 // ð§ Search & Autocomplete 6638 // ----------------------------- 6639 6640 6641 async _handleKeyUp(e, inputField, resultsElement) { 6642 const map_obj = this; 6643 const isGoogle = map_obj.isMapProvider("google"); 6644 const inputText = inputField.value.trim(); 6645 const wrapper = $(inputField).closest(".wpgmp-autocomplete-wrapper"); 6646 const loader = wrapper.find(".wpgmp-autosuggest-loader"); 6647 loader.show(); 6648 let activeIndex = -1; 6649 6650 // Clear results if empty input 6651 if (!inputText) { 6652 resultsElement.innerHTML = ""; 6653 resultsElement.style.display = "none"; 6654 $(".wpgmp-autosuggest-results").hide(); 6655 loader.hide(); 6656 return; 6657 } 6658 6659 // Utility to render list and bind interactions 6660 const renderSuggestions = (suggestions, getLabel, onSelect) => { 6661 resultsElement.innerHTML = ""; 6662 resultsElement.style.display = "block"; 6663 $(".wpgmp-autosuggest-results").show(); 6664 loader.hide(); 6665 suggestions.forEach((item, index) => { 6666 const li = document.createElement("li"); 6667 li.textContent = getLabel(item); 6668 li.tabIndex = 0; 6669 li.dataset.index = index; 6670 6671 const handleSelection = () => { 6672 onSelect(item); 6673 resultsElement.innerHTML = ""; 6674 resultsElement.style.display = "none"; 6675 $(".wpgmp-autosuggest-results").hide(); 6676 activeIndex = -1; 6677 }; 6678 6679 li.addEventListener("click", handleSelection); 6680 li.addEventListener("keypress", (e) => { 6681 if (e.key === "Enter") handleSelection(); 6682 }); 6683 6684 resultsElement.appendChild(li); 6685 }); 6686 6687 // â¨ï¸ Keyboard support 6688 inputField.addEventListener("keydown", (event) => { 6689 const items = resultsElement.querySelectorAll("li"); 6690 if (!items.length) return; 6691 6692 if (event.key === "ArrowDown") { 6693 event.preventDefault(); 6694 activeIndex = (activeIndex + 1) % items.length; 6695 } else if (event.key === "ArrowUp") { 6696 event.preventDefault(); 6697 activeIndex = (activeIndex - 1 + items.length) % items.length; 6698 } else if (event.key === "Enter" && activeIndex >= 0) { 6699 event.preventDefault(); 6700 const selectedItem = items[activeIndex]; 6701 selectedItem.dispatchEvent(new Event("click")); // triggers the right one 6702 return; 6703 } else if (event.key === "Escape") { 6704 resultsElement.innerHTML = ""; 6705 resultsElement.style.display = "none"; 6706 $(".wpgmp-autosuggest-results").hide(); 6707 return; 6708 } 6709 6710 items.forEach((item, i) => { 6711 const isActive = i === activeIndex; 6712 item.classList.toggle("active", isActive); 6713 if (isActive) { 6714 inputField.value = item.textContent; // ð¢ update input as you move 6715 } 6716 }); 6717 }); 6718 6719 6720 // ð±ï¸ Close on outside click 6721 const closeOnOutsideClick = (e) => { 6722 if (!resultsElement.contains(e.target) && e.target !== inputField) { 6723 resultsElement.innerHTML = ""; 6724 resultsElement.style.display = "none"; 6725 $(".wpgmp-autosuggest-results").hide(); 6726 6727 document.removeEventListener("click", closeOnOutsideClick); 6728 } 6729 }; 6730 6731 setTimeout(() => { 6732 document.addEventListener("click", closeOnOutsideClick); 6733 }, 0); 6734 }; 6735 6736 // ð Leaflet (Nominatim) 6737 if (!isGoogle) { 6738 let baseUrl = "https://nominatim.openstreetmap.org/search"; 6739 const request = { 6740 q: inputText, 6741 limit: 10, 6742 format: "json", 6743 addressdetails: 1, 6744 }; 6745 6746 if ( 6747 wpgmp_local.wpgmp_country_specific && 6748 wpgmp_local.wpgmp_country_specific == true && 6749 wpgmp_local.wpgmp_countries && 6750 wpgmp_local.wpgmp_countries.length > 0 6751 ) { 6752 const country = wpgmp_local.wpgmp_countries.join(","); 6753 baseUrl += `?countrycodes=${country}`; 6754 } 6755
6756 try { 6757 const suggestions = await $.getJSON(baseUrl, request); 6758 6759 renderSuggestions( 6760 suggestions, 6761 (item) => item.display_name, 6762 (selected) => { 6763 map_obj.wpgmp_handle_place_selection(selected, inputField); 6764 inputField.value = selected.display_name; 6765 } 6766 ); 6767 } catch (error) { 6768 console.error("Nominatim autocomplete failed:", error); 6769 } 6770 6771 return; 6772 } 6773 6774 // ð Google Places 6775 try { 6776 const { 6777 Place, 6778 AutocompleteSessionToken, 6779 AutocompleteSuggestion, 6780 } = await google.maps.importLibrary("places"); 6781 6782 const token = new AutocompleteSessionToken(); 6783 const request = { input: inputText, sessionToken: token }; 6784 6785 if ( 6786 wpgmp_local.wpgmp_country_specific && 6787 wpgmp_local.wpgmp_country_specific == true && 6788 wpgmp_local.wpgmp_countries && 6789 wpgmp_local.wpgmp_countries.length > 0 6790 ) { 6791 request.includedRegionCodes = wpgmp_local.wpgmp_countries; 6792 } 6793 6794 if ( 6795 wpgmp_local.included_primary_types && 6796 wpgmp_local.included_primary_types != '' && 6797 wpgmp_local.included_primary_types.length > 0 6798 ) { 6799 request.includedPrimaryTypes = wpgmp_local.included_primary_types; //incude autosuggest city, zipcode etc only 6800 } 6801 6802 const { suggestions } = 6803 await AutocompleteSuggestion.fetchAutocompleteSuggestions(request); 6804 6805 renderSuggestions( 6806 suggestions, 6807 (item) => item.placePrediction.text.toString(), 6808 async (selected) => { 6809 const place = selected.placePrediction.toPlace(); 6810 await place.fetchFields({ 6811 fields: [ 6812 "displayName", 6813 "formattedAddress", 6814 "location", 6815 "viewport", 6816 "addressComponents", 6817 ], 6818 }); 6819 6820 map_obj.wpgmp_handle_place_selection(place, inputField); 6821 inputField.value = selected.placePrediction.text.toString(); 6822 } 6823 ); 6824 } catch (error) { 6825 console.error("Google Places autocomplete failed:", error); 6826 } 6827 } 6828 6829 google_auto_suggest(obj) { 6830 var map_obj = this; 6831 6832 obj.each(function () { 6833 var current_input = this; 6834 6835 if (!$(current_input).parent().hasClass("wpgmp-autocomplete-wrapper")) { 6836 $(current_input) 6837 .wrap('<div class="wpgmp-autocomplete-wrapper"></div>') 6838 .after(' <div class="wpgmp-autosuggest-loader" style="display:none;"></div><ul class="wpgmp-autosuggest-results"></ul>'); 6839 } 6840 6841 const resultsElement = $(current_input).siblings(".wpgmp-autosuggest-results")[0]; 6842 6843 map_obj.wpgmp_initialise_autosuggest(current_input, resultsElement); 6844 }); 6845 } 6846 6847 wpgmp_initialise_autosuggest(inputField, resultsElement) { 6848 6849 $(inputField).on("input", this._debounce((e) => this._handleKeyUp(e,inputField,resultsElement), 500)); 6850 6851 } 6852 6853 wpgmp_set_search_area(address) { 6854 var map_obj = this; 6855 map_obj.wpgmp_geocode_address(address).then((info) => { 6856 if (info && info.lat && info.lng) { 6857 map_obj.search_area = map_obj.isMapProvider("google") 6858 ? new google.maps.LatLng(info.lat, info.lng) 6859 : L.latLng(info.lat, info.lng); 6860 } else { 6861 map_obj.search_area = ""; 6862 } 6863 map_obj.update_filters(); 6864 }); 6865 } 6866 wpgmp_extract_place_data(place) { 6867 var map_obj = this; 6868 const data = { 6869 address: '', 6870 lat: '', 6871 lng: '', 6872 city: '', 6873 state: '', 6874 country: '', 6875 postal: '' 6876 }; 6877 6878 if (map_obj.isMapProvider('leaflet')) { 6879 data.address = place.display_name || ''; 6880 data.lat = parseFloat(place.lat); 6881 data.lng = parseFloat(place.lon); 6882 6883 const address = place.address || {}; 6884 data.city = address.city || address.county || ''; 6885 data.state = address.state || ''; 6886 data.country = address.country || ''; 6887 data.postal = address.postcode || ''; 6888 6889 } else { 6890 data.address = place.formattedAddress || ''; 6891 if (place.location) { 6892 data.lat = place.location.lat(); 6893 data.lng = place.location.lng(); 6894 } 6895 6896 // Assume `this` refers to your instance with wpgmp_finddata method 6897 const finder = this.wpgmp_finddata || instance?.wpgmp_finddata; 6898 6899 if (typeof finder === 'function') { 6900 data.country = finder.call(this, place, 'country') || ''; 6901 data.state = finder.call(this, place, 'administrative_area_level_1') || ''; 6902 data.city = ( 6903 finder.call(this, place, 'locality') || 6904 finder.call(this, place, 'administrative_area_level_2') || 6905 finder.call(this, place, 'administrative_area_level_3') || '' 6906 );
6907 data.postal = finder.call(this, place, 'postal_code') || ''; 6908 } 6909 } 6910 6911 return data; 6912} 6913 6914wpgmp_handle_place_selection(place, inputField) { 6915 const map_obj = this; 6916 const isGoogle = map_obj.isMapProvider("google"); 6917 const fieldName = $(inputField).attr("name"); 6918 const callback = $(inputField).data("wpgmp-autosuggest-callback"); 6919 6920 if (typeof callback === "function") { 6921 callback(place); 6922 return; 6923 } 6924 6925 // Extract data from place 6926 let lat, lng, city, state, country, postal, fullAddress; 6927 6928 if (isGoogle) { 6929 lat = place.location.lat(); 6930 lng = place.location.lng(); 6931 city = map_obj.wpgmp_finddata(place, "administrative_area_level_3") || 6932 map_obj.wpgmp_finddata(place, "locality"); 6933 state = map_obj.wpgmp_finddata(place, "administrative_area_level_1"); 6934 country = map_obj.wpgmp_finddata(place, "country"); 6935 postal = map_obj.wpgmp_finddata(place, "postal_code"); 6936 fullAddress = place.formattedAddress || $(inputField).val(); 6937 } else { 6938 lat = parseFloat(place.lat); 6939 lng = parseFloat(place.lon); 6940 const address = place.address || {}; 6941 city = address.city || address.county || ""; 6942 state = address.state || ""; 6943 country = address.country || ""; 6944 postal = address.postcode || ""; 6945 fullAddress = place.display_name || $(inputField).val(); 6946 } 6947 6948 // Update relevant fields 6949 if (fieldName === "location_address") { 6950 // Apply marker and view 6951 map_obj.placeMarker(lat, lng); 6952 $(".google_latitude").val(lat); 6953 $(".google_longitude").val(lng); 6954 $(".google_city").val(city); 6955 $(".google_state").val(state); 6956 $(".google_country").val(country); 6957 $(".google_postal_code").val(postal); 6958 6959 if (isGoogle && place.viewport) { 6960 map_obj.map.fitBounds(place.viewport); 6961 } 6962 6963 } else if (fieldName === "wpgmp_metabox_location") { 6964 // Apply marker and view 6965 map_obj.placeMarker(lat, lng); 6966 $("input[name='wpgmp_metabox_latitude']").val(lat); 6967 $("input[name='wpgmp_metabox_longitude']").val(lng); 6968 $("input[name='wpgmp_metabox_location_city']").val(city); 6969 $("input[name='wpgmp_metabox_location_state']").val(state); 6970 $("input[name='wpgmp_metabox_location_country']").val(country); 6971 $("input[name='wpgmp_metabox_location_hidden']").val(fullAddress); 6972 6973 if (isGoogle && place.viewport) { 6974 map_obj.map.fitBounds(place.viewport); 6975 } 6976 6977 } else if (fieldName === "map-search-control") { 6978 // Apply marker and view 6979 map_obj.placeMarker(lat, lng); 6980 const zoom = parseInt(map_obj.settings.zoom_level_after_search || 10); 6981 map_obj.map.setZoom(zoom); 6982 map_obj.map.setCenter(isGoogle ? place.location : [lat, lng]); 6983 6984 } else { 6985 // Other pages (frontend search, etc.) 6986 map_obj.map.setCenter(isGoogle ? place.location : [lat, lng]); 6987 6988 $(inputField).data("longitude", lng); 6989 $(inputField).data("latitude", lat); 6990 6991 if ( 6992 fieldName === "wpgmp_search_input" || 6993 $(inputField).data("wpgmp-filter-by") === "search" 6994 ) { 6995 if (map_obj.map_data.listing) { 6996 map_obj.search_area = isGoogle ? place.location : [lat, lng]; 6997 } 6998 map_obj.update_filters(); 6999 } 7000 7001 if (typeof map_obj.display_circle_when_searched === "function") { 7002 map_obj.display_circle_when_searched(place, inputField); 7003 } 7004 } 7005} 7006 7007 // ------------- Ended Location Auto Suggest Control---------------- 7008 7009 7010 get_current_location(success_func, error_func) { 7011 const map_obj = this; 7012 7013 if (typeof map_obj.user_location === "undefined") { 7014 navigator.geolocation.getCurrentPosition( 7015 (position) => { 7016 const lat = position.coords.latitude; 7017 const lng = position.coords.longitude; 7018 7019 map_obj.user_location = map_obj.isMapProvider("google") 7020 ? new google.maps.LatLng(lat, lng) 7021 : L.latLng(lat, lng); 7022 7023 if (success_func) success_func(map_obj.user_location); 7024 }, 7025 (err) => { 7026 console.warn("Geolocation error:", err); 7027 7028 map_obj.user_location = map_obj.isMapProvider("google") 7029 ? map_obj.map.getCenter() 7030 : map_obj.map.getCenter(); // both APIs support getCenter() 7031 7032 if (error_func) error_func(map_obj.user_location); 7033 }, 7034 { 7035 enableHighAccuracy: true, 7036 timeout: 50000, 7037 maximumAge: 0, 7038 } 7039 ); 7040 } else { 7041 if (success_func) success_func(map_obj.user_location); 7042 } 7043 } 7044 7045 wpgmp_geocode_address(address) { 7046 const map_obj = this; 7047 const isGoogle = map_obj.isMapProvider("google"); 7048 7049 return new Promise((resolve) => { 7050 if (!address || address.trim().length < 2) { 7051 resolve(null); 7052 return; 7053 } 7054 7055 const countries = map_obj.settings.country_codes || []; 7056 const restrictCountries = map_obj.settings.country_specific === true; 7057 7058 if (isGoogle) { 7059 const request = { address }; 7060 if (restrictCountries && countries.length > 0) { 7061 request.componentRestrictions = { 7062 country: countries.join(","), 7063 }; 7064 } 7065 const geocoder = new google.maps.Geocoder(); 7066 geocoder.geocode(request, (results, status) => { 7067 if (status === google.maps.GeocoderStatus.OK && results[0]) { 7068 const result = results[0]; 7069 const location = result.geometry.location; 7070 const components = result.address_components; 7071 7072 const extract = (type) => 7073 components.find((c) => c.types.includes(type))?.long_name || ""; 7074
7075 resolve({ 7076 address: result.formatted_address, 7077 city: 7078 extract("locality") || extract("administrative_area_level_3"), 7079 state: extract("administrative_area_level_1"), 7080 country: extract("country"), 7081 postal: extract("postal_code"), 7082 lat: location.lat(), 7083 lng: location.lng(), 7084 }); 7085 } else { 7086 resolve(null); 7087 } 7088 }); 7089 } else { 7090 const nominatimUrl = "https://nominatim.openstreetmap.org/search"; 7091 const params = { 7092 q: address, 7093 format: "json", 7094 limit: 1, 7095 addressdetails: 1, 7096 }; 7097 7098 if (restrictCountries && countries.length > 0) { 7099 params.countrycodes = countries.join(","); 7100 } 7101 7102 $.getJSON(nominatimUrl, params) 7103 .done((results) => { 7104 if (results && results.length > 0) { 7105 const r = results[0]; 7106 const a = r.address || {}; 7107 7108 resolve({ 7109 address: r.display_name, 7110 city: a.city || a.county || a.town || a.village || "", 7111 state: a.state || "", 7112 country: a.country || "", 7113 postal: a.postcode || "", 7114 lat: parseFloat(r.lat), 7115 lng: parseFloat(r.lon), 7116 }); 7117 } else { 7118 resolve(null); 7119 } 7120 }) 7121 .fail(() => resolve(null)); 7122 } 7123 }); 7124 } 7125 7126 7127 wpgmp_geocode(lat, lng) { 7128 var map_obj = this; 7129 7130 return new Promise((resolve, reject) => { 7131 if (map_obj.isMapProvider('google') && typeof google !== 'undefined') { 7132 const geocoder = new google.maps.Geocoder(); 7133 const latlng = new google.maps.LatLng(lat, lng); 7134 7135 geocoder.geocode({ location: latlng }, (results, status) => { 7136 if (status === google.maps.GeocoderStatus.OK && results[0]) { 7137 const components = results[0].address_components; 7138 7139 const getComp = (type) => { 7140 const match = components.find(c => c.types.includes(type)); 7141 return match ? match.long_name : ''; 7142 }; 7143 7144 resolve({ 7145 address: results[0].formatted_address, 7146 latitude: lat, 7147 longitude: lng, 7148 city: getComp("locality") || getComp("administrative_area_level_2") || getComp("administrative_area_level_3"), 7149 state: getComp("administrative_area_level_1"), 7150 country: getComp("country"), 7151 postal_code: getComp("postal_code") 7152 }); 7153 } else { 7154 reject('Google Geocoding failed: ' + status); 7155 } 7156 }); 7157 7158 } else if (map_obj.isMapProvider('leaflet')) { 7159 const url = `https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=${lat}&lon=${lng}`; 7160 7161 fetch(url) 7162 .then(res => res.json()) 7163 .then(data => { 7164 const addr = data.address || {}; 7165 resolve({ 7166 address: data.display_name || '', 7167 latitude: lat, 7168 longitude: lng, 7169 city: addr.city || addr.town || addr.village || addr.county || '', 7170 state: addr.state || '', 7171 country: addr.country || '', 7172 postal_code: addr.postcode || '' 7173 }); 7174 }) 7175 .catch(err => reject('Leaflet/OSM reverse geocoding failed: ' + err)); 7176 } else { 7177 reject('Unknown map provider: ' + provider); 7178 } 7179 }); 7180 } 7181 7182 show_search_control() { 7183 const map_obj = this; 7184 const isGoogle = map_obj.isMapProvider("google"); 7185 const input = $(map_obj.container).find('[data-input="map-search-control"]'); 7186 if (!input[0]) return; 7187 7188 // Create a wrapper and move input inside it 7189 const wrapper = document.createElement('div'); 7190 wrapper.className = 'wpgmp-search-control-wrapper'; 7191 wrapper.appendChild(input[0]); 7192 7193 if (isGoogle) { 7194 const positionKey = map_obj.settings.search_control_position?.toUpperCase(); 7195 const position = google.maps.ControlPosition?.[positionKey]; 7196 7197 if (position !== undefined && map_obj.map.controls) { 7198 map_obj.map.controls[position].push(wrapper); 7199 } else { 7200 console.warn("Invalid Google search control position:", positionKey); 7201 } 7202 7203 // â Initialize autocomplete
7204 if (typeof map_obj.google_auto_suggest === "function") { 7205 map_obj.google_auto_suggest(input); 7206 } else { 7207 console.warn("google_auto_suggest() is not defined or not a function."); 7208 } 7209 7210 7211 } else { 7212 // Create a custom Leaflet control 7213 const LeafletSearchControl = L.Control.extend({ 7214 options: { 7215 position: (map_obj.settings.search_control_position || 'topright').toLowerCase(), 7216 }, 7217 onAdd: function () { 7218 return wrapper; 7219 }, 7220 }); 7221 7222 map_obj.map.addControl(new LeafletSearchControl()); 7223 } 7224 } 7225 7226 7227 // ----------------------------- 7228 // ð§© Widgets 7229 // ----------------------------- 7230 map_widgets() { 7231 var content = ""; 7232 7233 if ( 7234 this.map_data.map_tabs.category_tab && 7235 this.map_data.map_tabs.category_tab.cat_tab === true 7236 ) 7237 this.widget_category(); 7238 7239 if ( 7240 this.map_data.map_options.advance_template && 7241 this.map_data.map_tabs.category_tab && 7242 this.map_data.map_tabs.category_tab.cat_tab === false 7243 ) { 7244 this.widget_category(); 7245 } 7246 7247 if ( 7248 this.map_data.map_tabs.direction_tab && 7249 this.map_data.map_tabs.direction_tab.dir_tab === true 7250 ) 7251 this.widget_directions(); 7252 7253 if ( 7254 this.map_data.map_tabs.nearby_tab && 7255 this.map_data.map_tabs.nearby_tab.near_tab === true 7256 ) 7257 this.widget_nearby(); 7258 7259 if ( 7260 this.map_data.map_tabs.route_tab && 7261 this.map_data.map_tabs.route_tab.display_route_tab === true 7262 ) 7263 this.widget_route_tab(); 7264 7265 if (this.map_data.map_tabs.extension_tabs) { 7266 this.widget_extensions_tab(); 7267 } 7268 content += this.show_tabs(); 7269 7270 if (content != "undefined") 7271 $(this.container).find(".wpgmp_map_parent").append(content); 7272 } 7273 widget_extensions_tab() { 7274 var map_obj = this; 7275 var new_tabs = map_obj.map_data.map_tabs.extension_tabs; 7276 if (typeof new_tabs != "undefined" && new_tabs.length > 0) { 7277 $.each(new_tabs, function (index, tab) { 7278 map_obj.add_tab(tab.title, tab.content); 7279 }); 7280 } 7281 } 7282 widget_route_tab() { 7283 var map_obj = this; 7284 var route_data = map_obj.map_data.map_tabs.route_tab.route_tab_data; 7285 var content = ""; 7286 7287 if (map_obj.map_data.map_tabs.route_tab.display_route_tab_data === true) { 7288 content += '<div id="wpgmp_route_tab">'; 7289 if (route_data) { 7290 $.each(route_data, function (index, route) { 7291 content += '<div class="wpgmp_tab_item">'; 7292 content += 7293 '<input type="checkbox" data-wpgmp="route_toggle" data-wpgmp-map-id="'+map_obj.map_data.map_property.map_id+'" class="wpgmp_specific_route_item" value="' + 7294 route.route_id + 7295 '">'; 7296 var box = 7297 '<span style="display:inline-block;width:10px;height:10px;background-color:' + 7298 route.route_stroke_color + 7299 ';float:right;margin-right:10px;margin-top:5px;"></span>'; 7300 content += 7301 '<a href="javascript:void(0);" class="wpgmp_cat_title wpgmp-accordion accordion-close">' + 7302 route.route_title + 7303 box + 7304 "</a>"; 7305 7306 content += 7307 '<div class="directions-panel-route' + 7308 route.route_id + 7309 ' wpgmp-directions-panel-route-style" style="overflow-y:scroll; height:200px;"></div>'; 7310 7311 content += "</div>"; 7312 }); 7313 } 7314 7315 content += "</div>"; 7316 } 7317 7318 if( content.length == 0 ) { 7319 content = "<div class='wpgmp_msg_info'>"+wpgmp_local.no_routes+"</div>"; 7320 } 7321 7322 this.add_tab(this.map_data.map_tabs.route_tab.route_tab_title, content); 7323 } 7324 widget_nearby() { } 7325 widget_directions() { 7326 var content = ""; 7327 7328 content = '<div class="wpgmp_direction_container">'; 7329 7330 if (this.map_data.map_tabs.route_start_location == "textbox") { 7331 var start = ""; 7332 7333 if ( 7334 this.map_data.map_tabs.direction_tab.default_start_location == 7335 undefined 7336 ) { 7337 start = ""; 7338 } else { 7339 start = this.map_data.map_tabs.direction_tab.default_start_location; 7340 } 7341 7342 content += 7343 '<p><input value="' + 7344 start + 7345 '" placeholder="' + 7346 wpgmp_local.start_location + 7347 '" type="text" name="start_point" data-point="start" class="input start_point wpgmp_auto_suggest" autocomplete="off" /><span class="wpgmp_mcurrent_location" title="' + 7348 wpgmp_local.take_current_location + 7349 '"> </span></p>'; 7350 } else if (this.map_data.map_tabs.route_start_location == "selectbox") { 7351 content += 7352 '<p><select name="start_point" data-point="start" class="input start_point" autocomplete="off" >'; 7353 7354 content += 7355 '<option value="">
7355' + wpgmp_local.start_location + "</option>"; 7356 7357 if (this.places !== undefined) { 7358 this.places.sort(this.sortByTitle); 7359 $.each(this.places, function (index, place) { 7360 content += 7361 '<option data-latitude="'+place.location.lat+'" data-longitude="'+place.location.lng+'" value="' + 7362 place.address + 7363 '">' + 7364 place.title + 7365 "</option>"; 7366 }); 7367 } 7368 7369 content += "</select>"; 7370 } 7371 7372 if (this.map_data.map_tabs.route_end_location == "textbox") { 7373 var end_point = ""; 7374 7375 if ( 7376 this.map_data.map_tabs.direction_tab.default_end_location == undefined 7377 ) { 7378 end_point = ""; 7379 } else { 7380 end_point = this.map_data.map_tabs.direction_tab.default_end_location; 7381 } 7382 content += 7383 '<p><input value="' + 7384 end_point + 7385 '" placeholder="' + 7386 wpgmp_local.end_location + 7387 '" name="end_point" type="text" data-point="end" class="input end_point wpgmp_auto_suggest" autocomplete="off" /></p>'; 7388 } else if (this.map_data.map_tabs.route_end_location == "selectbox") { 7389 content += 7390 '<p><select name="end_point" data-point="end" class="input end_point" autocomplete="off" >'; 7391 7392 content += '<option value="">' + wpgmp_local.end_location + "</option>"; 7393 if (this.places !== undefined) { 7394 this.places.sort(this.sortByTitle); 7395 7396 $.each(this.places, function (index, place) { 7397 content += 7398 '<option data-latitude="'+place.location.lat+'" data-longitude="'+place.location.lng+'" value="' + 7399 place.address + 7400 '">' + 7401 place.title + 7402 "</option>"; 7403 }); 7404 } 7405 7406 content += "</select>"; 7407 } 7408 7409 content += 7410 '<p><select name="travel_mode" id="travaling_mode"> <option value="DRIVE" selected="selected">' + 7411 wpgmp_local.driving + 7412 '</option> <option value="BICYCLE">' + 7413 wpgmp_local.bicycling + 7414 '</option> <option value="WALK">' + 7415 wpgmp_local.walking + 7416 '</option> <option value="TRANSIT">' + 7417 wpgmp_local.transit + 7418 '</option><option value="TWO_WHEELER">Two Wheeler</option> </select></p>'; 7419 7420 content += 7421 '<p><select name="travel_unit" id="travel_unit"> <option value="metric" selected="selected">' + 7422 wpgmp_local.metric + 7423 '</option> <option value="imperial">' + 7424 wpgmp_local.imperial + 7425 '</option></select></p><p><input type="submit" data-wpgmp-map-id="'+this.map_data.map_property.map_id+'" data-wpgmp="find_direction" value="' + 7426 wpgmp_local.find_direction + 7427 '" class="wpgmp_find_direction"></p><div data-wpgmp="directions-panel" class="directions-panel" style="overflow-y:scroll;display:none;"></div></div>'; 7428 7429 this.add_tab( 7430 this.map_data.map_tabs.direction_tab.direction_tab_title, 7431 content 7432 ); 7433 } 7434 7435 widget_category() { 7436 var map_obj = this; 7437 var content = ""; 7438 7439 7440 var categories_tab_data = {}; 7441 var child_categories_tab_data = {}; 7442 7443 if (typeof map_obj.map_data.places != "undefined") { 7444 map_obj.map_data.places_for_category_tabs = map_obj.map_data.places; 7445 map_obj.map_data.places_for_category_tabs = map_obj.sorting_inside_tabs( 7446 map_obj.map_data.places_for_category_tabs, 7447 map_obj.map_data.map_tabs.category_tab.cat_post_order 7448 ); 7449 7450 $.each( 7451 map_obj.map_data.places_for_category_tabs, 7452 function (index, place) { 7453 if (typeof place.categories != "undefined") { 7454 $.each(place.categories, function (index, categories) { 7455 var show = true; 7456 var parent_cat = ""; 7457 parent_cat = map_obj.search_category( 7458 map_obj.map_data.map_tabs.category_tab.child_cats, 7459 categories.id, 7460 [], 7461 categories_tab_data, 7462 child_categories_tab_data 7463 ); 7464 7465 if (parent_cat.length > 0) show = false; 7466 7467 if ( 7468 typeof categories.type != "undefined" && 7469 categories.type == "category" && 7470 categories.name && 7471 show == true 7472 ) { 7473 if ( 7474 typeof categories_tab_data[categories.id] == "undefined" 7475 ) { 7476 categories_tab_data[categories.id] = {}; 7477 categories_tab_data[categories.id]["data"] = []; 7478 } 7479 categories_tab_data[categories.id]["cat_id"] = categories.id; 7480 categories_tab_data[categories.id]["cat_title"] = 7481 categories.name; 7482 categories_tab_data[categories.id]["cat_marker_icon"] = 7483 categories.icon; 7484 7485 if ( 7486 categories.extension_fields && 7487 categories.extension_fields.cat_order 7488 ) { 7489 categories_tab_data[categories.id]["cat_order"] = 7490 categories.extension_fields.cat_order;
7491 } 7492 7493 var redirect_permalink = ""; 7494 if (place.location.redirect_permalink) 7495 redirect_permalink = place.location.redirect_permalink; 7496 7497 var redirect_custom_link = ""; 7498 if (place.location.redirect_custom_link) 7499 redirect_custom_link = place.location.redirect_custom_link; 7500 7501 categories_tab_data[categories.id]["data"].push({ 7502 cat_location_id: place.id, 7503 cat_location_title: place.title, 7504 cat_location_address: place.address, 7505 cat_location_zoom: place.location.zoom, 7506 onclick_action: place.location.onclick_action, 7507 redirect_permalink: redirect_permalink, 7508 redirect_custom_link: redirect_custom_link, 7509 }); 7510 } else if ( 7511 typeof categories.type != "undefined" && 7512 categories.type == "category" && 7513 categories.name && 7514 show == false 7515 ) { 7516 if ( 7517 typeof child_categories_tab_data[categories.id] == 7518 "undefined" 7519 ) { 7520 child_categories_tab_data[categories.id] = {}; 7521 child_categories_tab_data[categories.id]["data"] = []; 7522 child_categories_tab_data[categories.id]["parent_cat"] = 7523 parent_cat; 7524 } 7525 7526 child_categories_tab_data[categories.id]["cat_id"] = 7527 categories.id; 7528 child_categories_tab_data[categories.id]["cat_title"] = 7529 categories.name; 7530 child_categories_tab_data[categories.id]["cat_marker_icon"] = 7531 categories.icon; 7532 if ( 7533 categories.extension_fields && 7534 categories.extension_fields.cat_order 7535 ) { 7536 child_categories_tab_data[categories.id]["cat_order"] = 7537 categories.extension_fields.cat_order; 7538 } 7539 var redirect_permalink = ""; 7540 if (place.location.redirect_permalink) 7541 redirect_permalink = place.location.redirect_permalink; 7542 7543 var redirect_custom_link = ""; 7544 if (place.location.redirect_custom_link) 7545 redirect_custom_link = place.location.redirect_custom_link; 7546 7547 child_categories_tab_data[categories.id]["data"].push({ 7548 cat_location_id: place.id, 7549 cat_location_title: place.title, 7550 cat_location_address: place.address, 7551 cat_location_zoom: place.location.zoom, 7552 onclick_action: place.location.onclick_action, 7553 redirect_permalink: redirect_permalink, 7554 redirect_custom_link: redirect_custom_link, 7555 }); 7556 7557 if (categories_tab_data[parent_cat] !== undefined) { 7558 if ( 7559 typeof categories_tab_data[parent_cat]["child_cats"] == 7560 "undefined" 7561 ) { 7562 categories_tab_data[parent_cat]["child_cats"] = []; 7563 } 7564 categories_tab_data[parent_cat]["child_cats"][ 7565 categories.id 7566 ] = categories.id; 7567 } 7568 } 7569 }); 7570 } 7571 } 7572 ); 7573 } 7574 7575 var category_orders = []; 7576 if (typeof categories_tab_data != "undefined") { 7577 $.each(categories_tab_data, function (index, categories) { 7578 var loc_count = categories.data.length; 7579 7580 if (typeof child_categories_tab_data != "undefined") { 7581 $.each(child_categories_tab_data, function (c, ccat) { 7582 if (ccat.parent_cat == categories.cat_id) { 7583 loc_count = loc_count + ccat.data.length; 7584 $.each(child_categories_tab_data, function (cc, cccat) { 7585 if (cccat.parent_cat == ccat.cat_id) { 7586 loc_count = loc_count + cccat.data.length; 7587 } 7588 }); 7589 } 7590 }); 7591 } 7592 categories.loc_count = loc_count; 7593 7594 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == "count") { 7595 category_orders.push(categories.loc_count); 7596 } else if ( 7597 map_obj.map_data.map_tabs.category_tab.cat_order_by == "category" 7598 ) { 7599 if (categories.cat_order) { 7600 category_orders.push(categories.cat_order); 7601 } else if ( 7602 !categories.cat_order && 7603 map_obj.map_data.map_tabs.category_tab.all_cats[ 7604 categories.cat_id 7605 ] && 7606 map_obj.map_data.map_tabs.category_tab.all_cats[categories.cat_id] 7607 .extensions_fields 7608 ) { 7609 categories.cat_order = 7610 map_obj.map_data.map_tabs.category_tab.all_cats[ 7611 categories.cat_id 7612 ].extensions_fields.cat_order;
7613 category_orders.push(categories.cat_order); 7614 } 7615 } else { 7616 if (categories.cat_title) { 7617 category_orders.push(categories.cat_title); 7618 } else if ( 7619 !categories.cat_title && 7620 map_obj.map_data.map_tabs.category_tab.all_cats[categories.cat_id] 7621 ) { 7622 categories.cat_title = 7623 map_obj.map_data.map_tabs.category_tab.all_cats[ 7624 categories.cat_id 7625 ].group_map_title; 7626 category_orders.push(categories.cat_title); 7627 } 7628 } 7629 }); 7630 } 7631 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == "category") { 7632 category_orders.sort(function (a, b) { 7633 return a - b; 7634 }); 7635 } else if ( 7636 map_obj.map_data.map_tabs.category_tab.cat_order_by == "count" 7637 ) { 7638 category_orders.sort(function (a, b) { 7639 return b - a; 7640 }); 7641 } else { 7642 category_orders.sort(); 7643 } 7644 var ordered_categories = []; 7645 var check_cats = []; 7646 $.each(category_orders, function (index, cat_title) { 7647 $.each(categories_tab_data, function (index, categories) { 7648 var compare_with; 7649 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == "count") { 7650 compare_with = categories.loc_count; 7651 } else if ( 7652 map_obj.map_data.map_tabs.category_tab.cat_order_by == "category" 7653 ) { 7654 compare_with = categories.cat_order; 7655 } else { 7656 compare_with = categories.cat_title; 7657 } 7658 7659 if ( 7660 cat_title == compare_with && 7661 $.inArray(categories.cat_id, check_cats) == -1 7662 ) { 7663 ordered_categories.push(categories); 7664 check_cats.push(categories.cat_id); 7665 } 7666 }); 7667 }); 7668 7669 if (typeof ordered_categories != "undefined") { 7670 if (map_obj.map_data.map_options.advance_template) { 7671 if (!map_obj.template_data) { 7672 map_obj.template_data = {}; // Ensure template_data exists 7673 } 7674 if (!Array.isArray(map_obj.template_data.tabs_parent_cat)) { 7675 map_obj.template_data.tabs_parent_cat = []; // Ensure filter is an array 7676 } 7677 map_obj.template_data.tabs_parent_cat = ordered_categories; 7678 } 7679 $.each(ordered_categories, function (index, categories) { 7680 var category_image = ""; 7681 7682 if ( 7683 !categories.cat_title && 7684 map_obj.map_data.map_tabs.category_tab.all_cats[categories.cat_id] 7685 ) { 7686 categories.cat_title = 7687 map_obj.map_data.map_tabs.category_tab.all_cats[ 7688 categories.cat_id 7689 ].group_map_title; 7690 } 7691 7692 if ( 7693 !categories.cat_marker_icon && 7694 map_obj.map_data.map_tabs.category_tab.all_cats[categories.cat_id] 7695 ) { 7696 categories.cat_marker_icon = 7697 map_obj.map_data.map_tabs.category_tab.all_cats[ 7698 categories.cat_id 7699 ].group_marker; 7700 } 7701 7702 if (typeof categories.cat_marker_icon != "undefined") { 7703 category_image = 7704 '<span class="arrow"><img alt="'+categories.cat_title+'" src="' + 7705 categories.cat_marker_icon + 7706 '"></span>'; 7707 } 7708 7709 content += 7710 '<div class="wpgmp_tab_item" data-container="wpgmp-category-tab-item">'; 7711 7712 if (categories.child_cats !== undefined) { 7713 categories.child_cats = categories.child_cats.filter(function (v) { 7714 return v !== ""; 7715 }); 7716 var child_cats_str = 7717 ' data-child-cats="' + categories.child_cats.join(",") + '"'; 7718 } else { 7719 var child_cats_str = ""; 7720 } 7721 7722 content += 7723 '<input type="checkbox"' + 7724 child_cats_str + 7725 ' data-marker-category="' + 7726 categories.cat_id + 7727 '" value="' + 7728 categories.cat_id + 7729 '">'; 7730 7731 var loc_count = categories.loc_count; 7732 7733 $.each( 7734 map_obj.map_data.map_tabs.category_tab.child_cats, 7735 function (k, v) { 7736 if (v == categories.cat_id && loc_count == 0) loc_count = ""; 7737 } 7738 ); 7739 7740 var location_count = ""; 7741 7742 if ( 7743 map_obj.map_data.map_tabs.category_tab.show_count === true && 7744 loc_count != "" 7745 ) { 7746 location_count = " (" + loc_count + ")"; 7747 } 7748 7749 content += 7750 '<a href="javascript:void(0);" class="wpgmp_cat_title wpgmp-accordion accordion-close">' + 7751 categories.cat_title + 7752 location_count +
7753 category_image + 7754 "</a>"; 7755 7756 if (map_obj.map_data.map_tabs.category_tab.hide_location !== true) { 7757 content += 7758 '<div class="scroll-pane" style="max-height:300px;width:100%;">'; 7759 7760 content += '<ul class="wpgmp_location_container">'; 7761 7762 $.each(categories.data, function (name, location) { 7763 if (location.onclick_action == "marker") { 7764 content += 7765 '<li><input type="checkbox" data-marker-location="' + 7766 location.cat_location_id + 7767 '" value="' + 7768 location.cat_location_id + 7769 '" /><a data-marker="' + 7770 location.cat_location_id + 7771 '" data-zoom="' + 7772 location.cat_location_zoom + 7773 '" href="javascript:void(0);">' + 7774 location.cat_location_title + 7775 "</a></li>"; 7776 } else if (location.onclick_action == "post") { 7777 content += 7778 '<li><input type="checkbox" data-marker-location="' + 7779 location.cat_location_id + 7780 '" value="' + 7781 location.cat_location_id + 7782 '" /><a href="' + 7783 location.redirect_permalink + 7784 '" target="_blank">' + 7785 location.cat_location_title + 7786 "</a></li>"; 7787 } else if (location.onclick_action == "custom_link") { 7788 content += 7789 '<li><input type="checkbox" data-marker-location="' + 7790 location.cat_location_id + 7791 '" value="' + 7792 location.cat_location_id + 7793 '" /><a href="' + 7794 location.redirect_custom_link + 7795 '" target="_blank">' + 7796 location.cat_location_title + 7797 "</a></li>"; 7798 } 7799 }); 7800 7801 content += "</ul>"; 7802 7803 content += "</div>"; 7804 } 7805 7806 content += "</div>"; 7807 7808 if (typeof child_categories_tab_data != "undefined") { 7809 if (map_obj.map_data.map_options.advance_template) { 7810 if (!map_obj.template_data) { 7811 map_obj.template_data = {}; // Ensure template_data exists 7812 } 7813 if (!Array.isArray(map_obj.template_data.tabs_child_cat)) { 7814 map_obj.template_data.tabs_child_cat = []; // Ensure filter is an array 7815 } 7816 map_obj.template_data.tabs_child_cat = child_categories_tab_data; 7817 } 7818 var padding = 20; 7819 if (!map_obj.map_data.map_options.advance_template) { 7820 content += map_obj.display_sub_categories( 7821 child_categories_tab_data, 7822 categories.cat_id, 7823 "", 7824 padding 7825 ); 7826 } 7827 } 7828 }); 7829 } 7830 7831 if( content.length == 0 ) { 7832 content = "<div class='wpgmp_msg_info'>"+wpgmp_local.no_categories+"</div>"; 7833 }else{ 7834 if (map_obj.map_data.map_tabs.category_tab.select_all === true) { 7835 var select_all_html = 7836 '<div class="wpgmp-select-all"><input checked="checked" type="checkbox" value="true" name="wpgmp_select_all">  ' + 7837 wpgmp_local.select_all + 7838 "</div>"; 7839 content = select_all_html + content; 7840 } 7841 } 7842 7843 if (!map_obj.map_data.map_options.advance_template) { 7844 map_obj.add_tab( 7845 map_obj.map_data.map_tabs.category_tab.cat_tab_title, 7846 content 7847 ); 7848 } 7849 } 7850 add_tab(title, content) { 7851 var tab = []; 7852 7853 tab.title = title; 7854 tab.content = content; 7855 this.tabs.push(tab); 7856 } 7857 show_tabs() { 7858 if ( 7859 this.tabs.length === 0 || 7860 (this.map_data.listing && this.map_data.listing.hide_map == true) 7861 ) 7862 return; 7863 7864 var content = 7865 '<div class="wpgmp_tabs_container cleanslate"><ul class="wpgmp_tabs clearfix">'; 7866 7867 $.each(this.tabs, function (index, tab) { 7868 if (index == 0) 7869 content += 7870 '<li class="wpgmp-tab-' + 7871 index + 7872 '" rel="' + 7873 index + 7874 '"><a class="active" href="javascript:void(0);">' + 7875 tab.title + 7876 "</a></li>"; 7877 else 7878 content += 7879 '<li class="wpgmp-tab-' + 7880 index + 7881 '" rel="' + 7882 index + 7883 '"><a href="javascript:void(0);">' + 7884 tab.title + 7885 "</a></li>"; 7886 }); 7887 7888 content += "</ul>"; 7889 7890 content += '<div class="wpgmp_toggle_main_container">'; 7891 7892 $.each(this.tabs, function (index, tab) { 7893 content += '<div id="wpgmp_tab_' + index + '">'; 7894 content += tab.content; 7895 content += "</div>"; 7896 }); 7897 7898 content += 7899 '</div><div class="wpgmp_toggle_container">' + 7900 wpgmp_local.hide + 7901 "</div></div>"; 7902 7903 return content; 7904 } 7905 7906 // ----------------------------- 7907 // ðï¸ Categories 7908 // ----------------------------- 7909 search_category( 7910 array, 7911 cat_id, 7912 index, 7913 categories_tab_data, 7914 child_categories_tab_data 7915 ) { 7916 var map_obj = this; 7917 var flag = true; 7918 $.each(array, function (k, i) { 7919 if (k == cat_id) { 7920 index = i; 7921 flag = false;
7922 if (typeof child_categories_tab_data[cat_id] == "undefined") { 7923 child_categories_tab_data[cat_id] = {}; 7924 child_categories_tab_data[cat_id]["data"] = []; 7925 child_categories_tab_data[cat_id]["parent_cat"] = i; 7926 child_categories_tab_data[cat_id]["cat_id"] = cat_id; 7927 $.each(map_obj.categories, function (k, e) { 7928 if (e.group_map_id == cat_id) { 7929 child_categories_tab_data[cat_id]["cat_title"] = 7930 e.group_map_title; 7931 child_categories_tab_data[cat_id]["cat_marker_icon"] = 7932 e.group_marker; 7933 } 7934 }); 7935 } 7936 index = map_obj.search_category( 7937 map_obj.map_data.map_tabs.category_tab.child_cats, 7938 i, 7939 index, 7940 categories_tab_data, 7941 child_categories_tab_data 7942 ); 7943 } 7944 }); 7945 if (flag == true) { 7946 if (typeof categories_tab_data[cat_id] == "undefined") { 7947 categories_tab_data[cat_id] = {}; 7948 categories_tab_data[cat_id]["data"] = []; 7949 categories_tab_data[cat_id]["cat_id"] = cat_id; 7950 $.each(map_obj.categories, function (k, e) { 7951 if (e.group_map_id == cat_id) { 7952 categories_tab_data[cat_id]["cat_title"] = e.group_map_title; 7953 categories_tab_data[cat_id]["cat_marker_icon"] = e.group_marker; 7954 } 7955 }); 7956 } 7957 } 7958 return index; 7959 } 7960 display_sub_categories( 7961 child_categories_tab_data, 7962 cat_id, 7963 content, 7964 padding 7965 ) { 7966 var map_obj = this; 7967 7968 var category_orders = []; 7969 if (typeof child_categories_tab_data != "undefined") { 7970 $.each(child_categories_tab_data, function (index, categories) { 7971 var loc_count = categories.data.length; 7972 7973 if (typeof child_categories_tab_data != "undefined") { 7974 $.each(child_categories_tab_data, function (c, ccat) { 7975 if (ccat.parent_cat == categories.cat_id) { 7976 loc_count = loc_count + ccat.data.length; 7977 $.each(child_categories_tab_data, function (cc, cccat) { 7978 if (cccat.parent_cat == ccat.cat_id) { 7979 loc_count = loc_count + cccat.data.length; 7980 } 7981 }); 7982 } 7983 }); 7984 } 7985 categories.loc_count = loc_count; 7986 7987 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == "count") { 7988 category_orders.push(categories.loc_count); 7989 } else if ( 7990 map_obj.map_data.map_tabs.category_tab.cat_order_by == "category" 7991 ) { 7992 if (categories.cat_order) { 7993 category_orders.push(categories.cat_order); 7994 } else if ( 7995 !categories.cat_order && 7996 map_obj.map_data.map_tabs.category_tab.all_cats[categories.cat_id] 7997 ) { 7998 categories.cat_order = 7999 map_obj.map_data.map_tabs.category_tab.all_cats[ 8000 categories.cat_id 8001 ].extensions_fields.cat_order; 8002 category_orders.push(categories.cat_order); 8003 } 8004 } else { 8005 if (categories.cat_title) { 8006 category_orders.push(categories.cat_title); 8007 } else if ( 8008 !categories.cat_title && 8009 map_obj.map_data.map_tabs.category_tab.all_cats[categories.cat_id] 8010 ) { 8011 categories.cat_title = 8012 map_obj.map_data.map_tabs.category_tab.all_cats[ 8013 categories.cat_id 8014 ].group_map_title; 8015 category_orders.push(categories.cat_title); 8016 } 8017 } 8018 }); 8019 } 8020 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == "category") { 8021 category_orders.sort(function (a, b) { 8022 return a - b; 8023 }); 8024 } else if ( 8025 map_obj.map_data.map_tabs.category_tab.cat_order_by == "count" 8026 ) { 8027 category_orders.sort(function (a, b) { 8028 return b - a; 8029 }); 8030 } else { 8031 category_orders.sort(); 8032 } 8033 var ordered_categories = []; 8034 var check_cats = []; 8035 $.each(category_orders, function (index, cat_title) { 8036 $.each(child_categories_tab_data, function (index, categories) { 8037 var compare_with; 8038 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == "count") { 8039 compare_with = categories.loc_count; 8040 } else if ( 8041 map_obj.map_data.map_tabs.category_tab.cat_order_by == "category" 8042 ) { 8043 compare_with = categories.cat_order;
8044 } else { 8045 compare_with = categories.cat_title; 8046 } 8047 8048 if ( 8049 cat_title == compare_with && 8050 $.inArray(categories.cat_id, check_cats) == -1 8051 ) { 8052 ordered_categories.push(categories); 8053 check_cats.push(categories.cat_id); 8054 } 8055 }); 8056 }); 8057 8058 $.each(ordered_categories, function (index, child_cat) { 8059 if (child_cat.parent_cat == cat_id) { 8060 var category_image = ""; 8061 8062 if ( 8063 !child_cat.cat_title && 8064 map_obj.map_data.map_tabs.category_tab.all_cats[child_cat.cat_id] 8065 ) { 8066 child_cat.cat_title = 8067 map_obj.map_data.map_tabs.category_tab.all_cats[ 8068 child_cat.cat_id 8069 ].group_map_title; 8070 } 8071 8072 if ( 8073 !child_cat.cat_marker_icon && 8074 map_obj.map_data.map_tabs.category_tab.all_cats[child_cat.cat_id] 8075 ) { 8076 child_cat.cat_marker_icon = 8077 map_obj.map_data.map_tabs.category_tab.all_cats[ 8078 child_cat.cat_id 8079 ].group_marker; 8080 } 8081 if (typeof child_cat.cat_marker_icon != "undefined") { 8082 category_image = 8083 '<span class="arrow"><img alt="'+child_cat.cat_title+'" src="' + 8084 child_cat.cat_marker_icon + 8085 '"></span>'; 8086 } 8087 content += 8088 '<div class="wpgmp_tab_item" data-container="wpgmp-category-tab-item" style="padding-left:' + 8089 padding + 8090 'px;">'; 8091 8092 if ( 8093 map_obj.map_data.map_tabs.category_tab.parent_cats !== undefined && 8094 map_obj.map_data.map_tabs.category_tab.parent_cats[child_cat.cat_id] 8095 ) 8096 var child_cats_str = 8097 ' data-child-cats="' + 8098 map_obj.map_data.map_tabs.category_tab.parent_cats[ 8099 child_cat.cat_id 8100 ].join(",") + 8101 '"'; 8102 else var child_cats_str = ""; 8103 8104 content += 8105 '<input type="checkbox"' + 8106 child_cats_str + 8107 ' data-parent-cat="' + 8108 cat_id + 8109 '" data-marker-category="' + 8110 child_cat.cat_id + 8111 '" value="' + 8112 child_cat.cat_id + 8113 '">'; 8114 8115 var loc_count = child_cat.loc_count; 8116 8117 $.each( 8118 map_obj.map_data.map_tabs.category_tab.child_cats, 8119 function (k, v) { 8120 if (v == child_cat.cat_id && loc_count == 0) loc_count = ""; 8121 } 8122 ); 8123 8124 var location_count = ""; 8125 if ( 8126 map_obj.map_data.map_tabs.category_tab.show_count === true && 8127 loc_count != "" 8128 ) { 8129 location_count = " (" + loc_count + ")"; 8130 } else { 8131 location_count = ""; 8132 } 8133 8134 content += 8135 '<a href="javascript:void(0);" class="wpgmp_cat_title wpgmp-accordion accordion-close">' + 8136 child_cat.cat_title + 8137 location_count + 8138 category_image + 8139 "</a>"; 8140 8141 if (map_obj.map_data.map_tabs.category_tab.hide_location !== true) { 8142 content += 8143 '<div class="scroll-pane" style="height: 97px; width:100%;">'; 8144 content += '<ul class="wpgmp_location_container">'; 8145 8146 $.each(child_cat.data, function (name, location) { 8147 if (location.onclick_action == "marker") { 8148 content += 8149 '<li><input type="checkbox" data-marker-location="' + 8150 location.cat_location_id + 8151 '" value="' + 8152 location.cat_location_id + 8153 '" /><a data-marker="' + 8154 location.cat_location_id + 8155 '" data-zoom="' + 8156 location.cat_location_zoom + 8157 '" href="javascript:void(0);">' + 8158 location.cat_location_title + 8159 "</a></li>"; 8160 } else if (location.onclick_action == "post") { 8161 content += 8162 '<li><input type="checkbox" data-marker-location="' + 8163 location.cat_location_id + 8164 '" value="' + 8165 location.cat_location_id + 8166 '" /><a href="' + 8167 location.redirect_permalink + 8168 '" target="_blank">' + 8169 location.cat_location_title + 8170 "</a></li>"; 8171 } else if (location.onclick_action == "custom_link") { 8172 content += 8173 '<li>
8173<input type="checkbox" data-marker-location="' + 8174 location.cat_location_id + 8175 '" value="' + 8176 location.cat_location_id + 8177 '" /><a href="' + 8178 location.redirect_custom_link + 8179 '" target="_blank">' + 8180 location.cat_location_title + 8181 "</a></li>"; 8182 } 8183 }); 8184 8185 content += "</ul>"; 8186 content += "</div>"; 8187 } 8188 content += "</div>"; 8189 content += map_obj.display_sub_categories( 8190 child_categories_tab_data, 8191 child_cat.cat_id, 8192 "", 8193 padding + 20 8194 ); 8195 } else if (index + 1 == child_categories_tab_data.length) return; 8196 }); 8197 return content; 8198 } 8199 8200 // ----------------------------- 8201 // âï¸ Drawing Tools 8202 // ----------------------------- 8203 enable_drawing() { } 8204 create_polygon() { } 8205 create_polyline() { } 8206 create_circle() { } 8207 create_rectangle() { } 8208 deleteSelectedShape() { } 8209 clearSelection() { } 8210 setSelection() { } 8211 event_listener() { } 8212 8213 // ----------------------------- 8214 // ð¾ Shape Management 8215 // ----------------------------- 8216 get_shapes_options() { } 8217 set_shapes_options() { } 8218 wpgmp_save_shapes() { } 8219 wpgmp_shape_complete() { } 8220 wpgmp_save_polylines() { } 8221 wpgmp_save_polygons() { } 8222 wpgmp_save_circles() { } 8223 wpgmp_save_rectangles() { } 8224 8225 // ----------------------------- 8226 // ð§· Overlays & Layers 8227 // ----------------------------- 8228 wpgmp_image_type_overlays() { } 8229 set_kml_layer() { } 8230 set_marker_cluster() { } 8231 set_panning_control() { } 8232 set_visual_refresh() { } 8233 set_45_imagery() { } 8234 set_overlay() { } 8235 set_bicyle_layer() { } 8236 set_traffic_layer() { } 8237 set_panoramic_layer() { } 8238 set_transit_layer() { } 8239 set_weather_layer() { } 8240 set_streetview() { } 8241 // Routes 8242 async create_routes() { 8243 const map_obj = this; 8244 if (!Array.isArray(map_obj.map_data.routes)) return; 8245 8246 for (const routeobj of map_obj.map_data.routes) { 8247 // ð Normalize keys 8248 routeobj.start = routeobj.start_location_data; 8249 routeobj.end = routeobj.end_location_data; 8250 routeobj.mode = routeobj.route_travel_mode; 8251 routeobj.unit = routeobj.route_unit_system; 8252 routeobj.direction_panel = `.directions-panel-route${routeobj.route_id}`; 8253 8254 try { 8255 await map_obj.wpgmp_find_direction(routeobj); 8256 8257 // Optional: hide panel initially 8258 $(routeobj.direction_panel).css("display", "none"); 8259 } catch (error) { 8260 console.error(`Error creating route ID ${routeobj.route_id}:`, error); 8261 } 8262 } 8263 } 8264 8265 /** 8266 * Creates a labeled marker compatible with both Google Maps and Leaflet. 8267 */ 8268create_labeled_marker(label, title, position) { 8269 const map_obj = this; 8270 const isGoogle = map_obj.isMapProvider("google"); 8271 8272 if (isGoogle) { 8273 8274 var iconUrl; 8275 position = {'lat':position.lat(),'lng':position.lng()}; 8276 if( label.toLowerCase() == 'a') { 8277 iconUrl = wpgmp_local.place_icon_url+'marker-alpha-1.svg'; 8278 } 8279 8280 if( label.toLowerCase() == 'b') { 8281 iconUrl = wpgmp_local.place_icon_url+'marker-alpha-2.svg'; 8282 } 8283 8284 return map_obj.create_google_marker({ 8285 map: map_obj.map, 8286 position, 8287 iconUrl:iconUrl, 8288 label, 8289 title, 8290 }); 8291 8292 } else { 8293 8294 const marker = map_obj.create_leaflet_marker({ 8295 map: map_obj.map, 8296 position, 8297 label, 8298 isDivIcon: true 8299 }); 8300 8301 8302 return marker; 8303 } 8304} 8305 8306 8307 wpgmp_draw_route(encodedPolyline, routeobj) { 8308 const map_obj = this; 8309 const isGoogle = map_obj.isMapProvider("google"); 8310 8311 // ðºï¸ Decode polyline 8312 const decodedPath = isGoogle 8313 ? google.maps.geometry.encoding.decodePath(encodedPolyline) 8314 : map_obj._decodePolyline(encodedPolyline); 8315 8316 // ð¨ Determine stroke color based on mode 8317 const modeColors = { 8318 driving: "#4285F4", 8319 walking: "#34A853", 8320 bicycling: "#FBBC05", 8321 transit: "#EA4335", 8322 default: "#FF0000", 8323 }; 8324 8325 let strokeColor = routeobj.route_stroke_color; 8326 if (!strokeColor) { 8327 const mode = routeobj.mode?.toLowerCase() || ""; 8328 strokeColor = modeColors[mode] || modeColors.default; 8329 } 8330 8331 const strokeWeight = routeobj.route_stroke_weight ?? 4; 8332 const strokeOpacity = routeobj.route_stroke_opacity ?? 1.0; 8333 8334 // â Create polyline and add to map 8335 let polyline; 8336 if (isGoogle) { 8337 polyline = new google.maps.Polyline({ 8338 path: decodedPath, 8339 geodesic: true, 8340 strokeColor, 8341 strokeOpacity, 8342 strokeWeight, 8343 }); 8344 } else { 8345 polyline = L.polyline(decodedPath, { 8346 color: strokeColor, 8347 weight: strokeWeight, 8348 opacity: strokeOpacity, 8349 lineJoin: "round", 8350 lineCap: "round", 8351 }); 8352 } 8353
8354 polyline.setMap(map_obj.map); 8355 map_obj.route_directions[routeobj.route_id] = polyline; 8356 8357 // ð Add start/end markers if enabled 8358 if (routeobj.show_markers && decodedPath.length >= 2) { 8359 const startLatLng = decodedPath[0]; 8360 const endLatLng = decodedPath[decodedPath.length - 1]; 8361 8362 const startMarker = map_obj.create_labeled_marker("A", "Start Point", startLatLng); 8363 const endMarker = map_obj.create_labeled_marker("B", "End Point", endLatLng); 8364 8365 // Track markers for cleanup 8366 map_obj.route_markers = map_obj.route_markers || {}; 8367 map_obj.route_markers[routeobj.route_id] = [startMarker, endMarker]; 8368 8369 if (!isGoogle) { 8370 startMarker.setMap(map_obj.map); 8371 endMarker.setMap(map_obj.map); 8372 } 8373 } 8374 8375 // ð§ Fit map to route bounds 8376 if (isGoogle) { 8377 const bounds = new google.maps.LatLngBounds(); 8378 decodedPath.forEach((point) => bounds.extend(point)); 8379 map_obj.map.fitBounds(bounds); 8380 } else { 8381 map_obj.map.fitBounds(polyline.getBounds()); 8382 } 8383 } 8384 async wpgmp_find_direction(routeobj) { 8385 const map_obj = this; 8386 const isGoogle = map_obj.isMapProvider("google"); 8387 8388 const [startLat, startLng] = routeobj.start.split(",").map(parseFloat); 8389 const [endLat, endLng] = routeobj.end.split(",").map(parseFloat); 8390 8391 if (isGoogle) { 8392 const apiKey = wpgmp_local.apiKey; 8393 if (!apiKey) return false; 8394 8395 // Convert waypoints 8396 const waypts = (routeobj.way_points || []).map((point) => { 8397 const [lat, lng] = point.split(",").map(parseFloat); 8398 return { location: { latLng: { latitude: lat, longitude: lng } } }; 8399 }); 8400 8401 // Normalize travel mode 8402 let drivemode = (routeobj.mode || "").toUpperCase(); 8403 if (drivemode === "DRIVING" || drivemode === "") drivemode = "DRIVE"; 8404 else if (drivemode === "WALKING") drivemode = "WALK"; 8405 else if (drivemode === "BICYCLING") drivemode = "BICYCLE"; 8406 8407 const requestBody = { 8408 origin: { location: { latLng: { latitude: startLat, longitude: startLng } } }, 8409 destination: { location: { latLng: { latitude: endLat, longitude: endLng } } }, 8410 intermediates: waypts, 8411 travelMode: drivemode, 8412 languageCode: "en-US", 8413 units: routeobj.unit, 8414 optimizeWaypointOrder: true, 8415 }; 8416 8417 try { 8418 const response = await fetch(this.newRoutesApiURL, { 8419 method: "POST", 8420 headers: { 8421 "Content-Type": "application/json", 8422 "X-Goog-Api-Key": apiKey, 8423 "X-Goog-FieldMask": "routes.description,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline,routes.legs,routes.optimized_intermediate_waypoint_index", 8424 }, 8425 body: JSON.stringify(requestBody), 8426 }); 8427 8428 const data = await response.json(); 8429 8430 if (data.routes?.length > 0) { 8431 const route = data.routes[0]; 8432 const encodedPolyline = route.polyline.encodedPolyline; 8433 8434 map_obj.wpgmp_draw_route(encodedPolyline, routeobj); 8435 const html = map_obj.wpgmp_direction_steps(route, routeobj); 8436 8437 $(routeobj.direction_panel).html(html).css("display", "block"); 8438 } else { 8439 console.error("No routes found"); 8440 $(routeobj.direction_panel).html("<div>"+wpgmp_local.no_route_found+"</div>").css("display", "block"); 8441 } 8442 8443 } catch (error) { 8444 console.error("Error fetching Google route:", error); 8445 } 8446 8447 } else { 8448 try { 8449 8450 const isMapBox = map_obj.isRouteProvider('mapbox'); 8451 const waypoints = [L.latLng(startLat, startLng), L.latLng(endLat, endLng)]; 8452 // Normalize travel mode 8453 let drivemode = (routeobj.mode || "").toUpperCase(); 8454 if (drivemode === "DRIVE" || drivemode === "") drivemode = "DRIVING"; 8455 else if (drivemode === "WALK") drivemode = "WALKING"; 8456 else if (drivemode === "BICYCLE") drivemode = "cycling"; 8457 else { 8458 drivemode = "driving"; 8459 } 8460 drivemode = (drivemode || 'driving').toLowerCase(); 8461 8462 let router; 8463
8464 const mapboxKey = wpgmp_local.wpgmp_mapbox_key; 8465 8466 if (isMapBox && mapboxKey && mapboxKey !== '') { 8467 // Use Mapbox if access token is available 8468 router = L.Routing.mapbox(mapboxKey, { 8469 profile: `mapbox/${drivemode}`, // mapbox/driving, mapbox/walking, mapbox/cycling 8470 }); 8471 } else { 8472 // Fallback to OSRM demo server (NOT for production) 8473 router = new L.Routing.OSRMv1({ 8474 serviceUrl: 'https://router.project-osrm.org/route/v1', 8475 profile: drivemode, 8476 }); 8477 } 8478 8479 const formatter = new L.Routing.Formatter({ 8480 language: 'en', 8481 units: routeobj.unit === 'imperial' ? 'imperial' : 'metric', 8482 }); 8483 8484 const routingControl = L.Routing.control({ 8485 router, 8486 waypoints, 8487 routeWhileDragging: false, 8488 addWaypoints: false, 8489 show: false, 8490 lineOptions: { 8491 styles: [{ 8492 color: routeobj.route_stroke_color || '#3F51B5', 8493 weight: routeobj.route_stroke_weight || 5, 8494 opacity: 0, 8495 }], 8496 }, 8497 formatter, 8498 createMarker: () => null, 8499 }).addTo(map_obj.map); 8500 8501 routingControl.on('routesfound', function (e) { 8502 const coordinates = e.routes[0].coordinates; 8503 const polylineCoords = coordinates.map((coord) => [coord.lat, coord.lng]); 8504 const encodedPolyline = map_obj._encodePolyline(polylineCoords); 8505 8506 map_obj.wpgmp_draw_route(encodedPolyline, routeobj); 8507 const html = map_obj.wpgmp_direction_steps(e.routes[0], routeobj); 8508 if (routeobj.direction_panel instanceof jQuery) { 8509 routeobj.direction_panel.html(html); 8510 } else if (typeof routeobj.direction_panel === "string") { 8511 const el = document.querySelector(routeobj.direction_panel); 8512 if (el) el.innerHTML = html; 8513 } 8514 8515 }); 8516 8517 } catch (error) { 8518 console.error("Error fetching leaflet route:", error); 8519 } 8520 } 8521 } 8522 8523 wpgmp_direction_steps(routeData, route_setting) { 8524 const map_obj = this; 8525 const isGoogle = map_obj.isMapProvider("google"); 8526 8527 // Distance calculation 8528 let rawDistance = isGoogle 8529 ? routeData.distanceMeters 8530 : routeData.summary?.totalDistance; 8531 8532 let distance; 8533 const unit = (route_setting.unit || "").toLowerCase(); 8534 if (unit === "imperial") { 8535 distance = (rawDistance / 1609.34).toFixed(2) + " mi"; 8536 } else { 8537 distance = (rawDistance / 1000).toFixed(2) + " km"; 8538 } 8539 8540 // Duration 8541 const rawDuration = isGoogle 8542 ? routeData.duration 8543 : routeData.summary?.totalTime; 8544 8545 const duration = map_obj.formatRouteDuration(rawDuration); 8546 8547 // Description (Google only) 8548 const description = isGoogle 8549 ? routeData.description || wpgmp_local.route_direction 8550 : wpgmp_local.route_direction; 8551 8552 // Start HTML 8553 let stepsHTML = ` 8554 <div class="wpgmp-directions-response adp-legal"> 8555 <h4 class="route_title" >${wpgmp_local.direction_details}</h4> 8556 <ul> 8557 <li class="route_description">${wpgmp_local.route_description}: ${description}</li> 8558 <li class="route_distance">${wpgmp_local.route_distance}: ${distance}</li> 8559 ${rawDuration ? `<li class="route_duration" >${wpgmp_local.route_duration}: ${duration}</li>` : ""} 8560 `; 8561 8562 // Steps 8563 const steps = isGoogle 8564 ? routeData.legs?.[0]?.steps || [] 8565 : routeData.instructions || []; 8566 8567 steps.forEach((step, index) => { 8568 const text = isGoogle 8569 ? step.navigationInstruction?.instructions || wpgmp_local.follow_the_road 8570 : step.text || wpgmp_local.route_continue; 8571 8572 const route_class = isGoogle 8573 ? step.navigationInstruction?.maneuver.toLowerCase() 8574 : ""; 8575 8576 stepsHTML += `<li class="${route_class}">${wpgmp_local.route_step} ${index + 1}: ${text}</li>`; 8577 }); 8578 8579 stepsHTML += `</ul></div>`; 8580 return stepsHTML; 8581 } 8582 8583 8584 // ----------------------------- 8585 // ðª Amenities 8586 // ----------------------------- 8587 create_amenities_markers() { } 8588 8589 // ----------------------------- 8590 // ð§ Utilities 8591 // ----------------------------- 8592 load_google_fonts(fonts) { 8593 if (fonts && fonts.length > 0) { 8594 $.each(fonts, function (k, font) { 8595 if (font.indexOf(",") >= 0) { 8596 font = font.split(","); 8597 font = font[0]; 8598 } 8599 if (font.indexOf('"') >= 0) { 8600 font = font.replace('"', ""); 8601 font = font.replace('"', ""); 8602 } 8603 WebFont.load({ 8604 google: { 8605 families: [font], 8606 }, 8607 }); 8608 }); 8609 } 8610 } 8611 load_json(url) { 8612 this.map.data.loadGeoJson(url); 8613 } 8614 wpgmp_finddata() { } 8615 place_info(place_id) { 8616 var place_obj; 8617 8618 $.each(this.places, function (index, place) { 8619 if (parseInt(place.id) == parseInt(place_id)) { 8620 place_obj = place; 8621 } 8622 }); 8623 8624 return place_obj; 8625 } 8626 8627 _debounce(fn, delay) { 8628 let timer = null; 8629 return function (...args) { 8630 clearTimeout(timer); 8631 timer = setTimeout(() => fn.apply(this, args), delay); 8632 }; 8633 } 8634 8635 _encodePolyline(coords) { 8636 let output = ''; 8637 let prevLat = 0, prevLng = 0; 8638 8639 for (const [lat, lng] of coords) { 8640 const latE5 = Math.round(lat * 1e5); 8641 const lngE5 = Math.round(lng * 1e5); 8642 8643 const dLat = latE5 - prevLat; 8644 const dLng = lngE5 - prevLng; 8645 8646 output += encodeSignedNumber(dLat) + encodeSignedNumber(dLng); 8647 8648 prevLat = latE5; 8649 prevLng = lngE5; 8650 } 8651 8652 return output; 8653 8654 function encodeSignedNumber(num) { 8655 let sgnNum = num << 1; 8656 if (num < 0) { 8657 sgnNum = ~sgnNum; 8658 } 8659 return encodeNumber(sgnNum); 8660 } 8661 8662 function encodeNumber(num) { 8663 let encodeString = ''; 8664 while (num >= 0x20) { 8665 encodeString += String.fromCharCode((0x20 | (num & 0x1f)) + 63); 8666 num >>= 5; 8667 } 8668 encodeString += String.fromCharCode(num + 63); 8669 return encodeString; 8670 } 8671 } 8672 8673 _decodePolyline(encoded) { 8674 let index = 0, lat = 0, lng = 0, coordinates = []; 8675 8676 while (index < encoded.length) { 8677 let result = 1, shift = 0, b; 8678 8679 do { 8680 b = encoded.charCodeAt(index++) - 63 - 1; 8681 result += b << shift; 8682 shift += 5; 8683 } while (b >= 0x1f); 8684 8685 const deltaLat = (result & 1) ? ~(result >> 1) : (result >> 1); 8686 lat += deltaLat; 8687 8688 result = 1; 8689 shift = 0; 8690 8691 do { 8692 b = encoded.charCodeAt(index++) - 63 - 1; 8693 result += b << shift; 8694 shift += 5; 8695 } while (b >= 0x1f); 8696 8697 const deltaLng = (result & 1) ? ~(result >> 1) : (result >> 1); 8698 lng += deltaLng; 8699 8700 coordinates.push([lat / 1e5, lng / 1e5]); 8701 } 8702 8703 return coordinates; 8704 } 8705 8706 formatRouteDuration(durationString) { 8707 const totalSeconds = parseInt(durationString, 10); 8708 8709 const hours = Math.floor(totalSeconds / 3600); 8710 const minutes = Math.floor((totalSeconds % 3600) / 60); 8711 8712 let formatted = ''; 8713
8714 if (hours > 0) { 8715 formatted += hours + (hours === 1 ? ' hr ' : ' hrs '); 8716 } 8717 8718 if (minutes > 0 || hours === 0) { // Always show minutes if no hours 8719 formatted += minutes + ' mins'; 8720 } 8721 8722 return formatted.trim(); 8723 } 8724 8725 isMapProvider(providerName) { 8726 const map_obj = this; 8727 const currentProvider = (map_obj?.map_data?.provider || wpgmp_local?.map_provider || 'google').toLowerCase(); 8728 return currentProvider === providerName.toLowerCase(); 8729 } 8730 8731 isRouteProvider(providerName) { 8732 const map_obj = this; 8733 const currentProvider = (map_obj?.map_data?.route_provider || wpgmp_local?.route_provider || 'leaflet').toLowerCase(); 8734 8735 return currentProvider === providerName.toLowerCase(); 8736 } 8737 8738 // Tabs registration 8739 register_direction_tab() { 8740 const map_obj = this; 8741 const tab = map_obj.map_tabs?.direction_tab; 8742 // 1. Find direction from inputs 8743 $(document).on("click", "[data-wpgmp='find_direction'][data-wpgmp-map-id='" + map_obj.map_data.map_property.map_id + "']", async function () { 8744 8745 // Get DOM elements from map container 8746 var start = $(map_obj.container).find('[data-point="start"]'); 8747 var end = $(map_obj.container).find('[data-point="end"]'); 8748 var travel_mode = $(map_obj.container).find('select[name="travel_mode"]').val(); 8749 var travel_unit = $(map_obj.container).find('select[name="travel_unit"]').val(); 8750 var direction_panel = $(map_obj.container).find('[data-wpgmp="directions-panel"]'); 8751 8752 start.removeClass("wpgmp_error"); 8753 end.removeClass("wpgmp_error"); 8754 8755 8756 if (!$(start).val()) return $(start).addClass("wpgmp_error").focus(); 8757 if (!$(end).val()) return $(end).addClass("wpgmp_error").focus(); 8758 8759 const getLatLng = (el, textbox) => 8760 textbox ? `${el.data("latitude")},${el.data("longitude")}` : `${el.find(":selected").data("latitude")},${el.find(":selected").data("longitude")}`; 8761 8762 const options = { 8763 start: getLatLng(start, map_obj.map_data.map_tabs.route_start_location === "textbox"), 8764 end: getLatLng(end, map_obj.map_data.map_tabs.route_end_location === "textbox"), 8765 mode: travel_mode, 8766 unit: travel_unit, 8767 map: map_obj.map, 8768 direction_panel, 8769 route_id: "direction", 8770 show_markers:true 8771 }; 8772 8773 const polyline = map_obj.route_directions["direction"]; 8774 if (polyline && typeof polyline.remove === "function") { 8775 polyline.remove(); 8776 } else if (polyline && typeof polyline.setMap === "function") { 8777 polyline.setMap(null); 8778 } 8779 8780 try { 8781 await map_obj.wpgmp_find_direction(options); 8782 const showPanel = tab?.suppress_markers !== true; 8783 $(direction_panel).css("display", showPanel ? "block" : "none"); 8784 } catch (err) { 8785 console.error("Error fetching directions:", err); 8786 } 8787 }); 8788 8789 // 2. Use current location to populate input field 8790 $(map_obj.container).find(".wpgmp_mcurrent_location").on("click", function () { 8791 const el = this; 8792 map_obj.get_current_location( 8793 function (loc) { 8794 const lat = map_obj.isMapProvider("google") ? loc.lat() : loc.lat; 8795 const lng = map_obj.isMapProvider("google") ? loc.lng() : loc.lng; 8796 8797 const $input = $(el).parent().find(".wpgmp_auto_suggest"); 8798 $input.data("latitude", lat); 8799 $input.data("longitude", lng); 8800 8801 map_obj.wpgmp_geocode(lat, lng).then((result) => { 8802 $input.val(result.address); 8803 }).catch(console.error); 8804 }, 8805 function () {} 8806 ); 8807 }); 8808 } 8809 8810 /** 8811 * Adds a locate-me control to the map for both Google Maps and Leaflet 8812 */ 8813 8814register_locate_me_control() { 8815 const map_obj = this; 8816 if (map_obj.settings.locateme_control !== true) return; 8817 8818 const className = "wpgmp_locateme_control " + (map_obj.settings.locateme_control_position || "topright").toLowerCase(); 8819 const innerHTML = `<span title='${wpgmp_local.locate_me}'></span>`; 8820 8821 if (map_obj.isMapProvider("google")) { 8822 const controlDiv = document.createElement("div"); 8823 controlDiv.className = className; 8824 controlDiv.innerHTML = innerHTML; 8825 map_obj.map.controls[ 8826 google.maps.ControlPosition[map_obj.settings.locateme_control_position || "TOP_RIGHT"] 8827 ].push(controlDiv); 8828 } else { 8829 const LocateControl = L.Control.extend({ 8830 options: { position: map_obj.settings.locateme_control_position?.toLowerCase() || "topright" }, 8831 onAdd() { 8832 const container = L.DomUtil.create("div", className); 8833 container.innerHTML = innerHTML; 8834 container.title = wpgmp_local.locate_me; 8835 L.DomEvent.disableClickPropagation(container); 8836 return container; 8837 } 8838 }); 8839 map_obj.map.addControl(new LocateControl()); 8840 } 8841 8842 // Click Event Binding (Same for both) 8843 $(map_obj.container).on("click", ".wpgmp_locateme_control", function () { 8844 map_obj.get_current_location((user_location) => { 8845 const isGoogle = map_obj.isMapProvider("google"); 8846 const lat = typeof user_location.lat === 'function' ? user_location.lat() : user_location.lat; 8847 const lng = typeof user_location.lng === 'function' ? user_location.lng() : user_location.lng; 8848 const latLngObj = isGoogle ? new google.maps.LatLng(lat, lng) : L.latLng(lat, lng); 8849 8850 if (!isGoogle) { 8851 const bounds = latLngObj.toBounds(100); 8852 map_obj.map.flyToBounds(bounds, { 8853 padding: [50, 50], 8854 maxZoom: 15, 8855 animate: true, 8856 duration: 1.5 8857 }); 8858 } else { 8859 map_obj.map.panTo(latLngObj); 8860 map_obj.map.setZoom(15); 8861 } 8862 8863 if (!isGoogle && map_obj.pulse_circle && map_obj.map.hasLayer(map_obj.pulse_circle)) { 8864 map_obj.map.removeLayer(map_obj.pulse_circle); 8865 } 8866 8867 if (!isGoogle) { 8868 8869 map_obj.pulse_circle = map_obj.create_leaflet_marker({ 8870 map: map_obj.map, 8871 position: latLngObj, 8872 isDivIcon: true, 8873 html: '<div class="pulse-marker"></div>', 8874 customClass: '', // optional, for no extra class 8875 }); 8876 8877 } else { 8878 // Google Maps fallback visual marker (if needed) 8879 if (map_obj.pulse_circle) map_obj.pulse_circle.setMap(null); 8880 const markerDiv = document.createElement('div'); 8881 markerDiv.className = 'pulse-marker';
8882 const overlay = new google.maps.OverlayView(); 8883 overlay.onAdd = function () { 8884 const layer = this.getPanes().overlayMouseTarget; 8885 layer.appendChild(markerDiv); 8886 markerDiv.style.position = 'absolute'; 8887 }; 8888 overlay.draw = function () { 8889 const projection = this.getProjection(); 8890 const point = projection.fromLatLngToDivPixel(latLngObj); 8891 if (point) { 8892 markerDiv.style.left = point.x - 15 + 'px'; 8893 markerDiv.style.top = point.y - 15 + 'px'; 8894 } 8895 }; 8896 overlay.onRemove = function () { 8897 if (markerDiv.parentNode) markerDiv.parentNode.removeChild(markerDiv); 8898 }; 8899 overlay.setMap(map_obj.map); 8900 map_obj.pulse_circle = overlay; 8901 } 8902 8903 if (map_obj.map_center_marker) { 8904 map_obj.map_center_marker.setPosition(latLngObj); 8905 } 8906 // Draw/Move circle 8907 if (map_obj.set_center_circle) { 8908 if (map_obj.isMapProvider("google")) { 8909 map_obj.set_center_circle.setCenter(latLngObj); 8910 } else if (typeof map_obj.set_center_circle.setLatLng === "function") { 8911 map_obj.set_center_circle.setLatLng(latLngObj); 8912 } 8913 } 8914 8915 8916 }); 8917 }); 8918} 8919 8920getMarkerSize() { 8921 const isMobile = window.innerWidth <= 767; 8922 const isRetina = window.devicePixelRatio > 1.5; 8923 8924 let size; 8925 if (isMobile) { 8926 size = wpgmp_local.mobile_marker_size || [24,24]; 8927 } else if (isRetina) { 8928 size = wpgmp_local.retina_marker_size || [64,64]; 8929 } else { 8930 size = wpgmp_local.desktop_marker_size || [32,32]; 8931 } 8932 8933 return size; 8934} 8935 8936 compute_distance(lat1, lng1, lat2, lng2) { 8937 var map_obj = this; 8938 const isGoogle = map_obj.isMapProvider('google'); 8939 8940 lat1 = parseFloat(lat1); 8941 lng1 = parseFloat(lng1); 8942 lat2 = parseFloat(lat2); 8943 lng2 = parseFloat(lng2); 8944 8945 if (isGoogle && typeof google !== 'undefined' && google.maps?.geometry?.spherical) { 8946 const point1 = new google.maps.LatLng(lat1, lng1); 8947 const point2 = new google.maps.LatLng(lat2, lng2); 8948 return google.maps.geometry.spherical.computeDistanceBetween(point1, point2); // meters 8949 } 8950 8951 // Leaflet fallback 8952 if (typeof L !== 'undefined') { 8953 const point1 = L.latLng(lat1, lng1); 8954 const point2 = L.latLng(lat2, lng2); 8955 return point1.distanceTo(point2); // meters 8956 } 8957 8958 console.warn('No supported map provider available to compute distance.'); 8959 return null; 8960} 8961 8962 8963 8964} 8965 8966window.WpgmpBaseMaps = WpgmpBaseMaps; 8967 8968})(jQuery, window, document); 8969/** 8970 * WpgmpGoogleMaps class - extends BaseMaps for Google Maps provider. 8971 */ 8972 8973(function ($, window, document) { 8974 class WpgmpGoogleMaps extends WpgmpBaseMaps { 8975 constructor(element, map_data = {}, places = []) { 8976 super(element, map_data, places); 8977 8978 var suppress_markers = false; 8979 if (this.map_data.map_tabs && this.map_data.map_tabs.direction_tab) { 8980 suppress_markers = 8981 this.map_data.map_tabs.direction_tab.suppress_markers; 8982 } 8983 8984 this.infowindow_marker = new google.maps.InfoWindow(); 8985 this.infobox = this.wpgmpInitializeInfoBox(); 8986 this.newRoutesApiURL = 8987 "https://routes.googleapis.com/directions/v2:computeRoutes"; 8988 this.searchNearbyApiURL = 8989 "https://places.googleapis.com/v1/places:searchNearby"; 8990 8991 } 8992 // ========================= 8993// ð Part 1: Initialization & Responsive Setup 8994// ========================= 8995 init() { 8996 const map_obj = this; 8997 8998 // Determine current screen type 8999 let isMobile = false; 9000 let screen_type = "desktop"; 9001 const screen_size = $(window).width(); 9002 9003 if (screen_size <= 480) { 9004 screen_type = "smartphones"; 9005 } else if (screen_size > 480 && screen_size <= 768) { 9006 screen_type = "ipads"; 9007 } else if (screen_size >= 1824) { 9008 screen_type = "large-screens"; 9009 } 9010 9011 // Apply mobile-specific settings if configured 9012 if (screen_type !== "desktop" && map_obj.settings.mobile_specific === true) { 9013 isMobile = true; 9014 9015 const mobileSettings = map_obj.settings.screens?.[screen_type]; 9016 if (mobileSettings) { 9017 map_obj.settings.width_mobile = mobileSettings.map_width_mobile; 9018 map_obj.settings.height_mobile = mobileSettings.map_height_mobile; 9019 map_obj.settings.zoom = parseInt(mobileSettings.map_zoom_level_mobile); 9020 map_obj.settings.draggable = mobileSettings.map_draggable_mobile !== "fal
9020se"; 9021 map_obj.settings.scroll_wheel = mobileSettings.map_scrolling_wheel_mobile !== "false"; 9022 } 9023 9024 // Apply mobile dimensions 9025 if (map_obj.settings.width_mobile !== "") { 9026 $(map_obj.element).css("width", map_obj.settings.width_mobile); 9027 } 9028 9029 if (map_obj.settings.height_mobile !== "") { 9030 $(map_obj.element).css("height", map_obj.settings.height_mobile); 9031 } 9032 } 9033 9034 // ========================= 9035 // ðºï¸ Part 2: Map Initialization and Configuration 9036 // ========================= 9037 9038 const center = new google.maps.LatLng( 9039 map_obj.settings.center_lat, 9040 map_obj.settings.center_lng 9041 ); 9042 9043 const mapOptions = { 9044 zoom: parseInt(map_obj.settings.zoom), 9045 center: center, 9046 scrollwheel: map_obj.settings.scroll_wheel !== "true", 9047 disableDoubleClickZoom: map_obj.settings.doubleclickzoom === false, 9048 zoomControl: map_obj.settings.zoom_control === true, 9049 fullscreenControl: map_obj.settings.full_screen_control === true, 9050 fullscreenControlOptions: { 9051 position: google.maps.ControlPosition[map_obj.settings.full_screen_control_position], 9052 }, 9053 zoomControlOptions: { 9054 style: google.maps.ZoomControlStyle[map_obj.settings.zoom_control_style], 9055 position: google.maps.ControlPosition[map_obj.settings.zoom_control_position], 9056 }, 9057 mapTypeControl: map_obj.settings.map_type_control === true, 9058 mapTypeControlOptions: { 9059 style: google.maps.MapTypeControlStyle[map_obj.settings.map_type_control_style], 9060 position: google.maps.ControlPosition[map_obj.settings.map_type_control_position], 9061 }, 9062 cameraControlOptions: { 9063 position: google.maps.ControlPosition[map_obj.settings.camera_control_position], 9064 }, 9065 scaleControl: map_obj.settings.scale_control === true, 9066 streetViewControl: map_obj.settings.street_view_control === true, 9067 streetViewControlOptions: { 9068 position: google.maps.ControlPosition[map_obj.settings.street_view_control_position], 9069 }, 9070 overviewMapControl: map_obj.settings.overview_map_control === true, 9071 overviewMapControlOptions: { 9072 opened: map_obj.settings.overview_map_control, 9073 }, 9074 draggable: map_obj.settings.draggable, 9075 mapTypeId: google.maps.MapTypeId[map_obj.settings.map_type_id], 9076 styles: eval(map_obj.map_data.styles), 9077 minZoom: parseInt(map_obj.settings.min_zoom), 9078 maxZoom: parseInt(map_obj.settings.max_zoom), 9079 gestureHandling: map_obj.settings.gesture, 9080 cameraControl: map_obj.settings.camera_control === true, 9081 } 9082 9083 let useAdvancedMarker = (wpgmp_local.use_advanced_marker == 'true') ? true : false; 9084 const isApplyStyles = (map_obj.map_data.styles && map_obj.map_data.styles!='') ? true:false; 9085 const spiderfier_enabled = map_obj.map_data.map_marker_spiderfier_setting?.marker_spiderfy === "true"; 9086 9087 if(map_obj.map_data.marker_cluster){ 9088 // Do not work with marker cluster 9089 useAdvancedMarker = false;
9090 } else if(isApplyStyles) { 9091 // Do not work with snazzy maps or custom styles 9092 useAdvancedMarker = false; 9093 } else if(spiderfier_enabled){ 9094 // Do no work with spiderfier effects. 9095 useAdvancedMarker = false; 9096 } 9097 9098 map_obj.useAdvancedMarker = useAdvancedMarker; 9099 9100 if (map_obj.useAdvancedMarker === true && isApplyStyles == false) { 9101 mapOptions.mapId = "mapID" + map_obj.map_data.map_property.map_id; 9102 } 9103 9104 map_obj.map = new google.maps.Map(map_obj.element, mapOptions); 9105 9106 if (typeof google?.maps?.marker?.AdvancedMarkerElement !== 'undefined') { 9107 9108 if (typeof google.maps.Animation === 'undefined') { 9109 google.maps.Animation = { 9110 BOUNCE: 'BOUNCE', 9111 DROP: 'DROP' // Optional: future support 9112 }; 9113 } 9114 9115 const proto = google.maps.marker.AdvancedMarkerElement.prototype; 9116 9117 if (typeof proto.getPosition !== 'function') { 9118 proto.getPosition = function () { 9119 return this.position; 9120 }; 9121 } 9122 9123 if (typeof proto.setPosition !== 'function') { 9124 proto.setPosition = function (latlng) { 9125 this.position = latlng; 9126 }; 9127 } 9128 9129 if (typeof proto.setAnimation !== 'function') { 9130 proto.setAnimation = function (animationType) { 9131 //console.warn("setAnimation() is not natively supported in AdvancedMarkerElement. Applying custom behavior."); 9132 this._animation = animationType; 9133 9134 const el = this.content; 9135 if (!el || !(el instanceof HTMLElement)) return; 9136 9137 el.classList.remove('gmp-marker-bounce', 'gmp-marker-drop'); 9138 9139 if (animationType === google.maps.Animation.BOUNCE) { 9140 el.classList.add('gmp-marker-bounce'); 9141 } else if (animationType === google.maps.Animation.DROP) { 9142 el.classList.add('gmp-marker-drop'); 9143 } 9144 9145 }; 9146 } 9147 9148 if (typeof proto.getAnimation !== 'function') { 9149 proto.getAnimation = function () { 9150 return this._animation || null; 9151 }; 9152 } 9153 9154 if (typeof proto.setVisible !== 'function') { 9155 proto.setVisible = function (visible) { 9156 if (visible) { 9157 if (!this.map && this._boundMap) { 9158 this.map = this._boundMap; 9159 } 9160 } else { 9161 this._boundMap = this.map; // store map reference before hiding 9162 this.map = null; 9163 } 9164 this._visible = visible; 9165 }; 9166 } 9167 9168 if (typeof proto.getVisible !== 'function') { 9169 proto.getVisible = function () { 9170 return this._visible || !!this.map; 9171 }; 9172 } 9173 9174 if (typeof proto.bindMap !== 'function') { 9175 proto.bindMap = function (map) { 9176 this._boundMap = map; 9177 this.map = map; 9178 this._visible = true; 9179 }; 9180 } 9181 9182 if (typeof google.maps.Marker.prototype.bindMap !== 'function') { 9183 google.maps.Marker.prototype.bindMap = function (map) { 9184 this._boundMap = map; 9185 this.setMap(map); 9186 }; 9187 } 9188 9189 if (typeof proto.setIcon !== 'function') { 9190 proto.setIcon = function (icon) { 9191 if (typeof icon !== 'object' || !icon.url) { 9192 console.warn('Invalid icon object passed to setIcon'); 9193 return; 9194 } 9195 9196 const iconUrl = icon.url; 9197 const size = icon.scaledSize 9198 ? [icon.scaledSize.width, icon.scaledSize.height] 9199 : [32, 32]; // fallback default size 9200 9201 // Store icon size for reuse 9202 this._iconSize = size; 9203 9204 /* 9205 const iconElement = document.createElement('img'); 9206 iconElement.src = iconUrl; 9207 iconElement.alt = this.title || ''; 9208 iconElement.style.width = `${size[0]}px`; 9209 iconElement.style.height = `${size[1]}px`; 9210 9211 if (this.title) { 9212 iconElement.title = this.title; 9213 } 9214 */ 9215 const iconElement = map_obj.createIconElement(iconUrl, this.title, size); 9216 9217 this.content = iconElement; 9218 }; 9219 } 9220 9221 // Optional: allow storing the icon size for reuse 9222 if (typeof proto.setIconSize !== 'function') { 9223 proto.setIconSize = function (sizeArray) { 9224 if (Array.isArray(sizeArray) && sizeArray.length === 2) { 9225 this._iconSize = sizeArray; 9226 } 9227 }; 9228 } 9229 9230 } 9231 9232 // Handle template placeholder storage if using advanced template mode 9233 map_obj.search_button = false;
9234 if (map_obj.map_data.map_options.advance_template === true) { 9235 const $listingElement = $(document).find( 9236 '[data-listing-content="true"][data-wpgmp-map-id]' 9237 ); 9238 const eachContent = $listingElement.prop("innerHTML"); 9239 9240 if (eachContent) { 9241 map_obj.map_data.listing.listing_placeholder = eachContent; 9242 } 9243 } 9244 9245 // ========================= 9246 // ð Part 3: Core Marker + Layer Initialization 9247 // ========================= 9248 9249 // Trigger lifecycle hook after map is initialized 9250 map_obj.map_loaded(); 9251 9252 // Handle responsive layout 9253 map_obj.responsive_map(); 9254 9255 // Create and render all map markers 9256 map_obj.create_markers(); 9257 map_obj.display_markers(); 9258 9259 // Load Google Fonts if configured 9260 if (typeof map_obj.settings.google_fonts !== "undefined") { 9261 map_obj.load_google_fonts(map_obj.settings.google_fonts); 9262 } 9263 9264 // Show search control box if enabled 9265 if (map_obj.settings.search_control === true) { 9266 map_obj.show_search_control(); 9267 } 9268 // Add custom map control buttons if enabled 9269 if (map_obj.settings.map_control === true) { 9270 if (typeof map_obj.settings.map_control_settings !== "undefined") { 9271 $.each(map_obj.settings.map_control_settings, function (k, val) { 9272 const centerControlDiv = document.createElement("div"); 9273 map_obj.create_element(centerControlDiv, map_obj.map, val.html); 9274 centerControlDiv.index = 1; 9275 map_obj.map.controls[ 9276 google.maps.ControlPosition[val.position] 9277 ].push(centerControlDiv); 9278 }); 9279 } 9280 } 9281 9282 // Register "Locate Me" button if enabled 9283 if (map_obj.settings.locateme_control === true && map_obj.settings.locateme_control_position) { 9284 map_obj.register_locate_me_control(); 9285 } 9286 9287 // Overlays and Visual Layers 9288 if (map_obj.map_data.street_view) map_obj.set_streetview(center); 9289 if (map_obj.map_data.weather_layer) map_obj.set_weather_layer(); 9290 if (map_obj.map_data.bicyle_layer && map_obj.map_data.bicyle_layer.display_layer) map_obj.set_bicyle_layer(); 9291 if (map_obj.map_data.traffic_layer) map_obj.set_traffic_layer(); 9292 if (map_obj.map_data.transit_layer) map_obj.set_transit_layer(); 9293 if (map_obj.map_data.panoramio_layer) map_obj.set_panoramic_layer(); 9294 if (map_obj.map_data.overlay_setting) map_obj.set_overlay(); 9295 if (map_obj.settings.display_45_imagery === "45") map_obj.set_45_imagery(); 9296 if (map_obj.map_data.map_visual_refresh === true) map_obj.set_visual_refresh(); 9297 9298 // Cluster markers if enabled 9299 if (map_obj.map_data.marker_cluster) map_obj.set_marker_cluster(); 9300 9301 // Enable panning control if configured 9302 if (map_obj.map_data.panning_control) map_obj.set_panning_control(); 9303 9304 // Load KML layer 9305 if (map_obj.map_data.kml_layer) map_obj.set_kml_layer(); 9306 9307 // ========================= 9308 // ð§© Part 4: Shapes, Routes, Sorting, and Listings 9309 // ========================= 9310 9311 // Create shapes (polygons, polylines, circles, rectangles) 9312 if (map_obj.map_data.shapes?.shape) { 9313 map_obj.opened_info = map_obj.infowindow_marker; 9314 9315 if (map_obj.map_data.shapes.shape.polygons) { 9316 map_obj.create_polygon(); 9317 } 9318 9319 if (map_obj.map_data.shapes.shape.polylines) { 9320 map_obj.create_polyline(); 9321 } 9322 9323 if (map_obj.map_data.shapes.shape.circles) { 9324 map_obj.create_circle(); 9325 } 9326 9327 if (map_obj.map_data.shapes.shape.rectangles) { 9328 map_obj.create_rectangle(); 9329 } 9330 } 9331 9332 // Create defined routes 9333 if (map_obj.map_data.routes) { 9334 map_obj.create_routes(); 9335 } 9336 9337 // Apply default sorting if enabled (for listing or category tabs) 9338 if (map_obj.map_data.listing) { 9339 if (map_obj.map_data.listing.default_sorting && map_obj.map_data.autosort) { 9340 let data_type = ""; 9341 if (map_obj.map_data.listing.default_sorting.orderby === "listorder") { 9342 data_type = "num"; 9343 } 9344 9345 map_obj.sorting( 9346 map_obj.map_data.listing.default_sorting.orderby, 9347 map_obj.map_data.listing.default_sorting.inorder, 9348 data_type 9349 ); 9350 } 9351 } else if (map_obj.map_data.map_tabs?.category_tab?.cat_tab) { 9352 if (!map_obj.map_data.map_tabs.category_tab.cat_post_order) { 9353 map_obj.map_data.map_tabs.category_tab.cat_post_order = "asc"; 9354 } 9355 9356 if (map_obj.map_data.autosort) { 9357 map_obj.sorting("title", map_obj.map_data.map_tabs.category_tab.cat_post_order); 9358 map_obj.map_data.places_for_category_tabs = map_obj.map_data.places; 9359 map_obj.map_data.places_for_category_tabs = map_obj.sorting_inside_tabs( 9360 map_obj.map_data.places_for_category_tabs, 9361 map_obj.map_data.map_tabs.category_tab.cat_post_order 9362 ); 9363 } 9364 } 9365 9366 // ========================= 9367 // ð Part 5: Filter UI, Events & Listeners 9368 // ========================= 9369 9370 if (map_obj.map_data.listing) { 9371 9372 // Inject filters and custom filters into UI 9373 map_obj.display_filters_listing(); 9374 map_obj.custom_filters(); 9375 if ( 9376 map_obj !== "undefined" && 9377 map_obj.map_data.default_amenities != undefined && 9378 map_obj.map_data.enableAmenitiesListing != undefined && 9379 map_obj.map_data.enableAmenitiesListing 9380 ) { 9381 //WAIT WHILE LOAD AMENITIES 9382 } else { 9383 $(map_obj.container) 9384 .find(".location_pagination" + map_obj.map_data.map_property.map_id) 9385 .pagination(map_obj.show_places.length, { 9386 callback: map_obj.display_places_listing, 9387 map_data: map_obj, 9388 items_per_page: 9389 map_obj.map_data.listing.pagination.listing_per_page, 9390 prev_text: wpgmp_local.prev, 9391 next_text: wpgmp_local.next, 9392 }); 9393 } 9394 9395 9396 } 9397 9398 // ========================= 9399 // ð§© Part 6: Tab Panel System (Category, Directions, Nearby) 9400 // ========================= 9401 9402 if (typeof map_obj.map_data.map_tabs !== "undefined") { 9403 // Render widgets (category, directions, nearby, routes, etc.) 9404 map_obj.map_widgets(); 9405 9406 // Hide all tab content initially 9407 $(map_obj.container) 9408 .find(".wpgmp_toggle_main_container") 9409 .find("div[id^='wpgmp_tab_']") 9410 .hide(); 9411 9412 // If not in infowindow-only mode, pre-check all categories and markers 9413 if (!map_obj.settings.infowindow_filter_only) { 9414 $(map_obj.container).find("input[data-marker-category]").prop("checked", true); 9415 $(map_obj.container).find("input[data-marker-location]").prop("checked", true); 9416 } 9417 9418 // Show first tab content by default 9419 $(map_obj.container) 9420 .find(".wpgmp_toggle_main_container") 9421 .find("div[id^='wpgmp_tab_']") 9422 .first() 9423 .show(); 9424 } 9425 9426 // ========================= 9427 // ð Part 7: Autocomplete, Events & Final Touches 9428 // ========================= 9429 9430 // Load GeoJSON data (if any) 9431 if (typeof map_obj.map_data.geojson !== "undefined") { 9432 map_obj.load_json(map_obj.map_data.geojson); 9433 } 9434 9435 9436 9437 // Register and re-register Google Autocomplete
9438 map_obj.google_auto_suggest($(".wpgmp_auto_suggest")); 9439 9440 // Optionally show center circle and marker 9441 if (map_obj.settings.show_center_circle === true) { 9442 map_obj.show_center_circle(); 9443 } 9444 9445 if (map_obj.settings.show_center_marker === true) { 9446 map_obj.show_center_marker(); 9447 } 9448 9449 // Enable drawing manager if shape editing is enabled 9450 if (map_obj.map_data.shapes?.drawing_editable === true) { 9451 map_obj.enable_drawing(); 9452 } 9453 9454 // Fit bounds to markers if setting enabled 9455 if (map_obj.settings.fit_bounds === true) { 9456 map_obj.fit_bounds(); 9457 } 9458 9459 // Apply URL filters if configured 9460 if (map_obj.settings.url_filters === true) { 9461 map_obj.apply_url_filters(); 9462 } 9463 9464 // Register any custom plugin or map-specific JS events 9465 map_obj.register_events(); 9466 9467 // Initialize accordion behavior 9468 $(map_obj.container).find(".wpgmp-accordion").accordion({ 9469 speed: "slow", 9470 }); 9471 9472 // Hide tab container by default if configured 9473 if (map_obj.map_data.map_tabs?.hide_tabs_default === true) { 9474 $(map_obj.container).find(".wpgmp_toggle_container").trigger("click"); 9475 } 9476 9477 if(map_obj.map_data.map_options.heat_map){ 9478 map_obj.display_heat_map(); 9479 } 9480 9481 } 9482 9483 createIconElement(iconUrl, title = '', iconSize = [32, 32]) { 9484 const icon = document.createElement('img'); 9485 icon.src = iconUrl; 9486 icon.alt = title; 9487 // Only apply size if the icon is an SVG 9488 if (iconUrl.toLowerCase().includes('image/svg') || iconUrl.toLowerCase().endsWith('.svg')) { 9489 icon.style.width = `${iconSize[0]}px`; 9490 icon.style.height = `${iconSize[1]}px`; 9491 } 9492 icon.title = title; 9493 icon.style.objectFit = 'contain'; 9494 return icon; 9495 } 9496 9497 createMarker(place) { 9498 var map_obj = this; 9499 var map = map_obj.map; 9500 var iconSize = map_obj.getMarkerSize(); 9501 var image = { 9502 url: place.icon, 9503 scaledSize: new google.maps.Size(iconSize[0], iconSize[1]), 9504 }; 9505 9506 /* 9507 place.marker = new google.maps.Marker({ 9508 map: map, 9509 position: place.geometry.location, 9510 icon: image, 9511 }); 9512 */ 9513 9514 place.marker = map_obj.create_google_marker({ 9515 map: map, 9516 position: {lat:place.geometry.location.lat(),lng:place.geometry.location.lng()}, 9517 iconUrl: place.icon, 9518 }); 9519 9520 var post_info_class = "fc-infowindow-"; 9521 place.marker = place.marker; 9522 place.address = place.vicinity; 9523 place.title = place.name; 9524 place.location = {}; 9525 place.location.onclick_action = "marker"; 9526 var content = ""; 9527 9528 var temp_listing_placeholder = ""; 9529 var post_info_class = "fc-infowindow-"; 9530 if (place.source == "post") { 9531 temp_listing_placeholder = map_obj.settings.infowindow_geotags_setting; 9532 post_info_class = 9533 "wpgmp_infowindow_post fc-item-" + 9534 map_obj.settings.infowindow_post_skin.name; 9535 } else { 9536 temp_listing_placeholder = map_obj.settings.infowindow_setting; 9537 if ( 9538 map_obj.map_data.page != "edit_location" && 9539 map_obj.settings.infowindow_skin 9540 ) 9541 post_info_class = 9542 "fc-infowindow-" + map_obj.settings.infowindow_skin.name; 9543 } 9544 9545 if (typeof temp_listing_placeholder == "undefined") { 9546 temp_listing_placeholder = place.content; 9547 } 9548 9549 var marker_image = ""; 9550 var image_url = 9551 typeof place.photos !== "undefined" 9552 ? place.photos[0].getUrl({ maxWidth: 400, maxHeight: 400 }) 9553 : place.icon; 9554 marker_image = 9555 "<div class='fc-feature-img amenities_image'><img alt='" + 9556 place.vicinity + 9557 "' src='" + 9558 image_url + 9559 "' class='wpgmp_marker_image wpgmp_amenities_image' /></div>"; 9560 9561 var replaceData = { 9562 "{marker_id}": place.id, 9563 "{marker_title}": place.name, 9564 "{marker_address}": place.vicinity, 9565 "{marker_latitude}": place.geometry.location.lat(), 9566 "{marker_longitude}": place.geometry.location.lng(), 9567 "{marker_city}": "", 9568 "{marker_state}": "", 9569 "{marker_country}": "", 9570 "{marker_postal_code}": "", 9571 "{marker_zoom}": "", 9572 "{marker_icon}": place.icon, 9573 "{marker_category}": place.types[0], 9574 "{marker_message}": place.content, 9575 "{marker_image}": marker_image, 9576 }; 9577 9578 for (var prop in replaceData) { 9579 if (replaceData[prop] == undefined || replaceData[prop] == "undefined") 9580 replaceData[prop] = ""; 9581 } 9582 9583 if (temp_listing_placeholder) { 9584 temp_listing_placeholder = temp_listing_placeholder.replace( 9585 /{#if (.*?)}([\s\S]*?){\/if}/g, 9586 function (match, p1, p2) { 9587 return replaceData["{" + p1 + "}"] ? p2 : ""; 9588 } 9589 ); 9590 9591 temp_listing_placeholder = temp_listing_placeholder.replace( 9592 /{[^{}]+}/g, 9593 function (match) { 9594 if (match in replaceData) { 9595 return replaceData[match]; 9596 } else { 9597 return ""; 9598 } 9599 } 9600 ); 9601 9602 var temp_string = temp_listing_placeholder; 9603 var temp_object = $("<div/>").html(temp_string); 9604 $(temp_object) 9605 .find(".wpgmp_extra_field:contains('wpgmp_empty')") 9606 .remove(); 9607 $(temp_object).find(".wpgmp_empty").prev().remove(); 9608 $(temp_object).find(".wpgmp_empty").remove(); 9609 9610 content = $(temp_object).prop("outerHTML").toString(); 9611 } 9612 9613 if (content === "") { 9614 if ( 9615 map_obj.settings.map_infowindow_customisations === true && 9616 map_obj.settings.show_infowindow_header === true 9617 ) 9618 content = 9619 '<div class="wpgmp_infowindow ' + 9620 post_info_class + 9621 '"><div class="wpgmp_iw_head"><div class="wpgmp_iw_head_content">' + 9622 place.name + 9623 '</div></div><div class="wpgmp_iw_content">' + 9624 place.vicinity + 9625 "</div></div>"; 9626 else 9627 content = 9628 '<div class="wpgmp_infowindow ' + 9629 post_info_class + 9630 '"><div class="wpgmp_iw_content">' + 9631 place.content + 9632 "</div></div>"; 9633 } else { 9634 if ( 9635 map_obj.settings.map_infowindow_customisations === true && 9636 map_obj.settings.show_infowindow_header === true 9637 ) 9638 content = 9639 '<div class="wpgmp_infowindow ' + 9640 post_info_class + 9641 '"><div class="wpgmp_iw_head"><div class="wpgmp_iw_head_content">' + 9642 place.name + 9643 '</div></div><div class="wpgmp_iw_content">' + 9644 content + 9645 "</div></div>"; 9646 else 9647 content = 9648 '<div class="wpgmp_infowindow ' + 9649 post_info_class + 9650 '"><div class="wpgmp_iw_content">' + 9651 content + 9652 "</div></div>"; 9653 } 9654 9655 place.infowindow_data = content; 9656 place.infowindow = map_obj.infowindow_marker; 9657 var on_event = map_obj.settings.infowindow_open_event; 9658 9659 map_obj.event_listener(place.marker, on_event, function () { 9660 $.each(map_obj.places, function (key, prev_place) { 9661 prev_place.infowindow.close(); 9662 prev_place.marker.setAnimation(null); 9663 }); 9664 map_obj.openInfoWindow(place); 9665 }); 9666 9667 map_obj.places.push(place); 9668 } 9669 wpgmp_image_type_overlays() { 9670 var map_obj = this; 9671 var imageMapType = new google.maps.ImageMapType({ 9672 getTileUrl(coord, zoom) { 9673 return [
9674 "http://www.gstatic.com/io2010maps/tiles/5/L2_", 9675 zoom, 9676 "_", 9677 coord.x, 9678 "_", 9679 coord.y, 9680 ".png", 9681 ].join(""); 9682 }, 9683 tileSize: new google.maps.Size(256, 256), 9684 }); 9685 9686 map_obj.map.overlayMapTypes.push(imageMapType); 9687 } 9688 9689 get_user_position() { 9690 var map_obj = this; 9691 9692 navigator.geolocation.getCurrentPosition( 9693 function (position) { 9694 map_obj.user_lat_lng = new google.maps.LatLng( 9695 position.coords.latitude, 9696 position.coords.longitude 9697 ); 9698 }, 9699 function (ErrorPosition) {}, 9700 { 9701 enableHighAccuracy: true, 9702 timeout: 5000, 9703 maximumAge: 0, 9704 } 9705 ); 9706 } 9707 9708 wpgmp_finddata(result, type) { 9709 var component_name = ""; 9710 9711 for (var i = 0; i < result.addressComponents.length; ++i) { 9712 var component = result.addressComponents[i]; 9713 $.each(component.types, function (index, value) { 9714 if (value == type) { 9715 component_name = component.longText; 9716 } 9717 }); 9718 } 9719 9720 return component_name; 9721 } 9722 9723 clearSelection() { 9724 var map_obj = this; 9725 if (map_obj.selectedShape) { 9726 map_obj.selectedShape.setEditable(false); 9727 map_obj.selectedShape = null; 9728 } 9729 } 9730 setSelection(shape) { 9731 var map_obj = this; 9732 map_obj.clearSelection(); 9733 map_obj.selectedShape = shape; 9734 map_obj.selectedShape.setEditable(true); 9735 } 9736 deleteSelectedShape() { 9737 var map_obj = this; 9738 var key; 9739 if (map_obj.selectedShape) { 9740 for (key in map_obj.wpgmp_circles) { 9741 if (map_obj.wpgmp_circles[key] == map_obj.selectedShape) { 9742 map_obj.wpgmp_circles.splice(key, 1); 9743 } 9744 } 9745 for (key in map_obj.wpgmp_rectangles) { 9746 if (map_obj.wpgmp_rectangles[key] == map_obj.selectedShape) { 9747 map_obj.wpgmp_rectangles.splice(key, 1); 9748 } 9749 } 9750 for (key in map_obj.wpgmp_polygons) { 9751 if (map_obj.wpgmp_polygons[key] == map_obj.selectedShape) { 9752 map_obj.wpgmp_polygons.splice(key, 1); 9753 } 9754 } 9755 for (key in map_obj.wpgmp_polylines) { 9756 if (map_obj.wpgmp_polylines[key] == map_obj.selectedShape) { 9757 map_obj.wpgmp_polylines.splice(key, 1); 9758 } 9759 } 9760 map_obj.selectedShape.setMap(null); 9761 } 9762 } 9763 widget_nearby() { 9764 var content = '<div class="wpgmp_nearby_container">'; 9765 content += 9766 '<p><input placeholder="' + 9767 wpgmp_local.start_point + 9768 '" type="text" name="start_point" class="input start_point wpgmp_auto_suggest" autocomplete="off" /><span class="wpgmp_mcurrent_loction" title="' + 9769 wpgmp_local.take_current_location + 9770 '"> </span></p>'; 9771 content += 9772 '<p><input name="wpgmp_radius" placeholder="' + 9773 wpgmp_local.radius + 9774 '" type="text" class="input" value="25" size="8"> <select name="wpgmp_route_dimension"><option value="miles">' + 9775 wpgmp_local.miles + 9776 '</option><option value="km">' + 9777 wpgmp_local.km + 9778 "</option></select></p>"; 9779 if ( 9780 typeof this.map_data.map_tabs.nearby_tab.nearby_amenities != "undefined" 9781 ) { 9782 var all_amenities = this.map_data.map_tabs.nearby_tab.nearby_amenities; 9783 9784 if (all_amenities) { 9785 content += '<div class="choose_amenities">'; 9786 $.each(all_amenities, function (index, amenity) { 9787 content += 9788 "<span class='amenity_type'><input type='checkbox' value='" + 9789 amenity + 9790 "' name='wpgmp_place_types[]' /><label>" + 9791 amenity + 9792 "</label></span>"; 9793 }); 9794 content += "</div>"; 9795 } 9796 } 9797 content += 9798 '<p style="clear:both;"><input type="submit" value="' + 9799 wpgmp_local.find_location + 9800 '" class="wpgmp_find_nearby_button" /></p><div class="location_panel"></div></div>'; 9801 9802 this.add_tab(this.map_data.map_tabs.nearby_tab.nearby_tab_title, content); 9803 } 9804 9805 create_google_marker({ 9806 map, 9807 position, 9808 iconUrl = null, 9809 title = '', 9810 label = '', 9811 draggable = false, 9812 clickable = true, 9813 anchorPoint = null 9814 }) { 9815 const map_obj = this; 9816 9817 const lat = parseFloat(position.lat || position.lat()); 9818 const lng = parseFloat(position.lng || position.lng()); 9819 const markerLatLng = new google.maps.LatLng(lat, lng); 9820 9821 const iconSize = map_obj.getMarkerSize?.() || [32, 32]; 9822 9823 // Default icon fallback 9824 if (!iconUrl || iconUrl.trim() === '') { 9825 iconUrl = map_obj.settings.marker_default_icon || wpgmp_local.default_marker_icon; 9826 } 9827 9828 const isSvg = iconUrl.toLowerCase().includes('image/svg') || iconUrl.toLowerCase().endsWith('.svg'); 9829 9830 if (map_obj.useAdvancedMarker && google.maps.marker?.AdvancedMarkerElement ) { 9831 // AdvancedMarkerElement version 9832 const iconElement = isSvg ? map_obj.createIconElement(iconUrl, title, iconSize) : map_obj.createIconElement(iconUrl, title); 9833 9834 return new google.maps.marker.AdvancedMarkerElement({ 9835 map: map, 9836 position: markerLatLng, 9837 title: title, 9838 content: iconElement, 9839 }); 9840 9841 } else { 9842 // Fallback to classic google.maps.Marker 9843 const markerOptions = { 9844 position: markerLatLng, 9845 map, 9846 draggable, 9847 clickable, 9848 }; 9849 9850 if(label != ''){ 9851 markerOptions.label = label; 9852 } 9853 9854 if(title != ''){ 9855 markerOptions.title = title; 9856 } 9857 9858 if (iconUrl) { 9859 markerOptions.icon = { 9860 url: iconUrl, 9861 }; 9862 if (isSvg) { 9863 markerOptions.icon.scaledSize = new google.maps.Size(parseInt(iconSize[0]), parseInt(iconSize[1])); 9864 } 9865 } 9866 9867 if (anchorPoint) { 9868 markerOptions.anchorPoint = new google.maps.Point(anchorPoint.x, anchorPoint.y); 9869 } 9870 9871 return new google.maps.Marker(markerOptions); 9872 } 9873 } 9874 create_google_marker1({ 9875 map, 9876 position, 9877 iconUrl = null, 9878 title = '', 9879 label = '', 9880 draggable = false, 9881 clickable = true, 9882 anchorPoint = null, 9883 }) { 9884 9885 var map_obj = this; 9886 const markerOptions = { 9887 position: new google.maps.LatLng( 9888 parseFloat(position.lat || position.lat()), 9889 parseFloat(position.lng || position.lng()) 9890 ), 9891 map, 9892 title, 9893 label, 9894 draggable 9895 }; 9896 9897 var iconSize = map_obj.getMarkerSize(); 9898 9899 if (!iconUrl || iconUrl.trim() === '') { 9900 iconUrl = map_obj.settings.marker_default_icon || wpgmp_local.default_marker_icon; 9901 } 9902 9903 if (iconUrl) { 9904 if (typeof icon === 'string') { 9905 markerOptions.icon = iconUrl; 9906 } else { 9907 markerOptions.icon = { 9908 url: iconUrl, 9909 scaledSize: new google.maps.Size(iconSize[0], iconSize[1]), 9910 }; 9911 } 9912 } 9913 9914 if (anchorPoint) { 9915 markerOptions.anchorPoint = new google.maps.Point(anchorPoint.x, anchorPoint.y); 9916 } 9917 9918 return new google.maps.marker.AdvancedMarkerElement(markerOptions); 9919 } 9920 9921 display_heat_map(){ 9922 var map_obj = this; 9923 9924 if (!map_obj || !map_obj.places) { 9925 return; 9926 } 9927 9928 map_obj.heatmapData = []; 9929
9930 map_obj.places.forEach(function(place) { 9931 9932 if ( 9933 place.location && 9934 place.location.lat && 9935 place.location.lng 9936 ) { 9937 map_obj.heatmapData.push( 9938 new google.maps.LatLng( 9939 parseFloat(place.location.lat), 9940 parseFloat(place.location.lng) 9941 ) 9942 ); 9943 } 9944 9945 }); 9946 var heat_map_radius = parseInt(map_obj.map_data.map_options.heat_map_radius, 10) || 20; 9947 var heat_map_opacity = parseFloat(map_obj.map_data.map_options.heat_map_opacity); 9948 9949 heat_map_opacity = isNaN(heat_map_opacity) ? 0.6 : heat_map_opacity; 9950 9951 map_obj.heatmap = new google.maps.visualization.HeatmapLayer({ 9952 data: map_obj.heatmapData, 9953 map: map_obj.map, 9954 radius: heat_map_radius, 9955 opacity: heat_map_opacity 9956 }); 9957 } 9958 9959 9960 enable_drawing() { 9961 var map_obj = this; 9962 map_obj.drawingmanager = new google.maps.drawing.DrawingManager({ 9963 drawingMode: null, 9964 drawingControl: true, 9965 drawingControlOptions: { 9966 position: google.maps.ControlPosition.TOP_CENTER, 9967 drawingModes: [ 9968 google.maps.drawing.OverlayType.CIRCLE, 9969 google.maps.drawing.OverlayType.POLYGON, 9970 google.maps.drawing.OverlayType.POLYLINE, 9971 google.maps.drawing.OverlayType.RECTANGLE, 9972 ], 9973 }, 9974 9975 circleOptions: { 9976 fillColor: "#003dce", 9977 strokeColor: "#003dce", 9978 strokeWeight: "1", 9979 strokeOpacity: "0.5", 9980 zindex: 1, 9981 fillOpacity: "0.5", 9982 editable: false, 9983 draggable: false, 9984 }, 9985 polygonOptions: { 9986 fillColor: "#003dce", 9987 strokeColor: "#003dce", 9988 strokeWeight: "1", 9989 strokeOpacity: "0.5", 9990 zindex: 1, 9991 fillOpacity: "0.5", 9992 editable: false, 9993 draggable: false, 9994 }, 9995 polylineOptions: { 9996 fillColor: "#003dce", 9997 strokeColor: "#003dce", 9998 strokeWeight: "1", 9999 strokeOpacity: "0.5", 10000 zindex: 1, 10001 fillOpacity: "0.5", 10002 editable: false, 10003 draggable: false, 10004 }, 10005 rectangleOptions: { 10006 fillColor: "#003dce", 10007 strokeColor: "#003dce", 10008 strokeWeight: "1", 10009 strokeOpacity: "0.5", 10010 zindex: 1, 10011 fillOpacity: "0.5", 10012 editable: false, 10013 draggable: false, 10014 }, 10015 }); 10016 map_obj.drawingmanager.setMap(map_obj.map); 10017 map_obj.event_listener( 10018 map_obj.drawingmanager, 10019 "circlecomplete", 10020 function (circle) { 10021 map_obj.wpgmp_circles.push(circle); 10022 map_obj.wpgmp_shape_complete(circle, "circle"); 10023 } 10024 ); 10025 map_obj.event_listener( 10026 map_obj.drawingmanager, 10027 "polygoncomplete", 10028 function (polygon) { 10029 map_obj.wpgmp_polygons.push(polygon); 10030 map_obj.wpgmp_shape_complete(polygon, "polygon"); 10031 } 10032 ); 10033 map_obj.event_listener( 10034 map_obj.drawingmanager, 10035 "polylinecomplete", 10036 function (polyline) { 10037 map_obj.wpgmp_polylines.push(polyline); 10038 map_obj.wpgmp_shape_complete(polyline, "polyline"); 10039 } 10040 ); 10041 map_obj.event_listener( 10042 map_obj.drawingmanager, 10043 "rectanglecomplete", 10044 function (rectangle) { 10045 map_obj.wpgmp_rectangles.push(rectangle); 10046 map_obj.wpgmp_shape_complete(rectangle, "rectangle"); 10047 } 10048 ); 10049 } 10050 10051 create_polygon() { 10052 var map_obj = this; 10053 10054 $.each(this.map_data.shapes.shape.polygons, function (index, polygon) { 10055 var path = []; 10056 $.each(polygon.cordinates, function (ind, cordinate) { 10057 var latlng = cordinate.split(","); 10058 path.push(new google.maps.LatLng(latlng[0], latlng[1])); 10059 }); 10060 10061 polygon.reference = new google.maps.Polygon({ 10062 paths: path, 10063 strokeColor: polygon.settings.stroke_color, 10064 strokeOpacity: polygon.settings.stroke_opacity, 10065 strokeWeight: polygon.settings.stroke_weight, 10066 fillColor: polygon.settings.fill_color, 10067 fillOpacity: polygon.settings.fill_opacity, 10068 }); 10069 if (typeof map_obj.map_data.shapes != "undefined") { 10070 if (map_obj.map_data.shapes.drawing_editable === true) { 10071 map_obj.event_listener(polygon.reference, "click", function () { 10072 map_obj.setSelection(polygon.reference); 10073 map_obj.get_shapes_options(polygon.reference, "polygon"); 10074 }); 10075 } else if ( 10076 polygon.events !== undefined && 10077 (polygon.events.url !== "" || polygon.events.message !== "") 10078 ) { 10079 map_obj.event_listener(polygon.reference, "click", function () { 10080 if ( 10081 (polygon.events.url === "" || 10082 polygon.events.url === undefined) && 10083 polygon.events.message !== "" 10084 ) { 10085 var bounds = new google.maps.LatLngBounds();
10086 polygon.reference.getPath().forEach(function (element, index) { 10087 bounds.extend(element); 10088 }); 10089 $.each(map_obj.places, function (key, place) { 10090 place.infowindow.close(); 10091 }); 10092 map_obj.opened_info.setPosition(bounds.getCenter()); 10093 if (map_obj.settings.map_infowindow_customisations === true) 10094 map_obj.opened_info.setContent( 10095 '<div class="wpgmp_infowindow"><div class="wpgmp_iw_content">' + 10096 polygon.events.message + 10097 "</div></div>" 10098 ); 10099 else map_obj.opened_info.setContent(polygon.events.message); 10100 map_obj.opened_info.open(map_obj.map, this); 10101 } else { 10102 if ( 10103 polygon.events.url !== "undefined" && 10104 polygon.events.url !== undefined 10105 ) 10106 window.location = polygon.events.url; 10107 } 10108 }); 10109 } 10110 } 10111 polygon.reference.setMap(map_obj.map); 10112 10113 map_obj.wpgmp_polygons.push(polygon.reference); 10114 10115 if (polygon.events == undefined) { 10116 polygon.events = {}; 10117 polygon.events.url = ""; 10118 polygon.events.message = ""; 10119 } 10120 10121 map_obj.wpgmp_shape_events.push({ 10122 shape: polygon.reference, 10123 url: polygon.events.url, 10124 message: polygon.events.message, 10125 }); 10126 }); 10127 } 10128 10129 create_polyline() { 10130 var map_obj = this; 10131 10132 $.each(this.map_data.shapes.shape.polylines, function (index, polyline) { 10133 var path = []; 10134
10135 if (typeof polyline.cordinates != "undefined") { 10136 $.each(polyline.cordinates, function (ind, cordinate) { 10137 var latlng = cordinate.split(","); 10138 path.push(new google.maps.LatLng(latlng[0], latlng[1])); 10139 }); 10140 10141 polyline.reference = new google.maps.Polyline({ 10142 path: path, 10143 strokeColor: polyline.settings.stroke_color, 10144 strokeOpacity: polyline.settings.stroke_opacity, 10145 strokeWeight: polyline.settings.stroke_weight, 10146 }); 10147 10148 if (typeof map_obj.map_data.shapes != "undefined") { 10149 if (map_obj.map_data.shapes.drawing_editable === true) { 10150 map_obj.event_listener(polyline.reference, "click", function () { 10151 map_obj.setSelection(polyline.reference); 10152 map_obj.get_shapes_options(polyline.reference, "polyline"); 10153 }); 10154 } else if ( 10155 polyline.events !== undefined && 10156 (polyline.events.url !== "" || polyline.events.message !== "") 10157 ) { 10158 map_obj.event_listener(polyline.reference, "click", function () { 10159 if ( 10160 (polyline.events.url === "" || 10161 polyline.events.url === undefined) && 10162 polyline.events.message !== "" 10163 ) { 10164 var bounds = new google.maps.LatLngBounds(); 10165 polyline.reference 10166 .getPath() 10167 .forEach(function (element, index) { 10168 bounds.extend(element); 10169 }); 10170 $.each(map_obj.places, function (key, place) { 10171 place.infowindow.close(); 10172 }); 10173 map_obj.opened_info.setPosition(bounds.getCenter()); 10174 if (map_obj.settings.map_infowindow_customisations === true) 10175 map_obj.opened_info.setContent( 10176 '<div class="wpgmp_infowindow"><div class="wpgmp_iw_content">' + 10177 polyline.events.message + 10178 "</div></div>" 10179 ); 10180 else map_obj.opened_info.setContent(polyline.events.message); 10181 map_obj.opened_info.open(map_obj.map, this); 10182 } else if (polyline.events.url !== "") { 10183 if ( 10184 polyline.events.url !== "undefined" && 10185 polyline.events.url !== undefined 10186 ) 10187 window.location = polyline.events.url; 10188 } 10189 }); 10190 } 10191 } 10192 }
10193 if (typeof polyline.reference != "undefined") { 10194 polyline.reference.setMap(map_obj.map); 10195 map_obj.wpgmp_polylines.push(polyline.reference); 10196 10197 if (polyline.events == undefined) { 10198 polyline.events = {}; 10199 polyline.events.url = ""; 10200 polyline.events.message = ""; 10201 } 10202 10203 map_obj.wpgmp_shape_events.push({ 10204 shape: polyline.reference, 10205 url: polyline.events.url, 10206 message: polyline.events.message, 10207 }); 10208 } 10209 }); 10210 } 10211 event_listener(obj, type, func) { 10212 google.maps.event.addListener(obj, type, func); 10213 } 10214 create_circle() { 10215 var map_obj = this; 10216 $.each(this.map_data.shapes.shape.circles, function (index, circle) { 10217 var path; 10218 $.each(circle.cordinates, function (ind, cordinate) { 10219 var latlng = cordinate.split(","); 10220 path = new google.maps.LatLng(latlng[0], latlng[1]); 10221 }); 10222 10223 circle.reference = new google.maps.Circle({ 10224 fillColor: circle.settings.fill_color, 10225 fillOpacity: circle.settings.fill_opacity, 10226 strokeColor: circle.settings.stroke_color, 10227 strokeOpacity: circle.settings.stroke_opacity, 10228 strokeWeight: circle.settings.stroke_weight, 10229 center: path, 10230 radius: parseFloat(circle.settings.radius), 10231 }); 10232 10233 if (typeof map_obj.map_data.shapes != "undefined") { 10234 if (map_obj.map_data.shapes.drawing_editable === true) { 10235 map_obj.event_listener(circle.reference, "click", function () { 10236 map_obj.setSelection(circle.reference); 10237 map_obj.get_shapes_options(circle.reference, "circle"); 10238 }); 10239 } else if ( 10240 circle.events !== undefined && 10241 (circle.events.url !== "" || circle.events.message !== "") 10242 ) { 10243 map_obj.event_listener(circle.reference, "click", function () { 10244 if ( 10245 (circle.events.url === "" || circle.events.url === undefined) && 10246 circle.events.message !== "" 10247 ) { 10248 $.each(map_obj.places, function (key, place) { 10249 place.infowindow.close(); 10250 }); 10251 map_obj.opened_info.setPosition(circle.reference.getCenter()); 10252 if (map_obj.settings.map_infowindow_customisations === true) 10253 map_obj.opened_info.setContent( 10254 '<div class="wpgmp_infowindow"><div class="wpgmp_iw_content">' + 10255 circle.events.message + 10256 "</div></div>" 10257 ); 10258 else map_obj.opened_info.setContent(circle.events.message); 10259 map_obj.opened_info.open(map_obj.map, this); 10260 } else if (circle.events.url !== "") { 10261 if ( 10262 circle.events.url !== "undefined" && 10263 circle.events.url !== undefined 10264 ) 10265 window.location = circle.events.url; 10266 } 10267 }); 10268 } 10269 } 10270 10271 circle.reference.setMap(map_obj.map); 10272 map_obj.wpgmp_circles.push(circle.reference); 10273 10274 if (circle.events == undefined) { 10275 circle.events = {}; 10276 circle.events.url = ""; 10277 circle.events.message = ""; 10278 } 10279 10280 map_obj.wpgmp_shape_events.push({ 10281 shape: circle.reference, 10282 url: circle.events.url, 10283 message: circle.events.message, 10284 }); 10285 }); 10286 } 10287 10288 create_rectangle() { 10289 var map_obj = this; 10290 $.each( 10291 this.map_data.shapes.shape.rectangles, 10292 function (index, rectangle) { 10293 var left_latlng = rectangle.cordinates[0].split(","); 10294 var right_latlng = rectangle.cordinates[1].split(","); 10295 10296 var path = new google.maps.LatLngBounds( 10297 new google.maps.LatLng(left_latlng[0], left_latlng[1]), 10298 new google.maps.LatLng(right_latlng[0], right_latlng[1]) 10299 ); 10300 10301 rectangle.reference = new google.maps.Rectangle({ 10302 bounds: path, 10303 fillColor: rectangle.settings.fill_color, 10304 fillOpacity: rectangle.settings.fill_opacity, 10305 strokeColor: rectangle.settings.stroke_color, 10306 strokeOpacity: rectangle.settings.stroke_opacity, 10307 strokeWeight: rectangle.settings.stroke_weight, 10308 }); 10309 10310 if (typeof map_obj.map_data.shapes != "undefined") { 10311 if (map_obj.map_data.shapes.drawing_editable === true) { 10312 map_obj.event_listener(rectangle.reference, "click", function () { 10313 map_obj.setSelection(rectangle.reference); 10314 map_obj.get_shapes_options(rectangle.reference, "rectangle"); 10315 }); 10316 } else if ( 10317 rectangle.events !== undefined && 10318 (rectangle.events.url !== "" || rectangle.events.message !== "") 10319 ) { 10320 map_obj.event_listener(rectangle.reference, "click", function () { 10321 if ( 10322 (rectangle.events.url === "" || 10323 rectangle.events.url === undefined) && 10324 rectangle.events.message !== "" 10325 ) { 10326 $.each(map_obj.places, function (key, place) { 10327 place.infowindow.close(); 10328 }); 10329 map_obj.opened_info.setPosition( 10330 rectangle.reference.getBounds().getCenter() 10331 ); 10332 if (map_obj.settings.map_infowindow_customisations === true) 10333 map_obj.opened_info.setContent( 10334 '<div class="wpgmp_infowindow"><div class="wpgmp_iw_content">' + 10335 rectangle.events.message + 10336 "</div></div>" 10337 ); 10338 else map_obj.opened_info.setContent(rectangle.events.message); 10339 map_obj.opened_info.open(map_obj.map, this); 10340 } else if (rectangle.events.url !== "") { 10341 if ( 10342 rectangle.events.url !== "undefined" && 10343 rectangle.events.url !== undefined 10344 ) 10345 window.location = rectangle.events.url; 10346 } 10347 }); 10348 } 10349 } 10350
10351 rectangle.reference.setMap(map_obj.map); 10352 map_obj.wpgmp_rectangles.push(rectangle.reference); 10353 10354 if (rectangle.events == undefined) { 10355 rectangle.events = {}; 10356 rectangle.events.url = ""; 10357 rectangle.events.message = ""; 10358 } 10359 10360 map_obj.wpgmp_shape_events.push({ 10361 shape: rectangle.reference, 10362 url: rectangle.events.url, 10363 message: rectangle.events.message, 10364 }); 10365 } 10366 ); 10367 } 10368 10369 get_shapes_options(shape, type) { 10370 $(".hiderow").addClass("temp_row").removeClass("hiderow"); 10371 10372 // Set value to the input 10373 $("input[name='shape_fill_color']").val(shape.fillColor); 10374 10375 // Set background color of the visible preview button (.wp-color-result) 10376 $("input[name='shape_fill_color']") 10377 .closest(".wp-picker-container") 10378 .find(".wp-color-result") 10379 .css("background-color", shape.fillColor); 10380 10381 $("input[name='shape_stroke_color']").val(shape.strokeColor); 10382 10383 // Set background color of the visible preview button (.wp-color-result) 10384 $("input[name='shape_stroke_color']") 10385 .closest(".wp-picker-container") 10386 .find(".wp-color-result") 10387 .css("background-color", shape.strokeColor); 10388 10389 $("select[name='shape_fill_opacity']").val(shape.fillOpacity); 10390 $("select[name='shape_stroke_opacity']").val(shape.strokeOpacity); 10391 $("select[name='shape_stroke_weight']").val(shape.strokeWeight); 10392 $("textarea[name='shape_path']").parent().hide(); 10393 $("input[name='shape_radius']").parent().hide(); 10394 $("input[name='shape_center']").parent().hide(); 10395 $("input[name='shape_northeast']").parent().hide(); 10396 $("input[name='shape_southwest']").parent().hide(); 10397 10398 var all_shape_events = this.wpgmp_shape_events; 10399 $.each(all_shape_events, function (i, shape_event) { 10400 if (shape_event.shape == shape) { 10401 $("input[name='shape_click_url']").val(shape_event.url); 10402 $("textarea[name='shape_click_message']").val(shape_event.message); 10403 } 10404 }); 10405 if (type == "circle") { 10406 $("input[name='shape_radius']").parent().show(); 10407 $("input[name='shape_radius']").val(shape.getRadius()); 10408 $("input[name='shape_center']").parent().show(); 10409 $("input[name='shape_center']").val( 10410 shape.getCenter().lat() + "," + shape.getCenter().lng() 10411 ); 10412 } else if (type == "rectangle") { 10413 $("input[name='shape_northeast']").parent().show(); 10414 $("input[name='shape_northeast']").val( 10415 shape.getBounds().getNorthEast().lat() + 10416 "," + 10417 shape.getBounds().getNorthEast().lng() 10418 ); 10419 $("input[name='shape_southwest']").parent().show(); 10420 $("input[name='shape_southwest']").val(
10421 shape.getBounds().getSouthWest().lat() + 10422 "," + 10423 shape.getBounds().getSouthWest().lng() 10424 ); 10425 } else { 10426 var polygon_cordinate = []; 10427 10428 var cordinates = shape.getPath(); 10429 10430 cordinates.forEach(function (latlng, index) { 10431 var latlngin = [latlng.lat(), latlng.lng()]; 10432 10433 if (latlng.lat() !== "" && latlng.lng() !== "") 10434 polygon_cordinate.push(latlngin); 10435 }); 10436 $("textarea[name='shape_path']").parent().show(); 10437 $("textarea[name='shape_path']").val(polygon_cordinate.join(" ")); 10438 } 10439 } 10440 10441 set_shapes_options(shape) { 10442 var polyOptions2 = { 10443 fillColor: $("input[name='shape_fill_color']").val(), 10444 fillOpacity: $("select[name='shape_fill_opacity']").val(), 10445 strokeColor: $("input[name='shape_stroke_color']").val(), 10446 strokeOpacity: $("select[name='shape_stroke_opacity']").val(), 10447 strokeWeight: $("select[name='shape_stroke_weight']").val(), 10448 }; 10449 shape.setOptions(polyOptions2); 10450 var all_shape_events = this.wpgmp_shape_events; 10451 $.each(all_shape_events, function (i, shape_event) { 10452 if (shape_event.shape == shape) { 10453 shape_event.url = $("input[name='shape_click_url']").val(); 10454 shape_event.message = $("textarea[name='shape_click_message']").val(); 10455 } 10456 }); 10457 } 10458 10459 wpgmp_save_shapes(allcordinate) { 10460 $("input[name='shapes_values']").val(allcordinate.join("|")); 10461 } 10462 10463 wpgmp_shape_complete(shape, type) { 10464 var map_obj = this; 10465 map_obj.setSelection(shape); 10466 map_obj.drawingmanager.setDrawingMode(null); 10467 if (typeof map_obj.map_data.shapes != "undefined") { 10468 if (map_obj.map_data.shapes.drawing_editable === true) { 10469 map_obj.event_listener(shape, "click", function () { 10470 map_obj.setSelection(shape); 10471 map_obj.get_shapes_options(shape, type); 10472 }); 10473 10474 map_obj.wpgmp_shape_events.push({ 10475 shape: shape, 10476 url: "", 10477 message: "", 10478 }); 10479 } 10480 } 10481 } 10482 10483 wpgmp_save_polylines() { 10484 var all_polylines = []; 10485 var map_obj = this; 10486 var wpgmp_polylines = map_obj.wpgmp_polylines; 10487 var all_shape_events = map_obj.wpgmp_shape_events; 10488 10489 for (var i = 0; i < wpgmp_polylines.length; i++) { 10490 var polyline_cordinate = []; 10491 10492 var cordinates = wpgmp_polylines[i].getPath(); 10493 10494 var settings = 10495 wpgmp_polylines[i].strokeWeight + 10496 "," + 10497 wpgmp_polylines[i].strokeOpacity + 10498 "," + 10499 wpgmp_polylines[i].strokeColor; 10500 var events = ""; 10501 $.each(all_shape_events, function (j, shape_event) { 10502 if (shape_event.shape == wpgmp_polylines[i]) { 10503 events = shape_event.url + "***" + shape_event.message; 10504 } 10505 }); 10506 10507 cordinates.forEach(function (latlng, index) { 10508 var latlngin = [latlng.lat(), latlng.lng()]; 10509 polyline_cordinate.push(latlngin); 10510 }); 10511 10512 all_polylines.push( 10513 polyline_cordinate.join("----") + "..." + settings + "..." + events 10514 ); 10515 } 10516 return all_polylines; 10517 } 10518 10519 wpgmp_save_polygons() { 10520 var all_polygons = []; 10521 var map_obj = this; 10522 var wpgmp_polygons = map_obj.wpgmp_polygons; 10523 var all_shape_events = map_obj.wpgmp_shape_events; 10524 10525 for (var i = 0; i < wpgmp_polygons.length; i++) { 10526 var polygon_cordinate = []; 10527 10528 var cordinates = wpgmp_polygons[i].getPath(); 10529 10530 var settings = 10531 wpgmp_polygons[i].strokeWeight + 10532 "," + 10533 wpgmp_polygons[i].strokeOpacity + 10534 "," + 10535 wpgmp_polygons[i].strokeColor + 10536 "," + 10537 wpgmp_polygons[i].fillColor + 10538 "," + 10539 wpgmp_polygons[i].fillOpacity; 10540 10541 var events = ""; 10542 $.each(all_shape_events, function (j, shape_event) { 10543 if (shape_event.shape == wpgmp_polygons[i]) { 10544 events = shape_event.url + "***" + shape_event.message; 10545 } 10546 }); 10547 10548 cordinates.forEach(function (latlng, index) { 10549 var latlngin = [latlng.lat(), latlng.lng()]; 10550 10551 if (latlng.lat() !== "" && latlng.lng() !== "") 10552 polygon_cordinate.push(latlngin); 10553 }); 10554 10555 all_polygons.push( 10556 polygon_cordinate.join("----") + "..." + settings + "..." + events 10557 ); 10558 } 10559 10560 return all_polygons; 10561 } 10562
10563 wpgmp_save_circles() { 10564 var all_circles = []; 10565 var map_obj = this; 10566 var wpgmp_circles = map_obj.wpgmp_circles; 10567 var all_shape_events = map_obj.wpgmp_shape_events; 10568 10569 for (var i = 0; i < wpgmp_circles.length; i++) { 10570 var circle_cordinate = []; 10571 10572 var latlng = wpgmp_circles[i].getCenter(); 10573 10574 var settings = 10575 wpgmp_circles[i].strokeWeight + 10576 "," + 10577 wpgmp_circles[i].strokeOpacity + 10578 "," + 10579 wpgmp_circles[i].strokeColor + 10580 "," + 10581 wpgmp_circles[i].fillColor + 10582 "," + 10583 wpgmp_circles[i].fillOpacity + 10584 "," + 10585 wpgmp_circles[i].getRadius(); 10586 10587 var events = ""; 10588 $.each(all_shape_events, function (j, shape_event) { 10589 if (shape_event.shape == wpgmp_circles[i]) { 10590 events = shape_event.url + "***" + shape_event.message; 10591 } 10592 }); 10593 10594 var latlngin = [latlng.lat(), latlng.lng()]; 10595 10596 if (latlng.lat() !== "" && latlng.lng() !== "") 10597 circle_cordinate.push(latlngin); 10598 10599 all_circles.push( 10600 circle_cordinate.join("----") + "..." + settings + "..." + events 10601 ); 10602 } 10603 10604 return all_circles; 10605 } 10606 10607 wpgmp_save_rectangles() { 10608 var all_rectangles = []; 10609 var map_obj = this; 10610 var wpgmp_rectangles = map_obj.wpgmp_rectangles; 10611 var all_shape_events = map_obj.wpgmp_shape_events; 10612 for (var i = 0; i < wpgmp_rectangles.length; i++) { 10613 var rectangle_cordinate = []; 10614 10615 var settings = 10616 wpgmp_rectangles[i].strokeWeight + 10617 "," + 10618 wpgmp_rectangles[i].strokeOpacity + 10619 "," + 10620 wpgmp_rectangles[i].strokeColor + 10621 "," + 10622 wpgmp_rectangles[i].fillColor + 10623 "," + 10624 wpgmp_rectangles[i].fillOpacity; 10625 10626 var events = ""; 10627 $.each(all_shape_events, function (j, shape_event) { 10628 if (shape_event.shape == wpgmp_rectangles[i]) { 10629 events = shape_event.url + "***" + shape_event.message; 10630 } 10631 }); 10632 10633 var latlng = wpgmp_rectangles[i].getBounds().getSouthWest
10633(); 10634 10635 var latlngin = [latlng.lat(), latlng.lng()]; 10636 10637 if (latlng.lat() !== "" && latlng.lng() !== "") 10638 rectangle_cordinate.push(latlngin); 10639 10640 latlng = wpgmp_rectangles[i].getBounds().getNorthEast(); 10641 10642 var latlngin = [latlng.lat(), latlng.lng()]; 10643 10644 if (latlng.lat() !== "" && latlng.lng() !== "") 10645 rectangle_cordinate.push(latlngin); 10646 10647 all_rectangles.push( 10648 rectangle_cordinate.join("----") + "..." + settings + "..." + events 10649 ); 10650 } 10651 10652 return all_rectangles; 10653 } 10654 10655 set_kml_layer() { 10656 var map_obj = this.map; 10657 10658 $.each(this.map_data.kml_layer.kml_layers_links, function (index, link) { 10659 var kmlLayerOptions = { 10660 url: link, 10661 map: map_obj, 10662 preserveViewport: true, 10663 }; 10664 10665 new google.maps.KmlLayer(kmlLayerOptions); 10666 }); 10667 } 10668 10669 set_marker_cluster() { 10670 var map_obj = this; 10671 var markers = []; 10672 var clusterStyles = [ 10673 { 10674 textColor: "black", 10675 url: map_obj.map_data.marker_cluster.icon, 10676 height: 32, 10677 width: 33, 10678 }, 10679 ]; 10680 $.each(this.places, function (index, place) { 10681 if (place.marker.getVisible() == true) { 10682 markers.push(place.marker); 10683 } 10684 }); 10685 10686 if (map_obj.map_data.marker_cluster.apply_style === true) { 10687 if (!map_obj.markerClusterer) { 10688 map_obj.markerClusterer = new MarkerClusterer( 10689 map_obj.map, 10690 {}, 10691 { 10692 gridSize: parseInt(map_obj.map_data.marker_cluster.grid), 10693 maxZoom: parseInt(map_obj.map_data.marker_cluster.max_zoom), 10694 styles: clusterStyles, 10695 } 10696 ); 10697 } 10698 10699 map_obj.markerClusterer.clearMarkers(); 10700 map_obj.markerClusterer.addMarkers(markers); 10701 10702 google.maps.event.addListener( 10703 map_obj.markerClusterer, 10704 "mouseover", 10705 function (c) { 10706 c.clusterIcon_.div_.firstChild.src = 10707 map_obj.map_data.marker_cluster.hover_icon; 10708 } 10709 ); 10710 10711 google.maps.event.addListener( 10712 map_obj.markerClusterer, 10713 "mouseout", 10714 function (c) { 10715 c.clusterIcon_.div_.firstChild.src = 10716 map_obj.map_data.marker_cluster.icon; 10717 } 10718 ); 10719 } else { 10720 if (!map_obj.markerClusterer) { 10721 map_obj.markerClusterer = new MarkerClusterer( 10722 map_obj.map, 10723 {}, 10724 { 10725 gridSize: parseInt(map_obj.map_data.marker_cluster.grid), 10726 maxZoom: parseInt(map_obj.map_data.marker_cluster.max_zoom), 10727 imagePath: map_obj.map_data.marker_cluster.image_path, 10728 } 10729 ); 10730 } 10731 10732 map_obj.markerClusterer.clearMarkers(); 10733 map_obj.markerClusterer.addMarkers(markers); 10734 } 10735 } 10736 10737 set_panning_control() { 10738 var panning_data = this.map_data.panning_control; 10739 var panning_map_obj = this.map; 10740 var map_obj = this; 10741 10742 var strictBounds = new google.maps.LatLngBounds( 10743 new google.maps.LatLng( 10744 panning_data.from_latitude, 10745 panning_data.from_longitude 10746 ), 10747 new google.maps.LatLng( 10748 panning_data.to_latitude, 10749 panning_data.to_longitude 10750 ) 10751 ); 10752 10753 google.maps.event.addListener(panning_map_obj, "dragend", function () { 10754 if (strictBounds.contains(panning_map_obj.getCenter())) return; 10755 10756 var c = panning_map_obj.getCenter(), 10757 x = c.lng(), 10758 y = c.lat(), 10759 maxX = strictBounds.getNorthEast().lng(), 10760 maxY = strictBounds.getNorthEast().lat(),
10761 minX = strictBounds.getSouthWest().lng(), 10762 minY = strictBounds.getSouthWest().lat(); 10763 10764 if (x < minX) x = minX; 10765 if (x > maxX) x = maxX; 10766 if (y < minY) y = minY; 10767 if (y > maxY) y = maxY; 10768 10769 panning_map_obj.setCenter(new google.maps.LatLng(y, x)); 10770 }); 10771 10772 google.maps.event.addListener( 10773 panning_map_obj, 10774 "zoom_changed", 10775 function () { 10776 if (panning_map_obj.getZoom() < panning_data.zoom_level) { 10777 panning_map_obj.setZoom(parseInt(map_obj.settings.zoom)); 10778 } 10779 } 10780 ); 10781 } 10782 10783 set_visual_refresh() { 10784 google.maps.visualRefresh = true; 10785 } 10786 10787 set_45_imagery() { 10788 //this.map.setTilt(45); 10789 } 10790 10791 set_overlay_generator(tileSize, options) { 10792 10793 var overlay_generator = function (tileSize, options) { 10794 10795 this.tileSize = tileSize; 10796 this.overlay_options = options; 10797 if (this.overlay_options.font_size != undefined) { 10798 this.overlay_options.font_size = this.overlay_options.font_size.replace('px', ''); 10799 } else { 10800 this.overlay_options.font_size = '16'; 10801 } 10802 if (this.overlay_options.border_width != undefined) { 10803 this.overlay_options.border_width = this.overlay_options.border_width.replace('px', ''); 10804 } else { 10805 this.overlay_options.border_width = '2'; 10806 } 10807 10808 } 10809 10810 overlay_generator.prototype.getTile = function (coord, zoom, ownerDocument) { 10811 10812 var div = ownerDocument.createElement("div"); 10813 div.innerHTML = coord; 10814 div.style.width = this.tileSize.width; 10815 div.style.height = this.tileSize.height; 10816 div.style.fontSize = this.overlay_options.font_size + "px"; 10817 div.style.borderStyle = this.overlay_options.border_style; 10818 div.style.borderWidth = this.overlay_options.border_width + "px"; 10819 div.style.borderColor = this.overlay_options.border_color; 10820 return div; 10821 }; 10822 10823 return new overlay_generator(tileSize, options); 10824 10825 } 10826 10827 set_overlay() { 10828 if (this.map_data.overlay_setting.width != undefined) { 10829 this.map_data.overlay_setting.width = 10830 this.map_data.overlay_setting.width.replace("px", ""); 10831 } else { 10832 this.map_data.overlay_setting.width = "200"; 10833 } 10834 if (this.map_data.overlay_setting.height != undefined) { 10835 this.map_data.overlay_setting.height = 10836 this.map_data.overlay_setting.height.replace("px", ""); 10837 } else { 10838 this.map_data.overlay_setting.height = "200"; 10839 } 10840 10841 this.map.overlayMapTypes.insertAt( 10842 0, 10843 this.set_overlay_generator( 10844 new google.maps.Size( 10845 this.map_data.overlay_setting.width, 10846 this.map_data.overlay_setting.height 10847 ), 10848 this.map_data.overlay_setting 10849 ) 10850 ); 10851 } 10852 10853 set_bicyle_layer() { 10854 var bikeLayer = new google.maps.BicyclingLayer(); 10855 bikeLayer.setMap(this.map); 10856 } 10857 10858 set_traffic_layer() { 10859 var traffic_layer = new google.maps.TrafficLayer(); 10860 traffic_layer.setMap(this.map); 10861 } 10862 10863 set_panoramic_layer() { 10864 var panoramic_layer = new google.maps.panoramio.PanoramioLayer(); 10865 panoramic_layer.setMap(this.map); 10866 } 10867 10868 set_transit_layer() { 10869 var transit_layer = new google.maps.TransitLayer(); 10870 transit_layer.setMap(this.map); 10871 } 10872 10873 set_weather_layer() { 10874 var weatherLayer = new google.maps.weather.WeatherLayer({ 10875 windSpeedUnit: eval( 10876 "google.maps.weather.WindSpeedUnit." + 10877 this.map_data.weather_layer.wind_unit 10878 ), 10879 temperatureUnits: eval( 10880 "google.maps.weather.TemperatureUnit." + 10881 this.map_data.weather_layer.temperature_unit 10882 ), 10883 }); 10884 10885 weatherLayer.setMap(this.map); 10886 var cloudLayer = new google.maps.weather.CloudLayer(); 10887 cloudLayer.setMap(this.map); 10888 } 10889 10890 set_streetview(latlng) { 10891 var panoOptions = { 10892 position: latlng, 10893 addressControlOptions: { 10894 position: google.maps.ControlPosition.BOTTOM_CENTER, 10895 }, 10896 linksControl: this.map_data.street_view.links_control, 10897 panControl: this.map_data.street_view.street_view_pan_control, 10898 zoomControlOptions: { 10899 style: google.maps.ZoomControlStyle.SMALL, 10900 }, 10901 enableCloseButton: this.map_data.street_view.street_view_close_button, 10902 }; 10903 if ( 10904 this.map_data.street_view.pov_heading && 10905 this.map_data.street_view.pov_pitch 10906 ) { 10907 panoOptions["pov"] = { 10908 heading: parseInt(this.map_data.street_view.pov_heading), 10909 pitch: parseInt(this.map_data.street_view.pov_pitch), 10910 }; 10911 } 10912 var panorama = new google.maps.StreetViewPanorama( 10913 this.element, 10914 panoOptions 10915 ); 10916 } 10917 10918 create_amenities_markers(args) { 10919 var map_obj = this; 10920 if (map_obj.map_data.default_amenities) { 10921 var gm_dim = args.dimension; 10922 var gm_radius = args.radius; 10923 10924 if(gm_radius > 50) { 10925 gm_radius = 50; 10926 } 10927 var default_amenities = map_obj.map_data.default_amenities.amenities; 10928 10929 var divide_by = 1.60934; 10930 map_obj.amenity_infowindow = map_obj.infowindow_marker; 10931 var service; 10932 if (gm_dim == "miles") { 10933 divide_by = 1.60934; 10934 } else { 10935 divide_by = 1; 10936 } 10937 10938 if (gm_radius != undefined) { 10939 var circle_radius_meters = parseInt(gm_radius) * divide_by * 1000; 10940 // Now draw a circle. 10941 if (default_amenities) { 10942 var place_types = []; 10943 $.each(default_amenities, function (index, amenity) { 10944 place_types.push(amenity); 10945 }); 10946 10947 for (var i = 0; i < place_types.length; i++) { 10948 if ( 10949 map_obj !== "undefined" && 10950 map_obj.map_data.enableAmenitiesListing != undefined && 10951 map_obj.map_data.display_amenities_by != undefined && 10952 map_obj.map_data.display_amenities_by == "by_nearest" 10953 ) { 10954 var request = { 10955 location: args.location, 10956 types: [place_types[i]], 10957 rankBy: "DISTANCE", 10958 radius: circle_radius_meters, 10959 }; 10960 } else { 10961 var request = { 10962 location: args.location, 10963 radius: circle_radius_meters, 10964 rankBy: "POPULARITY", 10965 types: [place_types[i]], 10966 }; 10967 } 10968 map_obj.fetchNearbyAmenities(request); 10969 } 10970 } 10971 } 10972 10973 /** End **/ 10974 } 10975 } 10976 10977 async fetchNearbyAmenities(request, callback = null) { 10978 const lat = request.location.lat(); 10979 const lng = request.location.lng(); 10980 let radius = request.radius; 10981 const type = request.types; 10982 const map_obj = this; 10983 10984 const url = map_obj.searchNearbyApiURL; 10985
10986 if( radius > 50000 ) { 10987 radius = 50000; 10988 } 10989 10990 const requestBody = { 10991 includedTypes: type, 10992 maxResultCount: 20, 10993 rankPreference: request.rankBy, 10994 locationRestriction: { 10995 circle: { 10996 center: { 10997 latitude: lat, 10998 longitude: lng, 10999 }, 11000 radius: radius, 11001 }, 11002 }, 11003 }; 11004 11005 try { 11006 const response = await fetch(url, { 11007 method: "POST", 11008 headers: { 11009 "Content-Type": "application/json", 11010 "X-Goog-Api-Key": map_obj.map_data.apiKey, 11011 "X-Goog-FieldMask": 11012 "places.displayName,places.location,places.types,places.formattedAddress,places.iconMaskBaseUri,places.iconBackgroundColor", 11013 }, 11014 body: JSON.stringify(requestBody), 11015 }); 11016 11017 const data = await response.json(); 11018 11019 if (Array.isArray(data.places)) { 11020 const places = data.places.map((place) => ({ 11021 id: Date.now() + Math.floor(Math.random() * 1000), 11022 name: place.displayName?.text || "Unnamed Place", 11023 vicinity: place.formattedAddress || "", 11024 source: "manual", 11025 content: place.formattedAddress || "", 11026 types: place.types, 11027 geometry: { 11028 location: new google.maps.LatLng( 11029 place.location?.latitude, 11030 place.location?.longitude 11031 ), 11032 }, 11033 icon: `${place.iconMaskBaseUri}.svg`, 11034 color: place.iconBackgroundColor, 11035 location: { 11036 icon: `${place.iconMaskBaseUri}.svg`, 11037 lat: place.location?.latitude, 11038 lng: place.location?.longitude, 11039 }, 11040 })); 11041 11042 // â If a callback is passed, delegate handling to it 11043 if (typeof callback === 'function') { 11044 callback(places); 11045 } else { 11046 // Default behavior: create markers 11047 places.forEach((place) => { 11048 map_obj.createMarker(place); 11049 }); 11050 } 11051 } else { 11052 console.warn("No places returned or unexpected response:", data); 11053 } 11054 } catch (error) { 11055 console.error("Failed to fetch nearby amenities:", error); 11056 } 11057 } 11058 11059 /** 11060 * Handles post-load setup for Google Maps 11061 * Includes center logic, infowindow cleanup, amenities load, and UI skinning 11062 */ 11063map_loaded() { 11064 const map_obj = this; 11065 const map = map_obj.map; 11066 11067 // Ensure Google map is fully loaded and properly centered after resize 11068 google.maps.event.addListenerOnce(map, "idle", function () { 11069 const center = map.getCenter(); 11070 google.maps.event.trigger(map, "resize"); 11071 map.setCenter(center); 11072 }); 11073 11074 // Optionally center map by user's location 11075 if (map_obj.settings.center_by_nearest === true) { 11076 map_obj.center_by_nearest(); 11077 } 11078 11079 // Close all open infowindows on map click 11080 if (map_obj.settings.close_infowindow_on_map_click === true) { 11081 google.maps.event.addListener(map, "click", function () { 11082 map_obj.places?.forEach((place) => { 11083 place.infowindow?.close(); 11084 place.marker?.setAnimation(null); 11085 }); 11086 }); 11087 } 11088 11089 // Auto-detect and load default amenity markers near map center 11090 if (map_obj.map_data.default_amenities) { 11091 const args = { 11092 dimension: map_obj.map_data.default_amenities.dimension, 11093 radius: map_obj.map_data.default_amenities.radius, 11094 location: map.getCenter(), 11095 }; 11096 map_obj.create_amenities_markers(args); 11097 } 11098 11099 // DOM Ready styling for Infobox (if custom infowindow skin is active) 11100 google.maps.event.addListener(map_obj.infobox, "domready", function () { 11101 const $outer = $(map_obj.container).find(".infoBox"); 11102 const needsSkin = 11103 $outer.find(".fc-infowindow-default").length === 0 && 11104 $outer.find(".fc-item-default").length === 0 && 11105 $outer.find(".wpgmp_infowindow").length > 0; 11106 11107 //accordian 11108 $outer.on('click', ".fc-accordion-tab", function () { 11109 if ($(this).hasClass('active')) { 11110 $(this).removeClass('active'); 11111 var acc_child = $(this).next().removeClass('active'); 11112 } else { 11113 $(".fc-accordion-tab").removeClass('active'); 11114 $(".fc-accordion dd").removeClass('active'); 11115 $(this).addClass('active'); 11116 var acc_child = $(this).next().addClass('active'); 11117 } 11118 }); 11119 11120 if (needsSkin) { 11121 $outer.find(".wpgmp_infowindow").prepend('<div class="infowindow-close" aria-label="Close popup" role="button" tabindex="0"></div>'); 11122 11123 $(".infowindow-close").click(() => { 11124 map_obj.places?.forEach((place) => { 11125 place.infowindow?.close(); 11126 place.marker?.setAnimation(null); 11127 }); 11128 }); 11129 11130 if ( 11131 $outer.find(".fc-infowindow-fano").length === 0 && 11132 $outer.find(".fc-item-fano").length === 0 11133 ) { 11134 $outer.addClass("infoBoxTail"); 11135 } else { 11136 $outer.removeClass("infoBoxTail"); 11137 } 11138 } 11139 }); 11140 11141 // Custom styling for default Google infowindow when skin options enabled 11142 if (map_obj.settings.map_infowindow_customisations === true) { 11143 google.maps.event.addListener(map_obj.infowindow_marker, "domready", function () { 11144 const $outer = $(map_obj.container).find(".gm-style-iw"); 11145 const bg = $outer.prev(); 11146 const closeBtn = $outer.next(); 11147 closeBtn.hide(); 11148 11149 bg.children(":nth-child(2)").hide(); 11150 bg.children(":nth-child(3)").css("background-color", "#000"); 11151 bg.children(":nth-child(4)").hide(); 11152 11153 const height = $outer.outerHeight(); 11154 bg.children(":nth-child(3)").css("top", height + 14 + "px"); 11155 bg.children(":nth-child(1)").css("top", height + 6 + "px"); 11156 11157 bg.children(":nth-child(3)").find("div").children().css({ 11158 borderTop: "", 11159 zIndex: "1", 11160 }); 11161 11162 $outer.on("click", ".infowindow-close", () => { 11163 map_obj.places?.forEach((place) => { 11164 place.infowindow?.close(); 11165 place.marker?.setAnimation(null); 11166 }); 11167 }); 11168 }); 11169 } 11170} 11171 11172 wpgmpInitializeInfoBox() { 11173 var InfoBox = function (opt_opts) { 11174 opt_opts = opt_opts || {}; 11175 11176 google.maps.OverlayView.apply(this, arguments); 11177 11178 // Standard options (in common with google.maps.InfoWindow): 11179 // 11180 this.content_ = opt_opts.content || ""; 11181 this.disableAutoPan_ = opt_opts.disableAutoPan || false; 11182 this.maxWidth_ = opt_opts.maxWidth || 0; 11183 this.pixelOffset_ = opt_opts.pixelOffset || new google.maps.Size(0, 0); 11184 this.position_ = opt_opts.position || new google.maps.LatLng(0, 0); 11185 this.zIndex_ = opt_opts.zIndex || null; 11186 11187 // Additional options (unique to InfoBox): 11188 // 11189 this.boxClass_ = opt_opts.boxClass || "infoBox"; 11190 this.boxStyle_ = opt_opts.boxStyle || {}; 11191 this.closeBoxMargin_ = opt_opts.closeBoxMargin || "2px"; 11192 this.closeBoxURL_ = 11193 opt_opts.closeBoxURL || 11194 "//www.google.com/intl/en_us/mapfiles/close.gif"; 11195 if (opt_opts.closeBoxURL === "") { 11196 this.closeBoxURL_ = ""; 11197 } 11198 this.closeBoxTitle_ = opt_opts.closeBoxTitle || " Close "; 11199 this.infoBoxClearance_ = 11200 opt_opts.infoBoxClearance || new google.maps.Size(1, 1); 11201 11202 if (typeof opt_opts.visible === "undefined") { 11203 if (typeof opt_opts.isHidden === "undefined") { 11204 opt_opts.visible = true; 11205 } else { 11206 opt_opts.visible = !opt_opts.isHidden; 11207 } 11208 } 11209 this.isHidden_ = !opt_opts.visible; 11210 11211 this.alignBottom_ = opt_opts.alignBottom || false; 11212 this.pane_ = opt_opts.pane || "floatPane"; 11213 this.enableEventPropagation_ = opt_opts.enableEventPropagation || false; 11214 11215 this.div_ = null; 11216 this.closeListener_ = null; 11217 this.moveListener_ = null; 11218 this.contextListener_ = null; 11219 this.eventListeners_ = null; 11220 this.fixedWidthSet_ = null; 11221 }; 11222 11223 InfoBox.prototype = new google.maps.OverlayView(); 11224 11225 /** 11226 * Creates the DIV representing the InfoBox. 11227 * @private 11228 */ 11229 InfoBox.prototype.createInfoBoxDiv_ = function () { 11230 var i; 11231 var events; 11232 var bw; 11233 var me = this; 11234 11235 // This handler prevents an event in the InfoBox from being passed on to the map. 11236 // 11237 var cancelHandler = function (e) { 11238 e.cancelBubble = true; 11239 if (e.stopPropagation) { 11240 e.stopPropagation(); 11241 } 11242 }; 11243 11244 // This handler ignores the current event in the InfoBox and conditionally prevents 11245 // the event from being passed on to the map. It is used for the contextmenu event. 11246 // 11247 var ignoreHandler = function (e) { 11248 e.returnValue = false;
11249 11250 if (e.preventDefault) { 11251 e.preventDefault(); 11252 } 11253 11254 if (!me.enableEventPropagation_) { 11255 cancelHandler(e); 11256 } 11257 }; 11258 11259 if (!this.div_) { 11260 this.div_ = document.createElement("div"); 11261 11262 this.setBoxStyle_(); 11263 11264 if (typeof this.content_.nodeType === "undefined") { 11265 this.div_.innerHTML = this.getCloseBoxImg_() + this.content_; 11266 } else { 11267 this.div_.innerHTML = this.getCloseBoxImg_(); 11268 this.div_.appendChild(this.content_); 11269 } 11270 11271 // Add the InfoBox DIV to the DOM 11272 this.getPanes()[this.pane_].appendChild(this.div_); 11273 11274 this.addClickHandler_(); 11275 11276 if (this.div_.style.width) { 11277 this.fixedWidthSet_ = true; 11278 } else { 11279 if ( 11280 this.maxWidth_ !== 0 && 11281 this.div_.offsetWidth > this.maxWidth_ 11282 ) { 11283 this.div_.style.width = this.maxWidth_; 11284 this.div_.style.overflow = "auto"; 11285 this.fixedWidthSet_ = true; 11286 } else { 11287 // The following code is needed to overcome problems with MSIE 11288 11289 bw = this.getBoxWidths_(); 11290 11291 this.div_.style.width = 11292 this.div_.offsetWidth - bw.left - bw.right + "px"; 11293 this.fixedWidthSet_ = false; 11294 } 11295 } 11296 11297 this.panBox_(this.disableAutoPan_); 11298 11299 if (!this.enableEventPropagation_) { 11300 this.eventListeners_ = []; 11301 11302 // Cancel event propagation. 11303 // 11304 // Note: mousemove not included (to resolve Issue 152) 11305 events = [ 11306 "mousedown", 11307 "mouseover", 11308 "mouseout", 11309 "mouseup", 11310 "click", 11311 "dblclick", 11312 "touchstart", 11313 "touchend", 11314 "touchmove", 11315 ]; 11316 11317 for (i = 0; i < events.length; i++) { 11318 this.eventListeners_.push( 11319 this.div_.addEventListener( 11320 events[i], 11321 cancelHandler 11322 ) 11323 ); 11324 } 11325 11326 // Workaround for Google bug that causes the cursor to change to a pointer 11327 // when the mouse moves over a marker underneath InfoBox. 11328 this.eventListeners_.push( 11329 this.div_.addEventListener( 11330 "mouseover", 11331 function (e) { 11332 this.style.cursor = "default"; 11333 } 11334 ) 11335 ); 11336 } 11337 11338 this.contextListener_ = this.div_.addEventListener( 11339 "contextmenu", 11340 ignoreHandler 11341 ); 11342 11343 /** 11344 * This event is fired when the DIV containing the InfoBox's content is attached to the DOM. 11345 * @name InfoBox#domready 11346 * @event 11347 */ 11348 google.maps.event.trigger(this, "domready"); 11349 } 11350 }; 11351 11352 /** 11353 * Returns the HTML <IMG> tag for the close box. 11354 * @private 11355 */ 11356 InfoBox.prototype.getCloseBoxImg_ = function () { 11357 var img = ""; 11358 11359 if (this.closeBoxURL_ !== "") { 11360 img = "<img"; 11361 img += " src='" + this.closeBoxURL_ + "'"; 11362 img += " align=right"; // Do this because Opera chokes on style='float: right;' 11363 img += " title='" + this.closeBoxTitle_ + "'"; 11364 img += " style='"; 11365 img += " position: relative;"; // Required by MSIE 11366 img += " cursor: pointer;"; 11367 img += " margin: " + this.closeBoxMargin_ + ";"; 11368 img += "'>"; 11369 } 11370 11371 return img; 11372 }; 11373 11374 /** 11375 * Adds the click handler to the InfoBox close box. 11376 * @private 11377 */ 11378 InfoBox.prototype.addClickHandler_ = function () { 11379 var closeBox; 11380 11381 if (this.closeBoxURL_ !== "") { 11382 closeBox = this.div_.firstChild; 11383 this.closeListener_ = closeBox.addEventListener( 11384 "click", 11385 this.getCloseClickHandler_() 11386 ); 11387 } else { 11388 this.closeListener_ = null; 11389 } 11390 }; 11391 11392 /** 11393 * Returns the function to call when the user clicks the close box of an InfoBox. 11394 * @private 11395 */ 11396 InfoBox.prototype.getCloseClickHandler_ = function () { 11397 var me = this; 11398 11399 return function (e) { 11400 // 1.0.3 fix: Always prevent propagation of a close box click to the map: 11401 e.cancelBubble = true; 11402 11403 if (e.stopPropagation) { 11404 e.stopPropagation(); 11405 } 11406 11407 /**
11408 * This event is fired when the InfoBox's close box is clicked. 11409 * @name InfoBox#closeclick 11410 * @event 11411 */ 11412 google.maps.event.trigger(me, "closeclick"); 11413 11414 me.close(); 11415 }; 11416 }; 11417 11418 /** 11419 * Pans the map so that the InfoBox appears entirely within the map's visible area. 11420 * @private 11421 */ 11422 InfoBox.prototype.panBox_ = function (disablePan) { 11423 var map; 11424 var bounds; 11425 var xOffset = 0, 11426 yOffset = 0; 11427 11428 if (!disablePan) { 11429 map = this.getMap(); 11430 11431 if (map instanceof google.maps.Map) { 11432 // Only pan if attached to map, not panorama 11433 11434 if (!map.getBounds().contains(this.position_)) { 11435 // Marker not in visible area of map, so set center 11436 // of map to the marker position first. 11437 map.setCenter(this.position_); 11438 } 11439 11440 var iwOffsetX = this.pixelOffset_.width; 11441 var iwOffsetY = this.pixelOffset_.height; 11442 var iwWidth = this.div_.offsetWidth; 11443 var iwHeight = this.div_.offsetHeight; 11444 var padX = this.infoBoxClearance_.width; 11445 var padY = this.infoBoxClearance_.height; 11446 11447 if (map.panToBounds.length == 2) { 11448 // Using projection.fromLatLngToContainerPixel to compute the infowindow position 11449 // does not work correctly anymore for JS Maps API v3.32 and above if there is a 11450 // previous synchronous call that causes the map to animate (e.g. setCenter when 11451 // the position is not within bounds). Hence, we are using panToBounds with 11452 // padding instead, which works synchronously. 11453 var padding = { 11454 left: 0, 11455 right: 0, 11456 top: 0, 11457 bottom: 0, 11458 }; 11459 padding.left = -iwOffsetX + padX; 11460 padding.right = iwOffsetX + iwWidth + padX; 11461 if (this.alignBottom_) { 11462 padding.top = -iwOffsetY + padY + iwHeight; 11463 padding.bottom = iwOffsetY + padY; 11464 } else { 11465 padding.top = -iwOffsetY + padY; 11466 padding.bottom = iwOffsetY + iwHeight + padY; 11467 } 11468 map.panToBounds( 11469 new google.maps.LatLngBounds(this.position_), 11470 padding 11471 ); 11472 } else { 11473 var mapDiv = map.getDiv(); 11474 var mapWidth = mapDiv.offsetWidth; 11475 var mapHeight = mapDiv.offsetHeight; 11476 var pixPosition = this.getProjection().fromLatLngToContainerPixel( 11477 this.position_ 11478 ); 11479 11480 if (pixPosition.x < -iwOffsetX + padX) { 11481 xOffset = pixPosition.x + iwOffsetX - padX; 11482 } else if ( 11483 pixPosition.x + iwWidth + iwOffsetX + padX > 11484 mapWidth 11485 ) { 11486 xOffset = pixPosition.x + iwWidth + iwOffsetX + padX - mapWidth; 11487 } 11488 if (this.alignBottom_) { 11489 if (pixPosition.y < -iwOffsetY + padY + iwHeight) { 11490 yOffset = pixPosition.y + iwOffsetY - padY - iwHeight; 11491 } else if (pixPosition.y + iwOffsetY + padY > mapHeight) { 11492 yOffset = pixPosition.y + iwOffsetY + padY - mapHeight; 11493 } 11494 } else { 11495 if (pixPosition.y < -iwOffsetY + padY) { 11496 yOffset = pixPosition.y + iwOffsetY - padY; 11497 } else if ( 11498 pixPosition.y + iwHeight + iwOffsetY + padY > 11499 mapHeight 11500 ) { 11501 yOffset = 11502 pixPosition.y + iwHeight + iwOffsetY + padY - mapHeight; 11503 } 11504 } 11505 11506 if (!(xOffset === 0 && yOffset === 0)) { 11507 // Move the map to the shifted center. 11508 // 11509 var c = map.getCenter(); 11510 map.panBy(xOffset, yOffset); 11511 } 11512 } 11513 } 11514 } 11515 }; 11516 11517 /** 11518 * Sets the style of the InfoBox by setting the style sheet and applying 11519 * other specific styles requested. 11520 * @private 11521 */ 11522 InfoBox.prototype.setBoxStyle_ = function () { 11523 var i, boxStyle; 11524 11525 if (this.div_) { 11526 // Apply style values from the style sheet defined in the boxClass parameter: 11527 this.div_.className = this.boxClass_; 11528 11529 // Clear existing inline style values: 11530 this.div_.style.cssText = ""; 11531 11532 // Apply style values defined in the boxStyle parameter: 11533 boxStyle = this.boxStyle_; 11534 for (i in boxStyle) { 11535 if (boxStyle.hasOwnProperty(i)) { 11536 this.div_.style[i] = boxStyle[i]; 11537 } 11538 } 11539 11540 // Fix for iOS disappearing InfoBox problem. 11541 // See http://stackoverflow.com/questions/9229535/google-maps-markers-disappear-at-certain-zoom-level-only-on-iphone-ipad 11542 // Required: use "matrix" technique to specify transforms in order to avoid this bug. 11543 if ( 11544 typeof this.div_.style.WebkitTransform === "undefined" || 11545 (this.div_.style.WebkitTransform.indexOf("translateZ") === -1 && 11546 this.div_.style.WebkitTransform.indexOf("matrix") === -1) 11547 ) { 11548 this.div_.style.WebkitTransform = "translateZ(0)"; 11549 } 11550
vendor: 6,831 bytes, lines 11551-11749
11551 // Fix up opacity style for benefit of MSIE: 11552 // 11553 if ( 11554 typeof this.div_.style.opacity !== "undefined" && 11555 this.div_.style.opacity !== "" 11556 ) { 11557 // See http://www.quirksmode.org/css/opacity.html 11558 this.div_.style.MsFilter = 11559 '"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + 11560 this.div_.style.opacity * 100 + 11561 ')"'; 11562 this.div_.style.filter = 11563 "alpha(opacity=" + this.div_.style.opacity * 100 + ")"; 11564 } 11565 11566 // Apply required styles: 11567 // 11568 this.div_.style.position = "absolute"; 11569 this.div_.style.visibility = "hidden"; 11570 if (this.zIndex_ !== null) { 11571 this.div_.style.zIndex = this.zIndex_; 11572 } 11573 } 11574 }; 11575 11576 /** 11577 * Get the widths of the borders of the InfoBox. 11578 * @private 11579 * @return {Object} widths object (top, bottom left, right) 11580 */ 11581 InfoBox.prototype.getBoxWidths_ = function () { 11582 var computedStyle; 11583 var bw = { 11584 top: 0, 11585 bottom: 0, 11586 left: 0, 11587 right: 0, 11588 }; 11589 var box = this.div_; 11590 11591 if (document.defaultView && document.defaultView.getComputedStyle) { 11592 computedStyle = box.ownerDocument.defaultView.getComputedStyle( 11593 box, 11594 "" 11595 ); 11596 11597 if (computedStyle) { 11598 // The computed styles are always in pixel units (good!) 11599 bw.top = parseInt(computedStyle.borderTopWidth, 10) || 0; 11600 bw.bottom = parseInt(computedStyle.borderBottomWidth, 10) || 0; 11601 bw.left = parseInt(computedStyle.borderLeftWidth, 10) || 0; 11602 bw.right = parseInt(computedStyle.borderRightWidth, 10) || 0; 11603 } 11604 } else if (document.documentElement.currentStyle) { 11605 // MSIE 11606 11607 if (box.currentStyle) { 11608 // The current styles may not be in pixel units, but assume they are (bad!) 11609 bw.top = parseInt(box.currentStyle.borderTopWidth, 10) || 0; 11610 bw.bottom = parseInt(box.currentStyle.borderBottomWidth, 10) || 0; 11611 bw.left = parseInt(box.currentStyle.borderLeftWidth, 10) || 0; 11612 bw.right = parseInt(box.currentStyle.borderRightWidth, 10) || 0; 11613 } 11614 } 11615 11616 return bw; 11617 }; 11618 11619 /** 11620 * Invoked when <tt>close</tt> is called. Do not call it directly. 11621 */ 11622 InfoBox.prototype.onRemove = function () { 11623 if (this.div_) { 11624 this.div_.parentNode.removeChild(this.div_); 11625 this.div_ = null; 11626 } 11627 }; 11628 11629 /** 11630 * Draws the InfoBox based on the current map projection and zoom level. 11631 */ 11632 InfoBox.prototype.draw = function () { 11633 this.createInfoBoxDiv_(); 11634 11635 var pixPosition = this.getProjection().fromLatLngToDivPixel( 11636 this.position_ 11637 ); 11638 11639 this.div_.style.left = pixPosition.x + this.pixelOffset_.width + "px"; 11640 11641 if (this.alignBottom_) { 11642 this.div_.style.bottom = 11643 -(pixPosition.y + this.pixelOffset_.height) + "px"; 11644 } else { 11645 this.div_.style.top = pixPosition.y + this.pixelOffset_.height + "px"; 11646 } 11647 11648 if (this.isHidden_) { 11649 this.div_.style.visibility = "hidden"; 11650 } else { 11651 this.div_.style.visibility = "visible"; 11652 } 11653 }; 11654 11655 /** 11656 * Sets the options for the InfoBox. Note that changes to the <tt>maxWidth</tt>, 11657 * <tt>closeBoxMargin</tt>, <tt>closeBoxTitle</tt>, <tt>closeBoxURL</tt>, and 11658 * <tt>enableEventPropagation</tt> properties have no affect until the current 11659 * InfoBox is <tt>close</tt>d and a new one is <tt>open</tt>ed. 11660 * @param {InfoBoxOptions} opt_opts 11661 */ 11662 InfoBox.prototype.setOptions = function (opt_opts) { 11663 if (typeof opt_opts.boxClass !== "undefined") { 11664 // Must be first 11665 11666 this.boxClass_ = opt_opts.boxClass; 11667 this.setBoxStyle_(); 11668 } 11669 if (typeof opt_opts.boxStyle !== "undefined") { 11670 // Must be second 11671 11672 this.boxStyle_ = opt_opts.boxStyle; 11673 this.setBoxStyle_(); 11674 } 11675 if (typeof opt_opts.content !== "undefined") { 11676 this.setContent(opt_opts.content); 11677 } 11678 if (typeof opt_opts.disableAutoPan !== "undefined") { 11679 this.disableAutoPan_ = opt_opts.disableAutoPan; 11680 } 11681 if (typeof opt_opts.maxWidth !== "undefined") { 11682 this.maxWidth_ = opt_opts.maxWidth; 11683 } 11684 if (typeof opt_opts.pixelOffset !== "undefined") { 11685 this.pixelOffset_ = opt_opts.pixelOffset; 11686 } 11687 if (typeof opt_opts.alignBottom !== "undefined") { 11688 this.alignBottom_ = opt_opts.alignBottom; 11689 } 11690 if (typeof opt_opts.position !== "undefined") { 11691 this.setPosition(opt_opts.position); 11692 } 11693 if (typeof opt_opts.zIndex !== "undefined") { 11694 this.setZIndex(opt_opts.zIndex); 11695 } 11696 if (typeof opt_opts.closeBoxMargin !== "undefined") { 11697 this.closeBoxMargin_ = opt_opts.closeBoxMargin; 11698 } 11699 if (typeof opt_opts.closeBoxURL !== "undefined") { 11700 this.closeBoxURL_ = opt_opts.closeBoxURL; 11701 } 11702 if (typeof opt_opts.closeBoxTitle !== "undefined") { 11703 this.closeBoxTitle_ = opt_opts.closeBoxTitle; 11704 } 11705 if (typeof opt_opts.infoBoxClearance !== "undefined") { 11706 this.infoBoxClearance_ = opt_opts.infoBoxClearance; 11707 } 11708 if (typeof opt_opts.isHidden !== "undefined") { 11709 this.isHidden_ = opt_opts.isHidden; 11710 } 11711 if (typeof opt_opts.visible !== "undefined") { 11712 this.isHidden_ = !opt_opts.visible; 11713 } 11714 if (typeof opt_opts.enableEventPropagation !== "undefined") { 11715 this.enableEventPropagation_ = opt_opts.enableEventPropagation; 11716 } 11717 11718 if (this.div_) { 11719 this.draw(); 11720 } 11721 }; 11722 11723 /** 11724 * Sets the content of the InfoBox. 11725 * The content can be plain text or an HTML DOM node. 11726 * @param {string|Node} content 11727 */ 11728 InfoBox.prototype.setContent = function (content) { 11729 this.content_ = content; 11730 11731 if (this.div_) { 11732 if (this.closeListener_) { 11733 google.maps.event.removeListener(this.closeListener_); 11734 this.closeListener_ = null; 11735 } 11736 11737 // Odd code required to make things work with MSIE. 11738 // 11739 if (!this.fixedWidthSet_) { 11740 this.div_.style.width = ""; 11741 } 11742 11743 if (typeof content.nodeType === "undefined") { 11744 this.div_.innerHTML = this.getCloseBoxImg_() + content; 11745 } else { 11746 this.div_.innerHTML = this.getCloseBoxImg_(); 11747 this.div_.appendChild(content); 11748 } 11749
11750 // Perverse code required to make things work with MSIE. 11751 // (Ensures the close box does, in fact, float to the right.) 11752 // 11753 if (!this.fixedWidthSet_) { 11754 this.div_.style.width = this.div_.offsetWidth + "px"; 11755 if (typeof content.nodeType === "undefined") { 11756 this.div_.innerHTML = this.getCloseBoxImg_() + content; 11757 } else { 11758 this.div_.innerHTML = this.getCloseBoxImg_(); 11759 this.div_.appendChild(content); 11760 } 11761 } 11762 11763 this.addClickHandler_(); 11764 } 11765 11766 /** 11767 * This event is fired when the content of the InfoBox changes. 11768 * @name InfoBox#content_changed 11769 * @event 11770 */ 11771 google.maps.event.trigger(this, "content_changed"); 11772 }; 11773 11774 /** 11775 * Sets the geographic location of the InfoBox. 11776 * @param {LatLng} latlng 11777 */ 11778 InfoBox.prototype.setPosition = function (latlng) { 11779 this.position_ = latlng; 11780 11781 if (this.div_) { 11782 this.draw(); 11783 } 11784 11785 /** 11786 * This event is fired when the position of the InfoBox changes. 11787 * @name InfoBox#position_changed 11788 * @event 11789 */ 11790 google.maps.event.trigger(this, "position_changed"); 11791 }; 11792 11793 /** 11794 * Sets the zIndex style for the InfoBox. 11795 * @param {number} index 11796 */ 11797 InfoBox.prototype.setZIndex = function (index) { 11798 this.zIndex_ = index; 11799 11800 if (this.div_) { 11801 this.div_.style.zIndex = index; 11802 } 11803 11804 /** 11805 * This event is fired when the zIndex of the InfoBox changes. 11806 * @name InfoBox#zindex_changed 11807 * @event 11808 */ 11809 google.maps.event.trigger(this, "zindex_changed"); 11810 }; 11811 11812 /** 11813 * Sets the visibility of the InfoBox. 11814 * @param {boolean} isVisible 11815 */ 11816 InfoBox.prototype.setVisible = function (isVisible) { 11817 this.isHidden_ = !isVisible; 11818 if (this.div_) { 11819 this.div_.style.visibility = this.isHidden_ ? "hidden" : "visible"; 11820 } 11821 }; 11822 11823 /** 11824 * Returns the content of the InfoBox. 11825 * @returns {string} 11826 */ 11827 InfoBox.prototype.getContent = function () { 11828 return this.content_; 11829 }; 11830 11831 /** 11832 * Returns the geographic location of the InfoBox. 11833 * @returns {LatLng} 11834 */ 11835 InfoBox.prototype.getPosition = function () { 11836 return this.position_; 11837 }; 11838 11839 /** 11840 * Returns the zIndex for the InfoBox. 11841 * @returns {number} 11842 */ 11843 InfoBox.prototype.getZIndex = function () { 11844 return this.zIndex_; 11845 }; 11846 11847 /** 11848 * Returns a flag indicating whether the InfoBox is visible. 11849 * @returns {boolean} 11850 */ 11851 InfoBox.prototype.getVisible = function () { 11852 var isVisible; 11853 11854 if (typeof this.getMap() === "undefined" || this.getMap() === null) { 11855 isVisible = false; 11856 } else { 11857 isVisible = !this.isHidden_; 11858 } 11859 return isVisible; 11860 }; 11861 11862 /** 11863 * Returns the width of the InfoBox in pixels. 11864 * @returns {number} 11865 */ 11866 InfoBox.prototype.getWidth = function () { 11867 var width = null; 11868 11869 if (this.div_) { 11870 width = this.div_.offsetWidth; 11871 } 11872 11873 return width; 11874 }; 11875 11876 /** 11877 * Returns the height of the InfoBox in pixels. 11878 * @returns {number} 11879 */ 11880 InfoBox.prototype.getHeight = function () { 11881 var height = null; 11882 11883 if (this.div_) { 11884 height = this.div_.offsetHeight; 11885 } 11886 11887 return height; 11888 }; 11889 11890 /** 11891 * Shows the InfoBox. [Deprecated; use <tt>setVisible</tt> instead.] 11892 */ 11893 InfoBox.prototype.show = function () { 11894 this.isHidden_ = false; 11895 if (this.div_) { 11896 this.div_.style.visibility = "visible"; 11897 } 11898 }; 11899 11900 /** 11901 * Hides the InfoBox. [Deprecated; use <tt>setVisible</tt> instead.] 11902 */ 11903 InfoBox.prototype.hide = function () { 11904 this.isHidden_ = true; 11905 if (this.div_) { 11906 this.div_.style.visibility = "hidden"; 11907 } 11908 }; 11909 11910 /** 11911 * Adds the InfoBox to the specified map or Street View panorama. If <tt>anchor</tt> 11912 * (usually a <tt>google.maps.Marker</tt>) is specified, the position 11913 * of the InfoBox is set to the position of the <tt>anchor</tt>. If the
11914 * anchor is dragged to a new location, the InfoBox moves as well. 11915 * @param {Map|StreetViewPanorama} map 11916 * @param {MVCObject} [anchor] 11917 */ 11918 InfoBox.prototype.open = function (map, anchor) { 11919 var me = this; 11920 11921 if (anchor) { 11922 this.setPosition(anchor.getPosition()); // BUG FIX 2/17/2018: needed for v3.32 11923 this.moveListener_ = google.maps.event.addListener( 11924 anchor, 11925 "position_changed", 11926 function () { 11927 me.setPosition(this.getPosition()); 11928 } 11929 ); 11930 } 11931 11932 this.setMap(map); 11933 11934 if (this.div_) { 11935 this.panBox_(this.disableAutoPan_); // BUG FIX 2/17/2018: add missing parameter 11936 } 11937 }; 11938 11939 /** 11940 * Removes the InfoBox from the map. 11941 */ 11942 InfoBox.prototype.close = function () { 11943 var i; 11944 11945 if (this.closeListener_) { 11946 google.maps.event.removeListener(this.closeListener_); 11947 this.closeListener_ = null; 11948 } 11949 11950 if (this.eventListeners_) { 11951 for (i = 0; i < this.eventListeners_.length; i++) { 11952 google.maps.event.removeListener(this.eventListeners_[i]); 11953 } 11954 this.eventListeners_ = null; 11955 } 11956 11957 if (this.moveListener_) { 11958 google.maps.event.removeListener(this.moveListener_); 11959 this.moveListener_ = null; 11960 } 11961 11962 if (this.contextListener_) { 11963 google.maps.event.removeListener(this.contextListener_); 11964 this.contextListener_ = null; 11965 } 11966 11967 this.setMap(null); 11968 }; 11969 11970 return new InfoBox(); 11971 } 11972 } 11973 11974 window.WpgmpGoogleMaps = WpgmpGoogleMaps; 11975})(jQuery, window, document); 11976 11977/** 11978 * WpgmpLeafletMaps class - extends BaseMaps for Leaflet provider. 11979 */ 11980 11981(function ($, window, document) { 11982 class WpgmpLeafletMaps extends WpgmpBaseMaps { 11983 constructor(element, map_data = {}, places = []) { 11984 super(element, map_data, places); 11985 11986 const options = this.map_data.map_options; 11987 this.settings = $.extend( 11988 { 11989 min_zoom: "0", 11990 11991 max_zoom: "19", 11992 11993 zoom: "5", 11994 11995 map_type_id: "mapbox.streets", 11996 11997 scroll_wheel: true, 11998 11999 map_visual_refresh: false, 12000 12001 full_screen_control: false, 12002 12003 full_screen_control_position: "bottomright", 12004 12005 zoom_control: true, 12006 12007 zoom_control_style: "SMALL", 12008 12009 zoom_control_position: "topleft", 12010 12011 map_type_control: true, 12012 12013 map_type_control_style: "HORIZONTAL_BAR", 12014 12015 map_type_control_position: "topright", 12016 12017 scale_control: true, 12018 12019 overview_map_control: true, 12020 12021 center_lat: "40.6153983", 12022 12023 center_lng: "-74.2535216", 12024 12025 draggable: true, 12026 12027 gesture: "auto", 12028 12029 infowindow_open_event: "click", 12030 map_tile_url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", 12031 search_control: false, 12032 locateme_control: false, 12033 map_type_control: false, 12034 }, 12035 {}, 12036 options 12037 ); 12038 12039 this.container = $("div[rel='" + $(this.element).attr("id") + "']"); 12040 12041 this.places = []; 12042 12043 this.show_places = []; 12044 12045 this.categories = {}; 12046 12047 this.tabs = []; 12048 12049 this.per_page_value = 0; 12050 12051 this.last_remove_cat_id = ""; 12052 12053 this.last_selected_cat_id = ""; 12054 12055 this.last_category_chkbox_action = ""; 12056 12057 this.search_area = ""; 12058 12059 this.url_filters = []; 12060 12061 this.mbAttr = 12062 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>'; 12063 12064 this.mbURL = ""; 12065 12066 this.isMobile = false; 12067 12068 this.bingmaplayers = {}; 12069 this.infowindow_marker = L.popup({ 12070 closeOnClick: this.settings.close_infowindow_on_map_click === true, 12071 }); 12072 } 12073 12074 /** 12075 * Initializes and renders the Leaflet map with full configuration. 12076 * 12077 * Breakdown of steps: 12078 * 1. Device & screen detection with mobile-specific settings 12079 * 2. Leaflet map initialization using selected provider (Mapbox, or Custom Tile) 12080 * 3. Adds common map controls (zoom, scale, fullscreen, locate) 12081 * 4. Registers dynamic map style switchers and dropdown UI controls 12082 * 5. Builds and displays markers, adjusts layout responsively 12083 * 6. Sets up listings, filtering, sorting, and pagination 12084 * 7. Handles GeoJSON, marker interactions, and scroll-to behavior 12085 * 8. Configures category/location tabs, filter checkboxes, and dynamic content toggles 12086 * 9. Enables accordion UI, autosuggest search, and direction panel logic 12087 * 10. Registers all final event listeners (print, radius change, per-page switch, etc.) 12088 */ 12089 12090 init() { 12091 const map_obj = this; 12092 12093 // Fix default Leaflet marker icon path 12094 delete L.Icon.Default.prototype._getIconUrl; 12095 12096 L.Icon.Default.mergeOptions({ 12097 iconRetinaUrl: wpgmp_local.default_marker_icon, 12098 iconUrl: wpgmp_local.default_marker_icon, 12099 shadowUrl: wpgmp_local.default_marker_icon, 12100 }); 12101 12102 // -------------------------------------------------- 12103 // 1. Device Detection and Responsive Settings 12104 // -------------------------------------------------- 12105 const screenWidth = $(window).width(); 12106 const screenType = 12107 screenWidth <= 480 12108 ? "smartphones" 12109 : screenWidth <= 768 12110 ? "ipads" 12111 : screenWidth >= 1824 12112 ? "large-screens" 12113 : "desktop"; 12114 12115 map_obj.isMobile = 12116 screenType !== "desktop" && map_obj.settings.mobile_specific === true; 12117 12118 if (map_obj.isMobile) { 12119 const screenConfig = map_obj.settings.screens?.[screenType]; 12120 12121 if (screenConfig) {
12122 Object.assign(map_obj.settings, { 12123 width_mobile: screenConfig.map_width_mobile, 12124 height_mobile: screenConfig.map_height_mobile, 12125 zoom: parseInt(screenConfig.map_zoom_level_mobile), 12126 draggable: screenConfig.map_draggable_mobile !== "false", 12127 scroll_wheel: screenConfig.map_scrolling_wheel_mobile !== "false", 12128 }); 12129 } else { 12130 map_obj.settings.width_mobile = ""; 12131 map_obj.settings.height_mobile = ""; 12132 } 12133 12134 if (map_obj.settings.width_mobile) 12135 $(map_obj.element).css("width", map_obj.settings.width_mobile); 12136 12137 if (map_obj.settings.height_mobile) 12138 $(map_obj.element).css("height", map_obj.settings.height_mobile); 12139 } 12140 12141 // -------------------------------------------------- 12142 // 2. Map Options 12143 // -------------------------------------------------- 12144 const center = L.latLng( 12145 map_obj.settings.center_lat, 12146 map_obj.settings.center_lng 12147 ); 12148 12149 const options = { 12150 center, 12151 zoom: parseInt(map_obj.settings.zoom), 12152 minZoom: parseInt(map_obj.settings.min_zoom), 12153 maxZoom: parseInt(map_obj.settings.max_zoom), 12154 scrollWheelZoom: map_obj.settings.scroll_wheel !== "true", 12155 doubleClickZoom: map_obj.settings.doubleclickzoom === true, 12156 dragging: map_obj.settings.draggable, 12157 zoomControl: false, 12158 attributionControl: map_obj.settings.attribution_screen_control, 12159 closePopupOnClick: 12160 map_obj.settings.close_infowindow_on_map_click === true, 12161 }; 12162 12163 // -------------------------------------------------- 12164 // 3. Map Provider Setup 12165 // -------------------------------------------------- 12166 const provider = 12167 map_obj.settings.tiles_provider || 12168 wpgmp_local.tiles_provider || 12169 "OpenStreetMap.Mapnik"; 12170 const mapElement = map_obj.element; 12171 try { 12172 // Special case: Bing Maps (not supported by Leaflet Providers) 12173 try { 12174 // Special case: Bing Maps (not in Leaflet Providers) 12175 if (provider === "bingmap" && wpgmp_local.wpomp_bingmap_key) { 12176 const apiKey = wpgmp_local.wpomp_bingmap_key; 12177 const defaults = { key: apiKey, detectRetina: true }; 12178 map_obj.bingmaplayers = {}; 12179 12180 [ 12181 "Aerial", 12182 "AerialWithLabelsOnDemand", 12183 "RoadOnDemand", 12184 "CanvasDark", 12185 "CanvasLight", 12186 "CanvasGray", 12187 ].forEach((type) => { 12188 map_obj.bingmaplayers[type] = L.bingLayer({ 12189 ...defaults, 12190 imagerySet: type, 12191 }); 12192 }); 12193 12194 map_obj.bingmaplayers["CanvasGray"].addTo(map_obj.map); 12195 }else if(provider.indexOf('CartoDB') !== -1){ 12196 12197 map_obj.map = L.map(mapElement, options); 12198 var cartodb_key = wpgmp_local.wpgmp_cartodb_key || ''; 12199 L.tileLayer 12200 .provider(provider, { apiKey: cartodb_key }) 12201 .addTo(map_obj.map); 12202 } 12203 // Standard Leaflet Providers support nested "BasemapAT.grau", "CartoDB.Positron", etc. 12204 else if( provider == 'Leaflet.OpenFreeMap'){ 12205 map_obj.map = L.map(mapElement, options); 12206 map_obj.maplibreLayer = L.maplibreGL( { 12207 style: 'https://tiles.openfreemap.org/styles/liberty', 12208 attribution: 'Leaflet | OpenFreeMap © OpenMapTiles Data from OpenStreetMap' 12209 } ).addTo( map_obj.map ); 12210 } else { 12211 map_obj.map = L.map(mapElement, options); 12212 if( map_obj.map_data.map_options.map_tile_url != 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'){ 12213 L.tileLayer(map_obj.map_data.map_options.map_tile_url, { 12214 maxZoom: parseInt(map_obj.settings.max_zoom), 12215 }).addTo(map_obj.map); 12216 }else{ 12217 L.tileLayer 12218 .provider(provider, { accessToken: wpgmp_local.wpgmp_mapbox_key }) 12219 .addTo(map_obj.map); 12220 12221 } 12222 } 12223 } catch (error) { 12224 console.error( 12225 "Error loading map tiles from provider:", 12226 provider, 12227 error 12228 ); 12229 } 12230 } catch (error) { 12231 console.error("Error initializing tile layer:", error); 12232 } 12233 12234 // -------------------------------------------------- 12235 // 4. Controls (Zoom, Scale, Fullscreen, Locate) 12236 // -------------------------------------------------- 12237 if (map_obj.settings.scale_control) { 12238 L.control.scale({ position: "bottomleft" }).addTo(map_obj.map); 12239 } 12240 12241 if (map_obj.settings.zoom_control === true) { 12242 L.control 12243 .zoom({ 12244 position: map_obj.settings.zoom_control_position, 12245 }) 12246 .addTo(map_obj.map); 12247 } 12248 12249 if (map_obj.settings.full_screen_control === true) { 12250 map_obj.map.addControl( 12251 new L.Control.Fullscreen({ 12252 position: map_obj.settings.full_screen_control_position, 12253 }) 12254 ); 12255 } 12256 12257 if (map_obj.map_data.page === "edit_location") { 12258 setTimeout(() => map_obj.map.invalidateSize(true), 300); 12259 } 12260 12261 // -------------------------------------------------- 12262 // 5. Map Type Control / Style Dropdowns 12263 // -------------------------------------------------- 12264 if (map_obj.settings.map_type_control) { 12265 let mapStylesMarkup = map_obj.settings.openstreet_styles_markup; 12266 if (provider === "mapbox") 12267 mapStylesMarkup = map_obj.settings.map_box_styles_markup; 12268 12269 const MapStyleControl = L.Control.extend({ 12270 options: { position: map_obj.settings.map_type_control_position }, 12271 onAdd() { 12272 const div = L.DomUtil.create("div", "info legend"); 12273 div.innerHTML = mapStylesMarkup; 12274 div.firstChild.onmousedown = div.firstChild.ondblclick = 12275 L.DomEvent.stopPropagation; 12276 return div; 12277 }, 12278 }); 12279 12280 map_obj.map.addControl(new MapStyleControl()); 12281 12282 // Map style dropdowns for providers 12283 $(document).on("change", "select.wpomp_map_type", function () { 12284 const provider = $(this).val(); 12285 12286 // Remove previously added base layer 12287 if (map_obj.maplibreLayer) { 12288 map_obj.map.removeLayer(map_obj.maplibreLayer); 12289 map_obj.maplibreLayer = null; 12290 } 12291 12292 if (map_obj.mapTypeLayer) { 12293 map_obj.map.removeLayer(map_obj.mapTypeLayer); 12294 map_obj.mapTypeLayer = null; 12295 } 12296 12297 // OpenFreeMap / MapLibre 12298 if (provider === "Leaflet.OpenFreeMap") { 12299 12300 map_obj.maplibreLayer = L.maplibreGL({ 12301 style: "https://tiles.openfreemap.org/styles/liberty", 12302 attribution: 12303 "Leaflet | OpenFreeMap © OpenMapTiles Data from OpenStreetMap" 12304 }).addTo(map_obj.map); 12305 12306 return; 12307 } 12308 12309 // Normal Leaflet Provider 12310 const config = map_obj.settings.openstreet_styles[provider]; 12311 12312 if (config) { 12313 map_obj.mapTypeLayer = L.tileLayer(config, { 12314 maxZoom: parseInt(map_obj.settings.max_zoom) 12315 }).addTo(map_obj.map); 12316 } 12317 }); 12318 12319 $(document).on("change", "select.wpomp_mapbox_type", function () { 12320 const tile_url = `https://api.mapbox.com/styles/v1/mapbox/${$( 12321 this 12322 ).val()}/tiles/{z}/{x}/{y}?access_token=${
12323 wpgmp_local.wpgmp_mapbox_key 12324 }`; 12325 L.tileLayer(tile_url, { 12326 maxZoom: parseInt(map_obj.settings.max_zoom), 12327 }).addTo(map_obj.map); 12328 }); 12329 } 12330 12331 // Further sections to be optimized next: 12332 // - Marker creation, listing integration, and filters 12333 // - Event bindings and route controls 12334 // -------------------------------------------------- 12335 // 6. Marker Creation, Responsive Layout & Listings 12336 // -------------------------------------------------- 12337 12338 // Create and display all markers 12339 map_obj.create_markers(); 12340 map_obj.display_markers(); 12341 12342 // Load Google Fonts if defined 12343 if (typeof map_obj.settings.google_fonts !== "undefined") { 12344 map_obj.load_google_fonts(map_obj.settings.google_fonts); 12345 } 12346 12347 // Capture initial HTML listing content for advanced template 12348 if (map_obj.map_data.map_options?.advance_template === true) { 12349 const listingEl = document.querySelector( 12350 '[data-listing-content="true"][data-wpgmp-map-id]' 12351 ); 12352 if (listingEl?.innerHTML) { 12353 map_obj.map_data.listing.listing_placeholder = listingEl.innerHTML; 12354 } 12355 } 12356 12357 // Fire map loaded hook 12358 map_obj.map_loaded(); 12359 // Adjust layout based on screen/mobile settings 12360 map_obj.responsive_map(); 12361 12362 // Initialize direction routes if defined 12363 if (map_obj.map_data.routes) { 12364 map_obj.create_routes(); 12365 } 12366 12367 // Show search control box if enabled 12368 if (map_obj.settings.search_control === true) { 12369 map_obj.show_search_control(); 12370 } 12371 12372 // Show locateme control if enabled 12373 if (map_obj.settings.locateme_control === true) { 12374 map_obj.register_locate_me_control(); 12375 } 12376 12377 // Further sections to be optimized next: 12378 // - Listing pagination & sorting 12379 // - Filter UI and update handlers 12380 // - Tabs, accordions, events, and route direction logic 12381 12382 // -------------------------------------------------- 12383 // 7. Listing Pagination, Sorting, and Filters 12384 // -------------------------------------------------- 12385 12386 const listing = map_obj.map_data.listing; 12387 12388 // Sort default if defined 12389 if (listing?.default_sorting) { 12390 const sort = listing.default_sorting; 12391 const dataType = sort.orderby === "listorder" ? "num" : ""; 12392 map_obj.sorting(sort.orderby, sort.inorder, dataType); 12393 } 12394 12395 // If no listing, but tab filters exist (e.g. category tab sorting) 12396 const tabs = map_obj.map_data.map_tabs; 12397 if (!listing && tabs?.category_tab?.cat_tab) { 12398 const catTab = tabs.category_tab; 12399 const order = catTab.cat_post_order ?? "asc"; 12400 map_obj.sorting("title", order); 12401 } 12402 12403 // Pagination UI 12404 if (listing) { 12405 $(map_obj.container).on("click", ".categories_filter_reset_btn", () => { 12406 $(map_obj.container) 12407 .find(".wpgmp_filter_wrappers select") 12408 .each(function () { 12409 $(this).val($(this).find("option:first").val()); 12410 }); 12411 12412 $(".wpgmp_search_input").val(""); 12413 map_obj.update_filters(); 12414 }); 12415 12416 // Custom filters 12417 map_obj.display_filters_listing(); 12418 map_obj.custom_filters(); 12419 12420 // Pagination plugin 12421 $(map_obj.container) 12422 .find(`.location_pagination${map_obj.map_data.map_property.map_id}`) 12423 .pagination(map_obj.show_places.length, { 12424 callback: map_obj.display_places_listing, 12425 map_data: map_obj, 12426 items_per_page: listing.pagination.listing_per_page, 12427 prev_text: wpgmp_local.prev, 12428 next_text: wpgmp_local.next, 12429 }); 12430 } 12431 12432 // Further sections to be optimized next: 12433 // - Tabs, accordions, direction panels 12434 // - Marker detail click and scroll to view 12435 // - GeoJSON & additional interactions 12436 // -------------------------------------------------- 12437 // 8. GeoJSON, Marker Click, Tabs, and Directions Panel 12438 // -------------------------------------------------- 12439 12440 // Apply filters from URL if enabled 12441 if (map_obj.settings.url_filters === true) { 12442 map_obj.apply_url_filters(); 12443 } 12444 12445 // Initialize tabs, toggle containers, and checkbox filtering 12446 if (typeof map_obj.map_data.map_tabs !== "undefined") { 12447 map_obj.map_widgets(); 12448 12449 const $container = $(map_obj.container); 12450 12451 $container 12452 .find(".wpgmp_toggle_main_container div[id^='wpgmp_tab_']") 12453 .hide(); 12454 12455 if (!map_obj.settings.infowindow_filter_only) { 12456 $container 12457 .find("input[data-marker-category], input[data-marker-location]") 12458 .prop("checked", true); 12459 } 12460 12461 if (map_obj.map_data.map_tabs.hide_tabs_default === true) { 12462 $container.find(".wpgmp_toggle_container").trigger("click"); 12463 } 12464 12465 $container 12466 .find(".wpgmp_toggle_main_container div[id^='wpgmp_tab_']") 12467 .first() 12468 .show(); 12469 } 12470 12471 // -------------------------------------------------- 12472 // 9. Accordion, Auto Suggest, Directions Panel, Events 12473 // -------------------------------------------------- 12474 12475 $(map_obj.container) 12476 .find(".wpgmp-accordion") 12477 .accordion({ speed: "slow" }); 12478
12479 map_obj.google_auto_suggest($(".wpgmp_auto_suggest")); 12480 12481 // -------------------------------------------------- 12482 // 10. Final Event Registration 12483 // -------------------------------------------------- 12484 12485 map_obj.register_events(); 12486 } 12487 12488 event_listener(obj, type, func) { 12489 if (obj && typeof obj.on === "function") { 12490 obj.on(type, func); 12491 } else { 12492 console.warn("event_listener: .on() is not a function for", obj); 12493 } 12494 } 12495 12496 create_leaflet_marker({ 12497 map, 12498 position, // [lat, lng] 12499 iconUrl = "", 12500 popupAnchor = [0, -30], 12501 draggable = false, 12502 title = "", 12503 isDivIcon = false, 12504 label = "", 12505 customClass = "wpgmp-custom-label-icon", 12506 addToMap = true, 12507 }) { 12508 var map_obj = this; 12509 let icon; 12510 var iconSize = map_obj.getMarkerSize(); 12511 12512 if (!iconUrl || iconUrl.trim() === "") { 12513 iconUrl = 12514 map_obj.settings.marker_default_icon || 12515 wpgmp_local.default_marker_icon; 12516 } 12517 12518 const isSvg = iconUrl.toLowerCase().includes('image/svg') || iconUrl.toLowerCase().endsWith('.svg'); 12519 12520 if (isDivIcon) { 12521 const divIconOptions = { 12522 className: customClass, 12523 html: `<div class="wpgmp-marker-label">${label}</div>`, 12524 }; 12525 12526 if (isSvg) { 12527 divIconOptions.iconSize = iconSize; 12528 divIconOptions.iconAnchor = [iconSize[0] / 2, iconSize[1] / 2]; 12529 } 12530 12531 icon = L.divIcon(divIconOptions); 12532 } else { 12533 const iconOptions = { 12534 iconUrl, 12535 iconAnchor: [iconSize[0] / 2, iconSize[1]], 12536 popupAnchor, 12537 }; 12538 12539 // Only apply iconSize if SVG 12540 if (isSvg) { 12541 iconOptions.iconSize = iconSize; 12542 } 12543 12544 icon = L.icon(iconOptions); 12545 } 12546 12547 const marker = L.marker(position, { 12548 icon, 12549 draggable, 12550 title, 12551 }); 12552 12553 if (addToMap && map) { 12554 marker.addTo(map); 12555 } 12556 12557 return marker; 12558 } 12559 12560 map_loaded() { 12561 const map_obj = this; 12562 const map = map_obj.map; 12563 12564 // Center map using current location or static marker 12565 if (map_obj.settings.center_by_nearest === true) { 12566 map_obj.center_by_nearest(); 12567 } else if (map_obj.settings.show_center_marker === true) { 12568 map_obj.show_center_marker(); 12569 } 12570 12571 // Show center circle if manually positioned 12572 if ( 12573 map_obj.settings.center_by_nearest === false && 12574 map_obj.settings.show_center_circle === true 12575 ) { 12576 map_obj.show_center_circle(); 12577 } 12578 12579 // Fit bounds to all markers if enabled 12580 if (map_obj.settings.fit_bounds === true) { 12581 map_obj.fit_bounds(); 12582 } 12583 12584 function adjustLeafletPopup(popup) { 12585 const popupEl = popup.getElement(); 12586 if (!popupEl) return; 12587 12588 const wrapper = popupEl.querySelector(".leaflet-popup-content-wrapper"); 12589 const content = popupEl.querySelector(".leaflet-popup-content"); 12590 const markerSize = map_obj.getMarkerSize?.() || [32, 32]; 12591 12592 if (wrapper) { 12593 wrapper.classList.add("wpgmp-infowindow-addon"); 12594 wrapper.removeAttribute("style"); 12595 } 12596 if (content) { 12597 content.removeAttribute("style"); 12598 } 12599 12600 // Calculate the popup width and center it 12601 const rect = popupEl.getBoundingClientRect(); 12602 const width = rect.width || 200; // fallback if rect is 0 12603 popupEl.style.left = `-${width / 2}px`; 12604 popupEl.style.bottom = `${markerSize[1] / 2}px`; 12605 } 12606 12607 12608 // Remove inline styling for Leaflet popups and apply custom class 12609 map.on("popupopen", function (e) { 12610 adjustLeafletPopup(e.popup); 12611 }); 12612 12613 map.on("zoomend", function () { 12614 const openPopup = map._popup; // Leaflet stores currently open popup here 12615 if (openPopup) { 12616 adjustLeafletPopup(openPopup); 12617 } 12618 }); 12619 12620 12621 } 12622 } 12623 12624 window.WpgmpLeafletMaps = WpgmpLeafletMaps; 12625})(jQuery, window, document); 12626 12627// ====== Google Maps API Error Handler (add at top of file) ====== 12628window.gm_authFailure = function () { 12629 showWpgmpApiError( 12630 'Google Maps authentication failed. Check your API key, billing status, and domain restrictions.', 12631 'https://developers.google.com/maps/documentation/javascript/error-messages' 12632 ); 12633}; 12634 12635(function () { 12636const patterns = [ 12637 { 12638 match: 'NoApiKeys', 12639 msg: 'No Google Maps API key has been set. Please add a valid API key in the plugin settings.', 12640 link: 'https://developers.google.com/maps/documentation/javascript/error-messages#no-api-keys' 12641 }, 12642 { 12643 match: 'InvalidKeyMapError',
12644 msg: 'The Google Maps API key is invalid.', 12645 link: 'https://developers.google.com/maps/documentation/javascript/error-messages#invalid-key-map-error' 12646 }, 12647 { 12648 match: 'ApiProjectMapError', 12649 msg: 'There is a problem with the Google Maps API configuration. The API key may not have been added, may be invalid, or the Google Cloud project linked to the API key may be deleted, disabled, or misconfigured.', 12650 link: 'https://developers.google.com/maps/documentation/javascript/error-messages#api-project-map-error' 12651 }, 12652 { 12653 match: 'BillingNotEnabledMapError', 12654 msg: 'Billing is not enabled for this Google Maps API project.', 12655 link: 'https://developers.google.com/maps/documentation/javascript/error-messages#billing-not-enabled-map-error' 12656 }, 12657 { 12658 match: 'ApiNotActivatedMapError', 12659 msg: 'The Maps JavaScript API is not activated for this project.', 12660 link: 'https://developers.google.com/maps/documentation/javascript/error-messages#api-not-activated-map-error' 12661 }, 12662 { 12663 match: 'RefererNotAllowedMapError', 12664 msg: 'This domain is not authorized to use this API key.', 12665 link: 'https://developers.google.com/maps/documentation/javascript/error-messages#referer-not-allowed-map-error' 12666 }, 12667 { 12668 match: 'OverQuotaMapError', 12669 msg: 'The Google Maps API quota has been exceeded for this key.', 12670 link: 'https://developers.google.com/maps/documentation/javascript/error-messages#over-quota-map-error' 12671 }, 12672]; 12673 12674 const GENERIC_DOC_LINK = 'https://developers.google.com/maps/documentation/javascript/error-messages'; 12675 12676 function cleanGoogleMessage(msg) { 12677 // Strip Google's trailing doc URL from the raw message, if present 12678 return msg.split('https://developers.google.com')[0].trim(); 12679 } 12680 12681 function intercept(level) { 12682 const original = console[level]; 12683 console[level] = function (...args) { 12684 const msg = args.join(' '); 12685 const hit = patterns.find(p => msg.includes(p.match)); 12686 12687 if (hit) { 12688 // Known error â use friendly message + specific doc link 12689 showWpgmpApiError(hit.msg, hit.link); 12690 } else if (msg.includes('Google Maps') || msg.includes('MapError') || msg.includes('ApiKeys')) { 12691 // Unrecognized Google Maps error â show actual message + generic doc link 12692 // showWpgmpApiError(cleanGoogleMessage(msg), GENERIC_DOC_LINK); 12693 } 12694 12695 original.apply(console, args); 12696 }; 12697 } 12698 12699 intercept('error'); 12700 intercept('warn'); 12701})(); 12702 12703function showWpgmpApiError(message, docLink) { 12704 if (!wpgmp_local.is_admin) return; 12705 const mapElements = document.querySelectorAll('.wpgmp_map, #wpgmp_map, #wpgmp_map_preview'); 12706 12707 mapElements.forEach(function (mapEl) { 12708 if (mapEl.querySelector('.wpgmp-error-overlay')) return; // avoid duplicates 12709 12710 mapEl.style.position = mapEl.style.position || 'relative'; 12711 12712 const overlay = document.createElement('div'); 12713 overlay.className = 'wpgmp-error-overlay'; 12714 overlay.innerHTML = ` 12715 <div class="wpgmp-error-box"> 12716 <span class="wpgmp-error-icon">â ï¸</span> 12717 <p>${message}</p> 12718 ${docLink ? `<a href="${docLink}" target="_blank" rel="noopener noreferrer" class="wpgmp-error-link">Learn more</a>` : ''} 12719 </div> 12720 `; 12721 mapEl.appendChild(overlay); 12722 }); 12723} 12724// ====== End Error Handler ====== 12725 12726class WpgmpMapFactory { 12727 create(provider, element, options, places) { 12728 // Use fallback if provider is missing 12729 provider = provider || (options?.provider) || 'google'; 12730 options.provider = provider; // enforce for downstream use 12731 12732 switch (provider.toLowerCase()) { 12733 case 'leaflet': 12734 return new WpgmpLeafletMaps(element, options, places); 12735 case 'google': 12736 return new WpgmpGoogleMaps(element, options, places); 12737 default: 12738 console.warn(`Unknown provider "${provider}". Falling back to Google Maps.`); 12739 return new WpgmpGoogleMaps(element, options, places); 12740 } 12741 } 12742} 12743(function ($, window, document) { 12744 "use strict"; 12745 12746 $.fn.maps = function (options = {}, places = []) { 12747 return this.each(function () { 12748 const stepLabel = `[wpgmp/maps]`; 12749 12750 if (typeof options === 'string') { 12751 try { 12752 options = JSON.parse(atob(options)); 12753 if (wpgmp_local.debug_mode) { 12754 console.log(`${stepLabel} [Step 1] Options decoded from base64`, options); 12755 } 12756 } catch (e) { 12757 console.error(`${stepLabel} [Step 1] Failed to decode options:`, e); 12758 options = {}; 12759 } 12760 } 12761 12762 if (!$.data(this, "wpgmp_maps")) { 12763 let provider = wpgmp_local.map_provider || "google"; 12764 if (provider !== "google") { 12765 provider = "leaflet"; 12766 } 12767 12768 if (wpgmp_local.debug_mode) { 12769 console.log(`${stepLabel} [Step 2] Preparing to initialize map...`); 12770 console.log(`${stepLabel} Provider: ${provider}`); 12771 console.log(`${stepLabel} Target Element:`, this); 12772 console.log(`${stepLabel} Options:`, options); 12773 } 12774 12775 setTimeout(() => { 12776 const instance = new WpgmpMapFactory().create(provider, this, options, places); 12777 instance.init(); 12778 $.data(this, "wpgmp_maps", instance); 12779 12780 if (wpgmp_local.debug_mode) { 12781 console.log(`${stepLabel} [Step 3] Map instance created and initialized.`); 12782 } 12783 12784 // ð Internal event to signal complete readiness 12785 if (wpgmp_local.debug_mode) { 12786 console.log(`${stepLabel} [Step 4] Events dispatched: wpgmpInstanceReady, wpgmpLoaded`); 12787 } 12788 const internalEvent = new CustomEvent("wpgmpInstanceReady", { 12789 detail: { element: this, instance, provider }, 12790 }); 12791 document.dispatchEvent(internalEvent); 12792 12793 // External/public event 12794 const externalEvent = new CustomEvent("wpgmpLoaded", { 12795 detail: { element: this, instance, provider }, 12796 }); 12797 document.dispatchEvent(externalEvent); 12798 12799 12800 12801 }, wpgmp_local.set_timeout); 12802 } else { 12803 if (wpgmp_local.debug_mode) { 12804 console.log(`${stepLabel} [Skipped] Map already initialized on element:`, this); 12805 } 12806 } 12807 }); 12808 }; 12809})(jQuery, window, document); 12810 12811function wpgmpInitMap() { 12812 jQuery(document).ready(function ($) { 12813 var stepLabel = `[wpgmpInitMap]`; 12814 12815 if (!$.fn.maps) { 12816 if (wpgmp_local.debug_mode) { 12817 console.warn(`${stepLabel} [Abort] $.fn.maps not defined`); 12818 } 12819 return; 12820 } 12821 12822 // â STEP 1: Initialize each map 12823 $(".wpgmp_map").each(function () { 12824 stepLabel = `[wpgmpShowMap]`; 12825 const mapId = $(this).data("map-id"); 12826 const mapVarName = "mapdata" + mapId; 12827 const mapData = window.wpgmp?.[mapVarName]; 12828 12829 if (mapData) { 12830 if (wpgmp_local.debug_mode) { 12831 console.log(`${stepLabel} [Step 1] Map data found for ID: ${mapId}`); 12832 } 12833 $("#map" + mapId).maps(mapData); 12834 } else { 12835 if (wpgmp_local.debug_mode) { 12836 console.warn(`${stepLabel} [Step 1] Map data missing for ID: ${mapId}, retrying in ${wpgmp_local.set_timeout}ms...`); 12837 } 12838 12839 setTimeout(() => { 12840 const retryData = window.wpgmp?.[mapVarName]; 12841 if (retryData) { 12842 if (wpgmp_local.debug_mode) { 12843 console.log(`${stepLabel} [Step 1] Retry succeeded for ID: ${mapId}`); 12844 } 12845 $("#map" + mapId).maps(retryData); 12846 } else { 12847 console.error(`${stepLabel} [Step 1] Retry failed: Map data still missing for ID: ${mapId}`); 12848 } 12849 }, wpgmp_local.set_timeout); 12850 } 12851 }); 12852
12853 // â STEP 2: Listen for internal complete signal 12854 document.addEventListener("wpgmpInstanceReady", function (e) { 12855 const { element, instance, provider } = e.detail; 12856 const mapId = $(element).data("map-id"); 12857 12858 if (wpgmp_local.debug_mode) { 12859 console.log(`${stepLabel} [Step 2] Map fully initialized.`); 12860 console.log(`${stepLabel} Map ID: ${mapId}`); 12861 console.log(`${stepLabel} Provider: ${provider}`); 12862 console.log(`${stepLabel} Instance:`, instance); 12863 } 12864 }); 12865 12866 // â STEP 3: Dispatch global ready signal 12867 window.wpgmpInitialized = true; 12868 stepLabel = `[wpgmpInitMap]`; 12869 setTimeout(() => { 12870 if (wpgmp_local.debug_mode) { 12871 console.log(`${stepLabel} [Step 1] Global event dispatched: wpgmpReady`); 12872 } 12873 document.dispatchEvent(new Event("wpgmpReady")); 12874 }, wpgmp_local.set_timeout); 12875 }); 12876}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.