mw.loader.implement("ext.wrmap@urhzq",function($,jQuery,require,module){const wrmap="";class BaseEvent{constructor(type){this.propagationStopped;this.defaultPrevented;this.type=type;this.target=null;}preventDefault(){this.defaultPrevented=true;}stopPropagation(){this.propagationStopped=true;}}const Event=BaseEvent;const ObjectEventType={PROPERTYCHANGE:"propertychange"};class Disposable{constructor(){this.disposed=false;}dispose(){if(!this.disposed){this.disposed=true;this.disposeInternal();}}disposeInternal(){}}const Disposable$1=Disposable;function binarySearch(haystack,needle,comparator){let mid,cmp;comparator=comparator||ascending;let low=0;let high=haystack.length;let found=false;while(low>1);cmp=+comparator(haystack[mid],needle);if(cmp<0){low=mid+1;}else{high=mid;found=!cmp;}}return found?low:~low;}function ascending(a,b){return a>b?1:a0){return i-1;}return i;}}return n-1;}if(direction>0){for(let i=1;i0||strict&&res===0);});}function TRUE(){return true;}function FALSE(){return false;}function VOID(){}function memoizeOne(fn){let called=false;let lastResult;let lastArgs;let lastThis;return function(){const nextArgs=Array.prototype.slice.call(arguments);if(!called||this!==lastThis||!equals$2(nextArgs,lastArgs)){called=true;lastThis=this;lastArgs=nextArgs;lastResult=fn.apply(this,arguments);}return lastResult;};}function clear(object){for(const property in object){delete object[property];}}function isEmpty$1(object){let property;for(property in object){return false;}return!property;}class Target extends Disposable$1{constructor(target){super();this.eventTarget_=target;this.pendingRemovals_=null;this.dispatching_=null;this.listeners_=null;}addEventListener(type,listener){if(!type||!listener){return;}const listeners=this. listeners_||(this.listeners_={});const listenersForType=listeners[type]||(listeners[type]=[]);if(!listenersForType.includes(listener)){listenersForType.push(listener);}}dispatchEvent(event){const isString=typeof event==="string";const type=isString?event:event.type;const listeners=this.listeners_&&this.listeners_[type];if(!listeners){return;}const evt=isString?new Event(event):(event);if(!evt.target){evt.target=this.eventTarget_||this;}const dispatching=this.dispatching_||(this.dispatching_={});const pendingRemovals=this.pendingRemovals_||(this.pendingRemovals_={});if(!(type in dispatching)){dispatching[type]=0;pendingRemovals[type]=0;}++dispatching[type];let propagate;for(let i=0,ii=listeners.length;i0;}removeEventListener(type,listener){const listeners=this.listeners_&&this.listeners_[type];if(listeners){const index=listeners.indexOf(listener);if(index!==-1){if(this.pendingRemovals_&&type in this.pendingRemovals_){listeners[index]=VOID;++this.pendingRemovals_[type];}else{listeners.splice(index,1);if(listeners.length===0){delete this.listeners_[type];}}}}}}const EventTarget=Target;const EventType={CHANGE:"change",ERROR:"error",BLUR:"blur",CLEAR:"clear",CONTEXTMENU:"contextmenu",CLICK:"click",DBLCLICK:"dblclick",DRAGENTER:"dragenter",DRAGOVER:"dragover",DROP:"drop",FOCUS:"focus",KEYDOWN:"keydown",KEYPRESS:"keypress",LOAD:"load",RESIZE:"resize", TOUCHMOVE:"touchmove",WHEEL:"wheel"};function listen(target,type,listener,thisArg,once){if(thisArg&&thisArg!==target){listener=listener.bind(thisArg);}if(once){const originalListener=listener;listener=function(){target.removeEventListener(type,listener);originalListener.apply(this,arguments);};}const eventsKey={target,type,listener};target.addEventListener(type,listener);return eventsKey;}function listenOnce(target,type,listener,thisArg){return listen(target,type,listener,thisArg,true);}function unlistenByKey(key){if(key&&key.target){key.target.removeEventListener(key.type,key.listener);clear(key);}}class Observable extends EventTarget{constructor(){super();this.on=this.onInternal;this.once=this.onceInternal;this.un=this.unInternal;this.revision_=0;}changed(){++this.revision_;this.dispatchEvent(EventType.CHANGE);}getRevision(){return this.revision_;}onInternal(type,listener){if(Array.isArray(type)){const len=type.length;const keys=new Array(len);for(let i=0;i0){this.pop();}}extend(arr){for(let i=0,ii=arr.length;ithis.getLength()){throw new Error("Index out of bounds: "+index);}if(this.unique_){this.assertUnique_(elem);}this.array_.splice(index,0,elem);this.updateLength_();this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD,elem,index));}pop(){return this.removeAt(this.getLength()-1);}push(elem){if(this.unique_){this.assertUnique_(elem);}const n=this.getLength();this.insertAt(n,elem);return this.getLength();}remove(elem){const arr=this.array_;for(let i =0,ii=arr.length;i=this.getLength()){return void 0;}const prev=this.array_[index];this.array_.splice(index,1);this.updateLength_();this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE,prev,index));return prev;}setAt(index,elem){const n=this.getLength();if(index>=n){this.insertAt(index,elem);return;}if(index<0){throw new Error("Index out of bounds: "+index);}if(this.unique_){this.assertUnique_(elem,index);}const prev=this.array_[index];this.array_[index]=elem;this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE,prev,index));this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD,elem,index));}updateLength_(){this.set(Property$3.LENGTH,this.array_.length);}assertUnique_(elem,except){for(let i=0,ii=this.array_.length;imaxX){relationship=relationship|Relationship.RIGHT;}if(ymaxY){relationship=relationship|Relationship.ABOVE;}if(relationship===Relationship.UNKNOWN){relationship=Relationship.INTERSECTING;}return relationship;}function createEmpty(){return[Infinity,Infinity,-Infinity,-Infinity];}function createOrUpdate$2(minX,minY,maxX,maxY,dest){if(dest){dest[0]=minX;dest[1]=minY;dest[2]=maxX;dest[3]=maxY;return dest;}return[ minX,minY,maxX,maxY];}function createOrUpdateEmpty(dest){return createOrUpdate$2(Infinity,Infinity,-Infinity,-Infinity,dest);}function createOrUpdateFromCoordinate(coordinate,dest){const x=coordinate[0];const y=coordinate[1];return createOrUpdate$2(x,y,x,y,dest);}function createOrUpdateFromFlatCoordinates(flatCoordinates,offset,end,stride,dest){const extent=createOrUpdateEmpty(dest);return extendFlatCoordinates(extent,flatCoordinates,offset,end,stride);}function equals$1(extent1,extent2){return extent1[0]==extent2[0]&&extent1[2]==extent2[2]&&extent1[1]==extent2[1]&&extent1[3]==extent2[3];}function extend$1(extent1,extent2){if(extent2[0]extent1[2]){extent1[2]=extent2[2];}if(extent2[1]extent1[3]){extent1[3]=extent2[3];}return extent1;}function extendCoordinate(extent,coordinate){if(coordinate[0]extent[2]){extent[2]=coordinate[0];}if( coordinate[1]extent[3]){extent[3]=coordinate[1];}}function extendFlatCoordinates(extent,flatCoordinates,offset,end,stride){for(;offsetextent2[0]){intersection[0]=extent1[0];}else{intersection[0]=extent2[0];}if(extent1[1]>extent2[1]){intersection[1]=extent1[1];}else{intersection[1]=extent2[1];}if(extent1[2]=extent2[0]&&extent1[1 ]<=extent2[3]&&extent1[3]>=extent2[1];}function isEmpty(extent){return extent[2]=minX&&x<=maxX;}if(!intersects2&&!!(endRel&Relationship.RIGHT)&&!(startRel&Relationship.RIGHT)){y=endY-(endX-maxX)*slope;intersects2=y>=minY&&y<=maxY;}if(! intersects2&&!!(endRel&Relationship.BELOW)&&!(startRel&Relationship.BELOW)){x=endX-(endY-minY)/slope;intersects2=x>=minX&&x<=maxX;}if(!intersects2&&!!(endRel&Relationship.LEFT)&&!(startRel&Relationship.LEFT)){y=endY-(endX-minX)*slope;intersects2=y>=minY&&y<=maxY;}}return intersects2;}function applyTransform(extent,transformFn,dest,stops){if(isEmpty(extent)){return createOrUpdateEmpty(dest);}let coordinates2=[];if(stops>1){const width=extent[2]-extent[0];const height=extent[3]-extent[1];for(let i=0;i=projectionExtent[2])){const worldWidth=getWidth(projectionExtent);const worldsAway=Math.floor((center[0]-projectionExtent[0])/worldWidth);const offset=worldsAway*worldWidth;extent[0]-=offset;extent[2]-=offset;}return extent;}function wrapAndSliceX(extent,projection){if(projection.canWrapX()){const projectionExtent=projection.getExtent();if(!isFinite(extent[0])||!isFinite(extent[2])){return[[projectionExtent[0],extent[1],projectionExtent[2],extent[3]]];}wrapX$2(extent,projection);const worldWidth=getWidth(projectionExtent);if(getWidth(extent)>worldWidth){return[[projectionExtent[0],extent[1],projectionExtent[2],extent[3]]];}if(extent[0]projectionExtent[2]){return[[extent[0], extent[1],projectionExtent[2],extent[3]],[projectionExtent[0],extent[1],extent[2]-worldWidth,extent[3]]];}}return[extent];}function clamp(value,min,max){return Math.min(Math.max(value,min),max);}function squaredSegmentDistance(x,y,x1,y1,x2,y2){const dx=x2-x1;const dy=y2-y1;if(dx!==0||dy!==0){const t=((x-x1)*dx+(y-y1)*dy)/(dx*dx+dy*dy);if(t>1){x1=x2;y1=y2;}else if(t>0){x1+=dx*t;y1+=dy*t;}}return squaredDistance(x,y,x1,y1);}function squaredDistance(x1,y1,x2,y2){const dx=x2-x1;const dy=y2-y1;return dx*dx+dy*dy;}function solveLinearSystem(mat){const n=mat.length;for(let i=0;imaxEl){maxEl=absValue;maxRow=r;}}if(maxEl===0){return null;}const tmp=mat[maxRow];mat[maxRow]=mat[i];mat[i]=tmp;for(let j=i+1;j=0;l--){x[l]=mat[ l][n]/mat[l][l];for(let m=l-1;m>=0;m--){mat[m][n]-=mat[m][l]*x[l];}}return x;}function toRadians(angleInDegrees){return angleInDegrees*Math.PI/180;}function modulo(a,b){const r=a%b;return r*b<0?r+b:r;}function lerp(a,b,x){return a+x*(b-a);}function toFixed(n,decimals){const factor=Math.pow(10,decimals);return Math.round(n*factor)/factor;}function floor(n,decimals){return Math.floor(toFixed(n,decimals));}function ceil(n,decimals){return Math.ceil(toFixed(n,decimals));}const HEX_COLOR_RE_=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i;const NAMED_COLOR_RE_=/^([a-z]*)$|^hsla?\(.*\)$/i;function asString(color){if(typeof color==="string"){return color;}return toString(color);}function fromNamed(color){const el=document.createElement("div");el.style.color=color;if(el.style.color!==""){document.body.appendChild(el);const rgb=getComputedStyle(el).color;document.body.removeChild(el);return rgb;}return"";}const fromString=function(){const MAX_CACHE_SIZE=1024;const cache2={};let cacheSize=0; return(function(s){let color;if(cache2.hasOwnProperty(s)){color=cache2[s];}else{if(cacheSize>=MAX_CACHE_SIZE){let i=0;for(const key in cache2){if((i++&3)===0){delete cache2[key];--cacheSize;}}}color=fromStringInternal_(s);cache2[s]=color;++cacheSize;}return color;});}();function asArray(color){if(Array.isArray(color)){return color;}return fromString(color);}function fromStringInternal_(s){let r,g,b,a,color;if(NAMED_COLOR_RE_.exec(s)){s=fromNamed(s);}if(HEX_COLOR_RE_.exec(s)){const n=s.length-1;let d;if(n<=4){d=1;}else{d=2;}const hasAlpha=n===4||n===8;r=parseInt(s.substr(1+0*d,d),16);g=parseInt(s.substr(1+1*d,d),16);b=parseInt(s.substr(1+2*d,d),16);if(hasAlpha){a=parseInt(s.substr(1+3*d,d),16);}else{a=255;}if(d==1){r=(r<<4)+r;g=(g<<4)+g;b=(b<<4)+b;if(hasAlpha){a=(a<<4)+a;}}color=[r,g,b,a/255];}else if(s.startsWith("rgba(")){color=s.slice(5,-1).split(",").map(Number);normalize(color);}else if(s.startsWith("rgb(")){color=s.slice(4,-1).split(",").map(Number);color.push(1);normalize(color); }else{throw new Error("Invalid color");}return color;}function normalize(color){color[0]=clamp(color[0]+0.5|0,0,255);color[1]=clamp(color[1]+0.5|0,0,255);color[2]=clamp(color[2]+0.5|0,0,255);color[3]=clamp(color[3],0,1);return color;}function toString(color){let r=color[0];if(r!=(r|0)){r=r+0.5|0;}let g=color[1];if(g!=(g|0)){g=g+0.5|0;}let b=color[2];if(b!=(b|0)){b=b+0.5|0;}const a=color[3]===void 0?1:Math.round(color[3]*100)/100;return"rgba("+r+","+g+","+b+","+a+")";}class IconImageCache{constructor(){this.cache_={};this.cacheSize_=0;this.maxCacheSize_=32;}clear(){this.cache_={};this.cacheSize_=0;}canExpireCache(){return this.cacheSize_>this.maxCacheSize_;}expire(){if(this.canExpireCache()){let i=0;for(const key in this.cache_){const iconImage=this.cache_[key];if((i++&3)===0&&!iconImage.hasListener()){delete this.cache_[key];--this.cacheSize_;}}}}get(src,crossOrigin,color){const key=getKey$1(src,crossOrigin,color);return key in this.cache_?this.cache_[key]:null;}set(src,crossOrigin, color,iconImage){const key=getKey$1(src,crossOrigin,color);this.cache_[key]=iconImage;++this.cacheSize_;}setSize(maxCacheSize){this.maxCacheSize_=maxCacheSize;this.expire();}}function getKey$1(src,crossOrigin,color){const colorString=color?asString(color):"null";return crossOrigin+":"+src+":"+colorString;}const shared=new IconImageCache();const LayerProperty={OPACITY:"opacity",VISIBLE:"visible",EXTENT:"extent",Z_INDEX:"zIndex",MAX_RESOLUTION:"maxResolution",MIN_RESOLUTION:"minResolution",MAX_ZOOM:"maxZoom",MIN_ZOOM:"minZoom",SOURCE:"source",MAP:"map"};class BaseLayer extends BaseObject$1{constructor(options){super();this.on;this.once;this.un;this.background_=options.background;const properties=Object.assign({},options);if(typeof options.properties==="object"){delete properties.properties;Object.assign(properties,options.properties);}properties[LayerProperty.OPACITY]=options.opacity!==void 0?options.opacity:1;assert(typeof properties[LayerProperty.OPACITY]==="number", "Layer opacity must be a number");properties[LayerProperty.VISIBLE]=options.visible!==void 0?options.visible:true;properties[LayerProperty.Z_INDEX]=options.zIndex;properties[LayerProperty.MAX_RESOLUTION]=options.maxResolution!==void 0?options.maxResolution:Infinity;properties[LayerProperty.MIN_RESOLUTION]=options.minResolution!==void 0?options.minResolution:0;properties[LayerProperty.MIN_ZOOM]=options.minZoom!==void 0?options.minZoom:-Infinity;properties[LayerProperty.MAX_ZOOM]=options.maxZoom!==void 0?options.maxZoom:Infinity;this.className_=properties.className!==void 0?properties.className:"ol-layer";delete properties.className;this.setProperties(properties);this.state_=null;}getBackground(){return this.background_;}getClassName(){return this.className_;}getLayerState(managed){const state=this.state_||{layer:this,managed:managed===void 0?true:managed};const zIndex=this.getZIndex();state.opacity=clamp(Math.round(this.getOpacity()*100)/100,0,1);state.visible=this.getVisible();state. extent=this.getExtent();state.zIndex=zIndex===void 0&&!state.managed?Infinity:zIndex;state.maxResolution=this.getMaxResolution();state.minResolution=Math.max(this.getMinResolution(),0);state.minZoom=this.getMinZoom();state.maxZoom=this.getMaxZoom();this.state_=state;return state;}getLayersArray(array){return abstract();}getLayerStatesArray(states){return abstract();}getExtent(){return(this.get(LayerProperty.EXTENT));}getMaxResolution(){return(this.get(LayerProperty.MAX_RESOLUTION));}getMinResolution(){return(this.get(LayerProperty.MIN_RESOLUTION));}getMinZoom(){return(this.get(LayerProperty.MIN_ZOOM));}getMaxZoom(){return(this.get(LayerProperty.MAX_ZOOM));}getOpacity(){return(this.get(LayerProperty.OPACITY));}getSourceState(){return abstract();}getVisible(){return(this.get(LayerProperty.VISIBLE));}getZIndex(){return(this.get(LayerProperty.Z_INDEX));}setBackground(background){this.background_=background;this.changed();}setExtent(extent){this.set(LayerProperty.EXTENT,extent);} setMaxResolution(maxResolution){this.set(LayerProperty.MAX_RESOLUTION,maxResolution);}setMinResolution(minResolution){this.set(LayerProperty.MIN_RESOLUTION,minResolution);}setMaxZoom(maxZoom){this.set(LayerProperty.MAX_ZOOM,maxZoom);}setMinZoom(minZoom){this.set(LayerProperty.MIN_ZOOM,minZoom);}setOpacity(opacity){assert(typeof opacity==="number","Layer opacity must be a number");this.set(LayerProperty.OPACITY,opacity);}setVisible(visible){this.set(LayerProperty.VISIBLE,visible);}setZIndex(zindex){this.set(LayerProperty.Z_INDEX,zindex);}disposeInternal(){if(this.state_){this.state_.layer=null;this.state_=null;}super.disposeInternal();}}const BaseLayer$1=BaseLayer;const RenderEventType={PRERENDER:"prerender",POSTRENDER:"postrender",PRECOMPOSE:"precompose",POSTCOMPOSE:"postcompose",RENDERCOMPLETE:"rendercomplete"};const ViewHint={ANIMATING:0,INTERACTING:1};const ViewProperty={CENTER:"center",RESOLUTION:"resolution",ROTATION:"rotation"};const DEFAULT_MAX_ZOOM=42;const DEFAULT_TILE_SIZE= 256;const METERS_PER_UNIT$1={"radians":6370997/(2*Math.PI),"degrees":2*Math.PI*6370997/360,"ft":0.3048,"m":1,"us-ft":1200/3937};class Projection{constructor(options){this.code_=options.code;this.units_=options.units;this.extent_=options.extent!==void 0?options.extent:null;this.worldExtent_=options.worldExtent!==void 0?options.worldExtent:null;this.axisOrientation_=options.axisOrientation!==void 0?options.axisOrientation:"enu";this.global_=options.global!==void 0?options.global:false;this.canWrapX_=!!(this.global_&&this.extent_);this.getPointResolutionFunc_=options.getPointResolution;this.defaultTileGrid_=null;this.metersPerUnit_=options.metersPerUnit;}canWrapX(){return this.canWrapX_;}getCode(){return this.code_;}getExtent(){return this.extent_;}getUnits(){return this.units_;}getMetersPerUnit(){return this.metersPerUnit_||METERS_PER_UNIT$1[this.units_];}getWorldExtent(){return this.worldExtent_;}getAxisOrientation(){return this.axisOrientation_;}isGlobal(){return this.global_;} setGlobal(global){this.global_=global;this.canWrapX_=!!(global&&this.extent_);}getDefaultTileGrid(){return this.defaultTileGrid_;}setDefaultTileGrid(tileGrid){this.defaultTileGrid_=tileGrid;}setExtent(extent){this.extent_=extent;this.canWrapX_=!!(this.global_&&extent);}setWorldExtent(worldExtent){this.worldExtent_=worldExtent;}setGetPointResolution(func){this.getPointResolutionFunc_=func;}getPointResolutionFunc(){return this.getPointResolutionFunc_;}}const Projection$1=Projection;const RADIUS$1=6378137;const HALF_SIZE=Math.PI*RADIUS$1;const EXTENT$1=[-HALF_SIZE,-HALF_SIZE,HALF_SIZE,HALF_SIZE];const WORLD_EXTENT=[-180,-85,180,85];const MAX_SAFE_Y=RADIUS$1*Math.log(Math.tan(Math.PI/2));class EPSG3857Projection extends Projection$1{constructor(code){super({code,units:"m",extent:EXTENT$1,global:true,worldExtent:WORLD_EXTENT,getPointResolution:function(resolution,point){return resolution/Math.cosh(point[1]/RADIUS$1);}});}}const PROJECTIONS$1=[new EPSG3857Projection("EPSG:3857"),new EPSG3857Projection("EPSG:102100"),new EPSG3857Projection("EPSG:102113"),new EPSG3857Projection("EPSG:900913"),new EPSG3857Projection("http://www.opengis.net/def/crs/EPSG/0/3857"),new EPSG3857Projection("http://www.opengis.net/gml/srs/epsg.xml#3857")];function fromEPSG4326(input,output,dimension){const length=input.length;dimension=dimension>1?dimension:2;if(output===void 0){if(dimension>2){output=input.slice();}else{output=new Array(length);}}for(let i=0;iMAX_SAFE_Y){y=MAX_SAFE_Y;}else if(y<-MAX_SAFE_Y){y=-MAX_SAFE_Y;}output[i+1]=y;}return output;}function toEPSG4326(input,output,dimension){const length=input.length;dimension=dimension>1?dimension:2;if(output===void 0){if(dimension>2){output=input.slice();}else{output=new Array(length);}}for(let i=0;i=0;--i){if(coordinate1[i]!=coordinate2[i]){equals2=false;break;}}return equals2;}function rotate$1(coordinate,angle){const cosAngle=Math.cos(angle);const sinAngle=Math.sin(angle);const x=coordinate[0]*cosAngle-coordinate[1]*sinAngle;const y=coordinate[1]*cosAngle+coordinate[0]*sinAngle;coordinate[0]=x;coordinate[1]=y;return coordinate;}function scale$2(coordinate,scale2){coordinate[0]*=scale2;coordinate[1]*= scale2;return coordinate;}function wrapX$1(coordinate,projection){if(projection.canWrapX()){const worldWidth=getWidth(projection.getExtent());const worldsAway=getWorldsAway(coordinate,projection,worldWidth);if(worldsAway){coordinate[0]-=worldsAway*worldWidth;}}return coordinate;}function getWorldsAway(coordinate,projection,sourceExtentWidth){const projectionExtent=projection.getExtent();let worldsAway=0;if(projection.canWrapX()&&(coordinate[0]projectionExtent[2])){sourceExtentWidth=sourceExtentWidth||getWidth(projectionExtent);worldsAway=Math.floor((coordinate[0]-projectionExtent[0])/sourceExtentWidth);}return worldsAway;}const DEFAULT_RADIUS=63710088e-1;function getDistance(c1,c2,radius){radius=radius||DEFAULT_RADIUS;const lat1=toRadians(c1[1]);const lat2=toRadians(c2[1]);const deltaLatBy2=(lat2-lat1)/2;const deltaLonBy2=toRadians(c2[0]-c1[0])/2;const a=Math.sin(deltaLatBy2)*Math.sin(deltaLatBy2)+Math.sin(deltaLonBy2)*Math.sin(deltaLonBy2)*Math.cos( lat1)*Math.cos(lat2);return 2*radius*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));}const levels={info:1,warn:2,error:3,none:4};let level=levels.info;function warn(...args){if(level>levels.warn){return;}console.warn(...args);}let showCoordinateWarning=true;function disableCoordinateWarning(disable2){const hide=disable2===void 0?true:disable2;showCoordinateWarning=!hide;}function cloneTransform(input,output){if(output!==void 0){for(let i=0,ii=input.length;i=-180&&coordinate[0]<=180&&coordinate[1]>=-90&&coordinate[1]<=90){showCoordinateWarning=false;warn("Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.");}return coordinate;}}function toUserExtent(extent,sourceProjection){{return extent;}}function fromUserExtent(extent,destProjection){{return extent;}}function addCommon(){addEquivalentProjections(PROJECTIONS$1);addEquivalentProjections(PROJECTIONS);addEquivalentTransforms(PROJECTIONS,PROJECTIONS$1,fromEPSG4326, toEPSG4326);}addCommon();function createExtent(extent,onlyCenter,smooth){return(function(center,resolution,size,isMoving,centerShift){if(!center){return void 0;}if(!resolution&&!onlyCenter){return center;}const viewWidth=onlyCenter?0:size[0]*resolution;const viewHeight=onlyCenter?0:size[1]*resolution;const shiftX=centerShift?centerShift[0]:0;const shiftY=centerShift?centerShift[1]:0;let minX=extent[0]+viewWidth/2+shiftX;let maxX=extent[2]-viewWidth/2+shiftX;let minY=extent[1]+viewHeight/2+shiftY;let maxY=extent[3]-viewHeight/2+shiftY;if(minX>maxX){minX=(maxX+minX)/2;maxX=minX;}if(minY>maxY){minY=(maxY+minY)/2;maxY=minY;}let x=clamp(center[0],minX,maxX);let y=clamp(center[1],minY,maxY);if(isMoving&&smooth&&resolution){const ratio=30*resolution;x+=-ratio*Math.log(1+Math.max(0,minX-center[0])/ratio)+ratio*Math.log(1+Math.max(0,center[0]-maxX)/ratio);y+=-ratio*Math.log(1+Math.max(0,minY-center[1])/ratio)+ratio*Math.log(1+Math.max(0,center[1]-maxY)/ratio);}return[x,y];});}function none$1( center){return center;}function getViewportClampedResolution(resolution,maxExtent,viewportSize,showFullExtent){const xResolution=getWidth(maxExtent)/viewportSize[0];const yResolution=getHeight(maxExtent)/viewportSize[1];if(showFullExtent){return Math.min(resolution,Math.max(xResolution,yResolution));}return Math.min(resolution,Math.min(xResolution,yResolution));}function getSmoothClampedResolution(resolution,maxResolution,minResolution){let result=Math.min(resolution,maxResolution);const ratio=50;result*=Math.log(1+ratio*Math.max(0,resolution/maxResolution-1))/ratio+1;if(minResolution){result=Math.max(result,minResolution);result/=Math.log(1+ratio*Math.max(0,minResolution/resolution-1))/ratio+1;}return clamp(result,minResolution/2,maxResolution*2);}function createSnapToResolutions(resolutions,smooth,maxExtent,showFullExtent){smooth=smooth!==void 0?smooth:true;return(function(resolution,direction,size,isMoving){if(resolution!==void 0){const maxResolution=resolutions[0];const minResolution=resolutions[resolutions.length-1];const cappedMaxRes=maxExtent?getViewportClampedResolution(maxResolution,maxExtent,size,showFullExtent):maxResolution;if(isMoving){if(!smooth){return clamp(resolution,minResolution,cappedMaxRes);}return getSmoothClampedResolution(resolution,cappedMaxRes,minResolution);}const capped=Math.min(cappedMaxRes,resolution);const z=Math.floor(linearFindNearest(resolutions,capped,direction));if(resolutions[z]>cappedMaxRes&&z1){offset=offset2;}else if(t>0){for(let i=0;imax){max=squaredDelta;}x1=x2;y1=y2;}return max;}function arrayMaxSquaredDelta(flatCoordinates,offset,ends,stride,max){for(let i=0,ii=ends.length;i0){const last=stack.pop();const first=stack.pop();let maxSquaredDistance=0;const x1=flatCoordinates[first];const y1=flatCoordinates[first+1];const x2=flatCoordinates[last];const y2=flatCoordinates[last+1];for(let i=first+stride;imaxSquaredDistance){index=i;maxSquaredDistance=squaredDistance2;}}if(maxSquaredDistance>squaredTolerance){markers[(index-offset)/stride]=1;if(first+stride0&&dx2>dx1)&&(dy1<0&&dy20&&dy2>dy1)){x2=x3;y2=y3;continue;}simplifiedFlatCoordinates[simplifiedOffset++]=x2;simplifiedFlatCoordinates[simplifiedOffset++]=y2;x1=x2;y1=y2;x2=x3;y2=y3;}simplifiedFlatCoordinates[simplifiedOffset++]=x2;simplifiedFlatCoordinates[simplifiedOffset++]=y2;return simplifiedOffset;}function quantizeArray(flatCoordinates,offset,ends,stride,tolerance,simplifiedFlatCoordinates,simplifiedOffset,simplifiedEnds){for(let i=0, ii=ends.length;iy&&(x2-x1)*(y-y1)-(x-x1)*(y2-y1)>0){wn++;}}else if(y2<=y&&(x2-x1)*(y-y1)-(x-x1)*(y2-y1)<0){wn--;}x1=x2;y1=y2;}return wn!==0;}function linearRingsContainsXY(flatCoordinates,offset,ends,stride,x,y){if(ends.length===0){return false;}if( !linearRingContainsXY(flatCoordinates,offset,ends[0],stride,x,y)){return false;}for(let i=1,ii=ends.length;imaxSegmentLength){x=(x1+x2)/2;if(linearRingsContainsXY(flatCoordinates,offset,ends,stride,x,y)){pointX=x;maxSegmentLength=segmentLength;}}x1=x2;}if(isNaN(pointX)){pointX=flatCenters[flatCentersOffset];}if(dest){dest.push(pointX,y,maxSegmentLength);return dest;}return[pointX,y,maxSegmentLength];}function getInteriorPointsOfMultiArray(flatCoordinates,offset,endss,stride,flatCenters){let interiorPoints=[];for(let i=0,ii=endss.length;i=extent[0]&&coordinatesExtent[2]<=extent[2]){return true;}if(coordinatesExtent[1]>=extent[1]&&coordinatesExtent[3]<=extent[3]){return true;}return forEach(flatCoordinates,offset,end,stride,function(point1,point2){return intersectsSegment(extent,point1,point2);});}function intersectsLineStringArray(flatCoordinates,offset,ends,stride,extent){for(let i=0,ii=ends.length;i0;}function linearRingsAreOriented(flatCoordinates,offset,ends,stride,right){right=right!==void 0?right:false;for(let i=0,ii=ends.length;i1&&typeof arguments[animationCount-1]==="function"){callback=arguments[animationCount-1];--animationCount;}let i=0;for(;i0;}getInteracting(){return this.hints_[ViewHint.INTERACTING]>0;}cancelAnimations(){this.setHint(ViewHint.ANIMATING,-this.hints_[ViewHint.ANIMATING]);let anchor;for(let i=0,ii=this.animations_.length;i=0;--i){const series=this.animations_[i];let seriesComplete=true;for(let j=0,jj=series.length;j0?elapsed/animation.duration:1;if(fraction>=1){animation.complete=true;fraction=1;}else{seriesComplete=false;}const progress=animation.easing(fraction);if(animation.sourceCenter){const x0=animation.sourceCenter[0];const y0=animation.sourceCenter[1];const x1=animation.targetCenter[0];const y1=animation.targetCenter[1];this.nextCenter_=animation.targetCenter;const x=x0+progress*(x1-x0);const y=y0+progress*(y1-y0);this.targetCenter_=[x,y];}if(animation.sourceResolution&&animation.targetResolution){const resolution=progress===1?animation.targetResolution:animation.sourceResolution+ progress*(animation.targetResolution-animation.sourceResolution);if(animation.anchor){const size=this.getViewportSize_(this.getRotation());const constrainedResolution=this.constraints_.resolution(resolution,0,size,true);this.targetCenter_=this.calculateCenterZoom(constrainedResolution,animation.anchor);}this.nextResolution_=animation.targetResolution;this.targetResolution_=resolution;this.applyTargetState_(true);}if(animation.sourceRotation!==void 0&&animation.targetRotation!==void 0){const rotation=progress===1?modulo(animation.targetRotation+Math.PI,2*Math.PI)-Math.PI:animation.sourceRotation+progress*(animation.targetRotation-animation.sourceRotation);if(animation.anchor){const constrainedRotation=this.constraints_.rotation(rotation,true);this.targetCenter_=this.calculateCenterRotate(constrainedRotation,animation.anchor);}this.nextRotation_=animation.targetRotation;this.targetRotation_=rotation;}this.applyTargetState_(true);more=true;if(!animation.complete){break;}}if(seriesComplete ){this.animations_[i]=null;this.setHint(ViewHint.ANIMATING,-1);this.nextCenter_=null;this.nextResolution_=NaN;this.nextRotation_=NaN;const callback=series[0].callback;if(callback){animationCallback(callback,true);}}}this.animations_=this.animations_.filter(Boolean);if(more&&this.updateAnimationKey_===void 0){this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this));}}calculateCenterRotate(rotation,anchor){let center;const currentCenter=this.getCenterInternal();if(currentCenter!==void 0){center=[currentCenter[0]-anchor[0],currentCenter[1]-anchor[1]];rotate$1(center,rotation-this.getRotation());add(center,anchor);}return center;}calculateCenterZoom(resolution,anchor){let center;const currentCenter=this.getCenterInternal();const currentResolution=this.getResolution();if(currentCenter!==void 0&¤tResolution!==void 0){const x=anchor[0]-resolution*(anchor[0]-currentCenter[0])/currentResolution;const y=anchor[1]-resolution*(anchor[1]-currentCenter[1])/ currentResolution;center=[x,y];}return center;}getViewportSize_(rotation){const size=this.viewportSize_;if(rotation){const w=size[0];const h=size[1];return[Math.abs(w*Math.cos(rotation))+Math.abs(h*Math.sin(rotation)),Math.abs(w*Math.sin(rotation))+Math.abs(h*Math.cos(rotation))];}return size;}setViewportSize(size){this.viewportSize_=Array.isArray(size)?size.slice():[100,100];if(!this.getAnimating()){this.resolveConstraints(0);}}getCenter(){const center=this.getCenterInternal();if(!center){return center;}return toUserCoordinate(center,this.getProjection());}getCenterInternal(){return(this.get(ViewProperty.CENTER));}getConstraints(){return this.constraints_;}getConstrainResolution(){return this.get("constrainResolution");}getHints(hints){if(hints!==void 0){hints[0]=this.hints_[0];hints[1]=this.hints_[1];return hints;}return this.hints_.slice();}calculateExtent(size){const extent=this.calculateExtentInternal(size);return toUserExtent(extent,this.getProjection());}calculateExtentInternal( size){size=size||this.getViewportSizeMinusPadding_();const center=(this.getCenterInternal());assert(center,"The view center is not defined");const resolution=(this.getResolution());assert(resolution!==void 0,"The view resolution is not defined");const rotation=(this.getRotation());assert(rotation!==void 0,"The view rotation is not defined");return getForViewAndSize(center,resolution,rotation,size);}getMaxResolution(){return this.maxResolution_;}getMinResolution(){return this.minResolution_;}getMaxZoom(){return(this.getZoomForResolution(this.minResolution_));}setMaxZoom(zoom){this.applyOptions_(this.getUpdatedOptions_({maxZoom:zoom}));}getMinZoom(){return(this.getZoomForResolution(this.maxResolution_));}setMinZoom(zoom){this.applyOptions_(this.getUpdatedOptions_({minZoom:zoom}));}setConstrainResolution(enabled){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:enabled}));}getProjection(){return this.projection_;}getResolution(){return(this.get(ViewProperty.RESOLUTION));} getResolutions(){return this.resolutions_;}getResolutionForExtent(extent,size){return this.getResolutionForExtentInternal(fromUserExtent(extent,this.getProjection()),size);}getResolutionForExtentInternal(extent,size){size=size||this.getViewportSizeMinusPadding_();const xResolution=getWidth(extent)/size[0];const yResolution=getHeight(extent)/size[1];return Math.max(xResolution,yResolution);}getResolutionForValueFunction(power){power=power||2;const maxResolution=this.getConstrainedResolution(this.maxResolution_);const minResolution=this.minResolution_;const max=Math.log(maxResolution/minResolution)/Math.log(power);return(function(value){const resolution=maxResolution/Math.pow(power,value*max);return resolution;});}getRotation(){return(this.get(ViewProperty.ROTATION));}getValueForResolutionFunction(power){const logPower=Math.log(power||2);const maxResolution=this.getConstrainedResolution(this.maxResolution_);const minResolution=this.minResolution_;const max=Math.log(maxResolution/ minResolution)/logPower;return(function(resolution){const value=Math.log(maxResolution/resolution)/logPower/max;return value;});}getViewportSizeMinusPadding_(rotation){let size=this.getViewportSize_(rotation);const padding=this.padding_;if(padding){size=[size[0]-padding[1]-padding[3],size[1]-padding[0]-padding[2]];}return size;}getState(){const projection=this.getProjection();const resolution=this.getResolution();const rotation=this.getRotation();let center=(this.getCenterInternal());const padding=this.padding_;if(padding){const reducedSize=this.getViewportSizeMinusPadding_();center=calculateCenterOn(center,this.getViewportSize_(),[reducedSize[0]/2+padding[3],reducedSize[1]/2+padding[0]],resolution,rotation);}return{center:center.slice(0),projection:projection!==void 0?projection:null,resolution,nextCenter:this.nextCenter_,nextResolution:this.nextResolution_,nextRotation:this.nextRotation_,rotation,zoom:this.getZoom()};}getViewStateAndExtent(){return{viewState:this.getState(),extent: this.calculateExtent()};}getZoom(){let zoom;const resolution=this.getResolution();if(resolution!==void 0){zoom=this.getZoomForResolution(resolution);}return zoom;}getZoomForResolution(resolution){let offset=this.minZoom_||0;let max,zoomFactor;if(this.resolutions_){const nearest=linearFindNearest(this.resolutions_,resolution,1);offset=nearest;max=this.resolutions_[nearest];if(nearest==this.resolutions_.length-1){zoomFactor=2;}else{zoomFactor=max/this.resolutions_[nearest+1];}}else{max=this.maxResolution_;zoomFactor=this.zoomFactor_;}return offset+Math.log(max/resolution)/Math.log(zoomFactor);}getResolutionForZoom(zoom){if(this.resolutions_){if(this.resolutions_.length<=1){return 0;}const baseLevel=clamp(Math.floor(zoom),0,this.resolutions_.length-2);const zoomFactor=this.resolutions_[baseLevel]/this.resolutions_[baseLevel+1];return this.resolutions_[baseLevel]/Math.pow(zoomFactor,clamp(zoom-baseLevel,0,1));}return this.maxResolution_/Math.pow(this.zoomFactor_,zoom-this.minZoom_);}fit( geometryOrExtent,options){let geometry;assert(Array.isArray(geometryOrExtent)||typeof geometryOrExtent.getSimplifiedGeometry==="function","Invalid extent or geometry provided as `geometry`");if(Array.isArray(geometryOrExtent)){assert(!isEmpty(geometryOrExtent),"Cannot fit empty extent provided as `geometry`");const extent=fromUserExtent(geometryOrExtent,this.getProjection());geometry=fromExtent(extent);}else if(geometryOrExtent.getType()==="Circle"){const extent=fromUserExtent(geometryOrExtent.getExtent(),this.getProjection());geometry=fromExtent(extent);geometry.rotate(this.getRotation(),getCenter(extent));}else{{geometry=geometryOrExtent;}}this.fitInternal(geometry,options);}rotatedExtentForGeometry(geometry){const rotation=this.getRotation();const cosAngle=Math.cos(rotation);const sinAngle=Math.sin(-rotation);const coords=geometry.getFlatCoordinates();const stride=geometry.getStride();let minRotX=Infinity;let minRotY=Infinity;let maxRotX=-Infinity;let maxRotY=-Infinity;for(let i=0, ii=coords.length;i{this.dispatchEvent("sourceready");},0);}}this.changed();}getFeatures(pixel){if(!this.renderer_){return Promise.resolve([]);}return this.renderer_.getFeatures(pixel);}getData(pixel){if(!this.renderer_||!this.rendered){return null;}return this.renderer_.getData(pixel);}isVisible(view){let frameState;const map=this.getMapInternal();if(!view&&map){view=map.getView();}if(view instanceof OlView){frameState={viewState:view.getState(),extent:view. calculateExtent()};}else{frameState=view;}if(!frameState.layerStatesArray&&map){frameState.layerStatesArray=map.getLayerGroup().getLayerStatesArray();}let layerState;if(frameState.layerStatesArray){layerState=frameState.layerStatesArray.find((layerState2)=>layerState2.layer===this);}else{layerState=this.getLayerState();}const layerExtent=this.getExtent();return inView(layerState,frameState.viewState)&&(!layerExtent||intersects$1(layerExtent,frameState.extent));}getAttributions(view){if(!this.isVisible(view)){return[];}let getAttributions;const source=this.getSource();if(source){getAttributions=source.getAttributions();}if(!getAttributions){return[];}const frameState=view instanceof OlView?view.getViewStateAndExtent():view;let attributions=getAttributions(frameState);if(!Array.isArray(attributions)){attributions=[attributions];}return attributions;}render(frameState,target){const layerRenderer=this.getRenderer();if(layerRenderer.prepareFrame(frameState)){this.rendered=true;return layerRenderer .renderFrame(frameState,target);}return null;}unrender(){this.rendered=false;}setMapInternal(map){if(!map){this.unrender();}this.set(LayerProperty.MAP,map);}getMapInternal(){return this.get(LayerProperty.MAP);}setMap(map){if(this.mapPrecomposeKey_){unlistenByKey(this.mapPrecomposeKey_);this.mapPrecomposeKey_=null;}if(!map){this.changed();}if(this.mapRenderKey_){unlistenByKey(this.mapRenderKey_);this.mapRenderKey_=null;}if(map){this.mapPrecomposeKey_=listen(map,RenderEventType.PRECOMPOSE,function(evt){const renderEvent=(evt);const layerStatesArray=renderEvent.frameState.layerStatesArray;const layerState=this.getLayerState(false);assert(!layerStatesArray.some(function(arrayLayerState){return arrayLayerState.layer===layerState.layer;}),"A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both.");layerStatesArray.push(layerState);},this);this.mapRenderKey_=listen(this,EventType.CHANGE,map.render,map);this.changed();}}setSource(source){this.set( LayerProperty.SOURCE,source);}getRenderer(){if(!this.renderer_){this.renderer_=this.createRenderer();}return this.renderer_;}hasRenderer(){return!!this.renderer_;}createRenderer(){return null;}disposeInternal(){if(this.renderer_){this.renderer_.dispose();delete this.renderer_;}this.setSource(null);super.disposeInternal();}}function inView(layerState,viewState){if(!layerState.visible){return false;}const resolution=viewState.resolution;if(resolution=layerState.maxResolution){return false;}const zoom=viewState.zoom;return zoom>layerState.minZoom&&zoom<=layerState.maxZoom;}const Layer$1=Layer;class MapRenderer extends Disposable$1{constructor(map){super();this.map_=map;}dispatchRenderEvent(type,frameState){abstract();}calculateMatrices2D(frameState){const viewState=frameState.viewState;const coordinateToPixelTransform=frameState.coordinateToPixelTransform;const pixelToCoordinateTransform=frameState.pixelToCoordinateTransform;compose( coordinateToPixelTransform,frameState.size[0]/2,frameState.size[1]/2,1/viewState.resolution,-1/viewState.resolution,-viewState.rotation,-viewState.center[0],-viewState.center[1]);makeInverse(pixelToCoordinateTransform,coordinateToPixelTransform);}forEachFeatureAtCoordinate(coordinate,frameState,hitTolerance,checkWrapped,callback,thisArg,layerFilter,thisArg2){let result;const viewState=frameState.viewState;function forEachFeatureAtCoordinate(managed,feature,layer,geometry){return callback.call(thisArg,feature,managed?layer:null,geometry);}const projection=viewState.projection;const translatedCoordinate=wrapX$1(coordinate.slice(),projection);const offsets=[[0,0]];if(projection.canWrapX()&&checkWrapped){const projectionExtent=projection.getExtent();const worldWidth=getWidth(projectionExtent);offsets.push([-worldWidth,0],[worldWidth,0]);}const layerStates=frameState.layerStatesArray;const numLayers=layerStates.length;const matches=([]);const tmpCoord=[];for(let i=0;i=0;--j){const layerState=layerStates[j];const layer=layerState.layer;if(layer.hasRenderer()&&inView(layerState,viewState)&&layerFilter.call(thisArg2,layer)){const layerRenderer=layer.getRenderer();const source=layer.getSource();if(layerRenderer&&source){const coordinates2=source.getWrapX()?translatedCoordinate:coordinate;const callback2=forEachFeatureAtCoordinate.bind(null,layerState.managed);tmpCoord[0]=coordinates2[0]+offsets[i][0];tmpCoord[1]=coordinates2[1]+offsets[i][1];result=layerRenderer.forEachFeatureAtCoordinate(tmpCoord,frameState,hitTolerance,callback2,matches);}if(result){return result;}}}}if(matches.length===0){return void 0;}const order=1/matches.length;matches.forEach((m,i)=>m.distanceSq+=i*order);matches.sort((a,b)=>a.distanceSq-b.distanceSq);matches.some((m)=>{return result=m.callback(m.feature,m.layer,m.geometry);});return result;}hasFeatureAtCoordinate(coordinate,frameState,hitTolerance,checkWrapped,layerFilter,thisArg){const hasFeature=this. forEachFeatureAtCoordinate(coordinate,frameState,hitTolerance,checkWrapped,TRUE,this,layerFilter,thisArg);return hasFeature!==void 0;}getMap(){return this.map_;}renderFrame(frameState){abstract();}flushDeclutterItems(frameState){}scheduleExpireIconCache(frameState){if(shared.canExpireCache()){frameState.postRenderFunctions.push(expireIconCache);}}}function expireIconCache(map,frameState){shared.expire();}const MapRenderer$1=MapRenderer;class RenderEvent extends Event{constructor(type,inversePixelTransform,frameState,context){super(type);this.inversePixelTransform=inversePixelTransform;this.frameState=frameState;this.context=context;}}const RenderEvent$1=RenderEvent;const CLASS_HIDDEN="ol-hidden";const CLASS_SELECTABLE="ol-selectable";const CLASS_UNSELECTABLE="ol-unselectable";const CLASS_CONTROL="ol-control";const CLASS_COLLAPSED="ol-collapsed";const fontRegEx=new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)", "(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)","(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?","(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))","(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))",`?\\s*([-,\\"\\'\\sa-z]+?)\\s*$`].join(""),"i");const fontRegExMatchIndex=["style","variant","weight","size","lineHeight","family"];const getFontParameters=function(fontSpec){const match=fontSpec.match(fontRegEx);if(!match){return null;}const style=({lineHeight:"normal",size:"1.2em",style:"normal",weight:"normal",variant:"normal"});for(let i=0,ii=fontRegExMatchIndex.length;iMath.max(prev,measureTextWidth(font,curr)),0);cache2[text]=width;return width;}function getTextDimensions(baseStyle,chunks){const widths=[];const heights=[];const lineWidths=[];let width=0;let lineWidth=0;let height=0;let lineHeight=0;for(let i=0,ii=chunks.length;i<=ii;i+=2){const text= chunks[i];if(text==="\n"||i===ii){width=Math.max(width,lineWidth);lineWidths.push(lineWidth);lineWidth=0;height+=lineHeight;continue;}const font=chunks[i+1]||baseStyle.font;const currentWidth=measureTextWidth(font,text);widths.push(currentWidth);lineWidth+=currentWidth;const currentHeight=measureTextHeight(font);heights.push(currentHeight);lineHeight=Math.max(lineHeight,currentHeight);}return{width,height,widths,heights,lineWidths};}function drawImageOrLabel(context,transform2,opacity,labelOrImage,originX,originY,w,h,x,y,scale2){context.save();if(opacity!==1){context.globalAlpha*=opacity;}if(transform2){context.transform.apply(context,transform2);}if(labelOrImage.contextInstructions){context.translate(x,y);context.scale(scale2[0],scale2[1]);executeLabelInstructions(labelOrImage,context);}else if(scale2[0]<0||scale2[1]<0){context.translate(x,y);context.scale(scale2[0],scale2[1]);context.drawImage(labelOrImage,originX,originY,w,h,0,0,w,h);}else{context.drawImage(labelOrImage,originX, originY,w,h,x,y,w*scale2[0],h*scale2[1]);}context.restore();}function executeLabelInstructions(label,context){const contextInstructions=label.contextInstructions;for(let i=0,ii=contextInstructions.length;i=0;--i){layers[i].renderDeclutter(frameState);}layers.length=0;}}const CompositeMapRenderer$1=CompositeMapRenderer;class GroupEvent extends Event{constructor(type,layer){super(type);this.layer=layer;}}const Property$2={LAYERS:"layers"};class LayerGroup extends BaseLayer$1{constructor(options){options=options||{};const baseOptions=(Object.assign({},options ));delete baseOptions.layers;let layers=options.layers;super(baseOptions);this.on;this.once;this.un;this.layersListenerKeys_=[];this.listenerKeys_={};this.addChangeListener(Property$2.LAYERS,this.handleLayersChanged_);if(layers){if(Array.isArray(layers)){layers=new Collection$1(layers.slice(),{unique:true});}else{assert(typeof layers.getArray==="function","Expected `layers` to be an array or a `Collection`");}}else{layers=new Collection$1(void 0,{unique:true});}this.setLayers(layers);}handleLayerChange_(){this.changed();}handleLayersChanged_(){this.layersListenerKeys_.forEach(unlistenByKey);this.layersListenerKeys_.length=0;const layers=this.getLayers();this.layersListenerKeys_.push(listen(layers,CollectionEventType.ADD,this.handleLayersAdd_,this),listen(layers,CollectionEventType.REMOVE,this.handleLayersRemove_,this));for(const id in this.listenerKeys_){this.listenerKeys_[id].forEach(unlistenByKey);}clear(this.listenerKeys_);const layersArray=layers.getArray();for(let i=0,ii= layersArray.length;i{this.clickTimeoutId_=void 0;const newEvent2=new MapBrowserEvent$1(MapBrowserEventType.SINGLECLICK,this.map_,pointerEvent);this.dispatchEvent(newEvent2);},250);}}updateActivePointers_(pointerEvent){const event=pointerEvent;const id=event.pointerId;if(event.type==MapBrowserEventType.POINTERUP||event.type==MapBrowserEventType.POINTERCANCEL){delete this.trackedTouches_[id];for(const pointerId in this.trackedTouches_){if( this.trackedTouches_[pointerId].target!==event.target){delete this.trackedTouches_[pointerId];break;}}}else if(event.type==MapBrowserEventType.POINTERDOWN||event.type==MapBrowserEventType.POINTERMOVE){this.trackedTouches_[id]=event;}this.activePointers_=Object.values(this.trackedTouches_);}handlePointerUp_(pointerEvent){this.updateActivePointers_(pointerEvent);const newEvent=new MapBrowserEvent$1(MapBrowserEventType.POINTERUP,this.map_,pointerEvent,void 0,void 0,this.activePointers_);this.dispatchEvent(newEvent);if(this.emulateClicks_&&!newEvent.defaultPrevented&&!this.dragging_&&this.isMouseActionButton_(pointerEvent)){this.emulateClick_(this.down_);}if(this.activePointers_.length===0){this.dragListenerKeys_.forEach(unlistenByKey);this.dragListenerKeys_.length=0;this.dragging_=false;this.down_=null;}}isMouseActionButton_(pointerEvent){return pointerEvent.button===0;}handlePointerDown_(pointerEvent){this.emulateClicks_=this.activePointers_.length===0;this.updateActivePointers_( pointerEvent);const newEvent=new MapBrowserEvent$1(MapBrowserEventType.POINTERDOWN,this.map_,pointerEvent,void 0,void 0,this.activePointers_);this.dispatchEvent(newEvent);this.down_=new PointerEvent(pointerEvent.type,pointerEvent);Object.defineProperty(this.down_,"target",{writable:false,value:pointerEvent.target});if(this.dragListenerKeys_.length===0){const doc=this.map_.getOwnerDocument();this.dragListenerKeys_.push(listen(doc,MapBrowserEventType.POINTERMOVE,this.handlePointerMove_,this),listen(doc,MapBrowserEventType.POINTERUP,this.handlePointerUp_,this),listen(this.element_,MapBrowserEventType.POINTERCANCEL,this.handlePointerUp_,this));if(this.element_.getRootNode&&this.element_.getRootNode()!==doc){this.dragListenerKeys_.push(listen(this.element_.getRootNode(),MapBrowserEventType.POINTERUP,this.handlePointerUp_,this));}}}handlePointerMove_(pointerEvent){if(this.isMoving_(pointerEvent)){this.updateActivePointers_(pointerEvent);this.dragging_=true;const newEvent=new MapBrowserEvent$1 (MapBrowserEventType.POINTERDRAG,this.map_,pointerEvent,this.dragging_,void 0,this.activePointers_);this.dispatchEvent(newEvent);}}relayMoveEvent_(pointerEvent){this.originalPointerMoveEvent_=pointerEvent;const dragging=!!(this.down_&&this.isMoving_(pointerEvent));this.dispatchEvent(new MapBrowserEvent$1(MapBrowserEventType.POINTERMOVE,this.map_,pointerEvent,dragging));}handleTouchMove_(event){const originalEvent=this.originalPointerMoveEvent_;if((!originalEvent||originalEvent.defaultPrevented)&&(typeof event.cancelable!=="boolean"||event.cancelable===true)){event.preventDefault();}}isMoving_(pointerEvent){return this.dragging_||Math.abs(pointerEvent.clientX-this.down_.clientX)>this.moveTolerance_||Math.abs(pointerEvent.clientY-this.down_.clientY)>this.moveTolerance_;}disposeInternal(){if(this.relayedListenerKey_){unlistenByKey(this.relayedListenerKey_);this.relayedListenerKey_=null;}this.element_.removeEventListener(EventType.TOUCHMOVE,this.boundHandleTouchMove_);if(this. pointerdownListenerKey_){unlistenByKey(this.pointerdownListenerKey_);this.pointerdownListenerKey_=null;}this.dragListenerKeys_.forEach(unlistenByKey);this.dragListenerKeys_.length=0;this.element_=null;super.disposeInternal();}}const MapBrowserEventHandler$1=MapBrowserEventHandler;const MapEventType={POSTRENDER:"postrender",MOVESTART:"movestart",MOVEEND:"moveend",LOADSTART:"loadstart",LOADEND:"loadend"};const MapProperty={LAYERGROUP:"layergroup",SIZE:"size",TARGET:"target",VIEW:"view"};const DROP=Infinity;class PriorityQueue{constructor(priorityFunction,keyFunction){this.priorityFunction_=priorityFunction;this.keyFunction_=keyFunction;this.elements_=[];this.priorities_=[];this.queuedElements_={};}clear(){this.elements_.length=0;this.priorities_.length=0;clear(this.queuedElements_);}dequeue(){const elements=this.elements_;const priorities=this.priorities_;const element=elements[0];if(elements.length==1){elements.length=0;priorities.length=0;}else{elements[0]=elements.pop();priorities[0]= priorities.pop();this.siftUp_(0);}const elementKey=this.keyFunction_(element);delete this.queuedElements_[elementKey];return element;}enqueue(element){assert(!(this.keyFunction_(element)in this.queuedElements_),"Tried to enqueue an `element` that was already added to the queue");const priority=this.priorityFunction_(element);if(priority!=DROP){this.elements_.push(element);this.priorities_.push(priority);this.queuedElements_[this.keyFunction_(element)]=true;this.siftDown_(0,this.elements_.length-1);return true;}return false;}getCount(){return this.elements_.length;}getLeftChildIndex_(index){return index*2+1;}getRightChildIndex_(index){return index*2+2;}getParentIndex_(index){return index-1>>1;}heapify_(){let i;for(i=(this.elements_.length>>1)-1;i>=0;i--){this.siftUp_(i);}}isEmpty(){return this.elements_.length===0;}isKeyQueued(key){return key in this.queuedElements_;}isQueued(element){return this.isKeyQueued(this.keyFunction_(element));}siftUp_(index){const elements=this.elements_;const priorities=this.priorities_;const count=elements.length;const element=elements[index];const priority=priorities[index];const startIndex=index;while(index>1){const lIndex=this.getLeftChildIndex_(index);const rIndex=this.getRightChildIndex_(index);const smallerChildIndex=rIndexstartIndex){const parentIndex=this.getParentIndex_(index);if(priorities[parentIndex]>priority){elements[index]=elements[parentIndex];priorities[index]=priorities[parentIndex];index=parentIndex;}else{break;}}elements[index]=element;priorities[index]=priority;}reprioritize(){const priorityFunction=this.priorityFunction_;const elements=this.elements_;const priorities=this.priorities_;let index=0;const n=elements.length;let element,i,priority;for(i=0;i0){tile=this.dequeue()[0];tileKey=tile.getKey();state=tile.getState();if(state===TileState.IDLE&&!(tileKey in this.tilesLoadingKeys_)){this.tilesLoadingKeys_[tileKey]=true;++this.tilesLoading_;++newLoads;tile.load();}}}}const TileQueue$1=TileQueue;function getTilePriority(frameState,tile,tileSourceKey, tileCenter,tileResolution){if(!frameState||!(tileSourceKey in frameState.wantedTiles)){return DROP;}if(!frameState.wantedTiles[tileSourceKey][tile.getKey()]){return DROP;}const center=frameState.viewState.center;const deltaX=tileCenter[0]-center[0];const deltaY=tileCenter[1]-center[1];return 65536*Math.log(tileResolution)+Math.sqrt(deltaX*deltaX+deltaY*deltaY)/tileResolution;}class Control extends BaseObject$1{constructor(options){super();const element=options.element;if(element&&!options.target&&!element.style.pointerEvents){element.style.pointerEvents="auto";}this.element=element?element:null;this.target_=null;this.map_=null;this.listenerKeys=[];if(options.render){this.render=options.render;}if(options.target){this.setTarget(options.target);}}disposeInternal(){removeNode(this.element);super.disposeInternal();}getMap(){return this.map_;}setMap(map){if(this.map_){removeNode(this.element);}for(let i=0,ii=this.listenerKeys.length;ilayer.getAttributions(frameState))));const collapsible=!this.getMap().getAllLayers().some((layer)=>layer.getSource()&&layer.getSource().getAttributionsCollapsible()===false);if(!this.overrideCollapsible_){this.setCollapsible(collapsible);}return visibleAttributions;}updateElement_(frameState){if(! frameState){if(this.renderedVisible_){this.element.style.display="none";this.renderedVisible_=false;}return;}const attributions=this.collectSourceAttributions_(frameState);const visible=attributions.length>0;if(this.renderedVisible_!=visible){this.element.style.display=visible?"":"none";this.renderedVisible_=visible;}if(equals$2(attributions,this.renderedAttributions_)){return;}removeChildren(this.ulElement_);for(let i=0,ii=attributions.length;i0&&rotation%(2*Math.PI)!==0){view.animate({rotation:0,duration:this.duration_,easing:easeOut});}else{view.setRotation(0);}}}render(mapEvent){const frameState=mapEvent.frameState;if(!frameState){return;}const rotation=frameState.viewState.rotation;if(rotation!=this.rotation_){const transform2="rotate("+rotation+"rad)";if(this.autoHide_){const contains2=this.element.classList.contains(CLASS_HIDDEN);if(!contains2&&rotation===0){this.element.classList.add(CLASS_HIDDEN);}else if(contains2&&rotation!==0){this.element.classList.remove(CLASS_HIDDEN);}}this.label_.style.transform=transform2;}this.rotation_=rotation;}}const Rotate$1=Rotate;class Zoom extends Control$1{constructor(options){options=options?options:{};super({element:document.createElement("div"),target:options.target});const className=options.className!==void 0?options. className:"ol-zoom";const delta=options.delta!==void 0?options.delta:1;const zoomInClassName=options.zoomInClassName!==void 0?options.zoomInClassName:className+"-in";const zoomOutClassName=options.zoomOutClassName!==void 0?options.zoomOutClassName:className+"-out";const zoomInLabel=options.zoomInLabel!==void 0?options.zoomInLabel:"+";const zoomOutLabel=options.zoomOutLabel!==void 0?options.zoomOutLabel:"–";const zoomInTipLabel=options.zoomInTipLabel!==void 0?options.zoomInTipLabel:"Zoom in";const zoomOutTipLabel=options.zoomOutTipLabel!==void 0?options.zoomOutTipLabel:"Zoom out";const inElement=document.createElement("button");inElement.className=zoomInClassName;inElement.setAttribute("type","button");inElement.title=zoomInTipLabel;inElement.appendChild(typeof zoomInLabel==="string"?document.createTextNode(zoomInLabel):zoomInLabel);inElement.addEventListener(EventType.CLICK,this.handleClick_.bind(this,delta),false);const outElement=document.createElement("button");outElement. className=zoomOutClassName;outElement.setAttribute("type","button");outElement.title=zoomOutTipLabel;outElement.appendChild(typeof zoomOutLabel==="string"?document.createTextNode(zoomOutLabel):zoomOutLabel);outElement.addEventListener(EventType.CLICK,this.handleClick_.bind(this,-delta),false);const cssClasses=className+" "+CLASS_UNSELECTABLE+" "+CLASS_CONTROL;const element=this.element;element.className=cssClasses;element.appendChild(inElement);element.appendChild(outElement);this.duration_=options.duration!==void 0?options.duration:250;}handleClick_(delta,event){event.preventDefault();this.zoomByDelta_(delta);}zoomByDelta_(delta){const map=this.getMap();const view=map.getView();if(!view){return;}const currentZoom=view.getZoom();if(currentZoom!==void 0){const newZoom=view.getConstrainedZoom(currentZoom+delta);if(this.duration_>0){if(view.getAnimating()){view.cancelAnimations();}view.animate({zoom:newZoom,duration:this.duration_,easing:easeOut});}else{view.setZoom(newZoom);}}}}const Zoom$1=Zoom;function defaults$1(options){options=options?options:{};const controls=new Collection$1();const zoomControl=options.zoom!==void 0?options.zoom:true;if(zoomControl){controls.push(new Zoom$1(options.zoomOptions));}const rotateControl=options.rotate!==void 0?options.rotate:true;if(rotateControl){controls.push(new Rotate$1(options.rotateOptions));}const attributionControl=options.attribution!==void 0?options.attribution:true;if(attributionControl){controls.push(new Attribution$1(options.attributionOptions));}return controls;}const InteractionProperty={ACTIVE:"active"};class Interaction extends BaseObject$1{constructor(options){super();this.on;this.once;this.un;if(options&&options.handleEvent){this.handleEvent=options.handleEvent;}this.map_=null;this.setActive(true);}getActive(){return(this.get(InteractionProperty.ACTIVE));}getMap(){return this.map_;}handleEvent(mapBrowserEvent){return true;}setActive(active){this.set(InteractionProperty.ACTIVE,active);}setMap(map){this.map_=map ;}}function pan(view,delta,duration){const currentCenter=view.getCenterInternal();if(currentCenter){const center=[currentCenter[0]+delta[0],currentCenter[1]+delta[1]];view.animateInternal({duration:duration!==void 0?duration:250,easing:linear,center:view.getConstrainedCenter(center)});}}function zoomByDelta(view,delta,anchor,duration){const currentZoom=view.getZoom();if(currentZoom===void 0){return;}const newZoom=view.getConstrainedZoom(currentZoom+delta);const newResolution=view.getResolutionForZoom(newZoom);if(view.getAnimating()){view.cancelAnimations();}view.animate({resolution:newResolution,anchor,duration:duration!==void 0?duration:250,easing:easeOut});}const Interaction$1=Interaction;class DoubleClickZoom extends Interaction$1{constructor(options){super();options=options?options:{};this.delta_=options.delta?options.delta:1;this.duration_=options.duration!==void 0?options.duration:250;}handleEvent(mapBrowserEvent){let stopEvent=false;if(mapBrowserEvent.type==MapBrowserEventType. DBLCLICK){const browserEvent=(mapBrowserEvent.originalEvent);const map=mapBrowserEvent.map;const anchor=mapBrowserEvent.coordinate;const delta=browserEvent.shiftKey?-this.delta_:this.delta_;const view=map.getView();zoomByDelta(view,delta,anchor,this.duration_);browserEvent.preventDefault();stopEvent=true;}return!stopEvent;}}const DoubleClickZoom$1=DoubleClickZoom;class PointerInteraction extends Interaction$1{constructor(options){options=options?options:{};super(options);if(options.handleDownEvent){this.handleDownEvent=options.handleDownEvent;}if(options.handleDragEvent){this.handleDragEvent=options.handleDragEvent;}if(options.handleMoveEvent){this.handleMoveEvent=options.handleMoveEvent;}if(options.handleUpEvent){this.handleUpEvent=options.handleUpEvent;}if(options.stopDown){this.stopDown=options.stopDown;}this.handlingDownUpSequence=false;this.targetPointers=[];}getPointerCount(){return this.targetPointers.length;}handleDownEvent(mapBrowserEvent){return false;}handleDragEvent( mapBrowserEvent){}handleEvent(mapBrowserEvent){if(!mapBrowserEvent.originalEvent){return true;}let stopEvent=false;this.updateTrackedPointers_(mapBrowserEvent);if(this.handlingDownUpSequence){if(mapBrowserEvent.type==MapBrowserEventType.POINTERDRAG){this.handleDragEvent(mapBrowserEvent);mapBrowserEvent.originalEvent.preventDefault();}else if(mapBrowserEvent.type==MapBrowserEventType.POINTERUP){const handledUp=this.handleUpEvent(mapBrowserEvent);this.handlingDownUpSequence=handledUp&&this.targetPointers.length>0;}}else{if(mapBrowserEvent.type==MapBrowserEventType.POINTERDOWN){const handled=this.handleDownEvent(mapBrowserEvent);this.handlingDownUpSequence=handled;stopEvent=this.stopDown(handled);}else if(mapBrowserEvent.type==MapBrowserEventType.POINTERMOVE){this.handleMoveEvent(mapBrowserEvent);}}return!stopEvent;}handleMoveEvent(mapBrowserEvent){}handleUpEvent(mapBrowserEvent){return false;}stopDown(handled){return handled;}updateTrackedPointers_(mapBrowserEvent){if(mapBrowserEvent. activePointers){this.targetPointers=mapBrowserEvent.activePointers;}}}function centroid(pointerEvents){const length=pointerEvents.length;let clientX=0;let clientY=0;for(let i=0;i0&&this.condition_(mapBrowserEvent)){const map=mapBrowserEvent.map;const view=map.getView();this.lastCentroid=null;if(view.getAnimating()){view.cancelAnimations();}if(this.kinetic_){this.kinetic_.begin();}this.noKinetic_=this.targetPointers.length>1;return true;}return false;}}const OlInteractionDragPan=DragPan;class DragRotate extends PointerInteraction$1{constructor(options){options=options?options:{};super({stopDown:FALSE});this.condition_=options.condition?options.condition:altShiftKeysOnly;this.lastAngle_=void 0;this.duration_=options.duration!==void 0?options.duration:250;}handleDragEvent(mapBrowserEvent){if(!mouseOnly(mapBrowserEvent)){return;}const map=mapBrowserEvent.map;const view=map.getView();if(view.getConstraints().rotation===disable){return;}const size=map.getSize();const offset=mapBrowserEvent.pixel;const theta=Math.atan2(size[1]/2-offset[1],offset[0]-size[0]/2); if(this.lastAngle_!==void 0){const delta=theta-this.lastAngle_;view.adjustRotationInternal(-delta);}this.lastAngle_=theta;}handleUpEvent(mapBrowserEvent){if(!mouseOnly(mapBrowserEvent)){return true;}const map=mapBrowserEvent.map;const view=map.getView();view.endInteraction(this.duration_);return false;}handleDownEvent(mapBrowserEvent){if(!mouseOnly(mapBrowserEvent)){return false;}if(mouseActionButton(mapBrowserEvent)&&this.condition_(mapBrowserEvent)){const map=mapBrowserEvent.map;map.getView().beginInteraction();this.lastAngle_=void 0;return true;}return false;}}const DragRotate$1=DragRotate;class RenderBox extends Disposable$1{constructor(className){super();this.geometry_=null;this.element_=document.createElement("div");this.element_.style.position="absolute";this.element_.style.pointerEvents="auto";this.element_.className="ol-box "+className;this.map_=null;this.startPixel_=null;this.endPixel_=null;}disposeInternal(){this.setMap(null);}render_(){const startPixel=this.startPixel_; const endPixel=this.endPixel_;const px="px";const style=this.element_.style;style.left=Math.min(startPixel[0],endPixel[0])+px;style.top=Math.min(startPixel[1],endPixel[1])+px;style.width=Math.abs(endPixel[0]-startPixel[0])+px;style.height=Math.abs(endPixel[1]-startPixel[1])+px;}setMap(map){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);const style=this.element_.style;style.left="inherit";style.top="inherit";style.width="inherit";style.height="inherit";}this.map_=map;if(this.map_){this.map_.getOverlayContainer().appendChild(this.element_);}}setPixels(startPixel,endPixel){this.startPixel_=startPixel;this.endPixel_=endPixel;this.createOrUpdateGeometry();this.render_();}createOrUpdateGeometry(){const startPixel=this.startPixel_;const endPixel=this.endPixel_;const pixels=[startPixel,[startPixel[0],endPixel[1]],endPixel,[endPixel[0],startPixel[1]]];const coordinates2=pixels.map(this.map_.getCoordinateFromPixelInternal,this.map_);coordinates2[4]=coordinates2[0].slice ();if(!this.geometry_){this.geometry_=new Polygon$1([coordinates2]);}else{this.geometry_.setCoordinates([coordinates2]);}}getGeometry(){return this.geometry_;}}const RenderBox$1=RenderBox;const DragBoxEventType={BOXSTART:"boxstart",BOXDRAG:"boxdrag",BOXEND:"boxend",BOXCANCEL:"boxcancel"};class DragBoxEvent extends Event{constructor(type,coordinate,mapBrowserEvent){super(type);this.coordinate=coordinate;this.mapBrowserEvent=mapBrowserEvent;}}class DragBox extends PointerInteraction$1{constructor(options){super();this.on;this.once;this.un;options=options?options:{};this.box_=new RenderBox$1(options.className||"ol-dragbox");this.minArea_=options.minArea!==void 0?options.minArea:64;if(options.onBoxEnd){this.onBoxEnd=options.onBoxEnd;}this.startPixel_=null;this.condition_=options.condition?options.condition:mouseActionButton;this.boxEndCondition_=options.boxEndCondition?options.boxEndCondition:this.defaultBoxEndCondition;}defaultBoxEndCondition(mapBrowserEvent,startPixel,endPixel){const width=endPixel[0]-startPixel[0];const height=endPixel[1]-startPixel[1];return width*width+height*height>=this.minArea_;}getGeometry(){return this.box_.getGeometry();}handleDragEvent(mapBrowserEvent){this.box_.setPixels(this.startPixel_,mapBrowserEvent.pixel);this.dispatchEvent(new DragBoxEvent(DragBoxEventType.BOXDRAG,mapBrowserEvent.coordinate,mapBrowserEvent));}handleUpEvent(mapBrowserEvent){this.box_.setMap(null);const completeBox=this.boxEndCondition_(mapBrowserEvent,this.startPixel_,mapBrowserEvent.pixel);if(completeBox){this.onBoxEnd(mapBrowserEvent);}this.dispatchEvent(new DragBoxEvent(completeBox?DragBoxEventType.BOXEND:DragBoxEventType.BOXCANCEL,mapBrowserEvent.coordinate,mapBrowserEvent));return false;}handleDownEvent(mapBrowserEvent){if(this.condition_(mapBrowserEvent)){this.startPixel_=mapBrowserEvent.pixel;this.box_.setMap(mapBrowserEvent.map);this.box_.setPixels(this.startPixel_,this.startPixel_);this.dispatchEvent(new DragBoxEvent(DragBoxEventType.BOXSTART, mapBrowserEvent.coordinate,mapBrowserEvent));return true;}return false;}onBoxEnd(event){}}const DragBox$1=DragBox;class DragZoom extends DragBox$1{constructor(options){options=options?options:{};const condition=options.condition?options.condition:shiftKeyOnly;super({condition,className:options.className||"ol-dragzoom",minArea:options.minArea});this.duration_=options.duration!==void 0?options.duration:200;this.out_=options.out!==void 0?options.out:false;}onBoxEnd(event){const map=this.getMap();const view=(map.getView());let geometry=this.getGeometry();if(this.out_){const rotatedExtent=view.rotatedExtentForGeometry(geometry);const resolution=view.getResolutionForExtentInternal(rotatedExtent);const factor=view.getResolution()/resolution;geometry=geometry.clone();geometry.scale(factor*factor);}view.fitInternal(geometry,{duration:this.duration_,easing:easeOut});}}const DragZoom$1=DragZoom;const Key={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",DOWN:"ArrowDown"};class KeyboardPan extends Interaction$1{constructor(options){super();options=options||{};this.defaultCondition_=function(mapBrowserEvent){return noModifierKeys(mapBrowserEvent)&&targetNotEditable(mapBrowserEvent);};this.condition_=options.condition!==void 0?options.condition:this.defaultCondition_;this.duration_=options.duration!==void 0?options.duration:100;this.pixelDelta_=options.pixelDelta!==void 0?options.pixelDelta:128;}handleEvent(mapBrowserEvent){let stopEvent=false;if(mapBrowserEvent.type==EventType.KEYDOWN){const keyEvent=(mapBrowserEvent.originalEvent);const key=keyEvent.key;if(this.condition_(mapBrowserEvent)&&(key==Key.DOWN||key==Key.LEFT||key==Key.RIGHT||key==Key.UP)){const map=mapBrowserEvent.map;const view=map.getView();const mapUnitsDelta=view.getResolution()*this.pixelDelta_;let deltaX=0,deltaY=0;if(key==Key.DOWN){deltaY=-mapUnitsDelta;}else if(key==Key.LEFT){deltaX=-mapUnitsDelta;}else if(key==Key.RIGHT){deltaX=mapUnitsDelta;}else{deltaY=mapUnitsDelta;}const delta=[deltaX,deltaY];rotate$1( delta,view.getRotation());pan(view,delta,this.duration_);keyEvent.preventDefault();stopEvent=true;}}return!stopEvent;}}const KeyboardPan$1=KeyboardPan;class KeyboardZoom extends Interaction$1{constructor(options){super();options=options?options:{};this.condition_=options.condition?options.condition:function(mapBrowserEvent){return!platformModifierKey(mapBrowserEvent)&&targetNotEditable(mapBrowserEvent);};this.delta_=options.delta?options.delta:1;this.duration_=options.duration!==void 0?options.duration:100;}handleEvent(mapBrowserEvent){let stopEvent=false;if(mapBrowserEvent.type==EventType.KEYDOWN||mapBrowserEvent.type==EventType.KEYPRESS){const keyEvent=(mapBrowserEvent.originalEvent);const key=keyEvent.key;if(this.condition_(mapBrowserEvent)&&(key==="+"||key==="-")){const map=mapBrowserEvent.map;const delta=key==="+"?this.delta_:-this.delta_;const view=map.getView();zoomByDelta(view,delta,void 0,this.duration_);keyEvent.preventDefault();stopEvent=true;}}return!stopEvent;}}const KeyboardZoom$1=KeyboardZoom;class Kinetic{constructor(decay,minVelocity,delay){this.decay_=decay;this.minVelocity_=minVelocity;this.delay_=delay;this.points_=[];this.angle_=0;this.initialVelocity_=0;}begin(){this.points_.length=0;this.angle_=0;this.initialVelocity_=0;}update(x,y){this.points_.push(x,y,Date.now());}end(){if(this.points_.length<6){return false;}const delay=Date.now()-this.delay_;const lastIndex=this.points_.length-3;if(this.points_[lastIndex+2]0&&this.points_[firstIndex+2]>delay){firstIndex-=3;}const duration=this.points_[lastIndex+2]-this.points_[firstIndex+2];if(duration<1e3/60){return false;}const dx=this.points_[lastIndex]-this.points_[firstIndex];const dy=this.points_[lastIndex+1]-this.points_[firstIndex+1];this.angle_=Math.atan2(dy,dx);this.initialVelocity_=Math.sqrt(dx*dx+dy*dy)/duration;return this.initialVelocity_>this.minVelocity_;}getDistance(){return(this.minVelocity_-this.initialVelocity_)/ this.decay_;}getAngle(){return this.angle_;}}const Kinetic$1=Kinetic;class MouseWheelZoom extends Interaction$1{constructor(options){options=options?options:{};super(options);this.totalDelta_=0;this.lastDelta_=0;this.maxDelta_=options.maxDelta!==void 0?options.maxDelta:1;this.duration_=options.duration!==void 0?options.duration:250;this.timeout_=options.timeout!==void 0?options.timeout:80;this.useAnchor_=options.useAnchor!==void 0?options.useAnchor:true;this.constrainResolution_=options.constrainResolution!==void 0?options.constrainResolution:false;const condition=options.condition?options.condition:always$1;this.condition_=options.onFocusOnly?all$1(focusWithTabindex,condition):condition;this.lastAnchor_=null;this.startTime_=void 0;this.timeoutId_;this.mode_=void 0;this.trackpadEventGap_=400;this.trackpadTimeoutId_;this.deltaPerZoom_=300;}endInteraction_(){this.trackpadTimeoutId_=void 0;const map=this.getMap();if(!map){return;}const view=map.getView();view.endInteraction(void 0,this. lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_);}handleEvent(mapBrowserEvent){if(!this.condition_(mapBrowserEvent)){return true;}const type=mapBrowserEvent.type;if(type!==EventType.WHEEL){return true;}const map=mapBrowserEvent.map;const wheelEvent=(mapBrowserEvent.originalEvent);wheelEvent.preventDefault();if(this.useAnchor_){this.lastAnchor_=mapBrowserEvent.coordinate;}let delta;if(mapBrowserEvent.type==EventType.WHEEL){delta=wheelEvent.deltaY;if(FIREFOX&&wheelEvent.deltaMode===WheelEvent.DOM_DELTA_PIXEL){delta/=DEVICE_PIXEL_RATIO;}if(wheelEvent.deltaMode===WheelEvent.DOM_DELTA_LINE){delta*=40;}}if(delta===0){return false;}this.lastDelta_=delta;const now=Date.now();if(this.startTime_===void 0){this.startTime_=now;}if(!this.mode_||now-this.startTime_>this.trackpadEventGap_){this.mode_=Math.abs(delta)<4?"trackpad":"wheel";}const view=map.getView();if(this.mode_==="trackpad"&&!(view.getConstrainResolution()||this.constrainResolution_)){if(this.trackpadTimeoutId_){clearTimeout(this. trackpadTimeoutId_);}else{if(view.getAnimating()){view.cancelAnimations();}view.beginInteraction();}this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_);view.adjustZoom(-delta/this.deltaPerZoom_,this.lastAnchor_);this.startTime_=now;return false;}this.totalDelta_+=delta;const timeLeft=Math.max(this.timeout_-(now-this.startTime_),0);clearTimeout(this.timeoutId_);this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,map),timeLeft);return false;}handleWheelZoom_(map){const view=map.getView();if(view.getAnimating()){view.cancelAnimations();}let delta=-clamp(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;if(view.getConstrainResolution()||this.constrainResolution_){delta=delta?delta>0?1:-1:0;}zoomByDelta(view,delta,this.lastAnchor_,this.duration_);this.mode_=void 0;this.totalDelta_=0;this.lastAnchor_=null;this.startTime_=void 0;this.timeoutId_=void 0;}setMouseAnchor(useAnchor){this.useAnchor_= useAnchor;if(!useAnchor){this.lastAnchor_=null;}}}const OlInteractionMouseWheelZoom=MouseWheelZoom;class PinchRotate extends PointerInteraction$1{constructor(options){options=options?options:{};const pointerOptions=(options);if(!pointerOptions.stopDown){pointerOptions.stopDown=FALSE;}super(pointerOptions);this.anchor_=null;this.lastAngle_=void 0;this.rotating_=false;this.rotationDelta_=0;this.threshold_=options.threshold!==void 0?options.threshold:0.3;this.duration_=options.duration!==void 0?options.duration:250;}handleDragEvent(mapBrowserEvent){let rotationDelta=0;const touch0=this.targetPointers[0];const touch1=this.targetPointers[1];const angle=Math.atan2(touch1.clientY-touch0.clientY,touch1.clientX-touch0.clientX);if(this.lastAngle_!==void 0){const delta=angle-this.lastAngle_;this.rotationDelta_+=delta;if(!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_){this.rotating_=true;}rotationDelta=delta;}this.lastAngle_=angle;const map=mapBrowserEvent.map;const view=map. getView();if(view.getConstraints().rotation===disable){return;}this.anchor_=map.getCoordinateFromPixelInternal(map.getEventPixel(centroid(this.targetPointers)));if(this.rotating_){map.render();view.adjustRotationInternal(rotationDelta,this.anchor_);}}handleUpEvent(mapBrowserEvent){if(this.targetPointers.length<2){const map=mapBrowserEvent.map;const view=map.getView();view.endInteraction(this.duration_);return false;}return true;}handleDownEvent(mapBrowserEvent){if(this.targetPointers.length>=2){const map=mapBrowserEvent.map;this.anchor_=null;this.lastAngle_=void 0;this.rotating_=false;this.rotationDelta_=0;if(!this.handlingDownUpSequence){map.getView().beginInteraction();}return true;}return false;}}const PinchRotate$1=PinchRotate;class PinchZoom extends PointerInteraction$1{constructor(options){options=options?options:{};const pointerOptions=(options);if(!pointerOptions.stopDown){pointerOptions.stopDown=FALSE;}super(pointerOptions);this.anchor_=null;this.duration_=options.duration!== void 0?options.duration:400;this.lastDistance_=void 0;this.lastScaleDelta_=1;}handleDragEvent(mapBrowserEvent){let scaleDelta=1;const touch0=this.targetPointers[0];const touch1=this.targetPointers[1];const dx=touch0.clientX-touch1.clientX;const dy=touch0.clientY-touch1.clientY;const distance=Math.sqrt(dx*dx+dy*dy);if(this.lastDistance_!==void 0){scaleDelta=this.lastDistance_/distance;}this.lastDistance_=distance;const map=mapBrowserEvent.map;const view=map.getView();if(scaleDelta!=1){this.lastScaleDelta_=scaleDelta;}this.anchor_=map.getCoordinateFromPixelInternal(map.getEventPixel(centroid(this.targetPointers)));map.render();view.adjustResolutionInternal(scaleDelta,this.anchor_);}handleUpEvent(mapBrowserEvent){if(this.targetPointers.length<2){const map=mapBrowserEvent.map;const view=map.getView();const direction=this.lastScaleDelta_>1?1:-1;view.endInteraction(this.duration_,direction);return false;}return true;}handleDownEvent(mapBrowserEvent){if(this.targetPointers.length>=2){const map =mapBrowserEvent.map;this.anchor_=null;this.lastDistance_=void 0;this.lastScaleDelta_=1;if(!this.handlingDownUpSequence){map.getView().beginInteraction();}return true;}return false;}}const PinchZoom$1=PinchZoom;function defaults(options){options=options?options:{};const interactions=new Collection$1();const kinetic=new Kinetic$1(-5e-3,0.05,100);const altShiftDragRotate=options.altShiftDragRotate!==void 0?options.altShiftDragRotate:true;if(altShiftDragRotate){interactions.push(new DragRotate$1());}const doubleClickZoom=options.doubleClickZoom!==void 0?options.doubleClickZoom:true;if(doubleClickZoom){interactions.push(new DoubleClickZoom$1({delta:options.zoomDelta,duration:options.zoomDuration}));}const dragPan=options.dragPan!==void 0?options.dragPan:true;if(dragPan){interactions.push(new OlInteractionDragPan({onFocusOnly:options.onFocusOnly,kinetic}));}const pinchRotate=options.pinchRotate!==void 0?options.pinchRotate:true;if(pinchRotate){interactions.push(new PinchRotate$1());}const pinchZoom=options.pinchZoom!==void 0?options.pinchZoom:true;if(pinchZoom){interactions.push(new PinchZoom$1({duration:options.zoomDuration}));}const keyboard=options.keyboard!==void 0?options.keyboard:true;if(keyboard){interactions.push(new KeyboardPan$1());interactions.push(new KeyboardZoom$1({delta:options.zoomDelta,duration:options.zoomDuration}));}const mouseWheelZoom=options.mouseWheelZoom!==void 0?options.mouseWheelZoom:true;if(mouseWheelZoom){interactions.push(new OlInteractionMouseWheelZoom({onFocusOnly:options.onFocusOnly,duration:options.zoomDuration}));}const shiftDragZoom=options.shiftDragZoom!==void 0?options.shiftDragZoom:true;if(shiftDragZoom){interactions.push(new DragZoom$1({duration:options.zoomDuration}));}return interactions;}function hasArea(size){return size[0]>0&&size[1]>0;}function scale(size,ratio,dest){if(dest===void 0){dest=[0,0];}dest[0]=size[0]*ratio+0.5|0;dest[1]=size[1]*ratio+0.5|0;return dest;}function toSize(size,dest){if(Array.isArray(size)){return size ;}if(dest===void 0){dest=[size,size];}else{dest[0]=size;dest[1]=size;}return dest;}function removeLayerMapProperty(layer){if(layer instanceof Layer$1){layer.setMapInternal(null);return;}if(layer instanceof LayerGroup$1){layer.getLayers().forEach(removeLayerMapProperty);}}function setLayerMapProperty(layer,map){if(layer instanceof Layer$1){layer.setMapInternal(map);return;}if(layer instanceof LayerGroup$1){const layers=layer.getLayers().getArray();for(let i=0,ii=layers.length;ithis.updateSize());this.controls=optionsInternal.controls||defaults$1();this.interactions=optionsInternal.interactions||defaults({onFocusOnly:true});this.overlays_=optionsInternal.overlays;this.overlayIdIndex_={};this.renderer_=null;this.postRenderFunctions_=[];this.tileQueue_=new TileQueue$1(this .getTilePriority.bind(this),this.handleTileChange_.bind(this));this.addChangeListener(MapProperty.LAYERGROUP,this.handleLayerGroupChanged_);this.addChangeListener(MapProperty.VIEW,this.handleViewChanged_);this.addChangeListener(MapProperty.SIZE,this.handleSizeChanged_);this.addChangeListener(MapProperty.TARGET,this.handleTargetChanged_);this.setProperties(optionsInternal.values);const map=this;if(options.view&&!(options.view instanceof OlView)){options.view.then(function(viewOptions){map.setView(new OlView(viewOptions));});}this.controls.addEventListener(CollectionEventType.ADD,(event)=>{event.element.setMap(this);});this.controls.addEventListener(CollectionEventType.REMOVE,(event)=>{event.element.setMap(null);});this.interactions.addEventListener(CollectionEventType.ADD,(event)=>{event.element.setMap(this);});this.interactions.addEventListener(CollectionEventType.REMOVE,(event)=>{event.element.setMap(null);});this.overlays_.addEventListener(CollectionEventType.ADD,(event)=>{this. addOverlayInternal_(event.element);});this.overlays_.addEventListener(CollectionEventType.REMOVE,(event)=>{const id=event.element.getId();if(id!==void 0){delete this.overlayIdIndex_[id.toString()];}event.element.setMap(null);});this.controls.forEach((control)=>{control.setMap(this);});this.interactions.forEach((interaction)=>{interaction.setMap(this);});this.overlays_.forEach(this.addOverlayInternal_.bind(this));}addControl(control){this.getControls().push(control);}addInteraction(interaction){this.getInteractions().push(interaction);}addLayer(layer){const layers=this.getLayerGroup().getLayers();layers.push(layer);}handleLayerAdd_(event){setLayerMapProperty(event.layer,this);}addOverlay(overlay){this.getOverlays().push(overlay);}addOverlayInternal_(overlay){const id=overlay.getId();if(id!==void 0){this.overlayIdIndex_[id.toString()]=overlay;}overlay.setMap(this);}disposeInternal(){this.controls.clear();this.interactions.clear();this.overlays_.clear();this.resizeObserver_.disconnect(); this.setTarget(null);super.disposeInternal();}forEachFeatureAtPixel(pixel,callback,options){if(!this.frameState_||!this.renderer_){return;}const coordinate=this.getCoordinateFromPixelInternal(pixel);options=options!==void 0?options:{};const hitTolerance=options.hitTolerance!==void 0?options.hitTolerance:0;const layerFilter=options.layerFilter!==void 0?options.layerFilter:TRUE;const checkWrapped=options.checkWrapped!==false;return this.renderer_.forEachFeatureAtCoordinate(coordinate,this.frameState_,hitTolerance,checkWrapped,callback,null,layerFilter,null);}getFeaturesAtPixel(pixel,options){const features=[];this.forEachFeatureAtPixel(pixel,function(feature){features.push(feature);},options);return features;}getAllLayers(){const layers=[];function addLayersFrom(layerGroup){layerGroup.forEach(function(layer){if(layer instanceof LayerGroup$1){addLayersFrom(layer.getLayers());}else{layers.push(layer);}});}addLayersFrom(this.getLayers());return layers;}hasFeatureAtPixel(pixel,options){if(! this.frameState_||!this.renderer_){return false;}const coordinate=this.getCoordinateFromPixelInternal(pixel);options=options!==void 0?options:{};const layerFilter=options.layerFilter!==void 0?options.layerFilter:TRUE;const hitTolerance=options.hitTolerance!==void 0?options.hitTolerance:0;const checkWrapped=options.checkWrapped!==false;return this.renderer_.hasFeatureAtCoordinate(coordinate,this.frameState_,hitTolerance,checkWrapped,layerFilter,null);}getEventCoordinate(event){return this.getCoordinateFromPixel(this.getEventPixel(event));}getEventCoordinateInternal(event){return this.getCoordinateFromPixelInternal(this.getEventPixel(event));}getEventPixel(event){const viewport=this.viewport_;const viewportPosition=viewport.getBoundingClientRect();const viewportSize=this.getSize();const scaleX=viewportPosition.width/viewportSize[0];const scaleY=viewportPosition.height/viewportSize[1];const eventPosition=("changedTouches"in event?(event.changedTouches[0]):(event));return[(eventPosition. clientX-viewportPosition.left)/scaleX,(eventPosition.clientY-viewportPosition.top)/scaleY];}getTarget(){return(this.get(MapProperty.TARGET));}getTargetElement(){return this.targetElement_;}getCoordinateFromPixel(pixel){return toUserCoordinate(this.getCoordinateFromPixelInternal(pixel),this.getView().getProjection());}getCoordinateFromPixelInternal(pixel){const frameState=this.frameState_;if(!frameState){return null;}return apply(frameState.pixelToCoordinateTransform,pixel.slice());}getControls(){return this.controls;}getOverlays(){return this.overlays_;}getOverlayById(id){const overlay=this.overlayIdIndex_[id.toString()];return overlay!==void 0?overlay:null;}getInteractions(){return this.interactions;}getLayerGroup(){return(this.get(MapProperty.LAYERGROUP));}setLayers(layers){const group=this.getLayerGroup();if(layers instanceof Collection$1){group.setLayers(layers);return;}const collection=group.getLayers();collection.clear();collection.extend(layers);}getLayers(){const layers=this. getLayerGroup().getLayers();return layers;}getLoadingOrNotReady(){const layerStatesArray=this.getLayerGroup().getLayerStatesArray();for(let i=0,ii=layerStatesArray.length;i=0;i--){const interaction=interactionsArray[i];if(interaction.getMap()!==this||!interaction.getActive()||!this.getTargetElement()){continue;}const cont=interaction.handleEvent(mapBrowserEvent);if(!cont||mapBrowserEvent.propagationStopped){break;}}}}handlePostRender(){const frameState=this.frameState_;const tileQueue=this.tileQueue_;if(!tileQueue.isEmpty()){let maxTotalLoading=this.maxTilesLoading_;let maxNewLoads=maxTotalLoading;if(frameState){const hints=frameState.viewHints;if(hints[ViewHint.ANIMATING]||hints[ViewHint.INTERACTING]){const lowOnFrameBudget=Date.now()-frameState.time>8;maxTotalLoading=lowOnFrameBudget?0:8;maxNewLoads=lowOnFrameBudget?0:2;}}if(tileQueue.getTilesLoading(){this.postRenderTimeoutHandle_=void 0;this.handlePostRender();},0);}}setLayerGroup(layerGroup){const oldLayerGroup=this.getLayerGroup();if(oldLayerGroup){this.handleLayerRemove_(new GroupEvent("removelayer",oldLayerGroup));}this.set(MapProperty.LAYERGROUP,layerGroup);}setSize(size){this.set(MapProperty.SIZE,size);}setTarget(target){this.set(MapProperty.TARGET, target);}setView(view){if(!view||view instanceof OlView){this.set(MapProperty.VIEW,view);return;}this.set(MapProperty.VIEW,new OlView());const map=this;view.then(function(viewOptions){map.setView(new OlView(viewOptions));});}updateSize(){const targetElement=this.getTargetElement();let size=void 0;if(targetElement){const computedStyle=getComputedStyle(targetElement);const width=targetElement.offsetWidth-parseFloat(computedStyle["borderLeftWidth"])-parseFloat(computedStyle["paddingLeft"])-parseFloat(computedStyle["paddingRight"])-parseFloat(computedStyle["borderRightWidth"]);const height=targetElement.offsetHeight-parseFloat(computedStyle["borderTopWidth"])-parseFloat(computedStyle["paddingTop"])-parseFloat(computedStyle["paddingBottom"])-parseFloat(computedStyle["borderBottomWidth"]);if(!isNaN(width)&&!isNaN(height)){size=[width,height];if(!hasArea(size)&&!!(targetElement.offsetWidth||targetElement.offsetHeight||targetElement.getClientRects().length)){warn( "No map visible because the map container's width or height are 0.");}}}const oldSize=this.getSize();if(size&&(!oldSize||!equals$2(size,oldSize))){this.setSize(size);this.updateViewportSize_();}}updateViewportSize_(){const view=this.getView();if(view){let size=void 0;const computedStyle=getComputedStyle(this.viewport_);if(computedStyle.width&&computedStyle.height){size=[parseInt(computedStyle.width,10),parseInt(computedStyle.height,10)];}view.setViewportSize(size);}}}function createOptionsInternal(options){let keyboardEventTarget=null;if(options.keyboardEventTarget!==void 0){keyboardEventTarget=typeof options.keyboardEventTarget==="string"?document.getElementById(options.keyboardEventTarget):options.keyboardEventTarget;}const values={};const layerGroup=options.layers&&typeof options.layers.getLayers==="function"?(options.layers):new LayerGroup$1({layers:(options.layers)});values[MapProperty.LAYERGROUP]=layerGroup;values[MapProperty.TARGET]=options.target;values[MapProperty.VIEW]= options.view instanceof OlView?options.view:new OlView();let controls;if(options.controls!==void 0){if(Array.isArray(options.controls)){controls=new Collection$1(options.controls.slice());}else{assert(typeof options.controls.getArray==="function","Expected `controls` to be an array or an `ol/Collection.js`");controls=options.controls;}}let interactions;if(options.interactions!==void 0){if(Array.isArray(options.interactions)){interactions=new Collection$1(options.interactions.slice());}else{assert(typeof options.interactions.getArray==="function","Expected `interactions` to be an array or an `ol/Collection.js`");interactions=options.interactions;}}let overlays;if(options.overlays!==void 0){if(Array.isArray(options.overlays)){overlays=new Collection$1(options.overlays.slice());}else{assert(typeof options.overlays.getArray==="function","Expected `overlays` to be an array or an `ol/Collection.js`");overlays=options.overlays;}}else{overlays=new Collection$1();}return{controls,interactions, keyboardEventTarget,overlays,values};}const OlMap=Map;const ImageState={IDLE:0,LOADING:1,LOADED:2,ERROR:3,EMPTY:4};class ImageStyle{constructor(options){this.opacity_=options.opacity;this.rotateWithView_=options.rotateWithView;this.rotation_=options.rotation;this.scale_=options.scale;this.scaleArray_=toSize(options.scale);this.displacement_=options.displacement;this.declutterMode_=options.declutterMode;}clone(){const scale2=this.getScale();return new ImageStyle({opacity:this.getOpacity(),scale:Array.isArray(scale2)?scale2.slice():scale2,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});}getOpacity(){return this.opacity_;}getRotateWithView(){return this.rotateWithView_;}getRotation(){return this.rotation_;}getScale(){return this.scale_;}getScaleArray(){return this.scaleArray_;}getDisplacement(){return this.displacement_;}getDeclutterMode(){return this.declutterMode_;}getAnchor(){return abstract ();}getImage(pixelRatio){return abstract();}getHitDetectionImage(){return abstract();}getPixelRatio(pixelRatio){return 1;}getImageState(){return abstract();}getImageSize(){return abstract();}getOrigin(){return abstract();}getSize(){return abstract();}setDisplacement(displacement){this.displacement_=displacement;}setOpacity(opacity){this.opacity_=opacity;}setRotateWithView(rotateWithView){this.rotateWithView_=rotateWithView;}setRotation(rotation){this.rotation_=rotation;}setScale(scale2){this.scale_=scale2;this.scaleArray_=toSize(scale2);}listenImageChange(listener){abstract();}load(){abstract();}unlistenImageChange(listener){abstract();}}const ImageStyle$1=ImageStyle;function asColorLike(color){if(Array.isArray(color)){return toString(color);}return color;}class RegularShape extends ImageStyle$1{constructor(options){const rotateWithView=options.rotateWithView!==void 0?options.rotateWithView:false;super({opacity:1,rotateWithView,rotation:options.rotation!==void 0?options.rotation:0, scale:options.scale!==void 0?options.scale:1,displacement:options.displacement!==void 0?options.displacement:[0,0],declutterMode:options.declutterMode});this.canvas_=void 0;this.hitDetectionCanvas_=null;this.fill_=options.fill!==void 0?options.fill:null;this.origin_=[0,0];this.points_=options.points;this.radius_=options.radius!==void 0?options.radius:options.radius1;this.radius2_=options.radius2;this.angle_=options.angle!==void 0?options.angle:0;this.stroke_=options.stroke!==void 0?options.stroke:null;this.size_=null;this.renderOptions_=null;this.render();}clone(){const scale2=this.getScale();const style=new RegularShape({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(scale2)?scale2.slice():scale2,displacement:this.getDisplacement().slice(), declutterMode:this.getDeclutterMode()});style.setOpacity(this.getOpacity());return style;}getAnchor(){const size=this.size_;if(!size){return null;}const displacement=this.getDisplacement();const scale2=this.getScaleArray();return[size[0]/2-displacement[0]/scale2[0],size[1]/2+displacement[1]/scale2[1]];}getAngle(){return this.angle_;}getFill(){return this.fill_;}setFill(fill){this.fill_=fill;this.render();}getHitDetectionImage(){if(!this.hitDetectionCanvas_){this.createHitDetectionCanvas_(this.renderOptions_);}return this.hitDetectionCanvas_;}getImage(pixelRatio){let image=this.canvas_[pixelRatio];if(!image){const renderOptions=this.renderOptions_;const context=createCanvasContext2D(renderOptions.size*pixelRatio,renderOptions.size*pixelRatio);this.draw_(renderOptions,context,pixelRatio);image=context.canvas;this.canvas_[pixelRatio]=image;}return image;}getPixelRatio(pixelRatio){return pixelRatio;}getImageSize(){return this.size_;}getImageState(){return ImageState.LOADED;}getOrigin(){ return this.origin_;}getPoints(){return this.points_;}getRadius(){return this.radius_;}getRadius2(){return this.radius2_;}getSize(){return this.size_;}getStroke(){return this.stroke_;}setStroke(stroke){this.stroke_=stroke;this.render();}listenImageChange(listener){}load(){}unlistenImageChange(listener){}calculateLineJoinSize_(lineJoin,strokeWidth,miterLimit){if(strokeWidth===0||this.points_===Infinity||lineJoin!=="bevel"&&lineJoin!=="miter"){return strokeWidth;}let r1=this.radius_;let r2=this.radius2_===void 0?r1:this.radius2_;if(r1{function handleLoad(){unlisten(); resolve(image);}function handleError(){unlisten();reject(new Error("Image load error"));}function unlisten(){image.removeEventListener("load",handleLoad);image.removeEventListener("error",handleError);}image.addEventListener("load",handleLoad);image.addEventListener("error",handleError);if(src){image.src=src;}});}function decodeFallback(image,src){if(src){image.src=src;}return IMAGE_DECODE?new Promise((resolve,reject)=>image.decode().then(()=>resolve(image),reject)):load(image);}let taintedTestContext=null;class IconImage extends EventTarget{constructor(image,src,crossOrigin,imageState,color){super();this.hitDetectionImage_=null;this.image_=image;this.crossOrigin_=crossOrigin;this.canvas_={};this.color_=color;this.imageState_=imageState===void 0?ImageState.IDLE:imageState;this.size_=image&&image.width&&image.height?[image.width,image.height]:null;this.src_=src;this.tainted_;}initializeImage_(){this.image_=new Image();if(this.crossOrigin_!==null){this.image_.crossOrigin=this. crossOrigin_;}}isTainted_(){if(this.tainted_===void 0&&this.imageState_===ImageState.LOADED){if(!taintedTestContext){taintedTestContext=createCanvasContext2D(1,1,void 0,{willReadFrequently:true});}taintedTestContext.drawImage(this.image_,0,0);try{taintedTestContext.getImageData(0,0,1,1);this.tainted_=false;}catch(e){taintedTestContext=null;this.tainted_=true;}}return this.tainted_===true;}dispatchChangeEvent_(){this.dispatchEvent(EventType.CHANGE);}handleImageError_(){this.imageState_=ImageState.ERROR;this.dispatchChangeEvent_();}handleImageLoad_(){this.imageState_=ImageState.LOADED;this.size_=[this.image_.width,this.image_.height];this.dispatchChangeEvent_();}getImage(pixelRatio){if(!this.image_){this.initializeImage_();}this.replaceColor_(pixelRatio);return this.canvas_[pixelRatio]?this.canvas_[pixelRatio]:this.image_;}getPixelRatio(pixelRatio){this.replaceColor_(pixelRatio);return this.canvas_[pixelRatio]?pixelRatio:1;}getImageState(){return this.imageState_;}getHitDetectionImage(){ if(!this.image_){this.initializeImage_();}if(!this.hitDetectionImage_){if(this.isTainted_()){const width=this.size_[0];const height=this.size_[1];const context=createCanvasContext2D(width,height);context.fillRect(0,0,width,height);this.hitDetectionImage_=context.canvas;}else{this.hitDetectionImage_=this.image_;}}return this.hitDetectionImage_;}getSize(){return this.size_;}getSrc(){return this.src_;}load(){if(this.imageState_!==ImageState.IDLE){return;}if(!this.image_){this.initializeImage_();}this.imageState_=ImageState.LOADING;try{if(this.src_!==void 0){this.image_.src=this.src_;}}catch(e){this.handleImageError_();}if(this.image_ instanceof HTMLImageElement){decodeFallback(this.image_,this.src_).then((image)=>{this.image_=image;this.handleImageLoad_();}).catch(this.handleImageError_.bind(this));}}replaceColor_(pixelRatio){if(!this.color_||this.canvas_[pixelRatio]||this.imageState_!==ImageState.LOADED){return;}const image=this.image_;const canvas=document.createElement("canvas");canvas .width=Math.ceil(image.width*pixelRatio);canvas.height=Math.ceil(image.height*pixelRatio);const ctx=canvas.getContext("2d");ctx.scale(pixelRatio,pixelRatio);ctx.drawImage(image,0,0);ctx.globalCompositeOperation="multiply";ctx.fillStyle=asString(this.color_);ctx.fillRect(0,0,canvas.width/pixelRatio,canvas.height/pixelRatio);ctx.globalCompositeOperation="destination-in";ctx.drawImage(image,0,0);this.canvas_[pixelRatio]=canvas;}}function get(image,cacheKey,crossOrigin,imageState,color){let iconImage=cacheKey===void 0?void 0:shared.get(cacheKey,crossOrigin,color);if(!iconImage){iconImage=new IconImage(image,image instanceof HTMLImageElement?image.src||void 0:cacheKey,crossOrigin,imageState,color);shared.set(cacheKey,crossOrigin,color,iconImage);}return iconImage;}function calculateScale(width,height,wantedWidth,wantedHeight){if(wantedWidth!==void 0&&wantedHeight!==void 0){return[wantedWidth/width,wantedHeight/height];}if(wantedWidth!==void 0){return wantedWidth/width;}if(wantedHeight!== void 0){return wantedHeight/height;}return 1;}class Icon extends ImageStyle$1{constructor(options){options=options||{};const opacity=options.opacity!==void 0?options.opacity:1;const rotation=options.rotation!==void 0?options.rotation:0;const scale2=options.scale!==void 0?options.scale:1;const rotateWithView=options.rotateWithView!==void 0?options.rotateWithView:false;super({opacity,rotation,scale:scale2,displacement:options.displacement!==void 0?options.displacement:[0,0],rotateWithView,declutterMode:options.declutterMode});this.anchor_=options.anchor!==void 0?options.anchor:[0.5,0.5];this.normalizedAnchor_=null;this.anchorOrigin_=options.anchorOrigin!==void 0?options.anchorOrigin:"top-left";this.anchorXUnits_=options.anchorXUnits!==void 0?options.anchorXUnits:"fraction";this.anchorYUnits_=options.anchorYUnits!==void 0?options.anchorYUnits:"fraction";this.crossOrigin_=options.crossOrigin!==void 0?options.crossOrigin:null;const image=options.img!==void 0?options.img:null;let cacheKey= options.src;assert(!(cacheKey!==void 0&&image),"`image` and `src` cannot be provided at the same time");if((cacheKey===void 0||cacheKey.length===0)&&image){cacheKey=image.src||getUid(image);}assert(cacheKey!==void 0&&cacheKey.length>0,"A defined and non-empty `src` or `image` must be provided");assert(!((options.width!==void 0||options.height!==void 0)&&options.scale!==void 0),"`width` or `height` cannot be provided together with `scale`");let imageState;if(options.src!==void 0){imageState=ImageState.IDLE;}else if(image!==void 0){if(image instanceof HTMLImageElement){if(image.complete){imageState=image.src?ImageState.LOADED:ImageState.IDLE;}else{imageState=ImageState.LOADING;}}else{imageState=ImageState.LOADED;}}this.color_=options.color!==void 0?asArray(options.color):null;this.iconImage_=get(image,cacheKey,this.crossOrigin_,imageState,this.color_);this.offset_=options.offset!==void 0?options.offset:[0,0];this.offsetOrigin_=options.offsetOrigin!==void 0?options.offsetOrigin:"top-left" ;this.origin_=null;this.size_=options.size!==void 0?options.size:null;if(options.width!==void 0||options.height!==void 0){let width,height;if(options.size){[width,height]=options.size;}else{const image2=this.getImage(1);if(image2.width&&image2.height){width=image2.width;height=image2.height;}else if(image2 instanceof HTMLImageElement){this.initialOptions_=options;const onload=()=>{this.unlistenImageChange(onload);if(!this.initialOptions_){return;}const imageSize=this.iconImage_.getSize();this.setScale(calculateScale(imageSize[0],imageSize[1],options.width,options.height));};this.listenImageChange(onload);return;}}if(width!==void 0){this.setScale(calculateScale(width,height,options.width,options.height));}}}clone(){let scale2,width,height;if(this.initialOptions_){width=this.initialOptions_.width;height=this.initialOptions_.height;}else{scale2=this.getScale();scale2=Array.isArray(scale2)?scale2.slice():scale2;}return new Icon({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_, anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,crossOrigin:this.crossOrigin_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:scale2,width,height,size:this.size_!==null?this.size_.slice():void 0,src:this.getSrc(),displacement:this.getDisplacement().slice(),declutterMode:this.getDeclutterMode()});}getAnchor(){let anchor=this.normalizedAnchor_;if(!anchor){anchor=this.anchor_;const size=this.getSize();if(this.anchorXUnits_=="fraction"||this.anchorYUnits_=="fraction"){if(!size){return null;}anchor=this.anchor_.slice();if(this.anchorXUnits_=="fraction"){anchor[0]*=size[0];}if(this.anchorYUnits_=="fraction"){anchor[1]*=size[1];}}if(this.anchorOrigin_!="top-left"){if(!size){return null;}if(anchor===this.anchor_){anchor=this.anchor_.slice();}if(this.anchorOrigin_=="top-right"||this. anchorOrigin_=="bottom-right"){anchor[0]=-anchor[0]+size[0];}if(this.anchorOrigin_=="bottom-left"||this.anchorOrigin_=="bottom-right"){anchor[1]=-anchor[1]+size[1];}}this.normalizedAnchor_=anchor;}const displacement=this.getDisplacement();const scale2=this.getScaleArray();return[anchor[0]-displacement[0]/scale2[0],anchor[1]+displacement[1]/scale2[1]];}setAnchor(anchor){this.anchor_=anchor;this.normalizedAnchor_=null;}getColor(){return this.color_;}getImage(pixelRatio){return this.iconImage_.getImage(pixelRatio);}getPixelRatio(pixelRatio){return this.iconImage_.getPixelRatio(pixelRatio);}getImageSize(){return this.iconImage_.getSize();}getImageState(){return this.iconImage_.getImageState();}getHitDetectionImage(){return this.iconImage_.getHitDetectionImage();}getOrigin(){if(this.origin_){return this.origin_;}let offset=this.offset_;if(this.offsetOrigin_!="top-left"){const size=this.getSize();const iconImageSize=this.iconImage_.getSize();if(!size||!iconImageSize){return null;}offset= offset.slice();if(this.offsetOrigin_=="top-right"||this.offsetOrigin_=="bottom-right"){offset[0]=iconImageSize[0]-size[0]-offset[0];}if(this.offsetOrigin_=="bottom-left"||this.offsetOrigin_=="bottom-right"){offset[1]=iconImageSize[1]-size[1]-offset[1];}}this.origin_=offset;return this.origin_;}getSrc(){return this.iconImage_.getSrc();}getSize(){return!this.size_?this.iconImage_.getSize():this.size_;}getWidth(){const scale2=this.getScaleArray();if(this.size_){return this.size_[0]*scale2[0];}if(this.iconImage_.getImageState()==ImageState.LOADED){return this.iconImage_.getSize()[0]*scale2[0];}return void 0;}getHeight(){const scale2=this.getScaleArray();if(this.size_){return this.size_[1]*scale2[1];}if(this.iconImage_.getImageState()==ImageState.LOADED){return this.iconImage_.getSize()[1]*scale2[1];}return void 0;}setScale(scale2){delete this.initialOptions_;super.setScale(scale2);}listenImageChange(listener){this.iconImage_.addEventListener(EventType.CHANGE,listener);}load(){this. iconImage_.load();}unlistenImageChange(listener){this.iconImage_.removeEventListener(EventType.CHANGE,listener);}}const OlIcon=Icon;class Feature extends BaseObject$1{constructor(geometryOrProperties){super();this.on;this.once;this.un;this.id_=void 0;this.geometryName_="geometry";this.style_=null;this.styleFunction_=void 0;this.geometryChangeKey_=null;this.addChangeListener(this.geometryName_,this.handleGeometryChanged_);if(geometryOrProperties){if(typeof geometryOrProperties.getSimplifiedGeometry==="function"){const geometry=(geometryOrProperties);this.setGeometry(geometry);}else{const properties=geometryOrProperties;this.setProperties(properties);}}}clone(){const clone2=(new Feature(this.hasProperties()?this.getProperties():null));clone2.setGeometryName(this.getGeometryName());const geometry=this.getGeometry();if(geometry){clone2.setGeometry(geometry.clone());}const style=this.getStyle();if(style){clone2.setStyle(style);}return clone2;}getGeometry(){return(this.get(this.geometryName_ ));}getId(){return this.id_;}getGeometryName(){return this.geometryName_;}getStyle(){return this.style_;}getStyleFunction(){return this.styleFunction_;}handleGeometryChange_(){this.changed();}handleGeometryChanged_(){if(this.geometryChangeKey_){unlistenByKey(this.geometryChangeKey_);this.geometryChangeKey_=null;}const geometry=this.getGeometry();if(geometry){this.geometryChangeKey_=listen(geometry,EventType.CHANGE,this.handleGeometryChange_,this);}this.changed();}setGeometry(geometry){this.set(this.geometryName_,geometry);}setStyle(style){this.style_=style;this.styleFunction_=!style?void 0:createStyleFunction(style);this.changed();}setId(id){this.id_=id;this.changed();}setGeometryName(name){this.removeChangeListener(this.geometryName_,this.handleGeometryChanged_);this.geometryName_=name;this.addChangeListener(this.geometryName_,this.handleGeometryChanged_);this.handleGeometryChanged_();}}function createStyleFunction(obj){if(typeof obj==="function"){return obj;}let styles;if(Array. isArray(obj)){styles=obj;}else{assert(typeof obj.getZIndex==="function","Expected an `ol/style/Style` or an array of `ol/style/Style.js`");const style=(obj);styles=[style];}return function(){return styles;};}const Feature$1=Feature;class GeometryCollection extends Geometry$1{constructor(geometries){super();this.geometries_=geometries?geometries:null;this.changeEventsKeys_=[];this.listenGeometriesChange_();}unlistenGeometriesChange_(){this.changeEventsKeys_.forEach(unlistenByKey);this.changeEventsKeys_.length=0;}listenGeometriesChange_(){if(!this.geometries_){return;}for(let i=0,ii=this.geometries_.length;i1?dimension:2;dest=dest?dest:new Array(dimension);for(let i=0;i>1;if(mleft){if(right-left>600){var n=right-left+1;var m=k-left+1;var z=Math.log(n);var s=0.5*Math.exp(2*z/3);var sd=0.5*Math.sqrt(z*s*(n-s)/n)*(m-n/2<0?-1:1);var newLeft=Math.max(left,Math.floor(k-m*s/n+sd));var newRight=Math.min(right,Math.floor(k+(n-m)*s/n+sd));quickselectStep(arr,k,newLeft,newRight,compare);}var t=arr[k];var i=left;var j=right;swap(arr,left,k);if(compare(arr[right],t)>0)swap(arr,left,right);while(i0)j--;}if(compare(arr[left],t)===0)swap(arr,left,j);else {j++;swap(arr,j,right);}if(j<=k)left=j+1;if(k<=j)right=j-1;}}function swap(arr,i,j){var tmp=arr[i];arr[i]=arr[j];arr[j]=tmp;}function defaultCompare(a,b){return ab?1:0;}let RBush$2=class RBush{constructor(maxEntries=9){this._maxEntries=Math.max(4,maxEntries);this._minEntries=Math.max(2,Math.ceil(this._maxEntries*0.4));this.clear();}all(){return this._all(this.data,[]);}search(bbox){let node=this.data;const result=[];if(!intersects(bbox,node))return result;const toBBox=this.toBBox;const nodesToSearch=[];while(node){for(let i=0;i=0){if(insertPath[level2].children.length>this._maxEntries){this._split(insertPath,level2);level2--;}else break;}this._adjustParentBBoxes(bbox,insertPath,level2);}_split(insertPath,level2){const node=insertPath[level2];const M2=node.children.length;const m=this._minEntries;this._chooseSplitAxis(node,m,M2);const splitIndex=this._chooseSplitIndex(node,m,M2);const newNode=createNode(node.children.splice(splitIndex,node.children.length-splitIndex));newNode.height=node.height;newNode.leaf=node.leaf;calcBBox(node,this.toBBox);calcBBox(newNode,this.toBBox);if(level2)insertPath[level2-1].children.push(newNode);else this._splitRoot(node,newNode);}_splitRoot(node,newNode){this.data=createNode([node,newNode]);this.data .height=node.height+1;this.data.leaf=false;calcBBox(this.data,this.toBBox);}_chooseSplitIndex(node,m,M2){let index;let minOverlap=Infinity;let minArea=Infinity;for(let i=m;i<=M2-m;i++){const bbox1=distBBox(node,0,i,this.toBBox);const bbox2=distBBox(node,i,M2,this.toBBox);const overlap=intersectionArea(bbox1,bbox2);const area=bboxArea(bbox1)+bboxArea(bbox2);if(overlap=m;i--){const child=node.children[i];extend(rightBBox,node.leaf?toBBox(child):child);margin+=bboxMargin(rightBBox);}return margin;}_adjustParentBBoxes(bbox,path,level2){for(let i=level2;i>=0;i--){extend(path[i],bbox);}}_condense(path){for(let i=path.length-1,siblings;i>=0;i--){if(path[i].children.length===0){if(i>0){siblings=path[i-1].children;siblings.splice(siblings.indexOf(path[i]),1);}else this.clear();}else calcBBox(path[i],this.toBBox);}}};function findItem(item,items,equalsFn){if(!equalsFn)return items.indexOf(item);for(let i=0;i=a.minX&&b.maxY>=a.minY;}function createNode(children){return{children,height:1,leaf:true,minX:Infinity,minY:Infinity,maxX:-Infinity,maxY:-Infinity};}function multiSelect(arr,left,right,n,compare){const stack=[left,right];while(stack.length){right=stack.pop();left=stack.pop();if(right-left<=n)continue;const mid=left+Math.ceil((right-left)/n/2)*n;quickselect(arr,mid,left,right,compare);stack.push(left,mid,mid,right);}}class RBush2{constructor(maxEntries){this.rbush_=new RBush$2(maxEntries);this.items_={};}insert(extent,value){const item={minX:extent[0],minY:extent[1],maxX:extent[2],maxY:extent[3],value};this.rbush_.insert(item);this.items_[getUid(value)]=item;}load(extents,values){const items=new Array(values.length);for(let i=0,l=values.length;i=200&&xhr2.status<300){const type=format.getType();let source;if(type=="json"||type=="text"){source=xhr2.responseText;}else if(type=="xml"){source=xhr2.responseXML;if(!source){source=new DOMParser().parseFromString(xhr2.responseText,"application/xml");}}else if(type=="arraybuffer"){source=xhr2.response;}if(source){success(format.readFeatures(source,{extent,featureProjection:projection}),format.readProjection(source));}else{failure();}}else{failure();}};xhr2.onerror=failure;xhr2.send();}function xhr(url,format){return function (extent,resolution,projection,success,failure){const source=(this);loadFeaturesXhr(url,format,extent,resolution,projection,function(features,dataProjection){source.addFeatures(features);if(success!==void 0){success(features);}},failure?failure:VOID);};}class VectorSourceEvent extends Event{constructor(type,feature,features){super(type);this.feature=feature;this.features=features;}}class VectorSource extends Source$1{constructor(options){options=options||{};super({attributions:options.attributions,interpolate:true,projection:void 0,state:"ready",wrapX:options.wrapX!==void 0?options.wrapX:true});this.on;this.once;this.un;this.loader_=VOID;this.format_=options.format;this.overlaps_=options.overlaps===void 0?true:options.overlaps;this.url_=options.url;if(options.loader!==void 0){this.loader_=options.loader;}else if(this.url_!==void 0){assert(this.format_,"`format` must be set when `url` is set");this.loader_=xhr(this.url_,this.format_);}this.strategy_=options.strategy!==void 0?options. strategy:all;const useSpatialIndex=options.useSpatialIndex!==void 0?options.useSpatialIndex:true;this.featuresRtree_=useSpatialIndex?new RBush$1():null;this.loadedExtentsRtree_=new RBush$1();this.loadingExtentsCount_=0;this.nullGeometryFeatures_={};this.idIndex_={};this.uidIndex_={};this.featureChangeKeys_={};this.featuresCollection_=null;let collection;let features;if(Array.isArray(options.features)){features=options.features;}else if(options.features){collection=options.features;features=collection.getArray();}if(!useSpatialIndex&&collection===void 0){collection=new Collection$1(features);}if(features!==void 0){this.addFeaturesInternal(features);}if(collection!==void 0){this.bindFeaturesCollection_(collection);}}addFeature(feature){this.addFeatureInternal(feature);this.changed();}addFeatureInternal(feature){const featureKey=getUid(feature);if(!this.addToIndex_(featureKey,feature)){if(this.featuresCollection_){this.featuresCollection_.remove(feature);}return;}this.setupChangeEvents_( featureKey,feature);const geometry=feature.getGeometry();if(geometry){const extent=geometry.getExtent();if(this.featuresRtree_){this.featuresRtree_.insert(extent,feature);}}else{this.nullGeometryFeatures_[featureKey]=feature;}this.dispatchEvent(new VectorSourceEvent(VectorEventType.ADDFEATURE,feature));}setupChangeEvents_(featureKey,feature){this.featureChangeKeys_[featureKey]=[listen(feature,EventType.CHANGE,this.handleFeatureChange_,this),listen(feature,ObjectEventType.PROPERTYCHANGE,this.handleFeatureChange_,this)];}addToIndex_(featureKey,feature){let valid=true;const id=feature.getId();if(id!==void 0){if(!(id.toString()in this.idIndex_)){this.idIndex_[id.toString()]=feature;}else{valid=false;}}if(valid){assert(!(featureKey in this.uidIndex_),"The passed `feature` was already added to the source");this.uidIndex_[featureKey]=feature;}return valid;}addFeatures(features){this.addFeaturesInternal(features);this.changed();}addFeaturesInternal(features){const extents=[];const newFeatures= [];const geometryFeatures=[];for(let i=0,length=features.length;i{if(!modifyingCollection){modifyingCollection=true;this.addFeature(evt.element);modifyingCollection=false;}});collection.addEventListener(CollectionEventType.REMOVE,(evt)=>{if(!modifyingCollection){modifyingCollection=true;this.removeFeature(evt.element);modifyingCollection=false;}});this.featuresCollection_=collection;}clear(fast){if(fast){for(const featureId in this.featureChangeKeys_){const keys=this.featureChangeKeys_[featureId];keys.forEach(unlistenByKey);}if(!this.featuresCollection_){this.featureChangeKeys_={};this.idIndex_={};this.uidIndex_={};}}else{if(this.featuresRtree_){const removeAndIgnoreReturn=(feature)=>{this.removeFeatureInternal(feature);};this.featuresRtree_.forEach( removeAndIgnoreReturn);for(const id in this.nullGeometryFeatures_){this.removeFeatureInternal(this.nullGeometryFeatures_[id]);}}}if(this.featuresCollection_){this.featuresCollection_.clear();}if(this.featuresRtree_){this.featuresRtree_.clear();}this.nullGeometryFeatures_={};const clearEvent=new VectorSourceEvent(VectorEventType.CLEAR);this.dispatchEvent(clearEvent);this.changed();}forEachFeature(callback){if(this.featuresRtree_){return this.featuresRtree_.forEach(callback);}if(this.featuresCollection_){this.featuresCollection_.forEach(callback);}}forEachFeatureAtCoordinateDirect(coordinate,callback){const extent=[coordinate[0],coordinate[1],coordinate[0],coordinate[1]];return this.forEachFeatureInExtent(extent,function(feature){const geometry=feature.getGeometry();if(geometry.intersectsCoordinate(coordinate)){return callback(feature);}return void 0;});}forEachFeatureInExtent(extent,callback){if(this.featuresRtree_){return this.featuresRtree_.forEachInExtent(extent,callback);}if(this. featuresCollection_){this.featuresCollection_.forEach(callback);}}forEachFeatureIntersectingExtent(extent,callback){return this.forEachFeatureInExtent(extent,function(feature){const geometry=feature.getGeometry();if(geometry.intersectsExtent(extent)){const result=callback(feature);if(result){return result;}}});}getFeaturesCollection(){return this.featuresCollection_;}getFeatures(){let features;if(this.featuresCollection_){features=this.featuresCollection_.getArray().slice(0);}else if(this.featuresRtree_){features=this.featuresRtree_.getAll();if(!isEmpty$1(this.nullGeometryFeatures_)){extend$2(features,Object.values(this.nullGeometryFeatures_));}}return(features);}getFeaturesAtCoordinate(coordinate){const features=[];this.forEachFeatureAtCoordinateDirect(coordinate,function(feature){features.push(feature);});return features;}getFeaturesInExtent(extent,projection){if(this.featuresRtree_){const multiWorld=projection&&projection.canWrapX()&&this.getWrapX();if(!multiWorld){return this. featuresRtree_.getInExtent(extent);}const extents=wrapAndSliceX(extent,projection);return[].concat(...extents.map((anExtent)=>this.featuresRtree_.getInExtent(anExtent)));}if(this.featuresCollection_){return this.featuresCollection_.getArray().slice(0);}return[];}getClosestFeatureToCoordinate(coordinate,filter){const x=coordinate[0];const y=coordinate[1];let closestFeature=null;const closestPoint=[NaN,NaN];let minSquaredDistance=Infinity;const extent=[-Infinity,-Infinity,Infinity,Infinity];filter=filter?filter:TRUE;this.featuresRtree_.forEachInExtent(extent,function(feature){if(filter(feature)){const geometry=feature.getGeometry();const previousMinSquaredDistance=minSquaredDistance;minSquaredDistance=geometry.closestPointXY(x,y,closestPoint,minSquaredDistance);if(minSquaredDistance{--this.loadingExtentsCount_;this.dispatchEvent(new VectorSourceEvent(VectorEventType.FEATURESLOADEND,void 0,features));},()=>{--this.loadingExtentsCount_;this.dispatchEvent(new VectorSourceEvent(VectorEventType.FEATURESLOADERROR));});loadedExtentsRtree.insert(extentToLoad,{extent:extentToLoad.slice()});}}this.loading=this.loader_.length<4?false:this.loadingExtentsCount_>0;}refresh(){this.clear(true);this.loadedExtentsRtree_.clear();super.refresh();}removeLoadedExtent(extent){const loadedExtentsRtree=this.loadedExtentsRtree_;let obj;loadedExtentsRtree.forEachInExtent(extent,function(object){if(equals$1(object.extent,extent)){obj=object;return true;}});if(obj){loadedExtentsRtree.remove(obj);}}removeFeature(feature){if(!feature){return;}const featureKey=getUid(feature);if(featureKey in this.nullGeometryFeatures_){delete this.nullGeometryFeatures_[featureKey];}else{if(this.featuresRtree_){this.featuresRtree_.remove(feature);}}const result=this.removeFeatureInternal(feature);if(result){this.changed();}}removeFeatureInternal(feature){const featureKey=getUid(feature);const featureChangeKeys=this.featureChangeKeys_[featureKey];if(!featureChangeKeys){return;}featureChangeKeys.forEach(unlistenByKey);delete this.featureChangeKeys_[featureKey];const id=feature.getId();if(id!==void 0){delete this.idIndex_[id.toString()];}delete this.uidIndex_[featureKey];this.dispatchEvent(new VectorSourceEvent(VectorEventType.REMOVEFEATURE,feature));return feature;}removeFromIdIndex_(feature){let removed=false;for(const id in this.idIndex_){if(this.idIndex_[id]===feature){delete this.idIndex_[id];removed=true;break;}}return removed;}setLoader(loader){this.loader_=loader;}setUrl(url){assert(this.format_,"`format` must be set when `url` is set");this.url_=url;this.setLoader(xhr(url,this.format_));}}const OlSourceVector= VectorSource;class Tile extends EventTarget{constructor(tileCoord,state,options){super();options=options?options:{};this.tileCoord=tileCoord;this.state=state;this.interimTile=null;this.key="";this.transition_=options.transition===void 0?250:options.transition;this.transitionStarts_={};this.interpolate=!!options.interpolate;}changed(){this.dispatchEvent(EventType.CHANGE);}release(){if(this.state===TileState.ERROR){this.setState(TileState.EMPTY);}}getKey(){return this.key+"/"+this.tileCoord;}getInterimTile(){if(!this.interimTile){return this;}let tile=this.interimTile;do{if(tile.getState()==TileState.LOADED){this.transition_=0;return tile;}tile=tile.interimTile;}while(tile);return this;}refreshInterimChain(){if(!this.interimTile){return;}let tile=this.interimTile;let prev=this;do{if(tile.getState()==TileState.LOADED){tile.interimTile=null;break;}else if(tile.getState()==TileState.LOADING){prev=tile;}else if(tile.getState()==TileState.IDLE){prev.interimTile=tile.interimTile;}else{prev= tile;}tile=prev.interimTile;}while(tile);}getTileCoord(){return this.tileCoord;}getState(){return this.state;}setState(state){if(this.state!==TileState.ERROR&&this.state>state){throw new Error("Tile load sequence violation");}this.state=state;this.changed();}load(){abstract();}getAlpha(id,time){if(!this.transition_){return 1;}let start=this.transitionStarts_[id];if(!start){start=time;this.transitionStarts_[id]=start;}else if(start===-1){return 1;}const delta=time-start+1e3/60;if(delta>=this.transition_){return 1;}return easeIn(delta/this.transition_);}inTransition(id){if(!this.transition_){return false;}return this.transitionStarts_[id]!==-1;}endTransition(id){if(this.transition_){this.transitionStarts_[id]=-1;}}}const Tile$1=Tile;class ImageTile extends Tile$1{constructor(tileCoord,state,src,crossOrigin,tileLoadFunction,options){super(tileCoord,state,options);this.crossOrigin_=crossOrigin;this.src_=src;this.key=src;this.image_=new Image();if(crossOrigin!==null){this.image_.crossOrigin =crossOrigin;}this.unlisten_=null;this.tileLoadFunction_=tileLoadFunction;}getImage(){return this.image_;}setImage(element){this.image_=element;this.state=TileState.LOADED;this.unlistenImage_();this.changed();}handleImageError_(){this.state=TileState.ERROR;this.unlistenImage_();this.image_=getBlankImage();this.changed();}handleImageLoad_(){const image=(this.image_);if(image.naturalWidth&&image.naturalHeight){this.state=TileState.LOADED;}else{this.state=TileState.EMPTY;}this.unlistenImage_();this.changed();}load(){if(this.state==TileState.ERROR){this.state=TileState.IDLE;this.image_=new Image();if(this.crossOrigin_!==null){this.image_.crossOrigin=this.crossOrigin_;}}if(this.state==TileState.IDLE){this.state=TileState.LOADING;this.changed();this.tileLoadFunction_(this,this.src_);this.unlisten_=listenImage(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this));}}unlistenImage_(){if(this.unlisten_){this.unlisten_();this.unlisten_=null;}}}function getBlankImage(){ const ctx=createCanvasContext2D(1,1);ctx.fillStyle="rgba(0,0,0,0)";ctx.fillRect(0,0,1,1);return ctx.canvas;}const ImageTile$1=ImageTile;const ERROR_THRESHOLD=0.5;const MAX_SUBDIVISION=10;const MAX_TRIANGLE_WIDTH=0.25;class Triangulation{constructor(sourceProj,targetProj,targetExtent,maxSourceExtent,errorThreshold,destinationResolution){this.sourceProj_=sourceProj;this.targetProj_=targetProj;let transformInvCache={};const transformInv=getTransform(this.targetProj_,this.sourceProj_);this.transformInv_=function(c){const key=c[0]+"/"+c[1];if(!transformInvCache[key]){transformInvCache[key]=transformInv(c);}return transformInvCache[key];};this.maxSourceExtent_=maxSourceExtent;this.errorThresholdSquared_=errorThreshold*errorThreshold;this.triangles_=[];this.wrapsXInSource_=false;this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!maxSourceExtent&&!!this.sourceProj_.getExtent()&&getWidth(maxSourceExtent)>=getWidth(this.sourceProj_.getExtent());this.sourceWorldWidth_=this.sourceProj_. getExtent()?getWidth(this.sourceProj_.getExtent()):null;this.targetWorldWidth_=this.targetProj_.getExtent()?getWidth(this.targetProj_.getExtent()):null;const destinationTopLeft=getTopLeft(targetExtent);const destinationTopRight=getTopRight(targetExtent);const destinationBottomRight=getBottomRight(targetExtent);const destinationBottomLeft=getBottomLeft(targetExtent);const sourceTopLeft=this.transformInv_(destinationTopLeft);const sourceTopRight=this.transformInv_(destinationTopRight);const sourceBottomRight=this.transformInv_(destinationBottomRight);const sourceBottomLeft=this.transformInv_(destinationBottomLeft);const maxSubdivision=MAX_SUBDIVISION+(destinationResolution?Math.max(0,Math.ceil(Math.log2(getArea(targetExtent)/(destinationResolution*destinationResolution*256*256)))):0);this.addQuad_(destinationTopLeft,destinationTopRight,destinationBottomRight,destinationBottomLeft,sourceTopLeft,sourceTopRight,sourceBottomRight,sourceBottomLeft,maxSubdivision);if(this.wrapsXInSource_){let leftBound=Infinity;this.triangles_.forEach(function(triangle,i,arr){leftBound=Math.min(leftBound,triangle.source[0][0],triangle.source[1][0],triangle.source[2][0]);});this.triangles_.forEach((triangle)=>{if(Math.max(triangle.source[0][0],triangle.source[1][0],triangle.source[2][0])-leftBound>this.sourceWorldWidth_/2){const newTriangle=[[triangle.source[0][0],triangle.source[0][1]],[triangle.source[1][0],triangle.source[1][1]],[triangle.source[2][0],triangle.source[2][1]]];if(newTriangle[0][0]-leftBound>this.sourceWorldWidth_/2){newTriangle[0][0]-=this.sourceWorldWidth_;}if(newTriangle[1][0]-leftBound>this.sourceWorldWidth_/2){newTriangle[1][0]-=this.sourceWorldWidth_;}if(newTriangle[2][0]-leftBound>this.sourceWorldWidth_/2){newTriangle[2][0]-=this.sourceWorldWidth_;}const minX=Math.min(newTriangle[0][0],newTriangle[1][0],newTriangle[2][0]);const maxX=Math.max(newTriangle[0][0],newTriangle[1][0],newTriangle[2][0]);if(maxX-minX0.5&&sourceCoverageX<1;let needsSubdivision=false;if(maxSubdivision>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_){const targetQuadExtent=boundingExtent([a,b,c,d]);const targetCoverageX=getWidth(targetQuadExtent)/this.targetWorldWidth_;needsSubdivision=targetCoverageX>MAX_TRIANGLE_WIDTH||needsSubdivision;}if(!wrapsX&&this.sourceProj_.isGlobal()&&sourceCoverageX){needsSubdivision=sourceCoverageX>MAX_TRIANGLE_WIDTH||needsSubdivision;}}if(!needsSubdivision&&this.maxSourceExtent_){if(isFinite(sourceQuadExtent[0])&&isFinite(sourceQuadExtent[1])&& isFinite(sourceQuadExtent[2])&&isFinite(sourceQuadExtent[3])){if(!intersects$1(sourceQuadExtent,this.maxSourceExtent_)){return;}}}let isNotFinite=0;if(!needsSubdivision){if(!isFinite(aSrc[0])||!isFinite(aSrc[1])||!isFinite(bSrc[0])||!isFinite(bSrc[1])||!isFinite(cSrc[0])||!isFinite(cSrc[1])||!isFinite(dSrc[0])||!isFinite(dSrc[1])){if(maxSubdivision>0){needsSubdivision=true;}else{isNotFinite=(!isFinite(aSrc[0])||!isFinite(aSrc[1])?8:0)+(!isFinite(bSrc[0])||!isFinite(bSrc[1])?4:0)+(!isFinite(cSrc[0])||!isFinite(cSrc[1])?2:0)+(!isFinite(dSrc[0])||!isFinite(dSrc[1])?1:0);if(isNotFinite!=1&&isNotFinite!=2&&isNotFinite!=4&&isNotFinite!=8){return;}}}}if(maxSubdivision>0){if(!needsSubdivision){const center=[(a[0]+c[0])/2,(a[1]+c[1])/2];const centerSrc=this.transformInv_(center);let dx;if(wrapsX){const centerSrcEstimX=(modulo(aSrc[0],sourceWorldWidth)+modulo(cSrc[0],sourceWorldWidth))/2;dx=centerSrcEstimX-modulo(centerSrc[0],sourceWorldWidth);}else{dx=(aSrc[0]+cSrc[0])/2-centerSrc[0];}const dy= (aSrc[1]+cSrc[1])/2-centerSrc[1];const centerSrcErrorSquared=dx*dx+dy*dy;needsSubdivision=centerSrcErrorSquared>this.errorThresholdSquared_;}if(needsSubdivision){if(Math.abs(a[0]-c[0])<=Math.abs(a[1]-c[1])){const bc=[(b[0]+c[0])/2,(b[1]+c[1])/2];const bcSrc=this.transformInv_(bc);const da=[(d[0]+a[0])/2,(d[1]+a[1])/2];const daSrc=this.transformInv_(da);this.addQuad_(a,b,bc,da,aSrc,bSrc,bcSrc,daSrc,maxSubdivision-1);this.addQuad_(da,bc,c,d,daSrc,bcSrc,cSrc,dSrc,maxSubdivision-1);}else{const ab=[(a[0]+b[0])/2,(a[1]+b[1])/2];const abSrc=this.transformInv_(ab);const cd=[(c[0]+d[0])/2,(c[1]+d[1])/2];const cdSrc=this.transformInv_(cd);this.addQuad_(a,ab,cd,d,aSrc,abSrc,cdSrc,dSrc,maxSubdivision-1);this.addQuad_(ab,b,c,cd,abSrc,bSrc,cSrc,cdSrc,maxSubdivision-1);}return;}}if(wrapsX){if(!this.canWrapXInSource_){return;}this.wrapsXInSource_=true;}if((isNotFinite&11)==0){this.addTriangle_(a,c,d,aSrc,cSrc,dSrc);}if((isNotFinite&14)==0){this.addTriangle_(a,c,b,aSrc,cSrc,bSrc);}if(isNotFinite){if(( isNotFinite&13)==0){this.addTriangle_(b,d,a,bSrc,dSrc,aSrc);}if((isNotFinite&7)==0){this.addTriangle_(b,d,c,bSrc,dSrc,cSrc);}}}calculateSourceExtent(){const extent=createEmpty();this.triangles_.forEach(function(triangle,i,arr){const src=triangle.source;extendCoordinate(extent,src[0]);extendCoordinate(extent,src[1]);extendCoordinate(extent,src[2]);});return extent;}getTriangles(){return this.triangles_;}}const Triangulation$1=Triangulation;let brokenDiagonalRendering_;const canvasPool$1=[];function drawTestTriangle(ctx,u1,v1,u2,v2){ctx.beginPath();ctx.moveTo(0,0);ctx.lineTo(u1,v1);ctx.lineTo(u2,v2);ctx.closePath();ctx.save();ctx.clip();ctx.fillRect(0,0,Math.max(u1,u2)+1,Math.max(v1,v2));ctx.restore();}function verifyBrokenDiagonalRendering(data,offset){return Math.abs(data[offset*4]-210)>2||Math.abs(data[offset*4+3]-0.75*255)>2;}function isBrokenDiagonalRendering(){if(brokenDiagonalRendering_===void 0){const ctx=createCanvasContext2D(6,6,canvasPool$1);ctx.globalCompositeOperation= "lighter";ctx.fillStyle="rgba(210, 0, 0, 0.75)";drawTestTriangle(ctx,4,5,4,0);drawTestTriangle(ctx,4,5,0,5);const data=ctx.getImageData(0,0,3,3).data;brokenDiagonalRendering_=verifyBrokenDiagonalRendering(data,0)||verifyBrokenDiagonalRendering(data,4)||verifyBrokenDiagonalRendering(data,8);releaseCanvas(ctx);canvasPool$1.push(ctx.canvas);}return brokenDiagonalRendering_;}function calculateSourceResolution(sourceProj,targetProj,targetCenter,targetResolution){const sourceCenter=transform(targetCenter,targetProj,sourceProj);let sourceResolution=getPointResolution(targetProj,targetResolution,targetCenter);const targetMetersPerUnit=targetProj.getMetersPerUnit();if(targetMetersPerUnit!==void 0){sourceResolution*=targetMetersPerUnit;}const sourceMetersPerUnit=sourceProj.getMetersPerUnit();if(sourceMetersPerUnit!==void 0){sourceResolution/=sourceMetersPerUnit;}const sourceExtent=sourceProj.getExtent();if(!sourceExtent||containsCoordinate(sourceExtent,sourceCenter)){const compensationFactor= getPointResolution(sourceProj,sourceResolution,sourceCenter)/sourceResolution;if(isFinite(compensationFactor)&&compensationFactor>0){sourceResolution/=compensationFactor;}}return sourceResolution;}function calculateSourceExtentResolution(sourceProj,targetProj,targetExtent,targetResolution){const targetCenter=getCenter(targetExtent);let sourceResolution=calculateSourceResolution(sourceProj,targetProj,targetCenter,targetResolution);if(!isFinite(sourceResolution)||sourceResolution<=0){forEachCorner(targetExtent,function(corner){sourceResolution=calculateSourceResolution(sourceProj,targetProj,corner,targetResolution);return isFinite(sourceResolution)&&sourceResolution>0;});}return sourceResolution;}function render(width,height,pixelRatio,sourceResolution,sourceExtent,targetResolution,targetExtent,triangulation,sources,gutter,renderEdges,interpolate){const context=createCanvasContext2D(Math.round(pixelRatio*width),Math.round(pixelRatio*height),canvasPool$1);if(!interpolate){context. imageSmoothingEnabled=false;}if(sources.length===0){return context.canvas;}context.scale(pixelRatio,pixelRatio);function pixelRound(value){return Math.round(value*pixelRatio)/pixelRatio;}context.globalCompositeOperation="lighter";const sourceDataExtent=createEmpty();sources.forEach(function(src,i,arr){extend$1(sourceDataExtent,src.extent);});const canvasWidthInUnits=getWidth(sourceDataExtent);const canvasHeightInUnits=getHeight(sourceDataExtent);const stitchContext=createCanvasContext2D(Math.round(pixelRatio*canvasWidthInUnits/sourceResolution),Math.round(pixelRatio*canvasHeightInUnits/sourceResolution),canvasPool$1);if(!interpolate){stitchContext.imageSmoothingEnabled=false;}const stitchScale=pixelRatio/sourceResolution;sources.forEach(function(src,i,arr){const xPos=src.extent[0]-sourceDataExtent[0];const yPos=-(src.extent[3]-sourceDataExtent[3]);const srcWidth=getWidth(src.extent);const srcHeight=getHeight(src.extent);if(src.image.width>0&&src.image.height>0){stitchContext.drawImage( src.image,gutter,gutter,src.image.width-2*gutter,src.image.height-2*gutter,xPos*stitchScale,yPos*stitchScale,srcWidth*stitchScale,srcHeight*stitchScale);}});const targetTopLeft=getTopLeft(targetExtent);triangulation.getTriangles().forEach(function(triangle,i,arr){const source=triangle.source;const target=triangle.target;let x0=source[0][0],y0=source[0][1];let x1=source[1][0],y1=source[1][1];let x2=source[2][0],y2=source[2][1];const u0=pixelRound((target[0][0]-targetTopLeft[0])/targetResolution);const v0=pixelRound(-(target[0][1]-targetTopLeft[1])/targetResolution);const u1=pixelRound((target[1][0]-targetTopLeft[0])/targetResolution);const v1=pixelRound(-(target[1][1]-targetTopLeft[1])/targetResolution);const u2=pixelRound((target[2][0]-targetTopLeft[0])/targetResolution);const v2=pixelRound(-(target[2][1]-targetTopLeft[1])/targetResolution);const sourceNumericalShiftX=x0;const sourceNumericalShiftY=y0;x0=0;y0=0;x1-=sourceNumericalShiftX;y1-=sourceNumericalShiftY;x2-= sourceNumericalShiftX;y2-=sourceNumericalShiftY;const augmentedMatrix=[[x1,y1,0,0,u1-u0],[x2,y2,0,0,u2-u0],[0,0,x1,y1,v1-v0],[0,0,x2,y2,v2-v0]];const affineCoefs=solveLinearSystem(augmentedMatrix);if(!affineCoefs){return;}context.save();context.beginPath();if(isBrokenDiagonalRendering()||!interpolate){context.moveTo(u1,v1);const steps=4;const ud=u0-u1;const vd=v0-v1;for(let step=0;step{if(tile&&tile.getState()==TileState.LOADED){sources.push({extent:this.sourceTileGrid_.getTileCoordExtent(tile.tileCoord),image:tile.getImage()});}});this.sourceTiles_.length=0;if(sources.length===0){this.state=TileState.ERROR;}else{const z=this.wrappedTileCoord_[0];const size=this.targetTileGrid_.getTileSize(z);const width=typeof size==="number"?size:size[0];const height=typeof size==="number"?size:size[1];const targetResolution=this.targetTileGrid_.getResolution(z); const sourceResolution=this.sourceTileGrid_.getResolution(this.sourceZ_);const targetExtent=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=render(width,height,this.pixelRatio_,sourceResolution,this.sourceTileGrid_.getExtent(),targetResolution,targetExtent,this.triangulation_,sources,this.gutter_,this.renderEdges_,this.interpolate);this.state=TileState.LOADED;}this.changed();}load(){if(this.state==TileState.IDLE){this.state=TileState.LOADING;this.changed();let leftToLoad=0;this.sourcesListenerKeys_=[];this.sourceTiles_.forEach((tile)=>{const state=tile.getState();if(state==TileState.IDLE||state==TileState.LOADING){leftToLoad++;const sourceListenKey=listen(tile,EventType.CHANGE,function(e){const state2=tile.getState();if(state2==TileState.LOADED||state2==TileState.ERROR||state2==TileState.EMPTY){unlistenByKey(sourceListenKey);leftToLoad--;if(leftToLoad===0){this.unlistenSources_();this.reproject_();}}},this);this.sourcesListenerKeys_.push(sourceListenKey);}} );if(leftToLoad===0){setTimeout(this.reproject_.bind(this),0);}else{this.sourceTiles_.forEach(function(tile,i,arr){const state=tile.getState();if(state==TileState.IDLE){tile.load();}});}}}unlistenSources_(){this.sourcesListenerKeys_.forEach(unlistenByKey);this.sourcesListenerKeys_=null;}release(){if(this.canvas_){releaseCanvas(this.canvas_.getContext("2d"));canvasPool$1.push(this.canvas_);this.canvas_=null;}super.release();}}const ReprojTile$1=ReprojTile;class LRUCache{constructor(highWaterMark){this.highWaterMark=highWaterMark!==void 0?highWaterMark:2048;this.count_=0;this.entries_={};this.oldest_=null;this.newest_=null;}canExpireCache(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark;}expireCache(keep){while(this.canExpireCache()){this.pop();}}clear(){this.count_=0;this.entries_={};this.oldest_=null;this.newest_=null;}containsKey(key){return this.entries_.hasOwnProperty(key);}forEach(f){let entry=this.oldest_;while(entry){f(entry.value_,entry.key_,this);entry=entry. newer;}}get(key,options){const entry=this.entries_[key];assert(entry!==void 0,"Tried to get a value for a key that does not exist in the cache");if(entry===this.newest_){return entry.value_;}if(entry===this.oldest_){this.oldest_=this.oldest_.newer;this.oldest_.older=null;}else{entry.newer.older=entry.older;entry.older.newer=entry.newer;}entry.newer=null;entry.older=this.newest_;this.newest_.newer=entry;this.newest_=entry;return entry.value_;}remove(key){const entry=this.entries_[key];assert(entry!==void 0,"Tried to get a value for a key that does not exist in the cache");if(entry===this.newest_){this.newest_=entry.older;if(this.newest_){this.newest_.newer=null;}}else if(entry===this.oldest_){this.oldest_=entry.newer;if(this.oldest_){this.oldest_.older=null;}}else{entry.newer.older=entry.older;entry.older.newer=entry.newer;}delete this.entries_[key];--this.count_;return entry.value_;}getCount(){return this.count_;}getKeys(){const keys=new Array(this.count_);let i=0;let entry;for(entry= this.newest_;entry;entry=entry.older){keys[i++]=entry.key_;}return keys;}getValues(){const values=new Array(this.count_);let i=0;let entry;for(entry=this.newest_;entry;entry=entry.older){values[i++]=entry.value_;}return values;}peekLast(){return this.oldest_.value_;}peekLastKey(){return this.oldest_.key_;}peekFirstKey(){return this.newest_.key_;}peek(key){if(!this.containsKey(key)){return void 0;}return this.entries_[key].value_;}pop(){const entry=this.oldest_;delete this.entries_[entry.key_];if(entry.newer){entry.newer.older=null;}this.oldest_=entry.newer;if(!this.oldest_){this.newest_=null;}--this.count_;return entry.value_;}replace(key,value){this.get(key);this.entries_[key].value_=value;}set(key,value){assert(!(key in this.entries_),"Tried to set a value for a key that is used already");const entry={key_:key,newer:null,older:this.newest_,value_:value};if(!this.newest_){this.oldest_=entry;}else{this.newest_.newer=entry;}this.newest_=entry;this.entries_[key]=entry;++this.count_;} setSize(size){this.highWaterMark=size;}}const LRUCache$1=LRUCache;function createOrUpdate$1(z,x,y,tileCoord){if(tileCoord!==void 0){tileCoord[0]=z;tileCoord[1]=x;tileCoord[2]=y;return tileCoord;}return[z,x,y];}function getKeyZXY(z,x,y){return z+"/"+x+"/"+y;}function getKey(tileCoord){return getKeyZXY(tileCoord[0],tileCoord[1],tileCoord[2]);}function fromKey(key){return key.split("/").map(Number);}function hash(tileCoord){return(tileCoord[1]<z||z>tileGrid.getMaxZoom()){return false;}const tileRange=tileGrid.getFullTileRange(z);if(!tileRange){return true;}return tileRange.containsXY(x,y);}class TileCache extends LRUCache$1{clear(){while(this.getCount()>0){this.pop().release();}super.clear();}expireCache(usedTiles){while(this.canExpireCache()){const tile=this.peekLast();if(tile.getKey()in usedTiles){break;}else{this.pop(). release();}}}pruneExceptNewestZ(){if(this.getCount()===0){return;}const key=this.peekFirstKey();const tileCoord=fromKey(key);const z=tileCoord[0];this.forEach((tile)=>{if(tile.tileCoord[0]!==z){this.remove(getKey(tile.tileCoord));tile.release();}});}}const TileCache$1=TileCache;const TileEventType={TILELOADSTART:"tileloadstart",TILELOADEND:"tileloadend",TILELOADERROR:"tileloaderror"};class TileRange{constructor(minX,maxX,minY,maxY){this.minX=minX;this.maxX=maxX;this.minY=minY;this.maxY=maxY;}contains(tileCoord){return this.containsXY(tileCoord[1],tileCoord[2]);}containsTileRange(tileRange){return this.minX<=tileRange.minX&&tileRange.maxX<=this.maxX&&this.minY<=tileRange.minY&&tileRange.maxY<=this.maxY;}containsXY(x,y){return this.minX<=x&&x<=this.maxX&&this.minY<=y&&y<=this.maxY;}equals(tileRange){return this.minX==tileRange.minX&&this.minY==tileRange.minY&&this.maxX==tileRange.maxX&&this.maxY==tileRange.maxY;}extend(tileRange){if(tileRange.minXthis.maxX){this.maxX=tileRange.maxX;}if(tileRange.minYthis.maxY){this.maxY=tileRange.maxY;}}getHeight(){return this.maxY-this.minY+1;}getSize(){return[this.getWidth(),this.getHeight()];}getWidth(){return this.maxX-this.minX+1;}intersects(tileRange){return this.minX<=tileRange.maxX&&this.maxX>=tileRange.minX&&this.minY<=tileRange.maxY&&this.maxY>=tileRange.minY;}}function createOrUpdate(minX,maxX,minY,maxY,tileRange){if(tileRange!==void 0){tileRange.minX=minX;tileRange.maxX=maxX;tileRange.minY=minY;tileRange.maxY=maxY;return tileRange;}return new TileRange(minX,maxX,minY,maxY);}const TileRange$1=TileRange;const tmpTileCoord=[0,0,0];const DECIMALS=5;class TileGrid{constructor(options){this.minZoom=options.minZoom!==void 0?options.minZoom:0;this.resolutions_=options.resolutions;assert(isSorted(this.resolutions_,function(a,b){return b-a;},true),"`resolutions` must be sorted in descending order");let zoomFactor;if(! options.origins){for(let i=0,ii=this.resolutions_.length-1;i=this.minZoom){if(this.zoomFactor_===2){x=Math.floor(x/2);y=Math.floor(y/2);tileRange=createOrUpdate(x,x,y,y,tempTileRange);}else{tileRange=this.getTileRangeForExtentAndZ(tileCoordExtent,z,tempTileRange);}if(callback(z,tileRange)){return true;}--z;}return false;}getExtent(){return this.extent_;}getMaxZoom(){return this.maxZoom;}getMinZoom(){return this.minZoom;}getOrigin(z){if(this.origin_){return this.origin_;}return this.origins_[z];}getResolution(z){return this.resolutions_[z];}getResolutions(){return this. resolutions_;}getTileCoordChildTileRange(tileCoord,tempTileRange,tempExtent){if(tileCoord[0]this.maxZoom||z0?maxResolution:Math.max(width/tileSize[0],height/tileSize[1]);const length=maxZoom+ 1;const resolutions=new Array(length);for(let z=0;ztileCache.highWaterMark){tileCache.highWaterMark=tileCount;}}useTile(z,x,y,projection){}}class TileSourceEvent extends Event{constructor(type,tile){super(type);this.tile= tile;}}const TileSource$1=TileSource;function createFromTemplate(template,tileGrid){const zRegEx=/\{z\}/g;const xRegEx=/\{x\}/g;const yRegEx=/\{y\}/g;const dashYRegEx=/\{-y\}/g;return(function(tileCoord,pixelRatio,projection){if(!tileCoord){return void 0;}return template.replace(zRegEx,tileCoord[0].toString()).replace(xRegEx,tileCoord[1].toString()).replace(yRegEx,tileCoord[2].toString()).replace(dashYRegEx,function(){const z=tileCoord[0];const range=tileGrid.getFullTileRange(z);assert(range,"The {-y} placeholder requires a tile grid with extent");const y=range.getHeight()-tileCoord[2]-1;return y.toString();});});}function createFromTemplates(templates,tileGrid){const len=templates.length;const tileUrlFunctions=new Array(len);for(let i=0;ithis.getTileInternal(z2,x2,y2,pixelRatio2,sourceProjection),this.reprojectionErrorThreshold_,this.renderReprojectionEdges_,this.getInterpolate());newTile.key=key;if(tile){newTile.interimTile=tile;newTile.refreshInterimChain();cache2.replace(tileCoordKey,newTile);}else{cache2.set(tileCoordKey,newTile);}return newTile;}getTileInternal(z,x,y,pixelRatio,projection){let tile=null;const tileCoordKey=getKeyZXY(z,x,y);const key=this.getKey();if(!this.tileCache.containsKey(tileCoordKey)){tile=this.createTile_(z,x,y,pixelRatio,projection,key);this.tileCache.set(tileCoordKey,tile);}else{tile=this.tileCache.get(tileCoordKey);if(tile.key!=key){const interimTile=tile;tile=this.createTile_(z,x,y,pixelRatio,projection,key);if(interimTile.getState()==TileState.IDLE){tile.interimTile=interimTile.interimTile;}else{tile.interimTile=interimTile;}tile.refreshInterimChain();this.tileCache.replace(tileCoordKey,tile);}}return tile;}setRenderReprojectionEdges(render2){if(this .renderReprojectionEdges_==render2){return;}this.renderReprojectionEdges_=render2;for(const id in this.tileCacheForProjection){this.tileCacheForProjection[id].clear();}this.changed();}setTileGridForProjection(projection,tilegrid){const proj=get$1(projection);if(proj){const projKey=getUid(proj);if(!(projKey in this.tileGridForProjection)){this.tileGridForProjection[projKey]=tilegrid;}}}clear(){super.clear();for(const id in this.tileCacheForProjection){this.tileCacheForProjection[id].clear();}}}function defaultTileLoadFunction(imageTile,src){imageTile.getImage().src=src;}const TileImage$1=TileImage;function appendParams(uri,params){const keyParams=[];Object.keys(params).forEach(function(k){if(params[k]!==null&¶ms[k]!==void 0){keyParams.push(k+"="+encodeURIComponent(params[k]));}});const qs=keyParams.join("&");uri=uri.replace(/[?&]$/,"");uri+=uri.includes("?")?"&":"?";return uri+qs;}class WMTSTileGrid extends TileGrid$1{constructor(options){super({extent:options.extent,origin:options. origin,origins:options.origins,resolutions:options.resolutions,tileSize:options.tileSize,tileSizes:options.tileSizes,sizes:options.sizes});this.matrixIds_=options.matrixIds;}getMatrixId(z){return this.matrixIds_[z];}getMatrixIds(){return this.matrixIds_;}}function createFromCapabilitiesMatrixSet(matrixSet,extent,matrixLimits){const resolutions=[];const matrixIds=[];const origins=[];const tileSizes=[];const sizes=[];matrixLimits=matrixLimits!==void 0?matrixLimits:[];const supportedCRSPropName="SupportedCRS";const matrixIdsPropName="TileMatrix";const identifierPropName="Identifier";const scaleDenominatorPropName="ScaleDenominator";const topLeftCornerPropName="TopLeftCorner";const tileWidthPropName="TileWidth";const tileHeightPropName="TileHeight";const code=matrixSet[supportedCRSPropName];const projection=get$1(code);const metersPerUnit=projection.getMetersPerUnit();const switchOriginXY=projection.getAxisOrientation().substr(0,2)=="ne";matrixSet[matrixIdsPropName].sort(function(a,b){ return b[scaleDenominatorPropName]-a[scaleDenominatorPropName];});matrixSet[matrixIdsPropName].forEach(function(elt){let matrixAvailable;if(matrixLimits.length>0){matrixAvailable=matrixLimits.find(function(elt_ml){if(elt[identifierPropName]==elt_ml[matrixIdsPropName]){return true;}if(!elt[identifierPropName].includes(":")){return matrixSet[identifierPropName]+":"+elt[identifierPropName]===elt_ml[matrixIdsPropName];}return false;});}else{matrixAvailable=true;}if(matrixAvailable){matrixIds.push(elt[identifierPropName]);const resolution=elt[scaleDenominatorPropName]*28e-5/metersPerUnit;const tileWidth=elt[tileWidthPropName];const tileHeight=elt[tileHeightPropName];if(switchOriginXY){origins.push([elt[topLeftCornerPropName][1],elt[topLeftCornerPropName][0]]);}else{origins.push(elt[topLeftCornerPropName]);}resolutions.push(resolution);tileSizes.push(tileWidth==tileHeight?tileWidth:[tileWidth,tileHeight]);sizes.push([elt["MatrixWidth"],elt["MatrixHeight"]]);}});return new WMTSTileGrid({ extent,origins,resolutions,matrixIds,tileSizes,sizes});}class WMTS extends TileImage$1{constructor(options){const requestEncoding=options.requestEncoding!==void 0?options.requestEncoding:"KVP";const tileGrid=options.tileGrid;let urls=options.urls;if(urls===void 0&&options.url!==void 0){urls=expandUrl(options.url);}super({attributions:options.attributions,attributionsCollapsible:options.attributionsCollapsible,cacheSize:options.cacheSize,crossOrigin:options.crossOrigin,interpolate:options.interpolate,projection:options.projection,reprojectionErrorThreshold:options.reprojectionErrorThreshold,tileClass:options.tileClass,tileGrid,tileLoadFunction:options.tileLoadFunction,tilePixelRatio:options.tilePixelRatio,urls,wrapX:options.wrapX!==void 0?options.wrapX:false,transition:options.transition,zDirection:options.zDirection});this.version_=options.version!==void 0?options.version:"1.0.0";this.format_=options.format!==void 0?options.format:"image/jpeg";this.dimensions_=options.dimensions!==void 0?options.dimensions:{};this.layer_=options.layer;this.matrixSet_=options.matrixSet;this.style_=options.style;this.requestEncoding_=requestEncoding;this.setKey(this.getKeyForDimensions_());if(urls&&urls.length>0){this.tileUrlFunction=createFromTileUrlFunctions(urls.map(this.createFromWMTSTemplate.bind(this)));}}setUrls(urls){this.urls=urls;const key=urls.join("\n");this.setTileUrlFunction(createFromTileUrlFunctions(urls.map(this.createFromWMTSTemplate.bind(this))),key);}getDimensions(){return this.dimensions_;}getFormat(){return this.format_;}getLayer(){return this.layer_;}getMatrixSet(){return this.matrixSet_;}getRequestEncoding(){return this.requestEncoding_;}getStyle(){return this.style_;}getVersion(){return this.version_;}getKeyForDimensions_(){const res=this.urls?this.urls.slice(0):[];for(const key in this.dimensions_){res.push(key+"-"+this.dimensions_[key]);}return res.join("/");}updateDimensions(dimensions){Object.assign(this.dimensions_,dimensions);this.setKey(this. getKeyForDimensions_());}createFromWMTSTemplate(template){const requestEncoding=this.requestEncoding_;const context={"layer":this.layer_,"style":this.style_,"tilematrixset":this.matrixSet_};if(requestEncoding=="KVP"){Object.assign(context,{"Service":"WMTS","Request":"GetTile","Version":this.version_,"Format":this.format_});}template=requestEncoding=="KVP"?appendParams(template,context):template.replace(/\{(\w+?)\}/g,function(m,p){return p.toLowerCase()in context?context[p.toLowerCase()]:m;});const tileGrid=(this.tileGrid);const dimensions=this.dimensions_;return(function(tileCoord,pixelRatio,projection){if(!tileCoord){return void 0;}const localContext={"TileMatrix":tileGrid.getMatrixId(tileCoord[0]),"TileCol":tileCoord[1],"TileRow":tileCoord[2]};Object.assign(localContext,dimensions);let url=template;if(requestEncoding=="KVP"){url=appendParams(url,localContext);}else{url=url.replace(/\{(\w+?)\}/g,function(m,p){return localContext[p];});}return url;});}}const OlSourceWmts=WMTS;function optionsFromCapabilities(wmtsCap,config){const layers=wmtsCap["Contents"]["Layer"];const l=layers.find(function(elt){return elt["Identifier"]==config["layer"];});if(!l){return null;}const tileMatrixSets=wmtsCap["Contents"]["TileMatrixSet"];let idx;if(l["TileMatrixSetLink"].length>1){if("projection"in config){idx=l["TileMatrixSetLink"].findIndex(function(elt){const tileMatrixSet=tileMatrixSets.find(function(el){return el["Identifier"]==elt["TileMatrixSet"];});const supportedCRS=tileMatrixSet["SupportedCRS"];const proj1=get$1(supportedCRS);const proj2=get$1(config["projection"]);if(proj1&&proj2){return equivalent(proj1,proj2);}return supportedCRS==config["projection"];});}else{idx=l["TileMatrixSetLink"].findIndex(function(elt){return elt["TileMatrixSet"]==config["matrixSet"];});}}else{idx=0;}if(idx<0){idx=0;}const matrixSet=(l["TileMatrixSetLink"][idx]["TileMatrixSet"]);const matrixLimits=(l["TileMatrixSetLink"][idx]["TileMatrixSetLimits"]);let format=(l["Format"][0]);if("format"in config ){format=config["format"];}idx=l["Style"].findIndex(function(elt){if("style"in config){return elt["Title"]==config["style"];}return elt["isDefault"];});if(idx<0){idx=0;}const style=(l["Style"][idx]["Identifier"]);const dimensions={};if("Dimension"in l){l["Dimension"].forEach(function(elt,index,array){const key=elt["Identifier"];let value=elt["Default"];if(value===void 0){value=elt["Value"][0];}dimensions[key]=value;});}const matrixSets=wmtsCap["Contents"]["TileMatrixSet"];const matrixSetObj=matrixSets.find(function(elt){return elt["Identifier"]==matrixSet;});let projection;const code=matrixSetObj["SupportedCRS"];if(code){projection=get$1(code);}if("projection"in config){const projConfig=get$1(config["projection"]);if(projConfig){if(!projection||equivalent(projConfig,projection)){projection=projConfig;}}}let wrapX2=false;const switchXY=projection.getAxisOrientation().substr(0,2)=="ne";let matrix=matrixSetObj.TileMatrix[0];let selectedMatrixLimit={MinTileCol:0,MinTileRow:0,MaxTileCol: matrix.MatrixWidth-1,MaxTileRow:matrix.MatrixHeight-1};if(matrixLimits){selectedMatrixLimit=matrixLimits[matrixLimits.length-1];const m=matrixSetObj.TileMatrix.find((tileMatrixValue)=>tileMatrixValue.Identifier===selectedMatrixLimit.TileMatrix||matrixSetObj.Identifier+":"+tileMatrixValue.Identifier===selectedMatrixLimit.TileMatrix);if(m){matrix=m;}}const resolution=matrix.ScaleDenominator*28e-5/projection.getMetersPerUnit();const origin=switchXY?[matrix.TopLeftCorner[1],matrix.TopLeftCorner[0]]:matrix.TopLeftCorner;const tileSpanX=matrix.TileWidth*resolution;const tileSpanY=matrix.TileHeight*resolution;let matrixSetExtent=matrixSetObj["BoundingBox"];if(matrixSetExtent&&switchXY){matrixSetExtent=[matrixSetExtent[1],matrixSetExtent[0],matrixSetExtent[3],matrixSetExtent[2]];}let extent=[origin[0]+tileSpanX*selectedMatrixLimit.MinTileCol,origin[1]-tileSpanY*(1+selectedMatrixLimit.MaxTileRow),origin[0]+tileSpanX*(1+selectedMatrixLimit.MaxTileCol),origin[1]-tileSpanY*selectedMatrixLimit. MinTileRow];if(matrixSetExtent!==void 0&&!containsExtent(matrixSetExtent,extent)){const wgs84BoundingBox=l["WGS84BoundingBox"];const wgs84ProjectionExtent=get$1("EPSG:4326").getExtent();extent=matrixSetExtent;if(wgs84BoundingBox){wrapX2=wgs84BoundingBox[0]===wgs84ProjectionExtent[0]&&wgs84BoundingBox[2]===wgs84ProjectionExtent[2];}else{const wgs84MatrixSetExtent=transformExtent(matrixSetExtent,matrixSetObj["SupportedCRS"],"EPSG:4326");wrapX2=wgs84MatrixSetExtent[0]-1e-10<=wgs84ProjectionExtent[0]&&wgs84MatrixSetExtent[2]+1e-10>=wgs84ProjectionExtent[2];}}const tileGrid=createFromCapabilitiesMatrixSet(matrixSetObj,extent,matrixLimits);const urls=[];let requestEncoding=config["requestEncoding"];requestEncoding=requestEncoding!==void 0?requestEncoding:"";if("OperationsMetadata"in wmtsCap&&"GetTile"in wmtsCap["OperationsMetadata"]){const gets=wmtsCap["OperationsMetadata"]["GetTile"]["DCP"]["HTTP"]["Get"];for(let i=0,ii=gets.length;i",GreaterThanOrEqualTo:">=",LessThan:"<",LessThanOrEqualTo:"<=",Multiply:"*",Divide:"/",Add:"+",Subtract:"-",Clamp:"clamp",Mod:"%",Pow:"^",Abs:"abs",Floor:"floor",Ceil:"ceil",Round:"round",Sin:"sin",Cos:"cos",Atan:"atan",Sqrt:"sqrt",Match:"match"};const parsers={[Ops.Number]:createParser(withArgs(1,Infinity,AnyType),NumberType),[Ops.String]:createParser(withArgs(1,Infinity,AnyType),StringType),[Ops.Get]:createParser(withGetArgs,AnyType),[Ops.Var]:createParser(withVarArgs,AnyType),[Ops.Resolution]:createParser(withNoArgs,NumberType),[Ops.Any]:createParser(withArgs(2,Infinity,BooleanType),BooleanType),[Ops.All]:createParser(withArgs(2,Infinity,BooleanType),BooleanType),[Ops.Not]:createParser(withArgs(1,1,BooleanType),BooleanType),[Ops.Equal]: createParser(withArgs(2,2,AnyType),BooleanType),[Ops.NotEqual]:createParser(withArgs(2,2,AnyType),BooleanType),[Ops.GreaterThan]:createParser(withArgs(2,2,AnyType),BooleanType),[Ops.GreaterThanOrEqualTo]:createParser(withArgs(2,2,AnyType),BooleanType),[Ops.LessThan]:createParser(withArgs(2,2,AnyType),BooleanType),[Ops.LessThanOrEqualTo]:createParser(withArgs(2,2,AnyType),BooleanType),[Ops.Multiply]:createParser(withArgs(2,Infinity,NumberType),NumberType),[Ops.Divide]:createParser(withArgs(2,2,NumberType),NumberType),[Ops.Add]:createParser(withArgs(2,Infinity,NumberType),NumberType),[Ops.Subtract]:createParser(withArgs(2,2,NumberType),NumberType),[Ops.Clamp]:createParser(withArgs(3,3,NumberType),NumberType),[Ops.Mod]:createParser(withArgs(2,2,NumberType),NumberType),[Ops.Pow]:createParser(withArgs(2,2,NumberType),NumberType),[Ops.Abs]:createParser(withArgs(1,1,NumberType),NumberType),[Ops.Floor]:createParser(withArgs(1,1,NumberType),NumberType),[Ops.Ceil]:createParser(withArgs(1,1, NumberType),NumberType),[Ops.Round]:createParser(withArgs(1,1,NumberType),NumberType),[Ops.Sin]:createParser(withArgs(1,1,NumberType),NumberType),[Ops.Cos]:createParser(withArgs(1,1,NumberType),NumberType),[Ops.Atan]:createParser(withArgs(1,2,NumberType),NumberType),[Ops.Sqrt]:createParser(withArgs(1,1,NumberType),NumberType),[Ops.Match]:createParser(withArgs(4,Infinity,StringType|NumberType),AnyType)};function withGetArgs(encoded,context){if(encoded.length!==2){throw new Error("Expected 1 argument for get operation");}const arg=parse(encoded[1],context);if(!(arg instanceof LiteralExpression)){throw new Error("Expected a literal argument for get operation");}if(typeof arg.value!=="string"){throw new Error("Expected a string argument for get operation");}context.properties.add(arg.value);return[arg];}function withVarArgs(encoded,context){if(encoded.length!==2){throw new Error("Expected 1 argument for var operation");}const arg=parse(encoded[1],context);if(!(arg instanceof LiteralExpression)){throw new Error("Expected a literal argument for var operation");}if(typeof arg.value!=="string"){throw new Error("Expected a string argument for get operation");}context.variables.add(arg.value);return[arg];}function withNoArgs(encoded,context){const operation=encoded[0];if(encoded.length!==1){throw new Error(`Expected no arguments for ${operation} operation`);}return[];}function withArgs(minArgs,maxArgs,argType){return function(encoded,context){const operation=encoded[0];const argCount=encoded.length-1;if(minArgs===maxArgs){if(argCount!==minArgs){const plural=minArgs===1?"":"s";throw new Error(`Expected ${minArgs} argument${plural} for operation ${operation}, got ${argCount}`);}}else if(argCountmaxArgs){throw new Error(`Expected ${minArgs} to ${maxArgs} arguments for operation ${operation}, got ${argCount}`);}const args=new Array(argCount);for(let i=0;icontext2.resolution;}case Ops.Any:case Ops.All:case Ops.Not:{return compileLogicalExpression(expression);}case Ops.Equal:case Ops.NotEqual:case Ops.LessThan:case Ops.LessThanOrEqualTo:case Ops.GreaterThan:case Ops.GreaterThanOrEqualTo:{return compileComparisonExpression(expression);}case Ops.Multiply:case Ops.Divide:case Ops.Add:case Ops.Subtract:case Ops.Clamp:case Ops.Mod:case Ops.Pow:case Ops.Abs:case Ops.Floor:case Ops.Ceil:case Ops.Round:case Ops.Sin:case Ops.Cos:case Ops.Atan:case Ops.Sqrt:{return compileNumericExpression(expression);}case Ops.Match: {return compileMatchExpression(expression);}default:{throw new Error(`Unsupported operator ${operator}`);}}}function compileAssertionExpression(expression,context){const type=expression.operator;const length=expression.args.length;const args=new Array(length);for(let i=0;i{for(let i=0;icontext2.properties[name ];}case Ops.Var:{return(context2)=>context2.variables[name];}default:{throw new Error(`Unsupported accessor operator ${expression.operator}`);}}}function compileComparisonExpression(expression,context){const op=expression.operator;const left=compileExpression(expression.args[0]);const right=compileExpression(expression.args[1]);switch(op){case Ops.Equal:{return(context2)=>left(context2)===right(context2);}case Ops.NotEqual:{return(context2)=>left(context2)!==right(context2);}case Ops.LessThan:{return(context2)=>left(context2)left(context2)<=right(context2);}case Ops.GreaterThan:{return(context2)=>left(context2)>right(context2);}case Ops.GreaterThanOrEqualTo:{return(context2)=>left(context2)>=right(context2);}default:{throw new Error(`Unsupported comparison operator ${op}`);}}}function compileLogicalExpression(expression,context){const op=expression.operator;const length=expression.args.length;const args=new Array(length); for(let i=0;i{for(let i=0;i{for(let i=0;i!args[0](context2);}default:{throw new Error(`Unsupported logical operator ${op}`);}}}function compileNumericExpression(expression,context){const op=expression.operator;const length=expression.args.length;const args=new Array(length);for(let i=0;i{let value=1;for(let i=0;iargs[0](context2)/args[1](context2);}case Ops.Add:{return(context2)=>{let value=0;for(let i=0;i args[0](context2)-args[1](context2);}case Ops.Clamp:{return(context2)=>{const value=args[0](context2);const min=args[1](context2);if(valuemax){return max;}return value;};}case Ops.Mod:{return(context2)=>args[0](context2)%args[1](context2);}case Ops.Pow:{return(context2)=>Math.pow(args[0](context2),args[1](context2));}case Ops.Abs:{return(context2)=>Math.abs(args[0](context2));}case Ops.Floor:{return(context2)=>Math.floor(args[0](context2));}case Ops.Ceil:{return(context2)=>Math.ceil(args[0](context2));}case Ops.Round:{return(context2)=>Math.round(args[0](context2));}case Ops.Sin:{return(context2)=>Math.sin(args[0](context2));}case Ops.Cos:{return(context2)=>Math.cos(args[0](context2));}case Ops.Atan:{if(length===2){return(context2)=>Math.atan2(args[0](context2),args[1](context2));}return(context2)=>Math.atan(args[0](context2));}case Ops.Sqrt:{return(context2)=>Math.sqrt(args[0](context2));}default:{throw new Error( `Unsupported numeric operator ${op}`);}}}function compileMatchExpression(expression,context){const length=expression.args.length;const args=new Array(length);for(let i=0;i{const value=args[0](context2);for(let i=1;i4){throw new Error(`Expected a color with 3 or 4 values for ${property}`);}return array;}function requireSizeLike(value,property){if(typeof value==="number"){return value;}const size=requireNumberArray(value,property);if(size.length!==2){throw new Error(`Expected an array of two numbers for ${property}`);}return size;}const Property={RENDER_ORDER:"renderOrder"};class BaseVectorLayer extends Layer$1{constructor(options){options=options?options:{};const baseOptions=Object.assign({},options);delete baseOptions.style;delete baseOptions.renderBuffer;delete baseOptions.updateWhileAnimating;delete baseOptions.updateWhileInteracting;super(baseOptions);this.declutter_=options.declutter!==void 0?options.declutter:false;this.renderBuffer_=options.renderBuffer!==void 0?options.renderBuffer:100;this.style_=null;this.styleFunction_= void 0;this.setStyle(options.style);this.updateWhileAnimating_=options.updateWhileAnimating!==void 0?options.updateWhileAnimating:false;this.updateWhileInteracting_=options.updateWhileInteracting!==void 0?options.updateWhileInteracting:false;}getDeclutter(){return this.declutter_;}getFeatures(pixel){return super.getFeatures(pixel);}getRenderBuffer(){return this.renderBuffer_;}getRenderOrder(){return(this.get(Property.RENDER_ORDER));}getStyle(){return this.style_;}getStyleFunction(){return this.styleFunction_;}getUpdateWhileAnimating(){return this.updateWhileAnimating_;}getUpdateWhileInteracting(){return this.updateWhileInteracting_;}renderDeclutter(frameState){if(!frameState.declutterTree){frameState.declutterTree=new RBush$2(9);}this.getRenderer().renderDeclutter(frameState);}setRenderOrder(renderOrder){this.set(Property.RENDER_ORDER,renderOrder);}setStyle(style){this.style_=toStyleLike(style);this.styleFunction_=style===null?void 0:toFunction(this.style_);this.changed();}}function toStyleLike(style){if(style===void 0){return createDefaultStyle;}if(!style){return null;}if(typeof style==="function"){return style;}if(style instanceof Style){return style;}if(!Array.isArray(style)){return flatStylesToStyleFunction([style]);}if(style.length===0){return[];}const length=style.length;const first=style[0];if(first instanceof Style){const styles=new Array(length);for(let i=0;ibuilderBegin){this.instructions.push([CanvasInstruction.CUSTOM,builderBegin,builderEnd,geometry,renderer,inflateCoordinates]);this.hitDetectionInstructions.push([CanvasInstruction.CUSTOM,builderBegin,builderEnd,geometry,hitDetectionRenderer||renderer,inflateCoordinates]);}break;case"Point":flatCoordinates=geometry.getFlatCoordinates();this.coordinates.push(flatCoordinates[0],flatCoordinates[1]);builderEnd=this.coordinates.length;this.instructions.push([CanvasInstruction.CUSTOM,builderBegin,builderEnd,geometry,renderer]);this.hitDetectionInstructions.push([CanvasInstruction.CUSTOM,builderBegin, builderEnd,geometry,hitDetectionRenderer||renderer]);break;}this.endGeometry(feature);}beginGeometry(geometry,feature){this.beginGeometryInstruction1_=[CanvasInstruction.BEGIN_GEOMETRY,feature,0,geometry];this.instructions.push(this.beginGeometryInstruction1_);this.beginGeometryInstruction2_=[CanvasInstruction.BEGIN_GEOMETRY,feature,0,geometry];this.hitDetectionInstructions.push(this.beginGeometryInstruction2_);}finish(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates};}reverseHitDetectionInstructions(){const hitDetectionInstructions=this.hitDetectionInstructions;hitDetectionInstructions.reverse();let i;const n=hitDetectionInstructions.length;let instruction;let type;let begin=-1;for(i=0;ithis.maxLineWidth){this.maxLineWidth=state.lineWidth;this.bufferedMaxExtent_=null;}}else{state.strokeStyle=void 0;state.lineCap=void 0;state.lineDash=null;state.lineDashOffset=void 0;state.lineJoin=void 0;state.lineWidth=void 0;state.miterLimit=void 0;}}createFill(state){const fillStyle=state.fillStyle;const fillInstruction2=[CanvasInstruction.SET_FILL_STYLE,fillStyle];if(typeof fillStyle!=="string"){fillInstruction2.push(true);}return fillInstruction2;}applyStroke(state){this.instructions.push(this.createStroke(state));}createStroke(state){return[CanvasInstruction.SET_STROKE_STYLE,state.strokeStyle,state.lineWidth*this.pixelRatio,state.lineCap,state.lineJoin,state.miterLimit,this.applyPixelRatio(state.lineDash),state.lineDashOffset*this.pixelRatio];} updateFillStyle(state,createFill){const fillStyle=state.fillStyle;if(typeof fillStyle!=="string"||state.currentFillStyle!=fillStyle){if(fillStyle!==void 0){this.instructions.push(createFill.call(this,state));}state.currentFillStyle=fillStyle;}}updateStrokeStyle(state,applyStroke){const strokeStyle=state.strokeStyle;const lineCap=state.lineCap;const lineDash=state.lineDash;const lineDashOffset=state.lineDashOffset;const lineJoin=state.lineJoin;const lineWidth=state.lineWidth;const miterLimit=state.miterLimit;if(state.currentStrokeStyle!=strokeStyle||state.currentLineCap!=lineCap||lineDash!=state.currentLineDash&&!equals$2(state.currentLineDash,lineDash)||state.currentLineDashOffset!=lineDashOffset||state.currentLineJoin!=lineJoin||state.currentLineWidth!=lineWidth||state.currentMiterLimit!=miterLimit){if(strokeStyle!==void 0){applyStroke.call(this,state);}state.currentStrokeStyle=strokeStyle;state.currentLineCap=lineCap;state.currentLineDash=lineDash;state.currentLineDashOffset= lineDashOffset;state.currentLineJoin=lineJoin;state.currentLineWidth=lineWidth;state.currentMiterLimit=miterLimit;}}endGeometry(feature){this.beginGeometryInstruction1_[2]=this.instructions.length;this.beginGeometryInstruction1_=null;this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length;this.beginGeometryInstruction2_=null;const endGeometryInstruction=[CanvasInstruction.END_GEOMETRY,feature];this.instructions.push(endGeometryInstruction);this.hitDetectionInstructions.push(endGeometryInstruction);}getBufferedMaxExtent(){if(!this.bufferedMaxExtent_){this.bufferedMaxExtent_=clone(this.maxExtent);if(this.maxLineWidth>0){const width=this.resolution*(this.maxLineWidth+1)/2;buffer(this.bufferedMaxExtent_,width,this.bufferedMaxExtent_);}}return this.bufferedMaxExtent_;}}const Builder=CanvasBuilder;class CanvasImageBuilder extends Builder{constructor(tolerance,maxExtent,resolution,pixelRatio){super(tolerance,maxExtent,resolution,pixelRatio);this.hitDetectionImage_=null;this. image_=null;this.imagePixelRatio_=void 0;this.anchorX_=void 0;this.anchorY_=void 0;this.height_=void 0;this.opacity_=void 0;this.originX_=void 0;this.originY_=void 0;this.rotateWithView_=void 0;this.rotation_=void 0;this.scale_=void 0;this.width_=void 0;this.declutterMode_=void 0;this.declutterImageWithText_=void 0;}drawPoint(pointGeometry,feature){if(!this.image_){return;}this.beginGeometry(pointGeometry,feature);const flatCoordinates=pointGeometry.getFlatCoordinates();const stride=pointGeometry.getStride();const myBegin=this.coordinates.length;const myEnd=this.appendFlatPointCoordinates(flatCoordinates,stride);this.instructions.push([CanvasInstruction.DRAW_IMAGE,myBegin,myEnd,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_*this.imagePixelRatio_,this.originY_*this.imagePixelRatio_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this. scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterMode_,this.declutterImageWithText_]);this.hitDetectionInstructions.push([CanvasInstruction.DRAW_IMAGE,myBegin,myEnd,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,1,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]);this.endGeometry(feature);}drawMultiPoint(multiPointGeometry,feature){if(!this.image_){return;}this.beginGeometry(multiPointGeometry,feature);const flatCoordinates=multiPointGeometry.getFlatCoordinates();const stride=multiPointGeometry.getStride();const myBegin=this.coordinates.length;const myEnd=this.appendFlatPointCoordinates(flatCoordinates,stride);this.instructions.push([CanvasInstruction.DRAW_IMAGE,myBegin,myEnd,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this. originX_*this.imagePixelRatio_,this.originY_*this.imagePixelRatio_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterMode_,this.declutterImageWithText_]);this.hitDetectionInstructions.push([CanvasInstruction.DRAW_IMAGE,myBegin,myEnd,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,1,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterMode_,this.declutterImageWithText_]);this.endGeometry(feature);}finish(){this.reverseHitDetectionInstructions();this.anchorX_=void 0;this.anchorY_=void 0;this.hitDetectionImage_=null;this.image_=null;this.imagePixelRatio_=void 0;this.height_=void 0;this.scale_=void 0;this.opacity_=void 0;this.originX_=void 0;this.originY_=void 0;this.rotateWithView_=void 0;this.rotation_=void 0;this.width_=void 0;return super.finish();}setImageStyle( imageStyle,sharedData){const anchor=imageStyle.getAnchor();const size=imageStyle.getSize();const origin=imageStyle.getOrigin();this.imagePixelRatio_=imageStyle.getPixelRatio(this.pixelRatio);this.anchorX_=anchor[0];this.anchorY_=anchor[1];this.hitDetectionImage_=imageStyle.getHitDetectionImage();this.image_=imageStyle.getImage(this.pixelRatio);this.height_=size[1];this.opacity_=imageStyle.getOpacity();this.originX_=origin[0];this.originY_=origin[1];this.rotateWithView_=imageStyle.getRotateWithView();this.rotation_=imageStyle.getRotation();this.scale_=imageStyle.getScaleArray();this.width_=size[0];this.declutterMode_=imageStyle.getDeclutterMode();this.declutterImageWithText_=sharedData;}}const ImageBuilder=CanvasImageBuilder;class CanvasLineStringBuilder extends Builder{constructor(tolerance,maxExtent,resolution,pixelRatio){super(tolerance,maxExtent,resolution,pixelRatio);}drawFlatCoordinates_(flatCoordinates,offset,end,stride){const myBegin=this.coordinates.length;const myEnd=this. appendFlatLineCoordinates(flatCoordinates,offset,end,stride,false,false);const moveToLineToInstruction=[CanvasInstruction.MOVE_TO_LINE_TO,myBegin,myEnd];this.instructions.push(moveToLineToInstruction);this.hitDetectionInstructions.push(moveToLineToInstruction);return end;}drawLineString(lineStringGeometry,feature){const state=this.state;const strokeStyle=state.strokeStyle;const lineWidth=state.lineWidth;if(strokeStyle===void 0||lineWidth===void 0){return;}this.updateStrokeStyle(state,this.applyStroke);this.beginGeometry(lineStringGeometry,feature);this.hitDetectionInstructions.push([CanvasInstruction.SET_STROKE_STYLE,state.strokeStyle,state.lineWidth,state.lineCap,state.lineJoin,state.miterLimit,defaultLineDash,defaultLineDashOffset],beginPathInstruction);const flatCoordinates=lineStringGeometry.getFlatCoordinates();const stride=lineStringGeometry.getStride();this.drawFlatCoordinates_(flatCoordinates,0,flatCoordinates.length,stride);this.hitDetectionInstructions.push(strokeInstruction) ;this.endGeometry(feature);}drawMultiLineString(multiLineStringGeometry,feature){const state=this.state;const strokeStyle=state.strokeStyle;const lineWidth=state.lineWidth;if(strokeStyle===void 0||lineWidth===void 0){return;}this.updateStrokeStyle(state,this.applyStroke);this.beginGeometry(multiLineStringGeometry,feature);this.hitDetectionInstructions.push([CanvasInstruction.SET_STROKE_STYLE,state.strokeStyle,state.lineWidth,state.lineCap,state.lineJoin,state.miterLimit,defaultLineDash,defaultLineDashOffset],beginPathInstruction);const ends=multiLineStringGeometry.getEnds();const flatCoordinates=multiLineStringGeometry.getFlatCoordinates();const stride=multiLineStringGeometry.getStride();let offset=0;for(let i=0,ii=ends.length;i=chunkLength){const m=(chunkLength-chunkM+segmentLength)/segmentLength;const x=lerp(x1,x2,m);const y=lerp(y1,y2,m);currentChunk.push(x,y);chunks.push(currentChunk);currentChunk=[x,y];if(chunkM==chunkLength){cursor+=stride;}chunkM=0;}else if(chunkM0){chunks.push(currentChunk);}return chunks;}function matchingChunk(maxAngle,flatCoordinates,offset,end,stride){let chunkStart=offset;let chunkEnd=offset;let chunkM=0;let m=0;let start=offset;let acos,i,m12,m23,x1,y1,x12,y12,x23,y23;for(i=offset;imaxAngle){if(m>chunkM){chunkM=m;chunkStart=start;chunkEnd=i;}m=0;start=i-stride;}}m12=m23;x12=x23;y12=y23;}x1=x2;y1=y2;}m+=m23;return m>chunkM?[start,i]:[chunkStart,chunkEnd];}const TEXT_ALIGN={"left":0,"center":0.5,"right":1,"top":0,"middle":0.5,"hanging":0.2,"alphabetic":0.8,"ideographic":0.8,"bottom":1};class CanvasTextBuilder extends Builder{constructor(tolerance,maxExtent,resolution,pixelRatio){super(tolerance,maxExtent,resolution,pixelRatio);this.labels_=null;this.text_="";this.textOffsetX_=0;this.textOffsetY_=0;this.textRotateWithView_=void 0;this.textRotation_=0;this.textFillState_=null;this.fillStates={};this.fillStates[defaultFillStyle]={fillStyle:defaultFillStyle};this.textStrokeState_=null;this.strokeStates={};this.textState_={};this.textStates={};this.textKey_="";this.fillKey_="";this.strokeKey_="";this.declutterImageWithText_=void 0;}finish(){const instructions=super.finish();instructions.textStates=this.textStates;instructions.fillStates=this.fillStates;instructions.strokeStates=this.strokeStates;return instructions;}drawText(geometry,feature){const fillState=this.textFillState_;const strokeState=this.textStrokeState_;const textState=this.textState_;if(this.text_===""||!textState||!fillState&&!strokeState){return;}const coordinates2=this.coordinates;let begin=coordinates2.length ;const geometryType=geometry.getType();let flatCoordinates=null;let stride=geometry.getStride();if(textState.placement==="line"&&(geometryType=="LineString"||geometryType=="MultiLineString"||geometryType=="Polygon"||geometryType=="MultiPolygon")){if(!intersects$1(this.getBufferedMaxExtent(),geometry.getExtent())){return;}let ends;flatCoordinates=geometry.getFlatCoordinates();if(geometryType=="LineString"){ends=[flatCoordinates.length];}else if(geometryType=="MultiLineString"){ends=geometry.getEnds();}else if(geometryType=="Polygon"){ends=geometry.getEnds().slice(0,1);}else if(geometryType=="MultiPolygon"){const endss=(geometry.getEndss());ends=[];for(let i=0,ii=endss.length;i{const keep=coordinates2[(beg+i)*2]===flatCoordinates[i*stride]&&coordinates2[(beg+i)*2+1]===flatCoordinates[i*stride+1];if(!keep){--beg;}return keep;});}this.saveTextStates_();if(textState.backgroundFill||textState.backgroundStroke){this.setFillStrokeStyle(textState.backgroundFill,textState.backgroundStroke);if(textState.backgroundFill){this.updateFillStyle(this.state,this.createFill);}if(textState.backgroundStroke){this.updateStrokeStyle( this.state,this.applyStroke);this.hitDetectionInstructions.push(this.createStroke(this.state));}}this.beginGeometry(geometry,feature);let padding=textState.padding;if(padding!=defaultPadding&&(textState.scale[0]<0||textState.scale[1]<0)){let p0=textState.padding[0];let p12=textState.padding[1];let p22=textState.padding[2];let p32=textState.padding[3];if(textState.scale[0]<0){p12=-p12;p32=-p32;}if(textState.scale[1]<0){p0=-p0;p22=-p22;}padding=[p0,p12,p22,p32];}const pixelRatio=this.pixelRatio;this.instructions.push([CanvasInstruction.DRAW_IMAGE,begin,end,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[1,1],NaN,void 0,this.declutterImageWithText_,padding==defaultPadding?defaultPadding:padding.map(function(p){return p*pixelRatio;}),!!textState.backgroundFill,!!textState.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_,this.textOffsetX_,this.textOffsetY_,geometryWidths]);const scale2=1/pixelRatio;const currentFillStyle=this.state.fillStyle;if( textState.backgroundFill){this.state.fillStyle=defaultFillStyle;this.hitDetectionInstructions.push(this.createFill(this.state));}this.hitDetectionInstructions.push([CanvasInstruction.DRAW_IMAGE,begin,end,null,NaN,NaN,NaN,1,0,0,this.textRotateWithView_,this.textRotation_,[scale2,scale2],NaN,void 0,this.declutterImageWithText_,padding,!!textState.backgroundFill,!!textState.backgroundStroke,this.text_,this.textKey_,this.strokeKey_,this.fillKey_?defaultFillStyle:this.fillKey_,this.textOffsetX_,this.textOffsetY_,geometryWidths]);if(textState.backgroundFill){this.state.fillStyle=currentFillStyle;this.hitDetectionInstructions.push(this.createFill(this.state));}this.endGeometry(feature);}}saveTextStates_(){const strokeState=this.textStrokeState_;const textState=this.textState_;const fillState=this.textFillState_;const strokeKey=this.strokeKey_;if(strokeState){if(!(strokeKey in this.strokeStates)){this.strokeStates[strokeKey]={strokeStyle:strokeState.strokeStyle,lineCap:strokeState.lineCap, lineDashOffset:strokeState.lineDashOffset,lineWidth:strokeState.lineWidth,lineJoin:strokeState.lineJoin,miterLimit:strokeState.miterLimit,lineDash:strokeState.lineDash};}}const textKey=this.textKey_;if(!(textKey in this.textStates)){this.textStates[textKey]={font:textState.font,textAlign:textState.textAlign||defaultTextAlign,justify:textState.justify,textBaseline:textState.textBaseline||defaultTextBaseline,scale:textState.scale};}const fillKey=this.fillKey_;if(fillState){if(!(fillKey in this.fillStates)){this.fillStates[fillKey]={fillStyle:fillState.fillStyle};}}}drawChars_(begin,end){const strokeState=this.textStrokeState_;const textState=this.textState_;const strokeKey=this.strokeKey_;const textKey=this.textKey_;const fillKey=this.fillKey_;this.saveTextStates_();const pixelRatio=this.pixelRatio;const baseline=TEXT_ALIGN[textState.textBaseline];const offsetY=this.textOffsetY_*pixelRatio;const text=this.text_;const strokeWidth=strokeState?strokeState.lineWidth*Math.abs(textState.scale[ 0])/2:0;this.instructions.push([CanvasInstruction.DRAW_CHARS,begin,end,baseline,textState.overflow,fillKey,textState.maxAngle,pixelRatio,offsetY,strokeKey,strokeWidth*pixelRatio,text,textKey,1]);this.hitDetectionInstructions.push([CanvasInstruction.DRAW_CHARS,begin,end,baseline,textState.overflow,fillKey?defaultFillStyle:fillKey,textState.maxAngle,pixelRatio,offsetY,strokeKey,strokeWidth*pixelRatio,text,textKey,1/pixelRatio]);}setTextStyle(textStyle,sharedData){let textState,fillState,strokeState;if(!textStyle){this.text_="";}else{const textFillStyle=textStyle.getFill();if(!textFillStyle){fillState=null;this.textFillState_=fillState;}else{fillState=this.textFillState_;if(!fillState){fillState={};this.textFillState_=fillState;}fillState.fillStyle=asColorLike(textFillStyle.getColor()||defaultFillStyle);}const textStrokeStyle=textStyle.getStroke();if(!textStrokeStyle){strokeState=null;this.textStrokeState_=strokeState;}else{strokeState=this.textStrokeState_;if(!strokeState){strokeState={} ;this.textStrokeState_=strokeState;}const lineDash=textStrokeStyle.getLineDash();const lineDashOffset=textStrokeStyle.getLineDashOffset();const lineWidth=textStrokeStyle.getWidth();const miterLimit=textStrokeStyle.getMiterLimit();strokeState.lineCap=textStrokeStyle.getLineCap()||defaultLineCap;strokeState.lineDash=lineDash?lineDash.slice():defaultLineDash;strokeState.lineDashOffset=lineDashOffset===void 0?defaultLineDashOffset:lineDashOffset;strokeState.lineJoin=textStrokeStyle.getLineJoin()||defaultLineJoin;strokeState.lineWidth=lineWidth===void 0?defaultLineWidth:lineWidth;strokeState.miterLimit=miterLimit===void 0?defaultMiterLimit:miterLimit;strokeState.strokeStyle=asColorLike(textStrokeStyle.getColor()||defaultStrokeStyle);}textState=this.textState_;const font=textStyle.getFont()||defaultFont;registerFont(font);const textScale=textStyle.getScaleArray();textState.overflow=textStyle.getOverflow();textState.font=font;textState.maxAngle=textStyle.getMaxAngle();textState.placement= textStyle.getPlacement();textState.textAlign=textStyle.getTextAlign();textState.repeat=textStyle.getRepeat();textState.justify=textStyle.getJustify();textState.textBaseline=textStyle.getTextBaseline()||defaultTextBaseline;textState.backgroundFill=textStyle.getBackgroundFill();textState.backgroundStroke=textStyle.getBackgroundStroke();textState.padding=textStyle.getPadding()||defaultPadding;textState.scale=textScale===void 0?[1,1]:textScale;const textOffsetX=textStyle.getOffsetX();const textOffsetY=textStyle.getOffsetY();const textRotateWithView=textStyle.getRotateWithView();const textRotation=textStyle.getRotation();this.text_=textStyle.getText()||"";this.textOffsetX_=textOffsetX===void 0?0:textOffsetX;this.textOffsetY_=textOffsetY===void 0?0:textOffsetY;this.textRotateWithView_=textRotateWithView===void 0?false:textRotateWithView;this.textRotation_=textRotation===void 0?0:textRotation;this.strokeKey_=strokeState?(typeof strokeState.strokeStyle=="string"?strokeState.strokeStyle:getUid( strokeState.strokeStyle))+strokeState.lineCap+strokeState.lineDashOffset+"|"+strokeState.lineWidth+strokeState.lineJoin+strokeState.miterLimit+"["+strokeState.lineDash.join()+"]":"";this.textKey_=textState.font+textState.scale+(textState.textAlign||"?")+(textState.repeat||"?")+(textState.justify||"?")+(textState.textBaseline||"?");this.fillKey_=fillState?typeof fillState.fillStyle=="string"?fillState.fillStyle:"|"+getUid(fillState.fillStyle):"";}this.declutterImageWithText_=sharedData;}}const BATCH_CONSTRUCTORS={"Circle":PolygonBuilder,"Default":Builder,"Image":ImageBuilder,"LineString":LineStringBuilder,"Polygon":PolygonBuilder,"Text":CanvasTextBuilder};class BuilderGroup{constructor(tolerance,maxExtent,resolution,pixelRatio){this.tolerance_=tolerance;this.maxExtent_=maxExtent;this.pixelRatio_=pixelRatio;this.resolution_=resolution;this.buildersByZIndex_={};}finish(){const builderInstructions={};for(const zKey in this.buildersByZIndex_){builderInstructions[zKey]=builderInstructions[ zKey]||{};const builders=this.buildersByZIndex_[zKey];for(const builderKey in builders){const builderInstruction=builders[builderKey].finish();builderInstructions[zKey][builderKey]=builderInstruction;}}return builderInstructions;}getBuilder(zIndex,builderType){const zIndexKey=zIndex!==void 0?zIndex.toString():"0";let replays=this.buildersByZIndex_[zIndexKey];if(replays===void 0){replays={};this.buildersByZIndex_[zIndexKey]=replays;}let replay=replays[builderType];if(replay===void 0){const Constructor=BATCH_CONSTRUCTORS[builderType];replay=new Constructor(this.tolerance_,this.maxExtent_,this.resolution_,this.pixelRatio_);replays[builderType]=replay;}return replay;}}const CanvasBuilderGroup=BuilderGroup;class LayerRenderer extends Observable$1{constructor(layer){super();this.ready=true;this.boundHandleImageChange_=this.handleImageChange_.bind(this);this.layer_=layer;this.declutterExecutorGroup=null;}getFeatures(pixel){return abstract();}getData(pixel){return null;}prepareFrame(frameState ){return abstract();}renderFrame(frameState,target){return abstract();}loadedTileCallback(tiles,zoom,tile){if(!tiles[zoom]){tiles[zoom]={};}tiles[zoom][tile.tileCoord.toString()]=tile;return void 0;}createLoadedTileFinder(source,projection,tiles){return((zoom,tileRange)=>{const callback=this.loadedTileCallback.bind(this,tiles,zoom);return source.forEachLoadedTile(projection,zoom,tileRange,callback);});}forEachFeatureAtCoordinate(coordinate,frameState,hitTolerance,callback,matches){return void 0;}getLayer(){return this.layer_;}handleFontsChanged(){}handleImageChange_(event){const image=(event.target);if(image.getState()===ImageState.LOADED||image.getState()===ImageState.ERROR){this.renderIfReadyAndVisible();}}loadImage(image){let imageState=image.getState();if(imageState!=ImageState.LOADED&&imageState!=ImageState.ERROR){image.addEventListener(EventType.CHANGE,this.boundHandleImageChange_);}if(imageState==ImageState.IDLE){image.load();imageState=image.getState();}return imageState== ImageState.LOADED;}renderIfReadyAndVisible(){const layer=this.getLayer();if(layer&&layer.getVisible()&&layer.getSourceState()==="ready"){layer.changed();}}disposeInternal(){delete this.layer_;super.disposeInternal();}}const LayerRenderer$1=LayerRenderer;const canvasPool=[];let pixelContext=null;function createPixelContext(){pixelContext=createCanvasContext2D(1,1,void 0,{willReadFrequently:true});}class CanvasLayerRenderer extends LayerRenderer$1{constructor(layer){super(layer);this.container=null;this.renderedResolution;this.tempTransform=create();this.pixelTransform=create();this.inversePixelTransform=create();this.context=null;this.containerReused=false;this.pixelContext_=null;this.frameState=null;}getImageData(image,col,row){if(!pixelContext){createPixelContext();}pixelContext.clearRect(0,0,1,1);let data;try{pixelContext.drawImage(image,col,row,1,1,0,0,1,1);data=pixelContext.getImageData(0,0,1,1).data;}catch(err){pixelContext=null;return null;}return data;}getBackground(frameState){ const layer=this.getLayer();let background=layer.getBackground();if(typeof background==="function"){background=background(frameState.viewState.resolution);}return background||void 0;}useContainer(target,transform2,backgroundColor){const layerClassName=this.getLayer().getClassName();let container,context;if(target&&target.className===layerClassName&&(!backgroundColor||target&&target.style.backgroundColor&&equals$2(asArray(target.style.backgroundColor),asArray(backgroundColor)))){const canvas=target.firstElementChild;if(canvas instanceof HTMLCanvasElement){context=canvas.getContext("2d");}}if(context&&context.canvas.style.transform===transform2){this.container=target;this.context=context;this.containerReused=true;}else if(this.containerReused){this.container=null;this.context=null;this.containerReused=false;}else if(this.container){this.container.style.backgroundColor=null;}if(!this.container){container=document.createElement("div");container.className=layerClassName;let style=container. style;style.position="absolute";style.width="100%";style.height="100%";context=createCanvasContext2D();const canvas=context.canvas;container.appendChild(canvas);style=canvas.style;style.position="absolute";style.left="0";style.transformOrigin="top left";this.container=container;this.context=context;}if(!this.containerReused&&backgroundColor&&!this.container.style.backgroundColor){this.container.style.backgroundColor=backgroundColor;}}clipUnrotated(context,frameState,extent){const topLeft=getTopLeft(extent);const topRight=getTopRight(extent);const bottomRight=getBottomRight(extent);const bottomLeft=getBottomLeft(extent);apply(frameState.coordinateToPixelTransform,topLeft);apply(frameState.coordinateToPixelTransform,topRight);apply(frameState.coordinateToPixelTransform,bottomRight);apply(frameState.coordinateToPixelTransform,bottomLeft);const inverted=this.inversePixelTransform;apply(inverted,topLeft);apply(inverted,topRight);apply(inverted,bottomRight);apply(inverted,bottomLeft);context .save();context.beginPath();context.moveTo(Math.round(topLeft[0]),Math.round(topLeft[1]));context.lineTo(Math.round(topRight[0]),Math.round(topRight[1]));context.lineTo(Math.round(bottomRight[0]),Math.round(bottomRight[1]));context.lineTo(Math.round(bottomLeft[0]),Math.round(bottomLeft[1]));context.clip();}dispatchRenderEvent_(type,context,frameState){const layer=this.getLayer();if(layer.hasListener(type)){const event=new RenderEvent$1(type,this.inversePixelTransform,frameState,context);layer.dispatchEvent(event);}}preRender(context,frameState){this.frameState=frameState;this.dispatchRenderEvent_(RenderEventType.PRERENDER,context,frameState);}postRender(context,frameState){this.dispatchRenderEvent_(RenderEventType.POSTRENDER,context,frameState);}getRenderTransform(center,resolution,rotation,pixelRatio,width,height,offsetX){const dx1=width/2;const dy1=height/2;const sx=pixelRatio/resolution;const sy=-sx;const dx2=-center[0]+offsetX;const dy2=-center[1];return compose(this.tempTransform, dx1,dy1,sx,sy,-rotation,dx2,dy2);}disposeInternal(){delete this.frameState;super.disposeInternal();}}const CanvasLayerRenderer$1=CanvasLayerRenderer;function drawTextOnPath(flatCoordinates,offset,end,stride,text,startM,maxAngle,scale2,measureAndCacheTextWidth2,font,cache2,rotation){let x2=flatCoordinates[offset];let y2=flatCoordinates[offset+1];let x1=0;let y1=0;let segmentLength=0;let segmentM=0;function advance(){x1=x2;y1=y2;offset+=stride;x2=flatCoordinates[offset];y2=flatCoordinates[offset+1];segmentM+=segmentLength;segmentLength=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));}do{advance();}while(offsetflat[2];}else{reverse=beginX>endX;}const PI=Math.PI;const result=[];const singleSegment=startOffset+stride===offset;offset=startOffset;segmentLength=0;segmentM=startLength;x2=flatCoordinates[offset];y2=flatCoordinates[offset+1];let previousAngle;if(singleSegment){advance();previousAngle=Math.atan2(y2-y1,x2-x1);if(reverse){previousAngle+=previousAngle>0?-PI:PI;}const x=(endX+beginX)/2;const y=(endY+beginY)/2;result[0]=[x,y,(endM-startM)/2,previousAngle,text];return result;}text=text.replace(/\n/g," ");for(let i=0,ii=text.length;i0?-PI:PI;}if(previousAngle!==void 0){let delta=angle-previousAngle;delta+=delta>PI?-2*PI:delta<-PI?2*PI:0;if(Math.abs(delta)>maxAngle){return null;}} previousAngle=angle;const iStart=i;let charLength=0;for(;i0){acc.push("\n","");}acc.push(line,"");return acc;}class Executor{constructor(resolution,pixelRatio,overlaps,instructions){this.overlaps=overlaps;this.pixelRatio=pixelRatio;this.resolution=resolution;this.alignFill_;this.instructions=instructions.instructions;this.coordinates=instructions.coordinates;this.coordinateCache_={};this.renderedTransform_=create();this.hitDetectionInstructions=instructions.hitDetectionInstructions;this.pixelCoordinates_=null;this.viewRotation_=0;this.fillStates=instructions.fillStates||{};this.strokeStates=instructions.strokeStates||{};this.textStates=instructions.textStates||{};this.widths_={};this.labels_={};}createLabel(text,textKey, fillKey,strokeKey){const key=text+textKey+fillKey+strokeKey;if(this.labels_[key]){return this.labels_[key];}const strokeState=strokeKey?this.strokeStates[strokeKey]:null;const fillState=fillKey?this.fillStates[fillKey]:null;const textState=this.textStates[textKey];const pixelRatio=this.pixelRatio;const scale2=[textState.scale[0]*pixelRatio,textState.scale[1]*pixelRatio];const textIsArray=Array.isArray(text);const align=textState.justify?TEXT_ALIGN[textState.justify]:horizontalTextAlign(Array.isArray(text)?text[0]:text,textState.textAlign||defaultTextAlign);const strokeWidth=strokeKey&&strokeState.lineWidth?strokeState.lineWidth:0;const chunks=textIsArray?text:text.split("\n").reduce(createTextChunks,[]);const{width,height,widths,heights,lineWidths}=getTextDimensions(textState,chunks);const renderWidth=width+strokeWidth;const contextInstructions=[];const w=(renderWidth+2)*scale2[0];const h=(height+strokeWidth)*scale2[1];const label={width:w<0?Math.floor(w):Math.ceil(w),height:h<0?Math. floor(h):Math.ceil(h),contextInstructions};if(scale2[0]!=1||scale2[1]!=1){contextInstructions.push("scale",scale2);}if(strokeKey){contextInstructions.push("strokeStyle",strokeState.strokeStyle);contextInstructions.push("lineWidth",strokeWidth);contextInstructions.push("lineCap",strokeState.lineCap);contextInstructions.push("lineJoin",strokeState.lineJoin);contextInstructions.push("miterLimit",strokeState.miterLimit);contextInstructions.push("setLineDash",[strokeState.lineDash]);contextInstructions.push("lineDashOffset",strokeState.lineDashOffset);}if(fillKey){contextInstructions.push("fillStyle",fillState.fillStyle);}contextInstructions.push("textBaseline","middle");contextInstructions.push("textAlign","center");const leftRight=0.5-align;let x=align*renderWidth+leftRight*strokeWidth;const strokeInstructions=[];const fillInstructions=[];let lineHeight=0;let lineOffset=0;let widthHeightIndex=0;let lineWidthIndex=0;let previousFont;for(let i=0,ii=chunks.length;isheetWidth?sheetWidth-originX:width;const h=height+originY>sheetHeight?sheetHeight-originY:height;const boxW=padding[3]+w*scale2[0]+padding[1];const boxH=padding[0]+h*scale2[1]+padding[2];const boxX=x-padding[3];const boxY=y-padding[0];if(fillStroke||rotation!==0){p1[0]=boxX;p4[0]=boxX;p1[1]=boxY;p2[1]=boxY;p2[0]=boxX+boxW;p3[0]=p2[0];p3[1]=boxY+boxH;p4[1]=p3[1];}let transform2;if(rotation !==0){transform2=compose(create(),centerX,centerY,1,1,rotation,-centerX,-centerY);apply(transform2,p1);apply(transform2,p2);apply(transform2,p3);apply(transform2,p4);createOrUpdate$2(Math.min(p1[0],p2[0],p3[0],p4[0]),Math.min(p1[1],p2[1],p3[1],p4[1]),Math.max(p1[0],p2[0],p3[0],p4[0]),Math.max(p1[1],p2[1],p3[1],p4[1]),tmpExtent);}else{createOrUpdate$2(Math.min(boxX,boxX+boxW),Math.min(boxY,boxY+boxH),Math.max(boxX,boxX+boxW),Math.max(boxY,boxY+boxH),tmpExtent);}if(snapToPixel){x=Math.round(x);y=Math.round(y);}return{drawImageX:x,drawImageY:y,drawImageW:w,drawImageH:h,originX,originY,declutterBox:{minX:tmpExtent[0],minY:tmpExtent[1],maxX:tmpExtent[2],maxY:tmpExtent[3],value:feature},canvasTransform:transform2,scale:scale2};}replayImageOrLabel_(context,contextScale,imageOrLabel,dimensions,opacity,fillInstruction2,strokeInstruction2){const fillStroke=!!(fillInstruction2||strokeInstruction2);const box=dimensions.declutterBox;const canvas=context.canvas;const strokePadding=strokeInstruction2 ?strokeInstruction2[2]*dimensions.scale[0]/2:0;const intersects2=box.minX-strokePadding<=canvas.width/contextScale&&box.maxX+strokePadding>=0&&box.minY-strokePadding<=canvas.height/contextScale&&box.maxY+strokePadding>=0;if(intersects2){if(fillStroke){this.replayTextBackground_(context,p1,p2,p3,p4,fillInstruction2,strokeInstruction2);}drawImageOrLabel(context,dimensions.canvasTransform,opacity,imageOrLabel,dimensions.originX,dimensions.originY,dimensions.drawImageW,dimensions.drawImageH,dimensions.drawImageX,dimensions.drawImageY,dimensions.scale);}return true;}fill_(context){if(this.alignFill_){const origin=apply(this.renderedTransform_,[0,0]);const repeatSize=512*this.pixelRatio;context.save();context.translate(origin[0]%repeatSize,origin[1]%repeatSize);context.rotate(this.viewRotation_);}context.fill();if(this.alignFill_){context.restore();}}setStrokeStyle_(context,instruction){context["strokeStyle"]=instruction[1];context.lineWidth=instruction[2];context.lineCap=instruction[3]; context.lineJoin=instruction[4];context.miterLimit=instruction[5];context.lineDashOffset=instruction[7];context.setLineDash(instruction[6]);}drawLabelWithPointPlacement_(text,textKey,strokeKey,fillKey){const textState=this.textStates[textKey];const label=this.createLabel(text,textKey,fillKey,strokeKey);const strokeState=this.strokeStates[strokeKey];const pixelRatio=this.pixelRatio;const align=horizontalTextAlign(Array.isArray(text)?text[0]:text,textState.textAlign||defaultTextAlign);const baseline=TEXT_ALIGN[textState.textBaseline||defaultTextBaseline];const strokeWidth=strokeState&&strokeState.lineWidth?strokeState.lineWidth:0;const width=label.width/pixelRatio-2*textState.scale[0];const anchorX=align*width+2*(0.5-align)*strokeWidth;const anchorY=baseline*label.height/pixelRatio+2*(0.5-baseline)*strokeWidth;return{label,anchorX,anchorY};}execute_(context,contextScale,transform2,instructions,snapToPixel,featureCallback,hitExtent,declutterTree){let pixelCoordinates;if(this. pixelCoordinates_&&equals$2(transform2,this.renderedTransform_)){pixelCoordinates=this.pixelCoordinates_;}else{if(!this.pixelCoordinates_){this.pixelCoordinates_=[];}pixelCoordinates=transform2D(this.coordinates,0,this.coordinates.length,2,transform2,this.pixelCoordinates_);setFromArray(this.renderedTransform_,transform2);}let i=0;const ii=instructions.length;let d=0;let dd;let anchorX,anchorY,prevX,prevY,roundX,roundY,image,text,textKey,strokeKey,fillKey;let pendingFill=0;let pendingStroke=0;let lastFillInstruction=null;let lastStrokeInstruction=null;const coordinateCache=this.coordinateCache_;const viewRotation=this.viewRotation_;const viewRotationFromTransform=Math.round(Math.atan2(-transform2[1],transform2[0])*1e12)/1e12;const state=({context,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:viewRotation});const batchSize=this.instructions!=instructions||this.overlaps?0:200;let feature;let x,y,currentGeometry;while(ibatchSize){this.fill_(context);pendingFill=0;}if(pendingStroke>batchSize){context.stroke();pendingStroke=0;}if(!pendingFill&&!pendingStroke){context.beginPath();prevX=NaN;prevY=NaN;}++i;break;case CanvasInstruction.CIRCLE:d=instruction[1];const x1=pixelCoordinates[d];const y1=pixelCoordinates[d+1];const x2=pixelCoordinates[d+2];const y2=pixelCoordinates[d+3];const dx=x2-x1;const dy=y2-y1;const r=Math.sqrt(dx*dx+dy*dy);context.moveTo(x1+r,y1);context.arc(x1,y1,r,0,2*Math.PI,true);++i;break;case CanvasInstruction.CLOSE_PATH:context.closePath();++i;break;case CanvasInstruction.CUSTOM:d=instruction[1];dd=instruction[2];const geometry=(instruction[3]);const renderer=instruction[4];const fn=instruction.length==6?instruction[5]:void 0;state.geometry=geometry;state.feature=feature;if(!(i in coordinateCache)){coordinateCache[i]=[];}const coords=coordinateCache[i];if(fn){fn(pixelCoordinates,d,dd,2,coords);}else{coords[0]=pixelCoordinates[d];coords[1]=pixelCoordinates[d+1];coords.length=2;}renderer(coords,state);++i;break;case CanvasInstruction.DRAW_IMAGE:d=instruction[1];dd=instruction[2];image=instruction[3];anchorX=instruction[4];anchorY=instruction[5];let height=(instruction[6]);const opacity=(instruction[7]);const originX=(instruction[8]);const originY=(instruction[9]);const rotateWithView=(instruction[10]);let rotation=(instruction[11]);const scale2=(instruction[12]);let width=(instruction[13]);const declutterMode=(instruction[14]);const declutterImageWithText=(instruction[15]);if(!image&&instruction.length>=20){text=instruction[19];textKey=instruction[20];strokeKey=instruction[21];fillKey=instruction[22];const labelWithAnchor=this. drawLabelWithPointPlacement_(text,textKey,strokeKey,fillKey);image=labelWithAnchor.label;instruction[3]=image;const textOffsetX=(instruction[23]);anchorX=(labelWithAnchor.anchorX-textOffsetX)*this.pixelRatio;instruction[4]=anchorX;const textOffsetY=(instruction[24]);anchorY=(labelWithAnchor.anchorY-textOffsetY)*this.pixelRatio;instruction[5]=anchorY;height=image.height;instruction[6]=height;width=image.width;instruction[13]=width;}let geometryWidths;if(instruction.length>25){geometryWidths=instruction[25];}let padding,backgroundFill,backgroundStroke;if(instruction.length>17){padding=instruction[16];backgroundFill=instruction[17];backgroundStroke=instruction[18];}else{padding=defaultPadding;backgroundFill=false;backgroundStroke=false;}if(rotateWithView&&viewRotationFromTransform){rotation+=viewRotation;}else if(!rotateWithView&&!viewRotationFromTransform){rotation-=viewRotation;}let widthIndex=0;for(;d0){if(!declutteredFeatures||builderType!=="Image"&&builderType!=="Text"||declutteredFeatures.includes(feature)){const idx=(indexes[i2]-3)/4;const x=hitTolerance-idx%contextSize;const y=hitTolerance-(idx/contextSize|0);const result2=callback(feature,geometry,x*x+y*y);if(result2){return result2;}}context.clearRect(0,0,contextSize,contextSize);break;}}return void 0;}const zs=Object.keys(this.executorsByZIndex_).map(Number);zs.sort(ascending);let i,j,executors,executor,result;for(i=zs.length-1;i>=0;--i){const zIndexKey=zs[i].toString();executors=this.executorsByZIndex_[zIndexKey];for(j=ORDER.length-1;j>=0;--j){builderType=ORDER[j];executor=executors[builderType];if(executor !==void 0){result=executor.executeHitDetection(context,transform2,rotation,featureCallback,hitExtent);if(result){return result;}}}}return void 0;}getClipCoords(transform2){const maxExtent=this.maxExtent_;if(!maxExtent){return null;}const minX=maxExtent[0];const minY=maxExtent[1];const maxX=maxExtent[2];const maxY=maxExtent[3];const flatClipCoords=[minX,minY,minX,maxY,maxX,maxY,maxX,minY];transform2D(flatClipCoords,0,8,2,transform2,flatClipCoords);return flatClipCoords;}isEmpty(){return isEmpty$1(this.executorsByZIndex_);}execute(context,contextScale,transform2,viewRotation,snapToPixel,builderTypes,declutterTree){const zs=Object.keys(this.executorsByZIndex_).map(Number);zs.sort(ascending);if(this.maxExtent_){context.save();this.clip(context,transform2);}builderTypes=builderTypes?builderTypes:ORDER;let i,ii,j,jj,replays,replay;if(declutterTree){zs.reverse();}for(i=0,ii=zs.length;imaxDistanceSq){break;}let distance=distances[distanceSq];if(!distance){distance=[];distances[distanceSq]=distance;}distance.push(((radius+i)*size+(radius+j))*4+3);if(i>0){distance.push(((radius-i)*size+(radius+j))*4+3);}if(j>0){distance.push(((radius+i)*size+(radius-j))*4+3);if(i>0){distance.push(((radius-i)*size+(radius-j))*4+3);}}}}const pixelIndex=[];for(let i=0,ii=distances.length;in*this.pixelRatio_),lineDashOffset:(strokeStyleLineDashOffset?strokeStyleLineDashOffset:defaultLineDashOffset)*this.pixelRatio_,lineJoin:strokeStyleLineJoin!==void 0?strokeStyleLineJoin: defaultLineJoin,lineWidth:(strokeStyleWidth!==void 0?strokeStyleWidth:defaultLineWidth)*this.pixelRatio_,miterLimit:strokeStyleMiterLimit!==void 0?strokeStyleMiterLimit:defaultMiterLimit,strokeStyle:asColorLike(strokeStyleColor?strokeStyleColor:defaultStrokeStyle)};}}setImageStyle(imageStyle){let imageSize;if(!imageStyle||!(imageSize=imageStyle.getSize())){this.image_=null;return;}const imagePixelRatio=imageStyle.getPixelRatio(this.pixelRatio_);const imageAnchor=imageStyle.getAnchor();const imageOrigin=imageStyle.getOrigin();this.image_=imageStyle.getImage(this.pixelRatio_);this.imageAnchorX_=imageAnchor[0]*imagePixelRatio;this.imageAnchorY_=imageAnchor[1]*imagePixelRatio;this.imageHeight_=imageSize[1]*imagePixelRatio;this.imageOpacity_=imageStyle.getOpacity();this.imageOriginX_=imageOrigin[0];this.imageOriginY_=imageOrigin[1];this.imageRotateWithView_=imageStyle.getRotateWithView();this.imageRotation_=imageStyle.getRotation();const imageScale=imageStyle.getScaleArray();this. imageScale_=[imageScale[0]*this.pixelRatio_/imagePixelRatio,imageScale[1]*this.pixelRatio_/imagePixelRatio];this.imageWidth_=imageSize[0]*imagePixelRatio;}setTextStyle(textStyle){if(!textStyle){this.text_="";}else{const textFillStyle=textStyle.getFill();if(!textFillStyle){this.textFillState_=null;}else{const textFillStyleColor=textFillStyle.getColor();this.textFillState_={fillStyle:asColorLike(textFillStyleColor?textFillStyleColor:defaultFillStyle)};}const textStrokeStyle=textStyle.getStroke();if(!textStrokeStyle){this.textStrokeState_=null;}else{const textStrokeStyleColor=textStrokeStyle.getColor();const textStrokeStyleLineCap=textStrokeStyle.getLineCap();const textStrokeStyleLineDash=textStrokeStyle.getLineDash();const textStrokeStyleLineDashOffset=textStrokeStyle.getLineDashOffset();const textStrokeStyleLineJoin=textStrokeStyle.getLineJoin();const textStrokeStyleWidth=textStrokeStyle.getWidth();const textStrokeStyleMiterLimit=textStrokeStyle.getMiterLimit();this.textStrokeState_={ lineCap:textStrokeStyleLineCap!==void 0?textStrokeStyleLineCap:defaultLineCap,lineDash:textStrokeStyleLineDash?textStrokeStyleLineDash:defaultLineDash,lineDashOffset:textStrokeStyleLineDashOffset?textStrokeStyleLineDashOffset:defaultLineDashOffset,lineJoin:textStrokeStyleLineJoin!==void 0?textStrokeStyleLineJoin:defaultLineJoin,lineWidth:textStrokeStyleWidth!==void 0?textStrokeStyleWidth:defaultLineWidth,miterLimit:textStrokeStyleMiterLimit!==void 0?textStrokeStyleMiterLimit:defaultMiterLimit,strokeStyle:asColorLike(textStrokeStyleColor?textStrokeStyleColor:defaultStrokeStyle)};}const textFont=textStyle.getFont();const textOffsetX=textStyle.getOffsetX();const textOffsetY=textStyle.getOffsetY();const textRotateWithView=textStyle.getRotateWithView();const textRotation=textStyle.getRotation();const textScale=textStyle.getScaleArray();const textText=textStyle.getText();const textTextAlign=textStyle.getTextAlign();const textTextBaseline=textStyle.getTextBaseline();this.textState_={font: textFont!==void 0?textFont:defaultFont,textAlign:textTextAlign!==void 0?textTextAlign:defaultTextAlign,textBaseline:textTextBaseline!==void 0?textTextBaseline:defaultTextBaseline};this.text_=textText!==void 0?Array.isArray(textText)?textText.reduce((acc,t,i)=>acc+=i%2?" ":t,""):textText:"";this.textOffsetX_=textOffsetX!==void 0?this.pixelRatio_*textOffsetX:0;this.textOffsetY_=textOffsetY!==void 0?this.pixelRatio_*textOffsetY:0;this.textRotateWithView_=textRotateWithView!==void 0?textRotateWithView:false;this.textRotation_=textRotation!==void 0?textRotation:0;this.textScale_=[this.pixelRatio_*textScale[0],this.pixelRatio_*textScale[1]];}}}const CanvasImmediateRenderer$1=CanvasImmediateRenderer;const HIT_DETECT_RESOLUTION=0.5;function createHitDetectionImageData(size,transforms2,features,styleFunction,extent,resolution,rotation){const width=size[0]*HIT_DETECT_RESOLUTION;const height=size[1]*HIT_DETECT_RESOLUTION;const context=createCanvasContext2D(width,height);context. imageSmoothingEnabled=false;const canvas=context.canvas;const renderer=new CanvasImmediateRenderer$1(context,HIT_DETECT_RESOLUTION,extent,null,rotation);const featureCount=features.length;const indexFactor=Math.floor((256*256*256-1)/featureCount);const featuresByZIndex={};for(let i=1;i<=featureCount;++i){const feature=features[i-1];const featureStyleFunction=feature.getStyleFunction()||styleFunction;if(!featureStyleFunction){continue;}let styles=featureStyleFunction(feature,resolution);if(!styles){continue;}if(!Array.isArray(styles)){styles=[styles];}const index=i*indexFactor;const color=index.toString(16).padStart(7,"#00000");for(let j=0,jj=styles.length;j{if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){const size=[this.context.canvas.width,this.context.canvas.height] ;apply(this.pixelTransform,size);const center=this.renderedCenter_;const resolution=this.renderedResolution_;const rotation=this.renderedRotation_;const projection=this.renderedProjection_;const extent=this.wrappedRenderedExtent_;const layer=this.getLayer();const transforms2=[];const width=size[0]*HIT_DETECT_RESOLUTION;const height=size[1]*HIT_DETECT_RESOLUTION;transforms2.push(this.getRenderTransform(center,resolution,rotation,HIT_DETECT_RESOLUTION,width,height,0).slice());const source=layer.getSource();const projectionExtent=projection.getExtent();if(source.getWrapX()&&projection.canWrapX()&&!containsExtent(projectionExtent,extent)){let startX=extent[0];const worldWidth=getWidth(projectionExtent);let world=0;let offsetX;while(startXprojectionExtent[2]){++ world;offsetX=worldWidth*world;transforms2.push(this.getRenderTransform(center,resolution,rotation,HIT_DETECT_RESOLUTION,width,height,offsetX).slice());startX-=worldWidth;}}this.hitDetectionImageData_=createHitDetectionImageData(size,transforms2,this.renderedFeatures_,layer.getStyleFunction(),extent,resolution,rotation);}resolve(hitDetect(pixel,this.renderedFeatures_,this.hitDetectionImageData_));});}forEachFeatureAtCoordinate(coordinate,frameState,hitTolerance,callback,matches){if(!this.replayGroup_){return void 0;}const resolution=frameState.viewState.resolution;const rotation=frameState.viewState.rotation;const layer=this.getLayer();const features={};const featureCallback=function(feature,geometry,distanceSq){const key=getUid(feature);const match=features[key];if(!match){if(distanceSq===0){features[key]=true;return callback(feature,layer,geometry);}matches.push(features[key]={feature,layer,geometry,distanceSq,callback});}else if(match!==true&&distanceSq{return result=executorGroup.forEachFeatureAtCoordinate(coordinate,resolution,rotation,hitTolerance,featureCallback,executorGroup===this.declutterExecutorGroup&&frameState.declutterTree?frameState.declutterTree.all().map((item)=>item.value):null);});return result;}handleFontsChanged(){const layer=this.getLayer();if(layer.getVisible()&&this.replayGroup_){layer.changed();}}handleStyleImageChange_(event){this.renderIfReadyAndVisible();}prepareFrame(frameState){const vectorLayer=this.getLayer();const vectorSource=vectorLayer.getSource();if(!vectorSource){return false;}const animating=frameState.viewHints[ViewHint.ANIMATING];const interacting=frameState.viewHints[ViewHint.INTERACTING];const updateWhileAnimating=vectorLayer.getUpdateWhileAnimating();const updateWhileInteracting=vectorLayer.getUpdateWhileInteracting();if(this.ready&&!updateWhileAnimating&&animating||!updateWhileInteracting&&interacting){this.animatingOrInteracting_=true;return true;}this.animatingOrInteracting_=false;const frameStateExtent=frameState.extent;const viewState=frameState.viewState;const projection=viewState.projection;const resolution=viewState.resolution;const pixelRatio=frameState.pixelRatio;const vectorLayerRevision=vectorLayer.getRevision();const vectorLayerRenderBuffer=vectorLayer.getRenderBuffer();let vectorLayerRenderOrder=vectorLayer.getRenderOrder();if(vectorLayerRenderOrder===void 0){vectorLayerRenderOrder=defaultOrder;}const center=viewState.center.slice();const extent=buffer(frameStateExtent,vectorLayerRenderBuffer*resolution);const renderedExtent=extent.slice();const loadExtents=[extent.slice()];const projectionExtent= projection.getExtent();if(vectorSource.getWrapX()&&projection.canWrapX()&&!containsExtent(projectionExtent,frameState.extent)){const worldWidth=getWidth(projectionExtent);const gutter=Math.max(getWidth(extent)/2,worldWidth);extent[0]=projectionExtent[0]-gutter;extent[2]=projectionExtent[2]+gutter;wrapX$1(center,projection);const loadExtent=wrapX$2(loadExtents[0],projection);if(loadExtent[0]projectionExtent[0]&&loadExtent[2]>projectionExtent[2]){loadExtents.push([loadExtent[0]-worldWidth,loadExtent[1],loadExtent[2]-worldWidth,loadExtent[3]]);}}if(this.ready&&this.renderedResolution_==resolution&&this.renderedRevision_==vectorLayerRevision&&this.renderedRenderOrder_==vectorLayerRenderOrder&&containsExtent(this.wrappedRenderedExtent_,extent)){if(!equals$2(this.renderedExtent_,renderedExtent)){this. hitDetectionImageData_=null;this.renderedExtent_=renderedExtent;}this.renderedCenter_=center;this.replayGroupChanged=false;return true;}this.replayGroup_=null;const replayGroup=new CanvasBuilderGroup(getTolerance(resolution,pixelRatio),extent,resolution,pixelRatio);let declutterBuilderGroup;if(this.getLayer().getDeclutter()){declutterBuilderGroup=new CanvasBuilderGroup(getTolerance(resolution,pixelRatio),extent,resolution,pixelRatio);}let userTransform;{for(let i=0,ii=loadExtents.length;i{let styles;const styleFunction=feature.getStyleFunction()||vectorLayer.getStyleFunction();if(styleFunction){styles=styleFunction(feature,resolution);}if(styles){const dirty=this.renderFeature(feature,squaredTolerance,styles,replayGroup,userTransform,declutterBuilderGroup);ready=ready&&!dirty;}});const userExtent= toUserExtent(extent);const features=vectorSource.getFeaturesInExtent(userExtent);if(vectorLayerRenderOrder){features.sort(vectorLayerRenderOrder);}for(let i=0,ii=features.length;i0){this.newTiles_=true;}}if(!this.isDrawableTile(tile)){tile=tile.getInterimTile();}return tile;}getData(pixel){const frameState=this.frameState;if(!frameState){return null;}const layer=this.getLayer();const coordinate=apply(frameState.pixelToCoordinateTransform,pixel.slice());const layerExtent=layer.getExtent();if(layerExtent){if(! containsCoordinate(layerExtent,coordinate)){return null;}}const pixelRatio=frameState.pixelRatio;const projection=frameState.viewState.projection;const viewState=frameState.viewState;const source=layer.getRenderSource();const tileGrid=source.getTileGridForProjection(viewState.projection);const tilePixelRatio=source.getTilePixelRatio(frameState.pixelRatio);for(let z=tileGrid.getZForResolution(viewState.resolution);z>=tileGrid.getMinZoom();--z){const tileCoord=tileGrid.getTileCoordForCoordAndZ(coordinate,z);const tile=source.getTile(z,tileCoord[1],tileCoord[2],pixelRatio,projection);if(!(tile instanceof ImageTile$1||tile instanceof ReprojTile$1)||tile instanceof ReprojTile$1&&tile.getState()===TileState.EMPTY){return null;}if(tile.getState()!==TileState.LOADED){continue;}const tileOrigin=tileGrid.getOrigin(z);const tileSize=toSize(tileGrid.getTileSize(z));const tileResolution=tileGrid.getResolution(z);const col=Math.floor(tilePixelRatio*((coordinate[0]-tileOrigin[0])/tileResolution- tileCoord[1]*tileSize[0]));const row=Math.floor(tilePixelRatio*((tileOrigin[1]-coordinate[1])/tileResolution-tileCoord[2]*tileSize[1]));const gutter=Math.round(tilePixelRatio*source.getGutterForProjection(viewState.projection));return this.getImageData(tile.getImage(),col+gutter,row+gutter);}return null;}loadedTileCallback(tiles,zoom,tile){if(this.isDrawableTile(tile)){return super.loadedTileCallback(tiles,zoom,tile);}return false;}prepareFrame(frameState){return!!this.getLayer().getSource();}renderFrame(frameState,target){const layerState=frameState.layerStatesArray[frameState.layerIndex];const viewState=frameState.viewState;const projection=viewState.projection;const viewResolution=viewState.resolution;const viewCenter=viewState.center;const rotation=viewState.rotation;const pixelRatio=frameState.pixelRatio;const tileLayer=this.getLayer();const tileSource=tileLayer.getSource();const sourceRevision=tileSource.getRevision();const tileGrid=tileSource.getTileGridForProjection(projection) ;const z=tileGrid.getZForResolution(viewResolution,tileSource.zDirection);const tileResolution=tileGrid.getResolution(z);let extent=frameState.extent;const resolution=frameState.viewState.resolution;const tilePixelRatio=tileSource.getTilePixelRatio(pixelRatio);const width=Math.round(getWidth(extent)/resolution*pixelRatio);const height=Math.round(getHeight(extent)/resolution*pixelRatio);const layerExtent=layerState.extent&&fromUserExtent(layerState.extent);if(layerExtent){extent=getIntersection(extent,fromUserExtent(layerState.extent));}const dx=tileResolution*width/2/tilePixelRatio;const dy=tileResolution*height/2/tilePixelRatio;const canvasExtent=[viewCenter[0]-dx,viewCenter[1]-dy,viewCenter[0]+dx,viewCenter[1]+dy];const tileRange=tileGrid.getTileRangeForExtentAndZ(extent,z);const tilesToDrawByZ={};tilesToDrawByZ[z]={};const findLoadedTiles=this.createLoadedTileFinder(tileSource,projection,tilesToDrawByZ);const tmpExtent2=this.tmpExtent;const tmpTileRange=this.tmpTileRange_;this. newTiles_=false;const viewport=rotation?getRotatedViewport(viewState.center,resolution,rotation,frameState.size):void 0;for(let x=tileRange.minX;x<=tileRange.maxX;++x){for(let y=tileRange.minY;y<=tileRange.maxY;++y){if(rotation&&!tileGrid.tileCoordIntersectsViewport([z,x,y],viewport)){continue;}const tile=this.getTile(z,x,y,frameState);if(this.isDrawableTile(tile)){const uid=getUid(this);if(tile.getState()==TileState.LOADED){tilesToDrawByZ[z][tile.tileCoord.toString()]=tile;let inTransition=tile.inTransition(uid);if(inTransition&&layerState.opacity!==1){tile.endTransition(uid);inTransition=false;}if(!this.newTiles_&&(inTransition||!this.renderedTiles.includes(tile))){this.newTiles_=true;}}if(tile.getAlpha(uid,frameState.time)===1){continue;}}const childTileRange=tileGrid.getTileCoordChildTileRange(tile.tileCoord,tmpTileRange,tmpExtent2);let covered=false;if(childTileRange){covered=findLoadedTiles(z+1,childTileRange);}if(!covered){tileGrid.forEachTileCoordParentTileRange(tile.tileCoord, findLoadedTiles,tmpTileRange,tmpExtent2);}}}const canvasScale=tileResolution/viewResolution*pixelRatio/tilePixelRatio;compose(this.pixelTransform,frameState.size[0]/2,frameState.size[1]/2,1/pixelRatio,1/pixelRatio,rotation,-width/2,-height/2);const canvasTransform=toString$1(this.pixelTransform);this.useContainer(target,canvasTransform,this.getBackground(frameState));const context=this.context;const canvas=context.canvas;makeInverse(this.inversePixelTransform,this.pixelTransform);compose(this.tempTransform,width/2,height/2,canvasScale,canvasScale,0,-width/2,-height/2);if(canvas.width!=width||canvas.height!=height){canvas.width=width;canvas.height=height;}else if(!this.containerReused){context.clearRect(0,0,width,height);}if(layerExtent){this.clipUnrotated(context,frameState,layerExtent);}if(!tileSource.getInterpolate()){context.imageSmoothingEnabled=false;}this.preRender(context,frameState);this.renderedTiles.length=0;let zs=Object.keys(tilesToDrawByZ).map(Number);zs.sort(ascending); let clips,clipZs,currentClip;if(layerState.opacity===1&&(!this.containerReused||tileSource.getOpaque(frameState.viewState.projection))){zs=zs.reverse();}else{clips=[];clipZs=[];}for(let i=zs.length-1;i>=0;--i){const currentZ=zs[i];const currentTilePixelSize=tileSource.getTilePixelSize(currentZ,pixelRatio,projection);const currentResolution=tileGrid.getResolution(currentZ);const currentScale=currentResolution/tileResolution;const dx2=currentTilePixelSize[0]*currentScale*canvasScale;const dy2=currentTilePixelSize[1]*currentScale*canvasScale;const originTileCoord=tileGrid.getTileCoordForCoordAndZ(getTopLeft(canvasExtent),currentZ);const originTileExtent=tileGrid.getTileCoordExtent(originTileCoord);const origin=apply(this.tempTransform,[tilePixelRatio*(originTileExtent[0]-canvasExtent[0])/tileResolution,tilePixelRatio*(canvasExtent[3]-originTileExtent[3])/tileResolution]);const tileGutter=tilePixelRatio*tileSource.getGutterForProjection(projection);const tilesToDraw=tilesToDrawByZ[currentZ ];for(const tileCoordKey in tilesToDraw){const tile=(tilesToDraw[tileCoordKey]);const tileCoord=tile.tileCoord;const xIndex=originTileCoord[1]-tileCoord[1];const nextX=Math.round(origin[0]-(xIndex-1)*dx2);const yIndex=originTileCoord[2]-tileCoord[2];const nextY=Math.round(origin[1]-(yIndex-1)*dy2);const x=Math.round(origin[0]-xIndex*dx2);const y=Math.round(origin[1]-yIndex*dy2);const w=nextX-x;const h=nextY-y;const transition=z===currentZ;const inTransition=transition&&tile.getAlpha(getUid(this),frameState.time)!==1;let contextSaved=false;if(!inTransition){if(clips){currentClip=[x,y,x+w,y,x+w,y+h,x,y+h];for(let i2=0,ii=clips.length;i2=0;--i){const interaction=interactions[i];if(interaction!==this&&interaction instanceof Select&&interaction.getStyle()&&interaction.getFeatures().getArray().lastIndexOf(feature)!==-1){feature.setStyle(interaction.getStyle());return;}}const key=getUid(feature);feature.setStyle(originalFeatureStyles[key]);delete originalFeatureStyles[key];}removeFeatureLayerAssociation_(feature){delete this.featureLayerAssociation_[getUid(feature)];}handleEvent(mapBrowserEvent){if(!this.condition_(mapBrowserEvent)){return true;}const add2=this.addCondition_(mapBrowserEvent);const remove=this.removeCondition_(mapBrowserEvent);const toggle=this.toggleCondition_(mapBrowserEvent);const set2=!add2&&!remove&&!toggle;const map=mapBrowserEvent.map;const features=this.getFeatures();const deselected=[];const selected=[];if(set2){clear(this.featureLayerAssociation_);map. forEachFeatureAtPixel(mapBrowserEvent.pixel,(feature,layer)=>{if(!(feature instanceof Feature$1)||!this.filter_(feature,layer)){return;}this.addFeatureLayerAssociation_(feature,layer);selected.push(feature);return!this.multi_;},{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(let i=features.getLength()-1;i>=0;--i){const feature=features.item(i);const index=selected.indexOf(feature);if(index>-1){selected.splice(index,1);}else{features.remove(feature);deselected.push(feature);}}if(selected.length!==0){features.extend(selected);}}else{map.forEachFeatureAtPixel(mapBrowserEvent.pixel,(feature,layer)=>{if(!(feature instanceof Feature$1)||!this.filter_(feature,layer)){return;}if((add2||toggle)&&!features.getArray().includes(feature)){this.addFeatureLayerAssociation_(feature,layer);selected.push(feature);}else if((remove||toggle)&&features.getArray().includes(feature)){deselected.push(feature);this.removeFeatureLayerAssociation_(feature);}return!this.multi_;},{layerFilter: this.layerFilter_,hitTolerance:this.hitTolerance_});for(let j=deselected.length-1;j>=0;--j){features.remove(deselected[j]);}features.extend(selected);}if(selected.length>0||deselected.length>0){this.dispatchEvent(new SelectEvent(SelectEventType.SELECT,selected,deselected,mapBrowserEvent));}return true;}}function getDefaultStyleFunction(){const styles=createEditingStyle();extend$2(styles["Polygon"],styles["LineString"]);extend$2(styles["GeometryCollection"],styles["LineString"]);return function(feature){if(!feature.getGeometry()){return null;}return styles[feature.getGeometry().getType()];};}const OlInteractionSelect=Select;class TextFeature extends FeatureFormat{constructor(){super();}getType(){return"text";}readFeature(source,options){return this.readFeatureFromText(getText(source),this.adaptOptions(options));}readFeatureFromText(text,options){return abstract();}readFeatures(source,options){return this.readFeaturesFromText(getText(source),this.adaptOptions(options));} readFeaturesFromText(text,options){return abstract();}readGeometry(source,options){return this.readGeometryFromText(getText(source),this.adaptOptions(options));}readGeometryFromText(text,options){return abstract();}readProjection(source){return this.readProjectionFromText(getText(source));}readProjectionFromText(text){return this.dataProjection;}writeFeature(feature,options){return this.writeFeatureText(feature,this.adaptOptions(options));}writeFeatureText(feature,options){return abstract();}writeFeatures(features,options){return this.writeFeaturesText(features,this.adaptOptions(options));}writeFeaturesText(features,options){return abstract();}writeGeometry(geometry,options){return this.writeGeometryText(geometry,this.adaptOptions(options));}writeGeometryText(geometry,options){return abstract();}}function getText(source){if(typeof source==="string"){return source;}return"";}const TextFeature$1=TextFeature;const GeometryConstructor={"POINT":OlPoint,"LINESTRING":LineString$1,"POLYGON": Polygon$1,"MULTIPOINT":MultiPoint$1,"MULTILINESTRING":MultiLineString$1,"MULTIPOLYGON":MultiPolygon$1};const EMPTY="EMPTY";const Z="Z";const M="M";const ZM="ZM";const TokenType={START:0,TEXT:1,LEFT_PAREN:2,RIGHT_PAREN:3,NUMBER:4,COMMA:5,EOF:6};const wktTypeLookup={Point:"POINT",LineString:"LINESTRING",Polygon:"POLYGON",MultiPoint:"MULTIPOINT",MultiLineString:"MULTILINESTRING",MultiPolygon:"MULTIPOLYGON",GeometryCollection:"GEOMETRYCOLLECTION",Circle:"CIRCLE"};class Lexer{constructor(wkt){this.wkt=wkt;this.index_=-1;}isAlpha_(c){return c>="a"&&c<="z"||c>="A"&&c<="Z";}isNumeric_(c,decimal){decimal=decimal!==void 0?decimal:false;return c>="0"&&c<="9"||c=="."&&!decimal;}isWhiteSpace_(c){return c==" "||c==" "||c=="\r"||c=="\n";}nextChar_(){return this.wkt.charAt(++this.index_);}nextToken(){const c=this.nextChar_();const position=this.index_;let value=c;let type;if(c=="("){type=TokenType.LEFT_PAREN;}else if(c==","){type=TokenType.COMMA;}else if(c==")"){type=TokenType.RIGHT_PAREN;}else if( this.isNumeric_(c)||c=="-"){type=TokenType.NUMBER;value=this.readNumber_();}else if(this.isAlpha_(c)){type=TokenType.TEXT;value=this.readText_();}else if(this.isWhiteSpace_(c)){return this.nextToken();}else if(c===""){type=TokenType.EOF;}else{throw new Error("Unexpected character: "+c);}return{position,value,type};}readNumber_(){let c;const index=this.index_;let decimal=false;let scientificNotation=false;do{if(c=="."){decimal=true;}else if(c=="e"||c=="E"){scientificNotation=true;}c=this.nextChar_();}while(this.isNumeric_(c,decimal)||!scientificNotation&&(c=="e"||c=="E")||scientificNotation&&(c=="-"||c=="+"));return parseFloat(this.wkt.substring(index,this.index_--));}readText_(){let c;const index=this.index_;do{c=this.nextChar_();}while(this.isAlpha_(c));return this.wkt.substring(index,this.index_--).toUpperCase();}}class Parser{constructor(lexer){this.lexer_=lexer;this.token_={position:0,type:TokenType.START};this.layout_="XY";}consume_(){this.token_=this.lexer_.nextToken();} isTokenType(type){return this.token_.type==type;}match(type){const isMatch=this.isTokenType(type);if(isMatch){this.consume_();}return isMatch;}parse(){this.consume_();return this.parseGeometry_();}parseGeometryLayout_(){let layout="XY";const dimToken=this.token_;if(this.isTokenType(TokenType.TEXT)){const dimInfo=dimToken.value;if(dimInfo===Z){layout="XYZ";}else if(dimInfo===M){layout="XYM";}else if(dimInfo===ZM){layout="XYZM";}if(layout!=="XY"){this.consume_();}}return layout;}parseGeometryCollectionText_(){if(this.match(TokenType.LEFT_PAREN)){const geometries=[];do{geometries.push(this.parseGeometry_());}while(this.match(TokenType.COMMA));if(this.match(TokenType.RIGHT_PAREN)){return geometries;}}throw new Error(this.formatErrorMessage_());}parsePointText_(){if(this.match(TokenType.LEFT_PAREN)){const coordinates2=this.parsePoint_();if(this.match(TokenType.RIGHT_PAREN)){return coordinates2;}}throw new Error(this.formatErrorMessage_());}parseLineStringText_(){if(this.match(TokenType. LEFT_PAREN)){const coordinates2=this.parsePointList_();if(this.match(TokenType.RIGHT_PAREN)){return coordinates2;}}throw new Error(this.formatErrorMessage_());}parsePolygonText_(){if(this.match(TokenType.LEFT_PAREN)){const coordinates2=this.parseLineStringTextList_();if(this.match(TokenType.RIGHT_PAREN)){return coordinates2;}}throw new Error(this.formatErrorMessage_());}parseMultiPointText_(){if(this.match(TokenType.LEFT_PAREN)){let coordinates2;if(this.token_.type==TokenType.LEFT_PAREN){coordinates2=this.parsePointTextList_();}else{coordinates2=this.parsePointList_();}if(this.match(TokenType.RIGHT_PAREN)){return coordinates2;}}throw new Error(this.formatErrorMessage_());}parseMultiLineStringText_(){if(this.match(TokenType.LEFT_PAREN)){const coordinates2=this.parseLineStringTextList_();if(this.match(TokenType.RIGHT_PAREN)){return coordinates2;}}throw new Error(this.formatErrorMessage_());}parseMultiPolygonText_(){if(this.match(TokenType.LEFT_PAREN)){const coordinates2=this. parsePolygonTextList_();if(this.match(TokenType.RIGHT_PAREN)){return coordinates2;}}throw new Error(this.formatErrorMessage_());}parsePoint_(){const coordinates2=[];const dimensions=this.layout_.length;for(let i=0;i0){wktType+=" "+dimInfo;}}if(enc.length===0){return wktType+" "+EMPTY;}return wktType+"("+enc+")";}const OlFormatWkt=WKT;function init_wrmap(_,jq_map_element){var _a,_b,_c,_d,_e;let EPSG4326=get$1("EPSG:4326");let EPSG3857=get$1("EPSG:3857");function createElement(tagName,attributes={}){let element=$(document.createElement(tagName));for(let attribute in attributes){element.attr(attribute,attributes[attribute]);}return element;}function appendElement(parentElement,tagName,attributes={}){let element=createElement(tagName,attributes);parentElement.append(element);return element;}let jq_map=$(jq_map_element);let ext_path=jq_map.attr("data-ext-path");let img_path=ext_path+"/img";let json_string=jq_map.children().last().text();jq_map.empty();let json_js=JSON.parse(json_string);let format_geojson=new OlGeoJson();let features_all=format_geojson.readFeatures(json_js,{dataProjection:EPSG4326,featureProjection:EPSG3857});function get_feature_title(feature){let title=feature.get("type");if(title=="sledrun")return feature.get("name");title=title.charAt(0).toUpperCase()+title.slice(1);if(feature.get("name"))title+=": "+feature.get("name");return title;}let get_sledrun_condition=function(feature){let condition=feature.get("condition");if(condition===void 0)return 0;return condition;};function sledrun_icon_style(condition,highlight){let hl=highlight?"h":"n";let src=img_path+"/marker_c_sledrun_"+condition+"n"+hl+".png";return new Style({image:new OlIcon({src,size:[17,17],anchor:[0.5,0.5]})});}function sledrun_icon_shadow_style(){return new Style({image:new OlIcon({src:img_path+"/marker_c_shadow.png",size:[23,23],anchor:[0.4,0.4]})});}function marker_icon_style(feature){let src=img_path+"/marker_p_"+feature.get("type")+".png";return new Style({image:new OlIcon({src,size:[20,34],anchor:[0.5,1]})});}function point_style(feature,highlight){let sledrun=feature.get("type")=="sledrun";let icon_style;if(sledrun){let condition=get_sledrun_condition(feature);icon_style=sledrun_icon_style(condition,highlight);}else icon_style=marker_icon_style(feature);if(highlight){icon_style.setText(new OlText({text:get_feature_title(feature),font:"icon",offsetY:14,stroke:new OlStroke({color:"#ddd",width:2})}));}if(sledrun){let shadow_style=sledrun_icon_shadow_style();return[shadow_style,icon_style];}return[icon_style];}function style_point_function(feature,_resolution){return point_style(feature,false);}function style_point_function_highlight(feature,_resolution){return point_style(feature,true);}function style_path_function(feature,_resolution){let line_color={"rodelbahn":"#014e9a","gehweg":"#e98401","alternative":"#7f7fff","lift":"#000000","anfahrt":"#e1e100"};let featureType=feature.get("type");let color=feature.get("strokeColor")||line_color[featureType]||"#e7525b";let width2=["lift","anfahrt"].indexOf( feature.get("type"))>=0?3:6;return new Style({stroke:new OlStroke({color,width:width2})});}function style_function(feature,resolution){if(feature.getGeometry()instanceof OlPoint)return style_point_function(feature);return style_path_function(feature);}function style_function_highlight(feature,resolution){if(feature.getGeometry()instanceof OlPoint)return style_point_function_highlight(feature);return style_path_function(feature);}let popup_container=document.createElement("div");popup_container.setAttribute("class","ol-popup");popup_container=jq_map_element.insertAdjacentElement("afterend",popup_container);let popup_closer=document.createElement("a");popup_closer.setAttribute("href","#");popup_closer.setAttribute("class","ol-popup-closer");popup_closer=popup_container.insertAdjacentElement("beforeend",popup_closer);let popup_content=document.createElement("div");popup_content=popup_container.insertAdjacentElement("beforeend",popup_content);let popup_overlay=new OlOverlay({element: popup_container,autoPan:{animation:{duration:250}}});popup_closer.onclick=function(){popup_overlay.setPosition(void 0);popup_closer.blur();return false;};function create_popup_dom(feature){let popup_div=createElement("div");if(feature.get("name")!==void 0&&(feature.get("wiki")!==void 0||feature.get("thumb_url")!==void 0)){let h2=appendElement(popup_div,"h2");if(feature.get("wiki")===void 0)h2.text(feature.get("name"));else appendElement(h2,"a",{href:new mw.Title(feature.get("wiki")).getUrl({})}).text(feature.get("name"));}if(feature.get("type")=="sledrun"){let p=appendElement(popup_div,"p").text("Rodelbahnzustand").append(createElement("br"));let wiki_title=new mw.Title(feature.get("wiki"));if(feature.get("condition")!==void 0){let condition_text={1:"Sehr gut",2:"Gut",3:"Mittelmäßig",4:"Schlecht",5:"Geht nicht"};let condition=feature.get("condition");let year_month_day=feature.get("date_report").split("-");p.append(createElement("a",{href:wiki_title.getUrl({})+"#Eintr.C3.A4ge"}).text (condition_text[condition])," ");p.append(createElement("small").text(year_month_day[2]+"."+year_month_day[1]+".")," ");p.append(createElement("em").append(createElement("a",{href:wiki_title.getUrl({})+"#Eintragen"}).text("Neu")));}else{p.append(createElement("em").append(createElement("a",{href:wiki_title.getUrl({})+"#Eintragen"}).text("Bitte eintragen")));}}if(feature.get("wiki")!==void 0){let a=appendElement(appendElement(popup_div,"p"),"a",{href:new mw.Title(feature.get("wiki")).getUrl({})});let detail_text="Details";if(feature.get("type")=="sledrun")detail_text+=" zur Rodelbahn";if(feature.get("type")=="gasthaus")detail_text+=" zum Gasthaus";if(feature.get("thumb_url")!==void 0){a.append(createElement("img",{src:feature.get("thumb_url"),alt:detail_text,title:detail_text}));}else{a.text(detail_text);let api=new mw.Api();api.get({action:"query",prop:"pageimages",pithumbsize:"200",titles:feature.get("wiki")}).done(function(data){var _a2;let pages=(_a2=data==null?void 0:data.query)== null?void 0:_a2.pages;if(pages instanceof Object){for(let pageNumber in pages){let page=pages[pageNumber];let thumbnail=page.thumbnail;if(thumbnail instanceof Object){a.empty();a.append(createElement("img",{src:thumbnail.source,alt:detail_text,title:detail_text,width:thumbnail.width,height:thumbnail.height}));popup_overlay.panIntoView();}}}});}}return popup_div;}let lon=((_a=json_js.wr_properties)==null?void 0:_a.lon)??11;let lat=((_b=json_js.wr_properties)==null?void 0:_b.lat)??47;let zoom=((_c=json_js.wr_properties)==null?void 0:_c.zoom)??10;let width=((_d=json_js.wr_properties)==null?void 0:_d.width)??"100%";let height=((_e=json_js.properties)==null?void 0:_e.height)??450;jq_map.width(width);jq_map.height(height);let layer_sledrun_source=new OlSourceVector({features:features_all});let layer_sledrun=new OlLayerVector({source:layer_sledrun_source,style:style_function});let map=new OlMap({target:jq_map[0],layers:[layer_sledrun],overlays:[popup_overlay],view:new OlView({center: fromLonLat([lon,lat]),zoom}),controls:defaults$1({attributionOptions:{collapsible:false}}),interactions:defaults({mouseWheelZoom:false,dragPan:false}).extend([new OlInteractionDragPan({condition:function(event){let dragPan=this;return dragPan.getPointerCount()===2||platformModifierKeyOnly(event);}}),new OlInteractionMouseWheelZoom({condition:platformModifierKeyOnly}),new OlInteractionSelect({condition:pointerMove,style:style_function_highlight})])});let select_click=new OlInteractionSelect({condition:click,style:null});map.addInteraction(select_click);select_click.on("select",function(event){if(event.selected.length>0){let feature=event.selected[0];let geometry=feature.getGeometry();let coordinates2=geometry.getFirstCoordinate();let popup_dom=create_popup_dom(feature);if(popup_dom.children().length>0){$(popup_content).empty().append(popup_dom);popup_overlay.setPosition(coordinates2);}}});function get_austria_feature(){let austria_wkt= "POLYGON ((9.599 47.269, 9.767 47.523, 9.986 47.442, 10.192 47.234, 10.366 47.287, 10.488 47.497, 10.814 47.477, 11.052 47.349, 11.732 47.539, 12.211 47.578, 12.269 47.656, 12.474 47.593, 12.676 47.622, 12.839 47.471, 13.039 47.436, 13.120 47.661, 12.989 47.754, 13.019 47.900, 12.864 48.130, 13.419 48.328, 13.516 48.523, 13.769 48.509, 13.867 48.699, 14.173 48.535, 14.726 48.561, 14.851 48.728, 14.983 48.751, 15.036 48.954, 15.803 48.820, 16.041 48.711, 16.374 48.694, 16.496 48.754, 16.831 48.668, 16.800 48.376, 17.050 48.001, 16.985 47.742, 16.583 47.795, 16.363 47.696, 16.605 47.538, 16.379 47.412, 16.402 47.043, 15.994 46.879, 15.914 46.732, 14.874 46.649, 14.538 46.455, 12.501 46.715, 12.213 46.957, 12.267 47.065, 12.181 47.126, 11.762 47.031, 11.220 47.018, 10.925 46.815, 10.520 46.900, 10.359 47.029, 10.134 46.899, 9.674 47.095, 9.599 47.269))";let format=new OlFormatWkt();let feature=format.readFeature(austria_wkt,{dataProjection:EPSG4326,featureProjection:EPSG3857});return feature;}let austriaFeature=get_austria_feature();let austriaGeometry=austriaFeature.getGeometry();function is_in_austria(feature){let featureGeometry=feature.getGeometry();return austriaGeometry.intersectsCoordinate(featureGeometry.getFirstCoordinate());}let austria_only=features_all.every(is_in_austria);let capabilitiesUrl=austria_only?"https://mapsneu.wien.gv.at/basemapneu/1.0.0/WMTSCapabilities.xml":"https://mapsneu.wien.gv.at/vaoneu/1.0.0/WMTSCapabilities.xml";fetch(capabilitiesUrl).then(function(response){return response.text();}).then(function(text){let result=new OlFormatWmtsCapabilities().read(text);let options=optionsFromCapabilities(result,{layer:austria_only?"bmapgrau":"vaoausland",matrixSet:"google3857",style:"normal"});options["attributions"]=austria_only?'Grundkarte: basemap.at':'Grundkarte: OpenStreetMap';let layer_map=new OlLayerTile({source:new OlSourceWmts(options)});map. getLayers().insertAt(0,layer_map);});}function init_wrmaps(){let jq_maps=$(".wrmap");jq_maps.each(init_wrmap);}$(init_wrmaps);},{"css":[ ":root,:host{--ol-background-color:white;--ol-accent-background-color:#F5F5F5;--ol-subtle-background-color:rgba(128,128,128,0.25);--ol-partial-background-color:rgba(255,255,255,0.75);--ol-foreground-color:#333333;--ol-subtle-foreground-color:#666666;--ol-brand-color:#00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all 0.25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:none}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:bold;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:normal;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:\" \"}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:0.5em;bottom:0.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-popup{position:absolute;background-color:white;-webkit-filter:drop-shadow(0 1px 4px rgba(0,0,0,0.2));filter:drop-shadow(0 1px 4px rgba(0,0,0,0.2));padding:15px;border-radius:10px;border:1px solid #cccccc;bottom:12px;left:-50px;min-width:250px}.ol-popup:after,.ol-popup:before{top:100%;border:solid transparent;content:\" \";height:0;width:0;position:absolute;pointer-events:none}.ol-popup h2{margin-top:0px}.ol-popup img{min-height:130px}.ol-popup:after{border-top-color:white;border-width:10px;left:48px;margin-left:-10px}.ol-popup:before{border-top-color:#cccccc;border-width:11px;left:48px;margin-left:-11px}.ol-popup-closer{text-decoration:none;position:absolute;top:2px;right:8px}.ol-popup-closer:after{content:\"✖\"}" ]});mw.loader.implement("jquery@p9z7x",function($,jQuery,require,module){(function(global,factory){"use strict";if(typeof module==="object"&&typeof module.exports==="object"){module.exports=global.document?factory(global,true):function(w){if(!w.document){throw new Error("jQuery requires a window with a document");}return factory(w);};}else{factory(global);}})(typeof window!=="undefined"?window:this,function(window,noGlobal){"use strict";var arr=[];var getProto=Object.getPrototypeOf;var slice=arr.slice;var flat=arr.flat?function(array){return arr.flat.call(array);}:function(array){return arr.concat.apply([],array);};var push=arr.push;var indexOf=arr.indexOf;var class2type={};var toString=class2type.toString;var hasOwn=class2type.hasOwnProperty;var fnToString=hasOwn.toString;var ObjectFunctionString=fnToString.call(Object);var support={};var isFunction=function isFunction(obj){return typeof obj==="function"&&typeof obj.nodeType!=="number"&&typeof obj.item!=="function";};var isWindow=function isWindow(obj){return obj!=null&&obj===obj.window;};var document=window.document;var preservedScriptAttributes={type:true,src:true,nonce:true,noModule:true};function DOMEval(code,node,doc){doc=doc||document;var i,val,script=doc.createElement("script");script.text=code;if(node){for(i in preservedScriptAttributes){val=node[i]||node.getAttribute&&node.getAttribute(i);if(val){script.setAttribute(i,val);}}}doc.head.appendChild(script).parentNode.removeChild(script);}function toType(obj){if(obj==null){return obj+"";}return typeof obj==="object"||typeof obj==="function"?class2type[toString.call(obj)]||"object":typeof obj;}var version="3.6.1",jQuery=function(selector,context){return new jQuery.fn.init(selector,context);};jQuery.fn=jQuery.prototype={jquery:version,constructor:jQuery,length:0,toArray:function(){return slice.call(this);},get:function(num){if(num==null){return slice.call(this);}return num<0?this[num+this.length]:this[num];},pushStack:function(elems){var ret=jQuery.merge(this. constructor(),elems);ret.prevObject=this;return ret;},each:function(callback){return jQuery.each(this,callback);},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},slice:function(){return this.pushStack(slice.apply(this,arguments));},first:function(){return this.eq(0);},last:function(){return this.eq(-1);},even:function(){return this.pushStack(jQuery.grep(this,function(_elem,i){return(i+1)%2;}));},odd:function(){return this.pushStack(jQuery.grep(this,function(_elem,i){return i%2;}));},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j0&&(length-1)in obj;}var Sizzle=(function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document, docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date(),preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),nonnativeSelectorCache=createCache(),sortOrder=function(a,b){if(a===b){hasDuplicate=true;}return 0;},hasOwn=({}).hasOwnProperty,arr=[],pop=arr.pop,pushNative=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){var i=0,len=list.length;for(;i+~]|"+whitespace+")"+whitespace+"*"),rdescend=new RegExp(whitespace+"|>"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={"ID":new RegExp("^#("+identifier+")"),"CLASS":new RegExp("^\\.("+identifier+")"),"TAG":new RegExp("^("+identifier+"|[*])"),"ATTR":new RegExp("^"+attributes),"PSEUDO":new RegExp("^"+pseudos),"CHILD":new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),"bool":new RegExp("^(?:"+booleans+")$","i"),"needsContext":new RegExp("^"+whitespace+ "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rhtml=/HTML$/i,rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,runescape=new RegExp("\\\\[\\da-fA-F]{1,6}"+whitespace+"?|\\\\([^\\r\\n\\f])","g"),funescape=function(escape,nonHex){var high="0x"+escape.slice(1)-0x10000;return nonHex?nonHex:high<0?String.fromCharCode(high+0x10000):String.fromCharCode(high>>10|0xD800,high&0x3FF|0xDC00);},rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fcssescape=function(ch,asCodePoint){if(asCodePoint){if(ch==="\0"){return"\uFFFD";}return ch.slice(0,-1)+"\\"+ch.charCodeAt(ch.length-1).toString(16)+" ";}return"\\"+ch;},unloadHandler=function(){setDocument();},inDisabledFieldset=addCombinator(function(elem){return elem.disabled===true&&elem.nodeName.toLowerCase()==="fieldset";},{dir:"parentNode",next:"legend"});try{ push.apply((arr=slice.call(preferredDoc.childNodes)),preferredDoc.childNodes);arr[preferredDoc.childNodes.length].nodeType;}catch(e){push={apply:arr.length?function(target,els){pushNative.apply(target,slice.call(els));}:function(target,els){var j=target.length,i=0;while((target[j++]=els[i++])){}target.length=j-1;}};}function Sizzle(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,nodeType=context?context.nodeType:9;results=results||[];if(typeof selector!=="string"||!selector||nodeType!==1&&nodeType!==9&&nodeType!==11){return results;}if(!seed){setDocument(context);context=context||document;if(documentIsHTML){if(nodeType!==11&&(match=rquickExpr.exec(selector))){if((m=match[1])){if(nodeType===9){if((elem=context.getElementById(m))){if(elem.id===m){results.push(elem);return results;}}else{return results;}}else{if(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m){results.push(elem);return results ;}}}else if(match[2]){push.apply(results,context.getElementsByTagName(selector));return results;}else if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName){push.apply(results,context.getElementsByClassName(m));return results;}}if(support.qsa&&!nonnativeSelectorCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))&&(nodeType!==1||context.nodeName.toLowerCase()!=="object")){newSelector=selector;newContext=context;if(nodeType===1&&(rdescend.test(selector)||rcombinators.test(selector))){newContext=rsibling.test(selector)&&testContext(context.parentNode)||context;if(newContext!==context||!support.scope){if((nid=context.getAttribute("id"))){nid=nid.replace(rcssescape,fcssescape);}else{context.setAttribute("id",(nid=expando));}}groups=tokenize(selector);i=groups.length;while(i--){groups[i]=(nid?"#"+nid:":scope")+" "+toSelector(groups[i]);}newSelector=groups.join(",");}try{push.apply(results,newContext.querySelectorAll(newSelector));return results;}catch( qsaError){nonnativeSelectorCache(selector,true);}finally{if(nid===expando){context.removeAttribute("id");}}}}}return select(selector.replace(rtrim,"$1"),context,results,seed);}function createCache(){var keys=[];function cache(key,value){if(keys.push(key+" ")>Expr.cacheLength){delete cache[keys.shift()];}return(cache[key+" "]=value);}return cache;}function markFunction(fn){fn[expando]=true;return fn;}function assert(fn){var el=document.createElement("fieldset");try{return!!fn(el);}catch(e){return false;}finally{if(el.parentNode){el.parentNode.removeChild(el);}el=null;}}function addHandle(attrs,handler){var arr=attrs.split("|"),i=arr.length;while(i--){Expr.attrHandle[arr[i]]=handler;}}function siblingCheck(a,b){var cur=b&&a,diff=cur&&a.nodeType===1&&b.nodeType===1&&a.sourceIndex-b.sourceIndex;if(diff){return diff;}if(cur){while((cur=cur.nextSibling)){if(cur===b){return-1;}}}return a?1:-1;}function createInputPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return name ==="input"&&elem.type===type;};}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return(name==="input"||name==="button")&&elem.type===type;};}function createDisabledPseudo(disabled){return function(elem){if("form"in elem){if(elem.parentNode&&elem.disabled===false){if("label"in elem){if("label"in elem.parentNode){return elem.parentNode.disabled===disabled;}else{return elem.disabled===disabled;}}return elem.isDisabled===disabled||elem.isDisabled!==!disabled&&inDisabledFieldset(elem)===disabled;}return elem.disabled===disabled;}else if("label"in elem){return elem.disabled===disabled;}return false;};}function createPositionalPseudo(fn){return markFunction(function(argument){argument=+argument;return markFunction(function(seed,matches){var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;while(i--){if(seed[(j=matchIndexes[i])]){seed[j]=!(matches[j]=seed[j]);}}});});}function testContext(context){return context&&typeof context. getElementsByTagName!=="undefined"&&context;}support=Sizzle.support={};isXML=Sizzle.isXML=function(elem){var namespace=elem&&elem.namespaceURI,docElem=elem&&(elem.ownerDocument||elem).documentElement;return!rhtml.test(namespace||docElem&&docElem.nodeName||"HTML");};setDocument=Sizzle.setDocument=function(node){var hasCompare,subWindow,doc=node?node.ownerDocument||node:preferredDoc;if(doc==document||doc.nodeType!==9||!doc.documentElement){return document;}document=doc;docElem=document.documentElement;documentIsHTML=!isXML(document);if(preferredDoc!=document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow){if(subWindow.addEventListener){subWindow.addEventListener("unload",unloadHandler,false);}else if(subWindow.attachEvent){subWindow.attachEvent("onunload",unloadHandler);}}support.scope=assert(function(el){docElem.appendChild(el).appendChild(document.createElement("div"));return typeof el.querySelectorAll!=="undefined"&&!el.querySelectorAll(":scope fieldset div").length;}); support.attributes=assert(function(el){el.className="i";return!el.getAttribute("className");});support.getElementsByTagName=assert(function(el){el.appendChild(document.createComment(""));return!el.getElementsByTagName("*").length;});support.getElementsByClassName=rnative.test(document.getElementsByClassName);support.getById=assert(function(el){docElem.appendChild(el).id=expando;return!document.getElementsByName||!document.getElementsByName(expando).length;});if(support.getById){Expr.filter["ID"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId;};};Expr.find["ID"]=function(id,context){if(typeof context.getElementById!=="undefined"&&documentIsHTML){var elem=context.getElementById(id);return elem?[elem]:[];}};}else{Expr.filter["ID"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");return node&&node.value===attrId ;};};Expr.find["ID"]=function(id,context){if(typeof context.getElementById!=="undefined"&&documentIsHTML){var node,i,elems,elem=context.getElementById(id);if(elem){node=elem.getAttributeNode("id");if(node&&node.value===id){return[elem];}elems=context.getElementsByName(id);i=0;while((elem=elems[i++])){node=elem.getAttributeNode("id");if(node&&node.value===id){return[elem];}}}return[];}};}Expr.find["TAG"]=support.getElementsByTagName?function(tag,context){if(typeof context.getElementsByTagName!=="undefined"){return context.getElementsByTagName(tag);}else if(support.qsa){return context.querySelectorAll(tag);}}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if(tag==="*"){while((elem=results[i++])){if(elem.nodeType===1){tmp.push(elem);}}return tmp;}return results;};Expr.find["CLASS"]=support.getElementsByClassName&&function(className,context){if(typeof context.getElementsByClassName!=="undefined"&&documentIsHTML){return context.getElementsByClassName( className);}};rbuggyMatches=[];rbuggyQSA=[];if((support.qsa=rnative.test(document.querySelectorAll))){assert(function(el){var input;docElem.appendChild(el).innerHTML=""+"";if(el.querySelectorAll("[msallowcapture^='']").length){rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")");}if(!el.querySelectorAll("[selected]").length){rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")");}if(!el.querySelectorAll("[id~="+expando+"-]").length){rbuggyQSA.push("~=");}input=document.createElement("input");input.setAttribute("name","");el.appendChild(input);if(!el.querySelectorAll("[name='']").length){rbuggyQSA.push("\\["+whitespace+"*name"+whitespace+"*="+whitespace+"*(?:''|\"\")");}if(!el.querySelectorAll(":checked").length){rbuggyQSA.push(":checked");}if(!el.querySelectorAll("a#"+expando+"+*").length){rbuggyQSA.push(".#.+[+~]");}el.querySelectorAll("\\\f");rbuggyQSA.push("[\\r\\n\\f]" );});assert(function(el){el.innerHTML=""+"";var input=document.createElement("input");input.setAttribute("type","hidden");el.appendChild(input).setAttribute("name","D");if(el.querySelectorAll("[name=d]").length){rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?=");}if(el.querySelectorAll(":enabled").length!==2){rbuggyQSA.push(":enabled",":disabled");}docElem.appendChild(el).disabled=true;if(el.querySelectorAll(":disabled").length!==2){rbuggyQSA.push(":enabled",":disabled");}el.querySelectorAll("*,:x");rbuggyQSA.push(",.*:");});}if((support.matchesSelector=rnative.test((matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector)))){assert(function(el){support.disconnectedMatch=matches.call(el,"*");matches.call(el,"[s!='']:x");rbuggyMatches.push("!=",pseudos);});}rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|"));rbuggyMatches= rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|"));hasCompare=rnative.test(docElem.compareDocumentPosition);contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=a.nodeType===9?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!!(bup&&bup.nodeType===1&&(adown.contains?adown.contains(bup):a.compareDocumentPosition&&a.compareDocumentPosition(bup)&16));}:function(a,b){if(b){while((b=b.parentNode)){if(b===a){return true;}}}return false;};sortOrder=hasCompare?function(a,b){if(a===b){hasDuplicate=true;return 0;}var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;if(compare){return compare;}compare=(a.ownerDocument||a)==(b.ownerDocument||b)?a.compareDocumentPosition(b):1;if(compare&1||(!support.sortDetached&&b.compareDocumentPosition(a)===compare)){if(a==document||a.ownerDocument==preferredDoc&&contains(preferredDoc,a)){return-1;}if(b==document||b.ownerDocument==preferredDoc&&contains(preferredDoc,b)){return 1;}return sortInput?(indexOf( sortInput,a)-indexOf(sortInput,b)):0;}return compare&4?-1:1;}:function(a,b){if(a===b){hasDuplicate=true;return 0;}var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup){return a==document?-1:b==document?1:aup?-1:bup?1:sortInput?(indexOf(sortInput,a)-indexOf(sortInput,b)):0;}else if(aup===bup){return siblingCheck(a,b);}cur=a;while((cur=cur.parentNode)){ap.unshift(cur);}cur=b;while((cur=cur.parentNode)){bp.unshift(cur);}while(ap[i]===bp[i]){i++;}return i?siblingCheck(ap[i],bp[i]):ap[i]==preferredDoc?-1:bp[i]==preferredDoc?1:0;};return document;};Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements);};Sizzle.matchesSelector=function(elem,expr){setDocument(elem);if(support.matchesSelector&&documentIsHTML&&!nonnativeSelectorCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr))){try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&elem.document.nodeType!==11){return ret;}} catch(e){nonnativeSelectorCache(expr,true);}}return Sizzle(expr,document,null,[elem]).length>0;};Sizzle.contains=function(context,elem){if((context.ownerDocument||context)!=document){setDocument(context);}return contains(context,elem);};Sizzle.attr=function(elem,name){if((elem.ownerDocument||elem)!=document){setDocument(elem);}var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):undefined;return val!==undefined?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null;};Sizzle.escape=function(sel){return(sel+"").replace(rcssescape,fcssescape);};Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg);};Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;hasDuplicate=!support.detectDuplicates;sortInput=!support.sortStable&&results.slice(0);results.sort(sortOrder);if(hasDuplicate){while((elem= results[i++])){if(elem===results[i]){j=duplicates.push(i);}}while(j--){results.splice(duplicates[j],1);}}sortInput=null;return results;};getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(!nodeType){while((node=elem[i++])){ret+=getText(node);}}else if(nodeType===1||nodeType===9||nodeType===11){if(typeof elem.textContent==="string"){return elem.textContent;}else{for(elem=elem.firstChild;elem;elem=elem.nextSibling){ret+=getText(elem);}}}else if(nodeType===3||nodeType===4){return elem.nodeValue;}return ret;};Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{"ATTR":function(match){match[1]=match[1].replace(runescape,funescape);match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape);if(match[2]==="~="){match[3]=" "+match[3]+" ";}return match.slice (0,4);},"CHILD":function(match){match[1]=match[1].toLowerCase();if(match[1].slice(0,3)==="nth"){if(!match[3]){Sizzle.error(match[0]);}match[4]=+(match[4]?match[5]+(match[6]||1):2*(match[3]==="even"||match[3]==="odd"));match[5]=+((match[7]+match[8])||match[3]==="odd");}else if(match[3]){Sizzle.error(match[0]);}return match;},"PSEUDO":function(match){var excess,unquoted=!match[6]&&match[2];if(matchExpr["CHILD"].test(match[0])){return null;}if(match[3]){match[2]=match[4]||match[5]||"";}else if(unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,true))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)){match[0]=match[0].slice(0,excess);match[2]=unquoted.slice(0,excess);}return match.slice(0,3);}},filter:{"TAG":function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return nodeNameSelector==="*"?function(){return true;}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName;};},"CLASS":function( className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test(typeof elem.className==="string"&&elem.className||typeof elem.getAttribute!=="undefined"&&elem.getAttribute("class")||"");});},"ATTR":function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);if(result==null){return operator==="!=";}if(!operator){return true;}result+="";return operator==="="?result===check:operator==="!="?result!==check:operator==="^="?check&&result.indexOf(check)===0:operator==="*="?check&&result.indexOf(check)>-1:operator==="$="?check&&result.slice(-check.length)===check:operator==="~="?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:operator==="|="?result===check||result.slice(0,check.length+1)===check+"-":false;};},"CHILD":function(type,what,_argument,first,last){var simple=type.slice(0,3)!=="nth",forward=type.slice(-4)!=="last", ofType=what==="of-type";return first===1&&last===0?function(elem){return!!elem.parentNode;}:function(elem,_context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=false;if(parent){if(simple){while(dir){node=elem;while((node=node[dir])){if(ofType?node.nodeName.toLowerCase()===name:node.nodeType===1){return false;}}start=dir=type==="only"&&!start&&"nextSibling";}return true;}start=[forward?parent.firstChild:parent.lastChild];if(forward&&useCache){node=parent;outerCache=node[expando]||(node[expando]={});uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});cache=uniqueCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=nodeIndex&&cache[2];node=nodeIndex&&parent.childNodes[nodeIndex];while((node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())){if(node.nodeType===1&&++diff&&node===elem){uniqueCache[ type]=[dirruns,nodeIndex,diff];break;}}}else{if(useCache){node=elem;outerCache=node[expando]||(node[expando]={});uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});cache=uniqueCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=nodeIndex;}if(diff===false){while((node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())){if((ofType?node.nodeName.toLowerCase()===name:node.nodeType===1)&&++diff){if(useCache){outerCache=node[expando]||(node[expando]={});uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});uniqueCache[type]=[dirruns,diff];}if(node===elem){break;}}}}}diff-=last;return diff===first||(diff%first===0&&diff/first>=0);}};},"PSEUDO":function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);if(fn[expando]){return fn(argument);}if(fn.length>1){args=[pseudo,pseudo,"",argument];return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())? markFunction(function(seed,matches){var idx,matched=fn(seed,argument),i=matched.length;while(i--){idx=indexOf(seed,matched[i]);seed[idx]=!(matches[idx]=matched[i]);}}):function(elem){return fn(elem,0,args);};}return fn;}},pseudos:{"not":markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,_context,xml){var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;while(i--){if((elem=unmatched[i])){seed[i]=!(matches[i]=elem);}}}):function(elem,_context,xml){input[0]=elem;matcher(input,null,xml,results);input[0]=null;return!results.pop();};}),"has":markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0;};}),"contains":markFunction(function(text){text=text.replace(runescape,funescape);return function(elem){return(elem.textContent||getText(elem)).indexOf(text)>-1;};}),"lang":markFunction(function(lang){if(!ridentifier.test(lang||"")){Sizzle.error( "unsupported lang: "+lang);}lang=lang.replace(runescape,funescape).toLowerCase();return function(elem){var elemLang;do{if((elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))){elemLang=elemLang.toLowerCase();return elemLang===lang||elemLang.indexOf(lang+"-")===0;}}while((elem=elem.parentNode)&&elem.nodeType===1);return false;};}),"target":function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id;},"root":function(elem){return elem===docElem;},"focus":function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex);},"enabled":createDisabledPseudo(false),"disabled":createDisabledPseudo(true),"checked":function(elem){var nodeName=elem.nodeName.toLowerCase();return(nodeName==="input"&&!!elem.checked)||(nodeName==="option"&&!!elem.selected);},"selected":function(elem){if(elem.parentNode){elem.parentNode.selectedIndex;}return elem.selected ===true;},"empty":function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling){if(elem.nodeType<6){return false;}}return true;},"parent":function(elem){return!Expr.pseudos["empty"](elem);},"header":function(elem){return rheader.test(elem.nodeName);},"input":function(elem){return rinputs.test(elem.nodeName);},"button":function(elem){var name=elem.nodeName.toLowerCase();return name==="input"&&elem.type==="button"||name==="button";},"text":function(elem){var attr;return elem.nodeName.toLowerCase()==="input"&&elem.type==="text"&&((attr=elem.getAttribute("type"))==null||attr.toLowerCase()==="text");},"first":createPositionalPseudo(function(){return[0];}),"last":createPositionalPseudo(function(_matchIndexes,length){return[length-1];}),"eq":createPositionalPseudo(function(_matchIndexes,length,argument){return[argument<0?argument+length:argument];}),"even":createPositionalPseudo(function(matchIndexes,length){var i=0;for(;ilength?length:argument;for(;--i>=0;){matchIndexes.push(i);}return matchIndexes;}),"gt":createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;++i1?function(elem,context,xml){var i=matchers.length;while(i--){if(!matchers[i](elem,context, xml)){return false;}}return true;}:matchers[0];}function multipleContexts(selector,contexts,results){var i=0,len=contexts.length;for(;i-1){seed[temp]=!(results[temp]=elem);}}}}else{matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut);if(postFinder){postFinder(null,results,matcherOut,xml);}else{push.apply(results,matcherOut);}}});}function matcherFromTokens(tokens){var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type], implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext;},implicitRelative,true),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1;},implicitRelative,true),matchers=[function(elem,context,xml){var ret=(!leadingRelative&&(xml||context!==outermostContext))||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));checkContext=null;return ret;}];for(;i1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:tokens[i-2].type===" "?"*":""})).replace(rtrim,"$1"),matcher,i0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find["TAG"]("*",outermost),dirrunsUnique=(dirruns+=contextBackup==null?1:Math.random()||0.1),len=elems.length;if(outermost){outermostContext=context==document||context||outermost;}for(;i!==len&&(elem=elems[i])!=null;i++){if(byElement&&elem){j=0;if(!context&&elem.ownerDocument!=document){setDocument(elem);xml=!documentIsHTML;}while((matcher=elementMatchers[j++])){if(matcher(elem,context||document,xml)){results.push(elem);break;}}if(outermost){dirruns=dirrunsUnique;}}if(bySet){if((elem=!matcher&&elem)){matchedCount--;}if(seed){unmatched.push(elem) ;}}}matchedCount+=i;if(bySet&&i!==matchedCount){j=0;while((matcher=setMatchers[j++])){matcher(unmatched,setMatched,context,xml);}if(seed){if(matchedCount>0){while(i--){if(!(unmatched[i]||setMatched[i])){setMatched[i]=pop.call(results);}}}setMatched=condense(setMatched);}push.apply(results,setMatched);if(outermost&&!seed&&setMatched.length>0&&(matchedCount+setMatchers.length)>1){Sizzle.uniqueSort(results);}}if(outermost){dirruns=dirrunsUnique;outermostContext=contextBackup;}return unmatched;};return bySet?markFunction(superMatcher):superMatcher;}compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){if(!match){match=tokenize(selector);}i=match.length;while(i--){cached=matcherFromTokens(match[i]);if(cached[expando]){setMatchers.push(cached);}else{elementMatchers.push(cached);}}cached=compilerCache(selector,matcherFromGroupMatchers(elementMatchers,setMatchers));cached.selector=selector;}return cached;};select= Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled=typeof selector==="function"&&selector,match=!seed&&tokenize((selector=compiled.selector||selector));results=results||[];if(match.length===1){tokens=match[0]=match[0].slice(0);if(tokens.length>2&&(token=tokens[0]).type==="ID"&&context.nodeType===9&&documentIsHTML&&Expr.relative[tokens[1].type]){context=(Expr.find["ID"](token.matches[0].replace(runescape,funescape),context)||[])[0];if(!context){return results;}else if(compiled){context=context.parentNode;}selector=selector.slice(tokens.shift().value.length);}i=matchExpr["needsContext"].test(selector)?0:tokens.length;while(i--){token=tokens[i];if(Expr.relative[(type=token.type)]){break;}if((find=Expr.find[type])){if((seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){tokens.splice(i,1);selector=seed.length&&toSelector(tokens);if(!selector){push.apply(results,seed); return results;}break;}}}}(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context);return results;};support.sortStable=expando.split("").sort(sortOrder).join("")===expando;support.detectDuplicates=!!hasDuplicate;setDocument();support.sortDetached=assert(function(el){return el.compareDocumentPosition(document.createElement("fieldset"))&1;});if(!assert(function(el){el.innerHTML="";return el.firstChild.getAttribute("href")==="#";})){addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML){return elem.getAttribute(name,name.toLowerCase()==="type"?1:2);}});}if(!support.attributes||!assert(function(el){el.innerHTML="";el.firstChild.setAttribute("value","");return el.firstChild.getAttribute("value")==="";})){addHandle("value",function(elem,_name,isXML){if(!isXML&&elem.nodeName.toLowerCase()==="input"){return elem.defaultValue;}});}if(!assert(function(el){return el .getAttribute("disabled")==null;})){addHandle(booleans,function(elem,name,isXML){var val;if(!isXML){return elem[name]===true?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null;}});}return Sizzle;})(window);jQuery.find=Sizzle;jQuery.expr=Sizzle.selectors;jQuery.expr[":"]=jQuery.expr.pseudos;jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort;jQuery.text=Sizzle.getText;jQuery.isXMLDoc=Sizzle.isXML;jQuery.contains=Sizzle.contains;jQuery.escapeSelector=Sizzle.escape;var dir=function(elem,dir,until){var matched=[],truncate=until!==undefined;while((elem=elem[dir])&&elem.nodeType!==9){if(elem.nodeType===1){if(truncate&&jQuery(elem).is(until)){break;}matched.push(elem);}}return matched;};var siblings=function(n,elem){var matched=[];for(;n;n=n.nextSibling){if(n.nodeType===1&&n!==elem){matched.push(n);}}return matched;};var rneedsContext=jQuery.expr.match.needsContext;function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase() ;}var rsingleTag=(/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i);function winnow(elements,qualifier,not){if(isFunction(qualifier)){return jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not;});}if(qualifier.nodeType){return jQuery.grep(elements,function(elem){return(elem===qualifier)!==not;});}if(typeof qualifier!=="string"){return jQuery.grep(elements,function(elem){return(indexOf.call(qualifier,elem)>-1)!==not;});}return jQuery.filter(qualifier,elements,not);}jQuery.filter=function(expr,elems,not){var elem=elems[0];if(not){expr=":not("+expr+")";}if(elems.length===1&&elem.nodeType===1){return jQuery.find.matchesSelector(elem,expr)?[elem]:[];}return jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return elem.nodeType===1;}));};jQuery.fn.extend({find:function(selector){var i,ret,len=this.length,self=this;if(typeof selector!=="string"){return this.pushStack(jQuery(selector).filter(function(){for(i=0;i1?jQuery.uniqueSort(ret):ret;},filter:function(selector){return this.pushStack(winnow(this,selector||[],false));},not:function(selector){return this.pushStack(winnow(this,selector||[],true));},is:function(selector){return!!winnow(this,typeof selector==="string"&&rneedsContext.test(selector)?jQuery(selector):selector||[],false).length;}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,init=jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector){return this;}root=root||rootjQuery;if(typeof selector==="string"){if(selector[0]==="<"&&selector[selector.length-1]===">"&&selector.length>=3){match=[null,selector,null];}else{match=rquickExpr.exec(selector);}if(match&&(match[1]||!context)){if(match[1]){context=context instanceof jQuery?context[0]:context;jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context. ownerDocument||context:document,true));if(rsingleTag.test(match[1])&&jQuery.isPlainObject(context)){for(match in context){if(isFunction(this[match])){this[match](context[match]);}else{this.attr(match,context[match]);}}}return this;}else{elem=document.getElementById(match[2]);if(elem){this[0]=elem;this.length=1;}return this;}}else if(!context||context.jquery){return(context||root).find(selector);}else{return this.constructor(context).find(selector);}}else if(selector.nodeType){this[0]=selector;this.length=1;return this;}else if(isFunction(selector)){return root.ready!==undefined?root.ready(selector):selector(jQuery);}return jQuery.makeArray(selector,this);};init.prototype=jQuery.fn;rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:true,contents:true,next:true,prev:true};jQuery.fn.extend({has:function(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){var i=0;for(;i-1:cur.nodeType===1&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break;}}}}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched);},index:function(elem){if(!elem){return(this[0]&&this[0].parentNode)?this.first().prevAll().length:-1;}if(typeof elem==="string"){return indexOf.call(jQuery(elem),this[0]);}return indexOf.call(this,elem.jquery?elem[0]:elem);},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))));},addBack:function(selector){return this.add(selector==null?this.prevObject:this.prevObject.filter(selector));}});function sibling(cur,dir){while((cur=cur[dir])&&cur. nodeType!==1){}return cur;}jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&parent.nodeType!==11?parent:null;},parents:function(elem){return dir(elem,"parentNode");},parentsUntil:function(elem,_i,until){return dir(elem,"parentNode",until);},next:function(elem){return sibling(elem,"nextSibling");},prev:function(elem){return sibling(elem,"previousSibling");},nextAll:function(elem){return dir(elem,"nextSibling");},prevAll:function(elem){return dir(elem,"previousSibling");},nextUntil:function(elem,_i,until){return dir(elem,"nextSibling",until);},prevUntil:function(elem,_i,until){return dir(elem,"previousSibling",until);},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem);},children:function(elem){return siblings(elem.firstChild);},contents:function(elem){if(elem.contentDocument!=null&&getProto(elem.contentDocument)){return elem.contentDocument;}if(nodeName(elem,"template")){elem=elem.content||elem;}return jQuery.merge([],elem. childNodes);}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);if(name.slice(-5)!=="Until"){selector=until;}if(selector&&typeof selector==="string"){matched=jQuery.filter(selector,matched);}if(this.length>1){if(!guaranteedUnique[name]){jQuery.uniqueSort(matched);}if(rparentsprev.test(name)){matched.reverse();}}return this.pushStack(matched);};});var rnothtmlwhite=(/[^\x20\t\r\n\f]+/g);function createOptions(options){var object={};jQuery.each(options.match(rnothtmlwhite)||[],function(_,flag){object[flag]=true;});return object;}jQuery.Callbacks=function(options){options=typeof options==="string"?createOptions(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){locked=locked||options.once;fired=firing=true;for(;queue.length;firingIndex=-1){memory=queue.shift();while(++firingIndex-1){list.splice(index,1);if(index<=firingIndex){firingIndex--;}}});return this;},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0;},empty:function(){if(list){list=[];}return this;},disable:function(){locked=queue=[];list=memory="";return this;},disabled:function(){return!list;},lock:function(){locked=queue=[];if(!memory&&!firing){list=memory="";}return this;},locked:function(){return!!locked ;},fireWith:function(context,args){if(!locked){args=args||[];args=[context,args.slice?args.slice():args];queue.push(args);if(!firing){fire();}}return this;},fire:function(){self.fireWith(this,arguments);return this;},fired:function(){return!!fired;}};return self;};function Identity(v){return v;}function Thrower(ex){throw ex;}function adoptValue(value,resolve,reject,noValue){var method;try{if(value&&isFunction((method=value.promise))){method.call(value).done(resolve).fail(reject);}else if(value&&isFunction((method=value.then))){method.call(value,resolve,reject);}else{resolve.apply(undefined,[value].slice(noValue));}}catch(value){reject.apply(undefined,[value]);}}jQuery.extend({Deferred:function(func){var tuples=[["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],state= "pending",promise={state:function(){return state;},always:function(){deferred.done(arguments).fail(arguments);return this;},"catch":function(fn){return promise.then(null,fn);},pipe:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(_i,tuple){var fn=isFunction(fns[tuple[4]])&&fns[tuple[4]];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);if(returned&&isFunction(returned.promise)){returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);}else{newDefer[tuple[0]+"With"](this,fn?[returned]:arguments);}});});fns=null;}).promise();},then:function(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function(){var returned,then;if(depth=maxDepth){if(handler!==Thrower){that=undefined;args=[e];}deferred.rejectWith(that,args);}}};if(depth){process();}else{if(jQuery.Deferred.getStackHook){process.stackTrace=jQuery.Deferred.getStackHook();}window.setTimeout(process);}};}return jQuery.Deferred(function(newDefer){tuples[0][3].add(resolve(0,newDefer,isFunction(onProgress)? onProgress:Identity,newDefer.notifyWith));tuples[1][3].add(resolve(0,newDefer,isFunction(onFulfilled)?onFulfilled:Identity));tuples[2][3].add(resolve(0,newDefer,isFunction(onRejected)?onRejected:Thrower));}).promise();},promise:function(obj){return obj!=null?jQuery.extend(obj,promise):promise;}},deferred={};jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];promise[tuple[1]]=list.add;if(stateString){list.add(function(){state=stateString;},tuples[3-i][2].disable,tuples[3-i][3].disable,tuples[0][2].lock,tuples[0][3].lock);}list.add(tuple[3].fire);deferred[tuple[0]]=function(){deferred[tuple[0]+"With"](this===deferred?undefined:this,arguments);return this;};deferred[tuple[0]+"With"]=list.fireWith;});promise.promise(deferred);if(func){func.call(deferred,deferred);}return deferred;},when:function(singleValue){var remaining=arguments.length,i=remaining,resolveContexts=Array(i),resolveValues=slice.call(arguments),primary=jQuery.Deferred(),updateFunc=function(i){return function (value){resolveContexts[i]=this;resolveValues[i]=arguments.length>1?slice.call(arguments):value;if(!(--remaining)){primary.resolveWith(resolveContexts,resolveValues);}};};if(remaining<=1){adoptValue(singleValue,primary.done(updateFunc(i)).resolve,primary.reject,!remaining);if(primary.state()==="pending"||isFunction(resolveValues[i]&&resolveValues[i].then)){return primary.then();}}while(i--){adoptValue(resolveValues[i],updateFunc(i),primary.reject);}return primary.promise();}});var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(error,stack){if(window.console&&window.console.warn&&error&&rerrorNames.test(error.name)){window.console.warn("jQuery.Deferred exception: "+error.message,error.stack,stack);}};jQuery.readyException=function(error){window.setTimeout(function(){throw error;});};var readyList=jQuery.Deferred();jQuery.fn.ready=function(fn){readyList.then(fn).catch(function(error){jQuery.readyException(error);});return this; };jQuery.extend({isReady:false,readyWait:1,ready:function(wait){if(wait===true?--jQuery.readyWait:jQuery.isReady){return;}jQuery.isReady=true;if(wait!==true&&--jQuery.readyWait>0){return;}readyList.resolveWith(document,[jQuery]);}});jQuery.ready.then=readyList.then;function completed(){document.removeEventListener("DOMContentLoaded",completed);window.removeEventListener("load",completed);jQuery.ready();}if(document.readyState==="complete"||(document.readyState!=="loading"&&!document.documentElement.doScroll)){window.setTimeout(jQuery.ready);}else{document.addEventListener("DOMContentLoaded",completed);window.addEventListener("load",completed);}var access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=key==null;if(toType(key)==="object"){chainable=true;for(i in key){access(elems,fn,i,key[i],true,emptyGet,raw);}}else if(value!==undefined){chainable=true;if(!isFunction(value)){raw=true;}if(bulk){if(raw){fn.call(elems,value);fn=null;}else{bulk=fn;fn= function(elem,_key,value){return bulk.call(jQuery(elem),value);};}}if(fn){for(;i1,null,true);},removeData:function(key){return this.each(function(){dataUser.remove(this,key);});}});jQuery.extend({queue:function(elem,type,data){var queue;if(elem){type=(type||"fx")+"queue";queue=dataPriv.get(elem,type);if(data){if(!queue||Array.isArray(data)){queue=dataPriv.access(elem,type, jQuery.makeArray(data));}else{queue.push(data);}}return queue||[];}},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type),next=function(){jQuery.dequeue(elem,type);};if(fn==="inprogress"){fn=queue.shift();startLength--;}if(fn){if(type==="fx"){queue.unshift("inprogress");}delete hooks.stop;fn.call(elem,next,hooks);}if(!startLength&&hooks){hooks.empty.fire();}},_queueHooks:function(elem,type){var key=type+"queueHooks";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){dataPriv.remove(elem,[type+"queue",key]);})});}});jQuery.fn.extend({queue:function(type,data){var setter=2;if(typeof type!=="string"){data=type;type="fx";setter--;}if(arguments.length\x20\t\r\n\f]*)/i);var rscriptType=(/^$|^module$|\/(?:java|ecma)script/i);(function(){var fragment=document.createDocumentFragment(),div=fragment.appendChild(document.createElement("div")),input=document.createElement("input");input.setAttribute("type","radio");input.setAttribute("checked","checked");input.setAttribute("name","t");div.appendChild(input);support.checkClone=div. cloneNode(true).cloneNode(true).lastChild.checked;div.innerHTML="";support.noCloneChecked=!!div.cloneNode(true).lastChild.defaultValue;div.innerHTML="";support.option=!!div.lastChild;})();var wrapMap={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;wrapMap.th=wrapMap.td;if(!support.option){wrapMap.optgroup=wrapMap.option=[1,""];}function getAll(context,tag){var ret;if(typeof context.getElementsByTagName!=="undefined"){ret=context.getElementsByTagName(tag||"*");}else if(typeof context.querySelectorAll!=="undefined"){ret=context.querySelectorAll(tag||"*");}else{ret=[];}if(tag===undefined||tag&&nodeName(context,tag)){return jQuery.merge([context],ret);}return ret;}function setGlobalEval(elems ,refElements){var i=0,l=elems.length;for(;i-1){if(ignored){ignored.push(elem);}continue;} attached=isAttached(elem);tmp=getAll(fragment.appendChild(elem),"script");if(attached){setGlobalEval(tmp);}if(scripts){j=0;while((elem=tmp[j++])){if(rscriptType.test(elem.type||"")){scripts.push(elem);}}}}return fragment;}var rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return true;}function returnFalse(){return false;}function expectSync(elem,type){return(elem===safeActiveElement())===(type==="focus");}function safeActiveElement(){try{return document.activeElement;}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if(typeof types==="object"){if(typeof selector!=="string"){data=data||selector;selector=undefined;}for(type in types){on(elem,type,selector,data,types[type],one);}return elem;}if(data==null&&fn==null){fn=selector;data=selector=undefined;}else if(fn==null){if(typeof selector==="string"){fn=data;data=undefined;}else{fn=data;data=selector;selector=undefined;}}if(fn===false){fn=returnFalse;}else if(!fn){return elem;}if(one===1){origFn=fn;fn= function(event){jQuery().off(event);return origFn.apply(this,arguments);};fn.guid=origFn.guid||(origFn.guid=jQuery.guid++);}return elem.each(function(){jQuery.event.add(this,types,fn,data,selector);});}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);if(!acceptData(elem)){return;}if(handler.handler){handleObjIn=handler;handler=handleObjIn.handler;selector=handleObjIn.selector;}if(selector){jQuery.find.matchesSelector(documentElement,selector);}if(!handler.guid){handler.guid=jQuery.guid++;}if(!(events=elemData.events)){events=elemData.events=Object.create(null);}if(!(eventHandle=elemData.handle)){eventHandle=elemData.handle=function(e){return typeof jQuery!=="undefined"&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):undefined;};}types=(types||"").match(rnothtmlwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace .exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();if(!type){continue;}special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;special=jQuery.event.special[type]||{};handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn);if(!(handlers=events[type])){handlers=events[type]=[];handlers.delegateCount=0;if(!special.setup||special.setup.call(elem,data,namespaces,eventHandle)===false){if(elem.addEventListener){elem.addEventListener(type,eventHandle);}}}if(special.add){special.add.call(elem,handleObj);if(!handleObj.handler.guid){handleObj.handler.guid=handler.guid;}}if(selector){handlers.splice(handlers.delegateCount++,0,handleObj);}else{handlers.push(handleObj);}jQuery.event.global[type]=true;}},remove:function(elem,types,handler,selector, mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(!elemData||!(events=elemData.events)){return;}types=(types||"").match(rnothtmlwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();if(!type){for(type in events){jQuery.event.remove(elem,type+types[t],handler,selector,true);}continue;}special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;handlers=events[type]||[];tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)");origCount=j=handlers.length;while(j--){handleObj=handlers[j];if((mappedTypes||origType===handleObj.origType)&&(!handler||handler.guid===handleObj.guid)&&(!tmp||tmp.test(handleObj.namespace))&&(!selector||selector===handleObj.selector||selector==="**"&&handleObj.selector)){handlers.splice(j,1);if(handleObj.selector){handlers. delegateCount--;}if(special.remove){special.remove.call(elem,handleObj);}}}if(origCount&&!handlers.length){if(!special.teardown||special.teardown.call(elem,namespaces,elemData.handle)===false){jQuery.removeEvent(elem,type,elemData.handle);}delete events[type];}}if(jQuery.isEmptyObject(events)){dataPriv.remove(elem,"handle events");}},dispatch:function(nativeEvent){var i,j,ret,matched,handleObj,handlerQueue,args=new Array(arguments.length),event=jQuery.event.fix(nativeEvent),handlers=(dataPriv.get(this,"events")||Object.create(null))[event.type]||[],special=jQuery.event.special[event.type]||{};args[0]=event;for(i=1;i=1)){for(;cur!==this;cur=cur.parentNode||this){if(cur.nodeType===1&&!(event.type==="click"&&cur.disabled===true)){matchedHandlers=[];matchedSelectors={};for(i=0;i-1:jQuery.find(sel,this,null,[cur]).length;}if(matchedSelectors[sel]){matchedHandlers.push(handleObj);}}if(matchedHandlers.length){handlerQueue.push({elem:cur,handlers:matchedHandlers});}}}}cur=this;if(delegateCount\s*$/g;function manipulationTarget(elem,content){if(nodeName(elem,"table")&&nodeName( content.nodeType!==11?content:content.firstChild,"tr")){return jQuery(elem).children("tbody")[0]||elem;}return elem;}function disableScript(elem){elem.type=(elem.getAttribute("type")!==null)+"/"+elem.type;return elem;}function restoreScript(elem){if((elem.type||"").slice(0,5)==="true/"){elem.type=elem.type.slice(5);}else{elem.removeAttribute("type");}return elem;}function cloneCopyEvent(src,dest){var i,l,type,pdataOld,udataOld,udataCur,events;if(dest.nodeType!==1){return;}if(dataPriv.hasData(src)){pdataOld=dataPriv.get(src);events=pdataOld.events;if(events){dataPriv.remove(dest,"handle events");for(type in events){for(i=0,l=events[type].length;i1&&typeof value==="string"&&!support.checkClone&&rchecked.test(value))){return collection.each(function(index){var self=collection.eq(index);if(valueIsFunction){args[0]=value.call(this,index,self.html());}domManip(self,args,callback,ignored);});}if(l){fragment=buildFragment(args,collection[0].ownerDocument,false,collection,ignored);first=fragment.firstChild;if(fragment.childNodes.length===1){fragment=first;}if(first||ignored){scripts=jQuery.map(getAll(fragment,"script"),disableScript);hasScripts=scripts.length;for(;i0){setGlobalEval(destElements,!inPage&&getAll(elem,"script"));}return clone;},cleanData:function(elems){var data,elem,type,special=jQuery.event.special,i=0;for(;(elem=elems[i])!==undefined;i++){if(acceptData(elem)){if((data=elem[dataPriv.expando])){if(data.events){for(type in data.events){if(special[type]){jQuery.event.remove(elem,type);}else{jQuery.removeEvent(elem,type,data.handle);}}}elem[dataPriv.expando]=undefined;}if(elem[dataUser.expando]){elem[ dataUser.expando]=undefined;}}}}});jQuery.fn.extend({detach:function(selector){return remove(this,selector,true);},remove:function(selector){return remove(this,selector);},text:function(value){return access(this,function(value){return value===undefined?jQuery.text(this):this.empty().each(function(){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.textContent=value;}});},null,value,arguments.length);},append:function(){return domManip(this,arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.appendChild(elem);}});},prepend:function(){return domManip(this,arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild);}});},before:function(){return domManip(this,arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this);}});},after:function(){return domManip( this,arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this.nextSibling);}});},empty:function(){var elem,i=0;for(;(elem=this[i])!=null;i++){if(elem.nodeType===1){jQuery.cleanData(getAll(elem,false));elem.textContent="";}}return this;},clone:function(dataAndEvents,deepDataAndEvents){dataAndEvents=dataAndEvents==null?false:dataAndEvents;deepDataAndEvents=deepDataAndEvents==null?dataAndEvents:deepDataAndEvents;return this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents);});},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(value===undefined&&elem.nodeType===1){return elem.innerHTML;}if(typeof value==="string"&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i=0){delta+=Math .max(0,Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-computedVal-delta-extra-0.5))||0;}return delta;}function getWidthOrHeight(elem,dimension,extra){var styles=getStyles(elem),boxSizingNeeded=!support.boxSizingReliable()||extra,isBorderBox=boxSizingNeeded&&jQuery.css(elem,"boxSizing",false,styles)==="border-box",valueIsBorderBox=isBorderBox,val=curCSS(elem,dimension,styles),offsetProp="offset"+dimension[0].toUpperCase()+dimension.slice(1);if(rnumnonpx.test(val)){if(!extra){return val;}val="auto";}if((!support.boxSizingReliable()&&isBorderBox||!support.reliableTrDimensions()&&nodeName(elem,"tr")||val==="auto"||!parseFloat(val)&&jQuery.css(elem,"display",false,styles)==="inline")&&elem.getClientRects().length){isBorderBox=jQuery.css(elem,"boxSizing",false,styles)==="border-box";valueIsBorderBox=offsetProp in elem;if(valueIsBorderBox){val=elem[offsetProp];}}val=parseFloat(val)||0;return(val+boxModelAdjustment(elem,dimension,extra||(isBorderBox?"border":"content"), valueIsBorderBox,styles,val))+"px";}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return ret===""?"1":ret;}}}},cssNumber:{"animationIterationCount":true,"columnCount":true,"fillOpacity":true,"flexGrow":true,"flexShrink":true,"fontWeight":true,"gridArea":true,"gridColumn":true,"gridColumnEnd":true,"gridColumnStart":true,"gridRow":true,"gridRowEnd":true,"gridRowStart":true,"lineHeight":true,"opacity":true,"order":true,"orphans":true,"widows":true,"zIndex":true,"zoom":true},cssProps:{},style:function(elem,name,value,extra){if(!elem||elem.nodeType===3||elem.nodeType===8||!elem.style){return;}var ret,type,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name),style=elem.style;if(!isCustomProp){name=finalPropName(origName);}hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];if(value!==undefined){type=typeof value;if(type==="string"&&(ret=rcssNum.exec(value))&&ret[1]){value=adjustCSS(elem,name,ret);type="number";}if( value==null||value!==value){return;}if(type==="number"&&!isCustomProp){value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px");}if(!support.clearCloneStyle&&value===""&&name.indexOf("background")===0){style[name]="inherit";}if(!hooks||!("set"in hooks)||(value=hooks.set(elem,value,extra))!==undefined){if(isCustomProp){style.setProperty(name,value);}else{style[name]=value;}}}else{if(hooks&&"get"in hooks&&(ret=hooks.get(elem,false,extra))!==undefined){return ret;}return style[name];}},css:function(elem,name,extra,styles){var val,num,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name);if(!isCustomProp){name=finalPropName(origName);}hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];if(hooks&&"get"in hooks){val=hooks.get(elem,true,extra);}if(val===undefined){val=curCSS(elem,name,styles);}if(val==="normal"&&name in cssNormalTransform){val=cssNormalTransform[name];}if(extra===""||extra){num=parseFloat(val);return extra===true||isFinite(num)?num||0:val;}return val;}}); jQuery.each(["height","width"],function(_i,dimension){jQuery.cssHooks[dimension]={get:function(elem,computed,extra){if(computed){return rdisplayswap.test(jQuery.css(elem,"display"))&&(!elem.getClientRects().length||!elem.getBoundingClientRect().width)?swap(elem,cssShow,function(){return getWidthOrHeight(elem,dimension,extra);}):getWidthOrHeight(elem,dimension,extra);}},set:function(elem,value,extra){var matches,styles=getStyles(elem),scrollboxSizeBuggy=!support.scrollboxSize()&&styles.position==="absolute",boxSizingNeeded=scrollboxSizeBuggy||extra,isBorderBox=boxSizingNeeded&&jQuery.css(elem,"boxSizing",false,styles)==="border-box",subtract=extra?boxModelAdjustment(elem,dimension,extra,isBorderBox,styles):0;if(isBorderBox&&scrollboxSizeBuggy){subtract-=Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-parseFloat(styles[dimension])-boxModelAdjustment(elem,dimension,"border",false,styles)-0.5);}if(subtract&&(matches=rcssNum.exec(value))&&(matches[3]||"px")!=="px"){ elem.style[dimension]=value;value=jQuery.css(elem,dimension);}return setPositiveNumber(elem,value,subtract);}};});jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed){return(parseFloat(curCSS(elem,"marginLeft"))||elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left;}))+"px";}});jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){var i=0,expanded={},parts=typeof value==="string"?value.split(" "):[value];for(;i<4;i++){expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];}return expanded;}};if(prefix!=="margin"){jQuery.cssHooks[prefix+suffix].set=setPositiveNumber;}});jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(Array.isArray(name)){styles=getStyles(elem);len=name.length;for(;i1);}});function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing);}jQuery.Tween=Tween;Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem;this.prop=prop;this.easing=easing||jQuery.easing._default;this.options=options;this.start=this.now=this.cur();this.end=end;this.unit=unit||(jQuery.cssNumber[prop]?"":"px");},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this);},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];if(this.options.duration){this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration);}else{this.pos=eased=percent;}this.now=(this.end-this.start)*eased+this.start;if(this.options.step){this.options.step.call(this. elem,this.now,this);}if(hooks&&hooks.set){hooks.set(this);}else{Tween.propHooks._default.set(this);}return this;}};Tween.prototype.init.prototype=Tween.prototype;Tween.propHooks={_default:{get:function(tween){var result;if(tween.elem.nodeType!==1||tween.elem[tween.prop]!=null&&tween.elem.style[tween.prop]==null){return tween.elem[tween.prop];}result=jQuery.css(tween.elem,tween.prop,"");return!result||result==="auto"?0:result;},set:function(tween){if(jQuery.fx.step[tween.prop]){jQuery.fx.step[tween.prop](tween);}else if(tween.elem.nodeType===1&&(jQuery.cssHooks[tween.prop]||tween.elem.style[finalPropName(tween.prop)]!=null)){jQuery.style(tween.elem,tween.prop,tween.now+tween.unit);}else{tween.elem[tween.prop]=tween.now;}}}};Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){if(tween.elem.nodeType&&tween.elem.parentNode){tween.elem[tween.prop]=tween.now;}}};jQuery.easing={linear:function(p){return p;},swing:function(p){return 0.5-Math.cos(p*Math.PI)/2;},_default: "swing"};jQuery.fx=Tween.prototype.init;jQuery.fx.step={};var fxNow,inProgress,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function schedule(){if(inProgress){if(document.hidden===false&&window.requestAnimationFrame){window.requestAnimationFrame(schedule);}else{window.setTimeout(schedule,jQuery.fx.interval);}jQuery.fx.tick();}}function createFxNow(){window.setTimeout(function(){fxNow=undefined;});return(fxNow=Date.now());}function genFx(type,includeWidth){var which,i=0,attrs={height:type};includeWidth=includeWidth?1:0;for(;i<4;i+=2-includeWidth){which=cssExpand[i];attrs["margin"+which]=attrs["padding"+which]=type;}if(includeWidth){attrs.opacity=attrs.width=type;}return attrs;}function createTween(value,prop,animation){var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;for(;index1);},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name);});}});jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(nType===3||nType===8||nType===2){return;}if(typeof elem.getAttribute==="undefined"){return jQuery.prop(elem,name,value);}if(nType!==1||!jQuery.isXMLDoc(elem)){hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:undefined);}if(value!==undefined){if(value===null){jQuery.removeAttr(elem,name);return;}if(hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret;}elem.setAttribute(name,value+"");return value;}if(hooks&&"get"in hooks&&(ret=hooks.get(elem,name))!==null){return ret;}ret=jQuery.find.attr(elem,name);return ret==null?undefined:ret;},attrHooks:{type:{set:function(elem,value){if(!support. radioValue&&value==="radio"&&nodeName(elem,"input")){var val=elem.value;elem.setAttribute("type",value);if(val){elem.value=val;}return value;}}}},removeAttr:function(elem,value){var name,i=0,attrNames=value&&value.match(rnothtmlwhite);if(attrNames&&elem.nodeType===1){while((name=attrNames[i++])){elem.removeAttribute(name);}}}});boolHook={set:function(elem,value,name){if(value===false){jQuery.removeAttr(elem,name);}else{elem.setAttribute(name,name);}return name;}};jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(_i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();if(!isXML){handle=attrHandle[lowercaseName];attrHandle[lowercaseName]=ret;ret=getter(elem,name,isXML)!=null?lowercaseName:null;attrHandle[lowercaseName]=handle;}return ret;};});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;jQuery.fn.extend({prop:function(name,value){return access(this, jQuery.prop,name,value,arguments.length>1);},removeProp:function(name){return this.each(function(){delete this[jQuery.propFix[name]||name];});}});jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(nType===3||nType===8||nType===2){return;}if(nType!==1||!jQuery.isXMLDoc(elem)){name=jQuery.propFix[name]||name;hooks=jQuery.propHooks[name];}if(value!==undefined){if(hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret;}return(elem[name]=value);}if(hooks&&"get"in hooks&&(ret=hooks.get(elem,name))!==null){return ret;}return elem[name];},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");if(tabindex){return parseInt(tabindex,10);}if(rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href){return 0;}return-1;}}},propFix:{"for":"htmlFor","class":"className"}});if(!support.optSelected){jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;if(parent&&parent.parentNode){ parent.parentNode.selectedIndex;}return null;},set:function(elem){var parent=elem.parentNode;if(parent){parent.selectedIndex;if(parent.parentNode){parent.parentNode.selectedIndex;}}}};}jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this;});function stripAndCollapse(value){var tokens=value.match(rnothtmlwhite)||[];return tokens.join(" ");}function getClass(elem){return elem.getAttribute&&elem.getAttribute("class")||"";}function classesToArray(value){if(Array.isArray(value)){return value;}if(typeof value==="string"){return value.match(rnothtmlwhite)||[];}return[];}jQuery.fn.extend({addClass:function(value){var classNames,cur,curValue,className,i,finalValue;if(isFunction(value)){return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)));});}classNames=classesToArray(value);if(classNames.length){return this.each(function(){ curValue=getClass(this);cur=this.nodeType===1&&(" "+stripAndCollapse(curValue)+" ");if(cur){for(i=0;i-1){cur=cur.replace(" "+className+" "," ");}}finalValue=stripAndCollapse(cur);if(curValue!==finalValue){this.setAttribute("class",finalValue);}}});}return this;} ,toggleClass:function(value,stateVal){var classNames,className,i,self,type=typeof value,isValidValue=type==="string"||Array.isArray(value);if(isFunction(value)){return this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal);});}if(typeof stateVal==="boolean"&&isValidValue){return stateVal?this.addClass(value):this.removeClass(value);}classNames=classesToArray(value);return this.each(function(){if(isValidValue){self=jQuery(this);for(i=0;i-1){return true;}}return false;}});var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,valueIsFunction,elem=this[0];if(!arguments.length){if(elem){hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()];if(hooks&&"get"in hooks&&(ret=hooks.get(elem,"value"))!==undefined){return ret;}ret=elem.value;if(typeof ret==="string"){return ret.replace(rreturn,"");}return ret==null?"":ret;}return;}valueIsFunction=isFunction(value);return this.each(function(i){var val;if(this.nodeType!==1){return;}if(valueIsFunction){val=value.call(this,i,jQuery(this).val());}else{val=value;}if(val==null){val="";}else if(typeof val==="number"){val+="";}else if(Array.isArray(val)){val=jQuery.map(val,function(value){return value==null?"":value+"";});}hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()];if(!hooks||!("set"in hooks)||hooks.set(this,val,"value")===undefined){this.value=val;}} );}});jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return val!=null?val:stripAndCollapse(jQuery.text(elem));}},select:{get:function(elem){var value,option,i,options=elem.options,index=elem.selectedIndex,one=elem.type==="select-one",values=one?null:[],max=one?index+1:options.length;if(index<0){i=max;}else{i=one?index:0;}for(;i-1){optionSet=true;}}if(!optionSet){elem.selectedIndex=-1;}return values;}}}});jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value ){if(Array.isArray(value)){return(elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1);}}};if(!support.checkOn){jQuery.valHooks[this].get=function(elem){return elem.getAttribute("value")===null?"on":elem.value;};}});support.focusin="onfocusin"in window;var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function(e){e.stopPropagation();};jQuery.extend(jQuery.event,{trigger:function(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,lastElement,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];cur=lastElement=tmp=elem=elem||document;if(elem.nodeType===3||elem.nodeType===8){return;}if(rfocusMorph.test(type+jQuery.event.triggered)){return;}if(type.indexOf(".")>-1){namespaces=type.split(".");type=namespaces.shift();namespaces.sort();}ontype=type.indexOf(":")<0&&"on"+type;event=event[jQuery.expando]?event:new jQuery.Event(type,typeof event=== "object"&&event);event.isTrigger=onlyHandlers?2:3;event.namespace=namespaces.join(".");event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;event.result=undefined;if(!event.target){event.target=elem;}data=data==null?[event]:jQuery.makeArray(data,[event]);special=jQuery.event.special[type]||{};if(!onlyHandlers&&special.trigger&&special.trigger.apply(elem,data)===false){return;}if(!onlyHandlers&&!special.noBubble&&!isWindow(elem)){bubbleType=special.delegateType||type;if(!rfocusMorph.test(bubbleType+type)){cur=cur.parentNode;}for(;cur;cur=cur.parentNode){eventPath.push(cur);tmp=cur;}if(tmp===(elem.ownerDocument||document)){eventPath.push(tmp.defaultView||tmp.parentWindow||window);}}i=0;while((cur=eventPath[i++])&&!event.isPropagationStopped()){lastElement=cur;event.type=i>1?bubbleType:special.bindType||type;handle=(dataPriv.get(cur,"events")||Object.create(null))[event.type]&&dataPriv.get(cur,"handle");if(handle){handle.apply(cur,data);} handle=ontype&&cur[ontype];if(handle&&handle.apply&&acceptData(cur)){event.result=handle.apply(cur,data);if(event.result===false){event.preventDefault();}}}event.type=type;if(!onlyHandlers&&!event.isDefaultPrevented()){if((!special._default||special._default.apply(eventPath.pop(),data)===false)&&acceptData(elem)){if(ontype&&isFunction(elem[type])&&!isWindow(elem)){tmp=elem[ontype];if(tmp){elem[ontype]=null;}jQuery.event.triggered=type;if(event.isPropagationStopped()){lastElement.addEventListener(type,stopPropagationCallback);}elem[type]();if(event.isPropagationStopped()){lastElement.removeEventListener(type,stopPropagationCallback);}jQuery.event.triggered=undefined;if(tmp){elem[ontype]=tmp;}}}}return event.result;},simulate:function(type,elem,event){var e=jQuery.extend(new jQuery.Event(),event,{type:type,isSimulated:true});jQuery.event.trigger(e,null,elem);}});jQuery.fn.extend({trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this);});}, triggerHandler:function(type,data){var elem=this[0];if(elem){return jQuery.event.trigger(type,data,elem,true);}}});if(!support.focusin){jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event));};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this.document||this,attaches=dataPriv.access(doc,fix);if(!attaches){doc.addEventListener(orig,handler,true);}dataPriv.access(doc,fix,(attaches||0)+1);},teardown:function(){var doc=this.ownerDocument||this.document||this,attaches=dataPriv.access(doc,fix)-1;if(!attaches){doc.removeEventListener(orig,handler,true);dataPriv.remove(doc,fix);}else{dataPriv.access(doc,fix,attaches);}}};});}var location=window.location;var nonce={guid:Date.now()};var rquery=(/\?/);jQuery.parseXML=function(data){var xml,parserErrorElem;if(!data||typeof data!=="string"){return null;}try{xml=(new window.DOMParser()).parseFromString(data,"text/xml");} catch(e){}parserErrorElem=xml&&xml.getElementsByTagName("parsererror")[0];if(!xml||parserErrorElem){jQuery.error("Invalid XML: "+(parserErrorElem?jQuery.map(parserErrorElem.childNodes,function(el){return el.textContent;}).join("\n"):data));}return xml;};var rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(Array.isArray(obj)){jQuery.each(obj,function(i,v){if(traditional||rbracket.test(prefix)){add(prefix,v);}else{buildParams(prefix+"["+(typeof v==="object"&&v!=null?i:"")+"]",v,traditional,add);}});}else if(!traditional&&toType(obj)==="object"){for(name in obj){buildParams(prefix+"["+name+"]",obj[name],traditional,add);}}else{add(prefix,obj);}}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,valueOrFunction){var value=isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+"="+ encodeURIComponent(value==null?"":value);};if(a==null){return"";}if(Array.isArray(a)||(a.jquery&&!jQuery.isPlainObject(a))){jQuery.each(a,function(){add(this.name,this.value);});}else{for(prefix in a){buildParams(prefix,a[prefix],traditional,add);}}return s.join("&");};jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this;}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type));}).map(function(_i,elem){var val=jQuery(this).val();if(val==null){return null;}if(Array.isArray(val)){return jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")};});}return{name:elem.name,value:val.replace(rCRLF,"\r\n")};}).get();}});var r20=/%20/g,rhash=/#.*$/,rantiCache= /([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/mg,rlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,prefilters={},transports={},allTypes="*/".concat("*"),originAnchor=document.createElement("a");originAnchor.href=location.href;function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){if(typeof dataTypeExpression!=="string"){func=dataTypeExpression;dataTypeExpression="*";}var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];if(isFunction(func)){while((dataType=dataTypes[i++])){if(dataType[0]==="+"){dataType=dataType.slice(1)||"*";(structure[dataType]=structure[dataType]||[]).unshift(func);}else{(structure[dataType]=structure[dataType]||[]).push(func);}}}};}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=(structure===transports);function inspect(dataType){var selected;inspected[dataType] =true;jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);if(typeof dataTypeOrTransport==="string"&&!seekingTransport&&!inspected[dataTypeOrTransport]){options.dataTypes.unshift(dataTypeOrTransport);inspect(dataTypeOrTransport);return false;}else if(seekingTransport){return!(selected=dataTypeOrTransport);}});return selected;}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*");}function ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src){if(src[key]!==undefined){(flatOptions[key]?target:(deep||(deep={})))[key]=src[key];}}if(deep){jQuery.extend(true,target,deep);}return target;}function ajaxHandleResponses(s,jqXHR,responses){var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;while(dataTypes[0]==="*"){dataTypes.shift();if(ct===undefined){ct=s.mimeType||jqXHR.getResponseHeader("Content-Type");}}if(ct){for( type in contents){if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break;}}}if(dataTypes[0]in responses){finalDataType=dataTypes[0];}else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break;}if(!firstDataType){firstDataType=type;}}finalDataType=finalDataType||firstDataType;}if(finalDataType){if(finalDataType!==dataTypes[0]){dataTypes.unshift(finalDataType);}return responses[finalDataType];}}function ajaxConvert(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1]){for(conv in s.converters){converters[conv.toLowerCase()]=s.converters[conv];}}current=dataTypes.shift();while(current){if(s.responseFields[current]){jqXHR[s.responseFields[current]]=response;}if(!prev&&isSuccess&&s.dataFilter){response=s.dataFilter(response,s.dataType);}prev=current;current=dataTypes.shift();if(current){if(current==="*"){current=prev;}else if(prev!=="*"&&prev!==current){conv =converters[prev+" "+current]||converters["* "+current];if(!conv){for(conv2 in converters){tmp=conv2.split(" ");if(tmp[1]===current){conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]];if(conv){if(conv===true){conv=converters[conv2];}else if(converters[conv2]!==true){current=tmp[0];dataTypes.unshift(tmp[1]);}break;}}}}if(conv!==true){if(conv&&s.throws){response=conv(response);}else{try{response=conv(response);}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current};}}}}}}return{state:"success",data:response};}jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:location.href,type:"GET",isLocal:rlocalProtocol.test(location.protocol),global:true,processData:true,async:true,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{ xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":true,"text json":JSON.parse,"text xml":jQuery.parseXML},flatOptions:{url:true,context:true}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target);},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){if(typeof url==="object"){options=url;url=undefined;}options=options||{};var transport,cacheURL,responseHeadersString,responseHeaders,timeoutTimer,urlAnchor,completed,fireGlobals,i,uncached,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={}, strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(completed){if(!responseHeaders){responseHeaders={};while((match=rheaders.exec(responseHeadersString))){responseHeaders[match[1].toLowerCase()+" "]=(responseHeaders[match[1].toLowerCase()+" "]||[]).concat(match[2]);}}match=responseHeaders[key.toLowerCase()+" "];}return match==null?null:match.join(", ");},getAllResponseHeaders:function(){return completed?responseHeadersString:null;},setRequestHeader:function(name,value){if(completed==null){name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name;requestHeaders[name]=value;}return this;},overrideMimeType:function(type){if(completed==null){s.mimeType=type;}return this;},statusCode:function(map){var code;if(map){if(completed){jqXHR.always(map[jqXHR.status]);}else{for(code in map){statusCode[code]=[statusCode[code],map[code]];}}}return this;},abort:function(statusText){var finalText=statusText||strAbort;if(transport){ transport.abort(finalText);}done(0,finalText);return this;}};deferred.promise(jqXHR);s.url=((url||s.url||location.href)+"").replace(rprotocol,location.protocol+"//");s.type=options.method||options.type||s.method||s.type;s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[""];if(s.crossDomain==null){urlAnchor=document.createElement("a");try{urlAnchor.href=s.url;urlAnchor.href=urlAnchor.href;s.crossDomain=originAnchor.protocol+"//"+originAnchor.host!==urlAnchor.protocol+"//"+urlAnchor.host;}catch(e){s.crossDomain=true;}}if(s.data&&s.processData&&typeof s.data!=="string"){s.data=jQuery.param(s.data,s.traditional);}inspectPrefiltersOrTransports(prefilters,s,options,jqXHR);if(completed){return jqXHR;}fireGlobals=jQuery.event&&s.global;if(fireGlobals&&jQuery.active++===0){jQuery.event.trigger("ajaxStart");}s.type=s.type.toUpperCase();s.hasContent=!rnoContent.test(s.type);cacheURL=s.url.replace(rhash,"");if(!s.hasContent){uncached=s.url.slice(cacheURL.length);if(s.data&&(s. processData||typeof s.data==="string")){cacheURL+=(rquery.test(cacheURL)?"&":"?")+s.data;delete s.data;}if(s.cache===false){cacheURL=cacheURL.replace(rantiCache,"$1");uncached=(rquery.test(cacheURL)?"&":"?")+"_="+(nonce.guid++)+uncached;}s.url=cacheURL+uncached;}else if(s.data&&s.processData&&(s.contentType||"").indexOf("application/x-www-form-urlencoded")===0){s.data=s.data.replace(r20,"+");}if(s.ifModified){if(jQuery.lastModified[cacheURL]){jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]);}if(jQuery.etag[cacheURL]){jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL]);}}if(s.data&&s.hasContent&&s.contentType!==false||options.contentType){jqXHR.setRequestHeader("Content-Type",s.contentType);}jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+(s.dataTypes[0]!=="*"?", "+allTypes+"; q=0.01":""):s.accepts["*"]);for(i in s.headers){jqXHR.setRequestHeader(i,s.headers[i]);}if(s.beforeSend&&(s.beforeSend.call( callbackContext,jqXHR,s)===false||completed)){return jqXHR.abort();}strAbort="abort";completeDeferred.add(s.complete);jqXHR.done(s.success);jqXHR.fail(s.error);transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR);if(!transport){done(-1,"No Transport");}else{jqXHR.readyState=1;if(fireGlobals){globalEventContext.trigger("ajaxSend",[jqXHR,s]);}if(completed){return jqXHR;}if(s.async&&s.timeout>0){timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout");},s.timeout);}try{completed=false;transport.send(requestHeaders,done);}catch(e){if(completed){throw e;}done(-1,e);}}function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;if(completed){return;}completed=true;if(timeoutTimer){window.clearTimeout(timeoutTimer);}transport=undefined;responseHeadersString=headers||"";jqXHR.readyState=status>0?4:0;isSuccess=status>=200&&status<300||status===304;if(responses){response=ajaxHandleResponses(s,jqXHR, responses);}if(!isSuccess&&jQuery.inArray("script",s.dataTypes)>-1&&jQuery.inArray("json",s.dataTypes)<0){s.converters["text script"]=function(){};}response=ajaxConvert(s,response,jqXHR,isSuccess);if(isSuccess){if(s.ifModified){modified=jqXHR.getResponseHeader("Last-Modified");if(modified){jQuery.lastModified[cacheURL]=modified;}modified=jqXHR.getResponseHeader("etag");if(modified){jQuery.etag[cacheURL]=modified;}}if(status===204||s.type==="HEAD"){statusText="nocontent";}else if(status===304){statusText="notmodified";}else{statusText=response.state;success=response.data;error=response.error;isSuccess=!error;}}else{error=statusText;if(status||!statusText){statusText="error";if(status<0){status=0;}}}jqXHR.status=status;jqXHR.statusText=(nativeStatusText||statusText)+"";if(isSuccess){deferred.resolveWith(callbackContext,[success,statusText,jqXHR]);}else{deferred.rejectWith(callbackContext,[jqXHR,statusText,error]);}jqXHR.statusCode(statusCode);statusCode=undefined;if(fireGlobals){ globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]);}completeDeferred.fireWith(callbackContext,[jqXHR,statusText]);if(fireGlobals){globalEventContext.trigger("ajaxComplete",[jqXHR,s]);if(!(--jQuery.active)){jQuery.event.trigger("ajaxStop");}}}return jqXHR;},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},getScript:function(url,callback){return jQuery.get(url,undefined,callback,"script");}});jQuery.each(["get","post"],function(_i,method){jQuery[method]=function(url,data,callback,type){if(isFunction(data)){type=type||callback;callback=data;data=undefined;}return jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url));};});jQuery.ajaxPrefilter(function(s){var i;for(i in s.headers){if(i.toLowerCase()==="content-type"){s.contentType=s.headers[i]||"";}}});jQuery._evalUrl=function(url,options,doc){return jQuery.ajax({url:url,type:"GET",dataType: "script",cache:true,async:false,global:false,converters:{"text script":function(){}},dataFilter:function(response){jQuery.globalEval(response,options,doc);}});};jQuery.fn.extend({wrapAll:function(html){var wrap;if(this[0]){if(isFunction(html)){html=html.call(this[0]);}wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){wrap.insertBefore(this[0]);}wrap.map(function(){var elem=this;while(elem.firstElementChild){elem=elem.firstElementChild;}return elem;}).append(this);}return this;},wrapInner:function(html){if(isFunction(html)){return this.each(function(i){jQuery(this).wrapInner(html.call(this,i));});}return this.each(function(){var self=jQuery(this),contents=self.contents();if(contents.length){contents.wrapAll(html);}else{self.append(html);}});},wrap:function(html){var htmlIsFunction=isFunction(html);return this.each(function(i){jQuery(this).wrapAll(htmlIsFunction?html.call(this,i):html);});},unwrap:function(selector){this.parent(selector).not("body").each( function(){jQuery(this).replaceWith(this.childNodes);});return this;}});jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem);};jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length);};jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest();}catch(e){}};var xhrSuccessStatus={0:200,1223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&("withCredentials"in xhrSupported);support.ajax=xhrSupported=!!xhrSupported;jQuery.ajaxTransport(function(options){var callback,errorCallback;if(support.cors||xhrSupported&&!options.crossDomain){return{send:function(headers,complete){var i,xhr=options.xhr();xhr.open(options.type,options.url,options.async,options.username,options.password);if(options.xhrFields){for(i in options.xhrFields){xhr[i]=options.xhrFields[i];}}if(options.mimeType&&xhr.overrideMimeType){xhr.overrideMimeType(options.mimeType);}if(!options.crossDomain&& !headers["X-Requested-With"]){headers["X-Requested-With"]="XMLHttpRequest";}for(i in headers){xhr.setRequestHeader(i,headers[i]);}callback=function(type){return function(){if(callback){callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.ontimeout=xhr.onreadystatechange=null;if(type==="abort"){xhr.abort();}else if(type==="error"){if(typeof xhr.status!=="number"){complete(0,"error");}else{complete(xhr.status,xhr.statusText);}}else{complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,(xhr.responseType||"text")!=="text"||typeof xhr.responseText!=="string"?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders());}}};};xhr.onload=callback();errorCallback=xhr.onerror=xhr.ontimeout=callback("error");if(xhr.onabort!==undefined){xhr.onabort=errorCallback;}else{xhr.onreadystatechange=function(){if(xhr.readyState===4){window.setTimeout(function(){if(callback){errorCallback();}});}};}callback=callback("abort");try{xhr.send(options.hasContent&&options.data|| null);}catch(e){if(callback){throw e;}}},abort:function(){if(callback){callback();}}};}});jQuery.ajaxPrefilter(function(s){if(s.crossDomain){s.contents.script=false;}});jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, "+"application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){jQuery.globalEval(text);return text;}}});jQuery.ajaxPrefilter("script",function(s){if(s.cache===undefined){s.cache=false;}if(s.crossDomain){s.type="GET";}});jQuery.ajaxTransport("script",function(s){if(s.crossDomain||s.scriptAttrs){var script,callback;return{send:function(_,complete){script=jQuery("