diff --git a/css/dist/ol.css b/css/dist/ol.css index 2c07e32..ce2c326 100644 --- a/css/dist/ol.css +++ b/css/dist/ol.css @@ -1,2 +1,2 @@ -.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-step-marker{width:1px;height:15px;background-color:#000;float:right;z-Index:10}.ol-scale-step-text,.ol-scale-text{position:absolute;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-step-text{bottom:-5px;font-size:12px;z-Index:11}.ol-scale-text{font-size:14px;text-align:center;bottom:25px}.ol-scale-singlebar{position:relative;height:10px;z-Index:9;border:1px solid #000}.ol-attribution.ol-collapsed ul,.ol-unsupported{display:none}.ol-unselectable,.ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-control button span,.ol-overlaycontainer,.ol-overlaycontainer-stopevent{pointer-events:none}.ol-overlaycontainer-stopevent>*,.ol-overlaycontainer>*{pointer-events:auto}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;-ms-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:rgba(255,255,255,.4);border-radius:4px;padding:2px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:0;border-radius:2px}.ol-control button::-moz-focus-inner{border:0;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em)}.ol-attribution ul{margin:0;padding:0 .5em;color:#000;text-shadow:0 0 2px #fff}.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,.ol-attribution ul{display:inline-block}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.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:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:inline-block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move} +.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-step-marker{width:1px;height:15px;background-color:#000;float:right;z-Index:10}.ol-scale-step-text,.ol-scale-text{position:absolute;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-step-text{bottom:-5px;font-size:12px;z-Index:11}.ol-scale-text{font-size:14px;text-align:center;bottom:25px}.ol-scale-singlebar{position:relative;height:10px;z-Index:9;box-sizing:border-box;border:1px solid #000}.ol-attribution.ol-collapsed ul,.ol-unsupported{display:none}.ol-unselectable,.ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;-ms-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:rgba(255,255,255,.4);border-radius:4px;padding:2px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:0;border-radius:2px}.ol-control button::-moz-focus-inner{border:0;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em)}.ol-attribution ul{margin:0;padding:0 .5em;color:#000;text-shadow:0 0 2px #fff}.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,.ol-attribution ul{display:inline-block}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.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:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:inline-block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move} /*# sourceMappingURL=ol.css.map */ \ No newline at end of file diff --git a/css/dist/ol.css.map b/css/dist/ol.css.map index 393b018..e6c7a73 100644 --- a/css/dist/ol.css.map +++ b/css/dist/ol.css.map @@ -1 +1 @@ -{"version":3,"sources":["ol.css"],"names":[],"mappings":"AAAA,O,CACE,qB,CACA,iB,CACA,qB,CAGF,kB,CACE,O,CACA,S,CACA,iB,CAGF,c,CACE,4B,CACA,iB,CACA,U,CACA,Q,CACA,W,CACA,iB,CAEF,oB,CACE,qB,CACA,e,CACA,U,CACA,c,CACA,iB,CACA,U,CACA,0B,CACA,mB,CAEF,a,CACE,iB,CACA,U,CACA,Q,CAEF,qB,CACE,S,CACA,W,CACA,qB,CACA,W,CACA,U,CAEF,mB,CAQA,c,CACE,iB,CAIA,U,CACA,yD,CAdF,mB,CAEE,W,CACA,c,CACA,U,CAIF,c,CAEE,c,CACA,iB,CACA,W,CAIF,mB,CACE,iB,CACA,W,CACA,S,CACA,qB,CAqJF,+B,CAlJA,e,CACE,Y,CAEY,gB,CAAd,Y,CACE,0B,CACA,wB,CACA,qB,CACA,oB,CACA,gB,CACA,uC,CA8EF,uB,CA5EA,oB,CAAsB,8B,CACpB,mB,CAEwB,gC,CAA1B,sB,CACE,mB,CAEF,c,CACE,6B,CACA,wB,CACA,qB,CACA,oB,CACA,gB,CAEF,Y,CACE,uB,CACA,oB,CACA,e,CAEF,Q,CACE,W,CACA,mB,CACA,gB,CACA,W,CAEF,W,CACE,iB,CACA,qC,CACA,iB,CACA,W,CAEF,iB,CACE,qC,CAEF,Q,CACE,Q,CACA,S,CAEF,U,CACE,Q,CACA,U,CACA,mD,CAEF,oB,CACE,S,CACA,iB,CACA,wD,CAEF,e,CACE,W,CACA,S,CAEF,e,CACE,U,CACA,Q,CAGF,kB,CACE,a,CACA,U,CACA,S,CACA,U,CACA,gB,CACA,e,CACA,oB,CACA,iB,CACA,c,CACA,a,CACA,gB,CACA,kC,CACA,Q,CACA,iB,CAEF,oC,CACE,Q,CACA,S,CAKF,sB,CACE,iB,CAEF,W,CACE,a,CACA,e,CACA,e,CACA,qB,CAEF,4B,CACE,e,CAEF,yB,CACE,S,CAGF,wB,CADA,wB,CAEE,oB,CACA,kC,CAEF,oB,CACE,yB,CAEF,qB,CACE,yB,CAIF,e,CACE,gB,CACA,W,CACA,U,CACA,4B,CAGF,kB,CACE,Q,CACA,c,CACA,U,CACA,wB,CAEF,kB,CACE,c,CACA,e,CAEF,uBAAuB,kB,CACrB,W,CAEF,mB,CACE,c,CACA,iB,CACA,qB,CAEkB,sB,CAApB,kB,CACE,oB,CAKF,oBAAoB,c,CAClB,+B,CAEF,gC,CACE,Q,CACA,O,CACA,qB,CAEF,oC,CACE,gB,CACA,gB,CAEF,uC,CACE,Y,CAGF,c,CACE,S,CACA,S,CACA,Y,CAEF,qB,CACE,iB,CACA,W,CAGF,wB,CACE,S,CAGF,e,CACE,S,CACA,W,CAEF,gC,CACE,Q,CACA,M,CACA,uB,CAEF,mC,CACA,sB,CACE,oB,CAEF,mC,CACE,wB,CACA,Y,CACA,U,CACA,W,CAEF,oBAAoB,qB,CAClB,U,CACA,Q,CACA,iB,CAEF,gD,CACA,uC,CACE,Y,CAEF,oBAAoB,c,CAClB,+B,CAEF,mB,CACE,mC,CAGF,yC,CACE,W","file":"ol.css","sourcesContent":[".ol-box {\n box-sizing: border-box;\n border-radius: 2px;\n border: 2px solid blue;\n}\n\n.ol-mouse-position {\n top: 8px;\n right: 8px;\n position: absolute;\n}\n\n.ol-scale-line {\n background: rgba(0,60,136,0.3);\n border-radius: 4px;\n bottom: 8px;\n left: 8px;\n padding: 2px;\n position: absolute;\n}\n.ol-scale-line-inner {\n border: 1px solid #eee;\n border-top: none;\n color: #eee;\n font-size: 10px;\n text-align: center;\n margin: 1px;\n will-change: contents, width;\n transition: all 0.25s;\n}\n.ol-scale-bar {\n position: absolute;\n bottom: 8px;\n left: 8px;\n}\n.ol-scale-step-marker {\n width: 1px;\n height: 15px;\n background-color: #000000;\n float: right;\n z-Index: 10;\n}\n.ol-scale-step-text {\n position: absolute;\n bottom: -5px;\n font-size: 12px;\n z-Index: 11;\n color: #000000;\n text-shadow: -2px 0 #FFFFFF, 0 2px #FFFFFF, 2px 0 #FFFFFF, 0 -2px #FFFFFF;\n}\n.ol-scale-text {\n position: absolute;\n font-size: 14px;\n text-align: center;\n bottom: 25px;\n color: #000000;\n text-shadow: -2px 0 #FFFFFF, 0 2px #FFFFFF, 2px 0 #FFFFFF, 0 -2px #FFFFFF;\n}\n.ol-scale-singlebar {\n position: relative;\n height: 10px;\n z-Index: 9;\n border: 1px solid black;\n}\n\n.ol-unsupported {\n display: none;\n}\n.ol-viewport, .ol-unselectable {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n.ol-overlaycontainer, .ol-overlaycontainer-stopevent {\n pointer-events: none;\n}\n.ol-overlaycontainer > *, .ol-overlaycontainer-stopevent > * {\n pointer-events: auto;\n}\n.ol-selectable {\n -webkit-touch-callout: default;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n.ol-grabbing {\n cursor: -webkit-grabbing;\n cursor: -moz-grabbing;\n cursor: grabbing;\n}\n.ol-grab {\n cursor: move;\n cursor: -webkit-grab;\n cursor: -moz-grab;\n cursor: grab;\n}\n.ol-control {\n position: absolute;\n background-color: rgba(255,255,255,0.4);\n border-radius: 4px;\n padding: 2px;\n}\n.ol-control:hover {\n background-color: rgba(255,255,255,0.6);\n}\n.ol-zoom {\n top: .5em;\n left: .5em;\n}\n.ol-rotate {\n top: .5em;\n right: .5em;\n transition: opacity .25s linear, visibility 0s linear;\n}\n.ol-rotate.ol-hidden {\n opacity: 0;\n visibility: hidden;\n transition: opacity .25s linear, visibility 0s linear .25s;\n}\n.ol-zoom-extent {\n top: 4.643em;\n left: .5em;\n}\n.ol-full-screen {\n right: .5em;\n top: .5em;\n}\n\n.ol-control button {\n display: block;\n margin: 1px;\n padding: 0;\n color: white;\n font-size: 1.14em;\n font-weight: bold;\n text-decoration: none;\n text-align: center;\n height: 1.375em;\n width: 1.375em;\n line-height: .4em;\n background-color: rgba(0,60,136,0.5);\n border: none;\n border-radius: 2px;\n}\n.ol-control button::-moz-focus-inner {\n border: none;\n padding: 0;\n}\n.ol-control button span {\n pointer-events: none;\n}\n.ol-zoom-extent button {\n line-height: 1.4em;\n}\n.ol-compass {\n display: block;\n font-weight: normal;\n font-size: 1.2em;\n will-change: transform;\n}\n.ol-touch .ol-control button {\n font-size: 1.5em;\n}\n.ol-touch .ol-zoom-extent {\n top: 5.5em;\n}\n.ol-control button:hover,\n.ol-control button:focus {\n text-decoration: none;\n background-color: rgba(0,60,136,0.7);\n}\n.ol-zoom .ol-zoom-in {\n border-radius: 2px 2px 0 0;\n}\n.ol-zoom .ol-zoom-out {\n border-radius: 0 0 2px 2px;\n}\n\n\n.ol-attribution {\n text-align: right;\n bottom: .5em;\n right: .5em;\n max-width: calc(100% - 1.3em);\n}\n\n.ol-attribution ul {\n margin: 0;\n padding: 0 .5em;\n color: #000;\n text-shadow: 0 0 2px #fff;\n}\n.ol-attribution li {\n display: inline;\n list-style: none;\n}\n.ol-attribution li:not(:last-child):after {\n content: \" \";\n}\n.ol-attribution img {\n max-height: 2em;\n max-width: inherit;\n vertical-align: middle;\n}\n.ol-attribution ul, .ol-attribution button {\n display: inline-block;\n}\n.ol-attribution.ol-collapsed ul {\n display: none;\n}\n.ol-attribution:not(.ol-collapsed) {\n background: rgba(255,255,255,0.8);\n}\n.ol-attribution.ol-uncollapsible {\n bottom: 0;\n right: 0;\n border-radius: 4px 0 0;\n}\n.ol-attribution.ol-uncollapsible img {\n margin-top: -.2em;\n max-height: 1.6em;\n}\n.ol-attribution.ol-uncollapsible button {\n display: none;\n}\n\n.ol-zoomslider {\n top: 4.5em;\n left: .5em;\n height: 200px;\n}\n.ol-zoomslider button {\n position: relative;\n height: 10px;\n}\n\n.ol-touch .ol-zoomslider {\n top: 5.5em;\n}\n\n.ol-overviewmap {\n left: 0.5em;\n bottom: 0.5em;\n}\n.ol-overviewmap.ol-uncollapsible {\n bottom: 0;\n left: 0;\n border-radius: 0 4px 0 0;\n}\n.ol-overviewmap .ol-overviewmap-map,\n.ol-overviewmap button {\n display: inline-block;\n}\n.ol-overviewmap .ol-overviewmap-map {\n border: 1px solid #7b98bc;\n height: 150px;\n margin: 2px;\n width: 150px;\n}\n.ol-overviewmap:not(.ol-collapsed) button{\n bottom: 1px;\n left: 2px;\n position: absolute;\n}\n.ol-overviewmap.ol-collapsed .ol-overviewmap-map,\n.ol-overviewmap.ol-uncollapsible button {\n display: none;\n}\n.ol-overviewmap:not(.ol-collapsed) {\n background: rgba(255,255,255,0.8);\n}\n.ol-overviewmap-box {\n border: 2px dotted rgba(0,60,136,0.7);\n}\n\n.ol-overviewmap .ol-overviewmap-box:hover {\n cursor: move;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["ol.css"],"names":[],"mappings":"AAAA,O,CACE,qB,CACA,iB,CACA,qB,CAGF,kB,CACE,O,CACA,S,CACA,iB,CAGF,c,CACE,4B,CACA,iB,CACA,U,CACA,Q,CACA,W,CACA,iB,CAEF,oB,CACE,qB,CACA,e,CACA,U,CACA,c,CACA,iB,CACA,U,CACA,0B,CACA,mB,CAEF,a,CACE,iB,CACA,U,CACA,Q,CAEF,qB,CACE,S,CACA,W,CACA,qB,CACA,W,CACA,U,CAEF,mB,CAQA,c,CACE,iB,CAIA,U,CACA,yD,CAdF,mB,CAEE,W,CACA,c,CACA,U,CAIF,c,CAEE,c,CACA,iB,CACA,W,CAIF,mB,CACE,iB,CACA,W,CACA,S,CACA,qB,CACA,qB,CA4IF,+B,CAzIA,e,CACE,Y,CAEY,gB,CAAd,Y,CACE,0B,CACA,wB,CACA,qB,CACA,oB,CACA,gB,CACA,uC,CAEF,c,CACE,6B,CACA,wB,CACA,qB,CACA,oB,CACA,gB,CAEF,Y,CACE,uB,CACA,oB,CACA,e,CAEF,Q,CACE,W,CACA,mB,CACA,gB,CACA,W,CAEF,W,CACE,iB,CACA,qC,CACA,iB,CACA,W,CAEF,iB,CACE,qC,CAEF,Q,CACE,Q,CACA,S,CAEF,U,CACE,Q,CACA,U,CACA,mD,CAEF,oB,CACE,S,CACA,iB,CACA,wD,CAEF,e,CACE,W,CACA,S,CAEF,e,CACE,U,CACA,Q,CAGF,kB,CACE,a,CACA,U,CACA,S,CACA,U,CACA,gB,CACA,e,CACA,oB,CACA,iB,CACA,c,CACA,a,CACA,gB,CACA,kC,CACA,Q,CACA,iB,CAEF,oC,CACE,Q,CACA,S,CAEF,sB,CACE,iB,CAEF,W,CACE,a,CACA,e,CACA,e,CACA,qB,CAEF,4B,CACE,e,CAEF,yB,CACE,S,CAGF,wB,CADA,wB,CAEE,oB,CACA,kC,CAEF,oB,CACE,yB,CAEF,qB,CACE,yB,CAIF,e,CACE,gB,CACA,W,CACA,U,CACA,4B,CAGF,kB,CACE,Q,CACA,c,CACA,U,CACA,wB,CAEF,kB,CACE,c,CACA,e,CAEF,uBAAuB,kB,CACrB,W,CAEF,mB,CACE,c,CACA,iB,CACA,qB,CAEkB,sB,CAApB,kB,CACE,oB,CAKF,oBAAoB,c,CAClB,+B,CAEF,gC,CACE,Q,CACA,O,CACA,qB,CAEF,oC,CACE,gB,CACA,gB,CAEF,uC,CACE,Y,CAGF,c,CACE,S,CACA,S,CACA,Y,CAEF,qB,CACE,iB,CACA,W,CAGF,wB,CACE,S,CAGF,e,CACE,S,CACA,W,CAEF,gC,CACE,Q,CACA,M,CACA,uB,CAEF,mC,CACA,sB,CACE,oB,CAEF,mC,CACE,wB,CACA,Y,CACA,U,CACA,W,CAEF,oBAAoB,qB,CAClB,U,CACA,Q,CACA,iB,CAEF,gD,CACA,uC,CACE,Y,CAEF,oBAAoB,c,CAClB,+B,CAEF,mB,CACE,mC,CAGF,yC,CACE,W","file":"ol.css","sourcesContent":[".ol-box {\n box-sizing: border-box;\n border-radius: 2px;\n border: 2px solid blue;\n}\n\n.ol-mouse-position {\n top: 8px;\n right: 8px;\n position: absolute;\n}\n\n.ol-scale-line {\n background: rgba(0,60,136,0.3);\n border-radius: 4px;\n bottom: 8px;\n left: 8px;\n padding: 2px;\n position: absolute;\n}\n.ol-scale-line-inner {\n border: 1px solid #eee;\n border-top: none;\n color: #eee;\n font-size: 10px;\n text-align: center;\n margin: 1px;\n will-change: contents, width;\n transition: all 0.25s;\n}\n.ol-scale-bar {\n position: absolute;\n bottom: 8px;\n left: 8px;\n}\n.ol-scale-step-marker {\n width: 1px;\n height: 15px;\n background-color: #000000;\n float: right;\n z-Index: 10;\n}\n.ol-scale-step-text {\n position: absolute;\n bottom: -5px;\n font-size: 12px;\n z-Index: 11;\n color: #000000;\n text-shadow: -2px 0 #FFFFFF, 0 2px #FFFFFF, 2px 0 #FFFFFF, 0 -2px #FFFFFF;\n}\n.ol-scale-text {\n position: absolute;\n font-size: 14px;\n text-align: center;\n bottom: 25px;\n color: #000000;\n text-shadow: -2px 0 #FFFFFF, 0 2px #FFFFFF, 2px 0 #FFFFFF, 0 -2px #FFFFFF;\n}\n.ol-scale-singlebar {\n position: relative;\n height: 10px;\n z-Index: 9;\n box-sizing: border-box;\n border: 1px solid black;\n}\n\n.ol-unsupported {\n display: none;\n}\n.ol-viewport, .ol-unselectable {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n.ol-selectable {\n -webkit-touch-callout: default;\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n.ol-grabbing {\n cursor: -webkit-grabbing;\n cursor: -moz-grabbing;\n cursor: grabbing;\n}\n.ol-grab {\n cursor: move;\n cursor: -webkit-grab;\n cursor: -moz-grab;\n cursor: grab;\n}\n.ol-control {\n position: absolute;\n background-color: rgba(255,255,255,0.4);\n border-radius: 4px;\n padding: 2px;\n}\n.ol-control:hover {\n background-color: rgba(255,255,255,0.6);\n}\n.ol-zoom {\n top: .5em;\n left: .5em;\n}\n.ol-rotate {\n top: .5em;\n right: .5em;\n transition: opacity .25s linear, visibility 0s linear;\n}\n.ol-rotate.ol-hidden {\n opacity: 0;\n visibility: hidden;\n transition: opacity .25s linear, visibility 0s linear .25s;\n}\n.ol-zoom-extent {\n top: 4.643em;\n left: .5em;\n}\n.ol-full-screen {\n right: .5em;\n top: .5em;\n}\n\n.ol-control button {\n display: block;\n margin: 1px;\n padding: 0;\n color: white;\n font-size: 1.14em;\n font-weight: bold;\n text-decoration: none;\n text-align: center;\n height: 1.375em;\n width: 1.375em;\n line-height: .4em;\n background-color: rgba(0,60,136,0.5);\n border: none;\n border-radius: 2px;\n}\n.ol-control button::-moz-focus-inner {\n border: none;\n padding: 0;\n}\n.ol-zoom-extent button {\n line-height: 1.4em;\n}\n.ol-compass {\n display: block;\n font-weight: normal;\n font-size: 1.2em;\n will-change: transform;\n}\n.ol-touch .ol-control button {\n font-size: 1.5em;\n}\n.ol-touch .ol-zoom-extent {\n top: 5.5em;\n}\n.ol-control button:hover,\n.ol-control button:focus {\n text-decoration: none;\n background-color: rgba(0,60,136,0.7);\n}\n.ol-zoom .ol-zoom-in {\n border-radius: 2px 2px 0 0;\n}\n.ol-zoom .ol-zoom-out {\n border-radius: 0 0 2px 2px;\n}\n\n\n.ol-attribution {\n text-align: right;\n bottom: .5em;\n right: .5em;\n max-width: calc(100% - 1.3em);\n}\n\n.ol-attribution ul {\n margin: 0;\n padding: 0 .5em;\n color: #000;\n text-shadow: 0 0 2px #fff;\n}\n.ol-attribution li {\n display: inline;\n list-style: none;\n}\n.ol-attribution li:not(:last-child):after {\n content: \" \";\n}\n.ol-attribution img {\n max-height: 2em;\n max-width: inherit;\n vertical-align: middle;\n}\n.ol-attribution ul, .ol-attribution button {\n display: inline-block;\n}\n.ol-attribution.ol-collapsed ul {\n display: none;\n}\n.ol-attribution:not(.ol-collapsed) {\n background: rgba(255,255,255,0.8);\n}\n.ol-attribution.ol-uncollapsible {\n bottom: 0;\n right: 0;\n border-radius: 4px 0 0;\n}\n.ol-attribution.ol-uncollapsible img {\n margin-top: -.2em;\n max-height: 1.6em;\n}\n.ol-attribution.ol-uncollapsible button {\n display: none;\n}\n\n.ol-zoomslider {\n top: 4.5em;\n left: .5em;\n height: 200px;\n}\n.ol-zoomslider button {\n position: relative;\n height: 10px;\n}\n\n.ol-touch .ol-zoomslider {\n top: 5.5em;\n}\n\n.ol-overviewmap {\n left: 0.5em;\n bottom: 0.5em;\n}\n.ol-overviewmap.ol-uncollapsible {\n bottom: 0;\n left: 0;\n border-radius: 0 4px 0 0;\n}\n.ol-overviewmap .ol-overviewmap-map,\n.ol-overviewmap button {\n display: inline-block;\n}\n.ol-overviewmap .ol-overviewmap-map {\n border: 1px solid #7b98bc;\n height: 150px;\n margin: 2px;\n width: 150px;\n}\n.ol-overviewmap:not(.ol-collapsed) button{\n bottom: 1px;\n left: 2px;\n position: absolute;\n}\n.ol-overviewmap.ol-collapsed .ol-overviewmap-map,\n.ol-overviewmap.ol-uncollapsible button {\n display: none;\n}\n.ol-overviewmap:not(.ol-collapsed) {\n background: rgba(255,255,255,0.8);\n}\n.ol-overviewmap-box {\n border: 2px dotted rgba(0,60,136,0.7);\n}\n\n.ol-overviewmap .ol-overviewmap-box:hover {\n cursor: move;\n}\n"]} \ No newline at end of file diff --git a/js/dist/1.bundle.js b/js/dist/1.bundle.js index a284538..a95a9cf 100644 --- a/js/dist/1.bundle.js +++ b/js/dist/1.bundle.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{394:function(t,e,i){var n,r,o;function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}o=function(){"use strict";function t(t,n,r,o,s){!function t(i,n,r,o,s){for(;o>r;){if(o-r>600){var a=o-r+1,l=n-r+1,h=Math.log(a),u=.5*Math.exp(2*h/3),c=.5*Math.sqrt(h*u*(a-u)/a)*(l-a/2<0?-1:1),p=Math.max(r,Math.floor(n-l*u/a+c)),f=Math.min(o,Math.floor(n+(a-l)*u/a+c));t(i,n,p,f,s)}var d=i[n],_=r,g=o;for(e(i,r,n),s(i[o],d)>0&&e(i,r,o);_0;)g--}0===s(i[r],d)?e(i,r,g):(g++,e(i,g,o)),g<=n&&(r=g+1),n<=g&&(o=g-1)}}(t,n,r||0,o||t.length-1,s||i)}function e(t,e,i){var n=t[e];t[e]=t[i],t[i]=n}function i(t,e){return te?1:0}var n=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function r(t,e,i){if(!i)return e.indexOf(t);for(var n=0;n=t.minX&&e.maxY>=t.minY}function d(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function _(e,i,n,r,o){for(var s=[i,n];s.length;)if(!((n=s.pop())-(i=s.pop())<=r)){var a=i+Math.ceil((n-i)/r/2)*r;t(e,a,i,n,o),s.push(i,a,a,n)}}return n.prototype.all=function(){return this._all(this.data,[])},n.prototype.search=function(t){var e=this.data,i=[];if(!f(t,e))return i;for(var n=this.toBBox,r=[];e;){for(var o=0;o=0&&r[e].children.length>this._maxEntries;)this._split(r,e),e--;this._adjustParentBBoxes(n,r,e)},n.prototype._split=function(t,e){var i=t[e],n=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,n);var s=this._chooseSplitIndex(i,r,n),a=d(i.children.splice(s,i.children.length-s));a.height=i.height,a.leaf=i.leaf,o(i,this.toBBox),o(a,this.toBBox),e?t[e-1].children.push(a):this._splitRoot(i,a)},n.prototype._splitRoot=function(t,e){this.data=d([t,e]),this.data.height=t.height+1,this.data.leaf=!1,o(this.data,this.toBBox)},n.prototype._chooseSplitIndex=function(t,e,i){for(var n,r,o,a,l,h,c,p=1/0,f=1/0,d=e;d<=i-e;d++){var _=s(t,0,d,this.toBBox),g=s(t,d,i,this.toBBox),y=(r=_,o=g,a=void 0,l=void 0,h=void 0,c=void 0,a=Math.max(r.minX,o.minX),l=Math.max(r.minY,o.minY),h=Math.min(r.maxX,o.maxX),c=Math.min(r.maxY,o.maxY),Math.max(0,h-a)*Math.max(0,c-l)),v=u(_)+u(g);y=e;f--){var d=t.children[f];a(l,t.leaf?r(d):d),h+=c(l)}return h},n.prototype._adjustParentBBoxes=function(t,e,i){for(var n=i;n>=0;n--)a(e[n],t)},n.prototype._condense=function(t){for(var e=t.length-1,i=void 0;e>=0;e--)0===t[e].children.length?e>0?(i=t[e-1].children).splice(i.indexOf(t[e]),1):this.clear():o(t[e],this.toBBox)},n},"object"===s(e)&&void 0!==t?t.exports=o():void 0===(r="function"==typeof(n=o)?n.call(e,i,e,t):n)||(t.exports=r)},407:function(t,e){var i=null,n=null;function r(t,e,i){t.addEventListener(e,(function(t){var r=new MouseEvent(i,t);r.pointerId=1,r.isPrimary=!0,r.pointerType="mouse",r.width=1,r.height=1,r.tiltX=0,r.tiltY=0,"buttons"in t&&0!==t.buttons?r.pressure=.5:r.pressure=0;var o=t.target;null!==n&&(o=n,"mouseup"===e&&(n=null)),o.dispatchEvent(r),r.defaultPrevented&&t.preventDefault()}))}function o(t,e,n){t.addEventListener(e,(function(t){for(var r=t.changedTouches,o=r.length,s=0;se?1:t0){for(r=1;r0},e.prototype.removeEventListener=function(t,e){var i=this.listeners_[t];if(i){var n=i.indexOf(e);-1!==n&&(t in this.pendingRemovals_?(i[n]=u,++this.pendingRemovals_[t]):(i.splice(n,1),0===i.length&&delete this.listeners_[t]))}},e}(b),P="change",M="error",L="contextmenu",F="click",A="dblclick",D="keydown",k="keypress",j="load",G="resize",z="touchmove",W="wheel",X=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();var K=function(t){function e(){var e=t.call(this)||this;return e.revision_=0,e}return X(e,t),e.prototype.changed=function(){++this.revision_,this.dispatchEvent(P)},e.prototype.getRevision=function(){return this.revision_},e.prototype.on=function(t,e){if(Array.isArray(t)){for(var i=t.length,n=new Array(i),r=0;r0&&e%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:_t}):t.setRotation(0))}},e}(ut),St=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ct=function(t){function e(e){var i=this,n="Assertion failed. See https://openlayers.org/en/"+("v"+"6.3.1".split("-")[0])+"/doc/errors/#"+e+" for details.";return(i=t.call(this,n)||this).code=e,i.name="AssertionError",i.message=n,i}return St(e,t),e}(Error);function wt(t,e){if(!t)throw new Ct(e)}function Et(t,e,i){return Math.min(Math.max(t,e),i)}var bt="cosh"in Math?Math.cosh:function(t){var e=Math.exp(t);return(e+1/e)/2};function Tt(t,e,i,n,r,o){var s=r-i,a=o-n;if(0!==s||0!==a){var l=((t-i)*s+(e-n)*a)/(s*s+a*a);l>1?(i=r,n=o):l>0&&(i+=s*l,n+=a*l)}return Rt(t,e,i,n)}function Rt(t,e,i,n){var r=i-t,o=n-e;return r*r+o*o}function It(t){return t*Math.PI/180}function Ot(t,e){var i=t%e;return i*e<0?i+e:i}function Pt(t,e,i){return t+i*(e-t)}var Mt="Point",Lt="LineString",Ft="LinearRing",At="Polygon",Dt="MultiPoint",kt="MultiLineString",jt="MultiPolygon",Gt="GeometryCollection",zt="Circle";function Wt(t,e,i){var n=i||6371008.8,r=It(t[1]),o=It(e[1]),s=(o-r)/2,a=It(e[0]-t[0])/2,l=Math.sin(s)*Math.sin(s)+Math.sin(a)*Math.sin(a)*Math.cos(r)*Math.cos(o);return 2*n*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))}var Xt="bottom-left",Kt="bottom-right",Yt="top-left",Nt="top-right",Zt=0,Bt=1,Vt=2,Ut=4,Ht=8,qt=16;function Jt(t){for(var e=oe(),i=0,n=t.length;ir&&(l|=Ut),ao&&(l|=Vt),l===Zt&&(l=Bt),l}function oe(){return[1/0,1/0,-1/0,-1/0]}function se(t,e,i,n,r){return r?(r[0]=t,r[1]=e,r[2]=i,r[3]=n,r):[t,e,i,n]}function ae(t){return se(1/0,1/0,-1/0,-1/0,t)}function le(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function he(t,e){return e[0]t[2]&&(t[2]=e[2]),e[1]t[3]&&(t[3]=e[3]),t}function ue(t,e){e[0]t[2]&&(t[2]=e[0]),e[1]t[3]&&(t[3]=e[1])}function ce(t,e){for(var i=0,n=e.length;ie[0]?n[0]=t[0]:n[0]=e[0],t[1]>e[1]?n[1]=t[1]:n[1]=e[1],t[2]=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function Te(t){return t[2]1)for(var o=t[2]-t[0],s=t[3]-t[1],a=0;a1?i:2,o=e;void 0===o&&(o=r>2?t.slice():new Array(n));for(var s=Fe,a=0;as?l=s:l<-s&&(l=-s),o[a+1]=l}return o}function ze(t,e,i){var n=t.length,r=i>1?i:2,o=e;void 0===o&&(o=r>2?t.slice():new Array(n));for(var s=0;s=this.minWidth_)break;++f}p=this.scaleBar_?this.createScaleBar(u,h,a):h.toFixed(c<0?-c:0)+" "+a,this.renderedHTML_!=p&&(this.innerElement_.innerHTML=p,this.renderedHTML_=p),this.renderedWidth_!=u&&(this.innerElement_.style.width=u+"px",this.renderedWidth_=u),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}else this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1)},e.prototype.createScaleBar=function(t,e,i){for(var n="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),r=[],o=t/this.scaleBarSteps_,s="#ffffff",a=0;a
'+this.createMarker("relative",a)+(a%2==0||2===this.scaleBarSteps_?this.createStepText(a,t,!1,e,i):"")+""),a===this.scaleBarSteps_-1&&r.push(this.createStepText(a+1,t,!0,e,i)),s="#ffffff"===s?"#000000":"#ffffff";return'
'+(this.scaleBarText_?'
'+n+"
":"")+r.join("")+"
"},e.prototype.createMarker=function(t,e){return'
'},e.prototype.createStepText=function(t,e,i,n,r){var o=(0===t?0:Math.round(n/this.scaleBarSteps_*t*100)/100)+(0===t?"":" "+r);return'
'+o+"
"},e.prototype.getScaleForResolution=function(){var t=this.getMap().getView().getResolution(),e=this.viewState_.projection.getMetersPerUnit();return parseFloat(t.toString())*e*39.37*(25.4/.28)},e}(ut),Ei=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),bi=function(t){function e(e){var i=this,n=e||{};i=t.call(this,{element:document.createElement("div"),target:n.target})||this;var r=void 0!==n.className?n.className:"ol-zoom",o=void 0!==n.delta?n.delta:1,s=void 0!==n.zoomInLabel?n.zoomInLabel:"+",a=void 0!==n.zoomOutLabel?n.zoomOutLabel:"−",l=void 0!==n.zoomInTipLabel?n.zoomInTipLabel:"Zoom in",h=void 0!==n.zoomOutTipLabel?n.zoomOutTipLabel:"Zoom out",u=document.createElement("button");u.className=r+"-in",u.setAttribute("type","button"),u.title=l,u.appendChild("string"==typeof s?document.createTextNode(s):s),u.addEventListener(F,i.handleClick_.bind(i,o),!1);var c=document.createElement("button");c.className=r+"-out",c.setAttribute("type","button"),c.title=h,c.appendChild("string"==typeof a?document.createTextNode(a):a),c.addEventListener(F,i.handleClick_.bind(i,-o),!1);var p=r+" ol-unselectable ol-control",f=i.element;return f.className=p,f.appendChild(u),f.appendChild(c),i.duration_=void 0!==n.duration?n.duration:250,i}return Ei(e,t),e.prototype.handleClick_=function(t,e){e.preventDefault(),this.zoomByDelta_(t)},e.prototype.zoomByDelta_=function(t){var e=this.getMap().getView();if(e){var i=e.getZoom();if(void 0!==i){var n=e.getConstrainedZoom(i+t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({zoom:n,duration:this.duration_,easing:_t})):e.setZoom(n)}}},e}(ut),Ti="XY",Ri="XYZ",Ii="XYM",Oi="XYZM";function Pi(t,e,i,n,r,o){for(var s=o||[],a=0,l=e;l1)a=i;else{if(p>0){for(var f=0;fr&&(r=h),o=a,s=l}return r}function Bi(t,e,i,n,r){for(var o=0,s=i.length;o0;){for(var c=h.pop(),p=h.pop(),f=0,d=t[p],_=t[p+1],g=t[c],y=t[c+1],v=p+n;vf&&(u=v,f=m)}f>r&&(l[(u-e)/n]=1,p+n0&&_>f)&&(d<0&&g0&&g>d)?(a=c,l=p):(o[s++]=a,o[s++]=l,h=a,u=l,a=c,l=p)}}return o[s++]=a,o[s++]=l,s}function rn(t,e,i,n,r,o,s,a){for(var l=0,h=i.length;lo&&(h-a)*(o-l)-(r-a)*(u-l)>0&&s++:u<=o&&(h-a)*(o-l)-(r-a)*(u-l)<0&&s--,a=h,l=u}return 0!==s}function cn(t,e,i,n,r,o){if(0===i.length)return!1;if(!un(t,e,i[0],n,r,o))return!1;for(var s=1,a=i.length;sS&&cn(t,e,i,r,u=(c+p)/2,_)&&(x=u,S=C),c=p}return isNaN(x)&&(x=o[s]),a?(a.push(x,_,S),a):[x,_,S]}function fn(t,e,i,n,r){for(var o,s=[t[e],t[e+1]],a=[];e+n=r[0]&&o[2]<=r[2]||(o[1]>=r[1]&&o[3]<=r[3]||fn(t,e,i,n,(function(t,e){return function(t,e,i){var n=!1,r=re(t,e),o=re(t,i);if(r===Bt||o===Bt)n=!0;else{var s=t[0],a=t[1],l=t[2],h=t[3],u=e[0],c=e[1],p=i[0],f=i[1],d=(f-c)/(p-u),_=void 0,g=void 0;o&Vt&&!(r&Vt)&&(n=(_=p-(f-h)/d)>=s&&_<=l),n||!(o&Ut)||r&Ut||(n=(g=f-(p-l)*d)>=a&&g<=h),n||!(o&Ht)||r&Ht||(n=(_=p-(f-a)/d)>=s&&_<=l),n||!(o&qt)||r&qt||(n=(g=f-(p-s)*d)>=a&&g<=h)}return n}(r,t,e)})))))}function _n(t,e,i,n,r){if(!function(t,e,i,n,r){return!!dn(t,e,i,n,r)||(!!un(t,e,i,n,r[0],r[1])||(!!un(t,e,i,n,r[0],r[3])||(!!un(t,e,i,n,r[2],r[1])||!!un(t,e,i,n,r[2],r[3]))))}(t,e,i[0],n,r))return!1;if(1===i.length)return!0;for(var o=1,s=i.length;o0}function vn(t,e,i,n,r){for(var o=void 0!==r&&r,s=0,a=i.length;s>1)],e))<0?a=r+1:(l=r,h=!o);return h?a:~a}(f,y);if(v<0){var m=(y-f[-v-2])/(f[-v-1]-f[-v-2]),x=e+(-v-2)*r;a=Pt(t[x],t[x+r],m),l=Pt(t[x+1],t[x+r+1],m)}else a=t[e+v*r],l=t[e+v*r+1]}return s?(s[0]=a,s[1]=l,s):[a,l]}function Rn(t,e,i,n,r,o){if(i==e)return null;var s;if(r>1;r=1024){var i=0;for(var n in Wn)0==(3&i++)&&(delete Wn[n],--Xn)}e=function(t){var e,i,n,r,o;if(Gn.exec(t)&&(t=zn(t)),jn.exec(t)){var s=t.length-1,a=void 0;a=s<=4?1:2;var l=4===s||8===s;e=parseInt(t.substr(1+0*a,a),16),i=parseInt(t.substr(1+1*a,a),16),n=parseInt(t.substr(1+2*a,a),16),r=l?parseInt(t.substr(1+3*a,a),16):255,1==a&&(e=(e<<4)+e,i=(i<<4)+i,n=(n<<4)+n,l&&(r=(r<<4)+r)),o=[e,i,n,r/255]}else 0==t.indexOf("rgba(")?Nn(o=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((o=t.slice(4,-1).split(",").map(Number)).push(1),Nn(o)):wt(!1,14);return o}(t),Wn[t]=e,++Xn}return e});function Yn(t){return Array.isArray(t)?t:Kn(t)}function Nn(t){return t[0]=Et(t[0]+.5|0,0,255),t[1]=Et(t[1]+.5|0,0,255),t[2]=Et(t[2]+.5|0,0,255),t[3]=Et(t[3],0,1),t}function Zn(t){var e=t[0];e!=(0|e)&&(e=e+.5|0);var i=t[1];i!=(0|i)&&(i=i+.5|0);var n=t[2];return n!=(0|n)&&(n=n+.5|0),"rgba("+e+","+i+","+n+","+(void 0===t[3]?1:t[3])+")"}var Bn="fraction",Vn="pixels",Un=function(){function t(){this.cache_={},this.cacheSize_=0,this.maxCacheSize_=32}return t.prototype.clear=function(){this.cache_={},this.cacheSize_=0},t.prototype.canExpireCache=function(){return this.cacheSize_>this.maxCacheSize_},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var e in this.cache_){var i=this.cache_[e];0!=(3&t++)||i.hasListener()||(delete this.cache_[e],--this.cacheSize_)}}},t.prototype.get=function(t,e,i){var n=Hn(t,e,i);return n in this.cache_?this.cache_[n]:null},t.prototype.set=function(t,e,i,n){var r=Hn(t,e,i);this.cache_[r]=n,++this.cacheSize_},t.prototype.setSize=function(t){this.maxCacheSize_=t,this.expire()},t}();function Hn(t,e,i){return e+":"+t+":"+(i?function(t){return"string"==typeof t?t:Zn(t)}(i):"null")}var qn=new Un,Jn=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Qn=function(t){function e(e,i,n,r){var o=t.call(this)||this;return o.extent=e,o.pixelRatio_=n,o.resolution=i,o.state=r,o}return Jn(e,t),e.prototype.changed=function(){this.dispatchEvent(P)},e.prototype.getExtent=function(){return this.extent},e.prototype.getImage=function(){return d()},e.prototype.getPixelRatio=function(){return this.pixelRatio_},e.prototype.getResolution=function(){return this.resolution},e.prototype.getState=function(){return this.state},e.prototype.load=function(){d()},e}(O),$n=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function tr(t,e,i){var n=t;if(n.src&&et){var r=n.decode(),o=!0;return r.then((function(){o&&e()})).catch((function(t){o&&("EncodingError"===t.name&&"Invalid image type."===t.message?e():i())})),function(){o=!1}}var s=[w(n,j,e),w(n,M,i)];return function(){s.forEach(E)}}!function(t){function e(e,i,n,r,o,s){var a=t.call(this,e,i,n,Fn)||this;return a.src_=r,a.image_=new Image,null!==o&&(a.image_.crossOrigin=o),a.unlisten_=null,a.state=Fn,a.imageLoadFunction_=s,a}$n(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.handleImageError_=function(){this.state=kn,this.unlistenImage_(),this.changed()},e.prototype.handleImageLoad_=function(){void 0===this.resolution&&(this.resolution=xe(this.extent)/this.image_.height),this.state=Dn,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state!=Fn&&this.state!=kn||(this.state=An,this.changed(),this.imageLoadFunction_(this,this.src_),this.unlisten_=tr(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.setImage=function(t){this.image_=t},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)}}(Qn);var er=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ir=function(t){function e(e,i,n,r,o,s){var a=t.call(this)||this;return a.hitDetectionImage_=null,a.image_=e||new Image,null!==r&&(a.image_.crossOrigin=r),a.canvas_=s?document.createElement("canvas"):null,a.color_=s,a.unlisten_=null,a.imageState_=o,a.size_=n,a.src_=i,a.tainted_,a}return er(e,t),e.prototype.isTainted_=function(t){if(void 0===this.tainted_&&this.imageState_===Dn){t||(t=nt(1,1)).drawImage(this.image_,0,0);try{t.getImageData(0,0,1,1),this.tainted_=!1}catch(t){this.tainted_=!0}}return!0===this.tainted_},e.prototype.dispatchChangeEvent_=function(){this.dispatchEvent(P)},e.prototype.handleImageError_=function(){this.imageState_=kn,this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.handleImageLoad_=function(){this.imageState_=Dn,this.size_&&(this.image_.width=this.size_[0],this.image_.height=this.size_[1]),this.size_=[this.image_.width,this.image_.height],this.unlistenImage_(),this.replaceColor_(),this.dispatchChangeEvent_()},e.prototype.getImage=function(t){return this.canvas_?this.canvas_:this.image_},e.prototype.getImageState=function(){return this.imageState_},e.prototype.getHitDetectionImage=function(t){if(!this.hitDetectionImage_)if(this.isTainted_()){var e=this.size_[0],i=this.size_[1],n=nt(e,i);n.fillRect(0,0,e,i),this.hitDetectionImage_=n.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_},e.prototype.getSize=function(){return this.size_},e.prototype.getSrc=function(){return this.src_},e.prototype.load=function(){if(this.imageState_==Fn){this.imageState_=An;try{this.image_.src=this.src_}catch(t){this.handleImageError_()}this.unlisten_=tr(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this))}},e.prototype.replaceColor_=function(){if(this.color_){this.canvas_.width=this.image_.width,this.canvas_.height=this.image_.height;var t=this.canvas_.getContext("2d");if(t.drawImage(this.image_,0,0),this.isTainted_(t)){var e=this.color_;return t.globalCompositeOperation="multiply",t.fillStyle="rgb("+e[0]+","+e[1]+","+e[2]+")",t.fillRect(0,0,this.image_.width,this.image_.height),t.globalCompositeOperation="destination-in",void t.drawImage(this.image_,0,0)}for(var i=t.getImageData(0,0,this.image_.width,this.image_.height),n=i.data,r=this.color_[0]/255,o=this.color_[1]/255,s=this.color_[2]/255,a=0,l=n.length;a0,6);var c=void 0!==n.src?Fn:Dn;return i.color_=void 0!==n.color?Yn(n.color):null,i.iconImage_=function(t,e,i,n,r,o){var s=qn.get(e,n,o);return s||(s=new ir(t,e,i,n,r,o),qn.set(e,n,o,s)),s}(l,u,h,i.crossOrigin_,c,i.color_),i.offset_=void 0!==n.offset?n.offset:[0,0],i.offsetOrigin_=void 0!==n.offsetOrigin?n.offsetOrigin:or,i.origin_=null,i.size_=void 0!==n.size?n.size:null,i}return lr(e,t),e.prototype.clone=function(){return new e({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,crossOrigin:this.crossOrigin_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,src:this.getSrc(),offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,size:null!==this.size_?this.size_.slice():void 0,opacity:this.getOpacity(),scale:this.getScale(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView()})},e.prototype.getAnchor=function(){if(this.normalizedAnchor_)return this.normalizedAnchor_;var t=this.anchor_,e=this.getSize();if(this.anchorXUnits_==Bn||this.anchorYUnits_==Bn){if(!e)return null;t=this.anchor_.slice(),this.anchorXUnits_==Bn&&(t[0]*=e[0]),this.anchorYUnits_==Bn&&(t[1]*=e[1])}if(this.anchorOrigin_!=or){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),this.anchorOrigin_!=sr&&this.anchorOrigin_!=rr||(t[0]=-t[0]+e[0]),this.anchorOrigin_!=nr&&this.anchorOrigin_!=rr||(t[1]=-t[1]+e[1])}return this.normalizedAnchor_=t,this.normalizedAnchor_},e.prototype.setAnchor=function(t){this.anchor_=t,this.normalizedAnchor_=null},e.prototype.getColor=function(){return this.color_},e.prototype.getImage=function(t){return this.iconImage_.getImage(t)},e.prototype.getImageSize=function(){return this.iconImage_.getSize()},e.prototype.getHitDetectionImageSize=function(){return this.getImageSize()},e.prototype.getImageState=function(){return this.iconImage_.getImageState()},e.prototype.getHitDetectionImage=function(t){return this.iconImage_.getHitDetectionImage(t)},e.prototype.getOrigin=function(){if(this.origin_)return this.origin_;var t=this.offset_,e=this.getDisplacement();if(this.offsetOrigin_!=or){var i=this.getSize(),n=this.iconImage_.getSize();if(!i||!n)return null;t=t.slice(),this.offsetOrigin_!=sr&&this.offsetOrigin_!=rr||(t[0]=n[0]-i[0]-t[0]),this.offsetOrigin_!=nr&&this.offsetOrigin_!=rr||(t[1]=n[1]-i[1]-t[1])}return t[0]+=e[0],t[1]+=e[1],this.origin_=t,this.origin_},e.prototype.getSrc=function(){return this.iconImage_.getSrc()},e.prototype.getSize=function(){return this.size_?this.size_:this.iconImage_.getSize()},e.prototype.listenImageChange=function(t){this.iconImage_.addEventListener(P,t)},e.prototype.load=function(){this.iconImage_.load()},e.prototype.unlistenImageChange=function(t){this.iconImage_.removeEventListener(P,t)},e}(ar),ur="add",cr="remove",pr=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),fr="length",dr=function(t){function e(e,i,n){var r=t.call(this,e)||this;return r.element=i,r.index=n,r}return pr(e,t),e}(R),_r=function(t){function e(e,i){var n=t.call(this)||this,r=i||{};if(n.unique_=!!r.unique,n.array_=e||[],n.unique_)for(var o=0,s=n.array_.length;o0;)this.pop()},e.prototype.extend=function(t){for(var e=0,i=t.length;ethis.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_},e.prototype.disposeInternal=function(){this.relayedListenerKey_&&(E(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(z,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(E(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(E),this.dragListenerKeys_.length=0,this.element_=null,t.prototype.disposeInternal.call(this)},e}(O),Rr="layergroup",Ir="size",Or="target",Pr="view",Mr="prerender",Lr="postrender",Fr="precompose",Ar="postcompose",Dr="rendercomplete",kr=0,jr=1,Gr=2,zr=3,Wr=4,Xr=function(){function t(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}}return t.prototype.clear=function(){this.elements_.length=0,this.priorities_.length=0,m(this.queuedElements_)},t.prototype.dequeue=function(){var t=this.elements_,e=this.priorities_,i=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));var n=this.keyFunction_(i);return delete this.queuedElements_[n],i},t.prototype.enqueue=function(t){wt(!(this.keyFunction_(t)in this.queuedElements_),31);var e=this.priorityFunction_(t);return e!=1/0&&(this.elements_.push(t),this.priorities_.push(e),this.queuedElements_[this.keyFunction_(t)]=!0,this.siftDown_(0,this.elements_.length-1),!0)},t.prototype.getCount=function(){return this.elements_.length},t.prototype.getLeftChildIndex_=function(t){return 2*t+1},t.prototype.getRightChildIndex_=function(t){return 2*t+2},t.prototype.getParentIndex_=function(t){return t-1>>1},t.prototype.heapify_=function(){var t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)},t.prototype.isEmpty=function(){return 0===this.elements_.length},t.prototype.isKeyQueued=function(t){return t in this.queuedElements_},t.prototype.isQueued=function(t){return this.isKeyQueued(this.keyFunction_(t))},t.prototype.siftUp_=function(t){for(var e=this.elements_,i=this.priorities_,n=e.length,r=e[t],o=i[t],s=t;t>1;){var a=this.getLeftChildIndex_(t),l=this.getRightChildIndex_(t),h=lt;){var s=this.getParentIndex_(e);if(!(n[s]>o))break;i[e]=i[s],n[e]=n[s],e=s}i[e]=r,n[e]=o},t.prototype.reprioritize=function(){var t,e,i,n=this.priorityFunction_,r=this.elements_,o=this.priorities_,s=0,a=r.length;for(e=0;e0;)n=(i=this.dequeue()[0]).getKey(),i.getState()!==kr||n in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[n]=!0,++this.tilesLoading_,++r,i.load())},e}(Xr);function Nr(t,e,i){return function(n,r,o,s){if(n){var a=e?0:o[0]*r,l=e?0:o[1]*r,h=t[0]+a/2,u=t[2]-a/2,c=t[1]+l/2,p=t[3]-l/2;h>u&&(u=h=(u+h)/2),c>p&&(p=c=(p+c)/2);var f=Et(n[0],h,u),d=Et(n[1],c,p),_=30*r;return s&&i&&(f+=-_*Math.log(1+Math.max(0,h-n[0])/_)+_*Math.log(1+Math.max(0,n[0]-u)/_),d+=-_*Math.log(1+Math.max(0,c-n[1])/_)+_*Math.log(1+Math.max(0,n[1]-p)/_)),[f,d]}}}function Zr(t){return t}function Br(t,e,i,n){var r=Ee(e)/i[0],o=xe(e)/i[1];return n?Math.min(t,Math.max(r,o)):Math.min(t,Math.min(r,o))}function Vr(t,e,i){var n=Math.min(t,e);return n*=Math.log(1+50*Math.max(0,t/e-1))/50+1,i&&(n=Math.max(n,i),n/=Math.log(1+50*Math.max(0,i/t-1))/50+1),Et(n,i/2,2*e)}function Ur(t,e,i,n,r){return function(o,s,a,l){if(void 0!==o){var h=n?Br(t,n,a,r):t;return(void 0===i||i)&&l?Vr(o,h,e):Et(o,e,h)}}}function Hr(t){return void 0!==t?0:void 0}function qr(t){return void 0!==t?t:void 0}var Jr=0,Qr=1,$r="center",to="resolution",eo="rotation";function io(t,e){for(var i=!0,n=t.length-1;n>=0;--n)if(t[n]!=e[n]){i=!1;break}return i}function no(t,e){var i=Math.cos(e),n=Math.sin(e),r=t[0]*i-t[1]*n,o=t[1]*i+t[0]*n;return t[0]=r,t[1]=o,t}function ro(t,e){var i=e.getExtent();if(e.canWrapX()&&(t[0]=i[2])){var n=Ee(i),r=Math.floor((t[0]-i[0])/n);t[0]-=r*n}return t}var oo=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function so(t,e){setTimeout((function(){t(e)}),0)}function ao(t){return!(t.sourceCenter&&t.targetCenter&&!io(t.sourceCenter,t.targetCenter))&&(t.sourceResolution===t.targetResolution&&t.sourceRotation===t.targetRotation)}var lo=function(t){function e(e){var i=t.call(this)||this,n=v({},e);return i.hints_=[0,0],i.animations_=[],i.updateAnimationKey_,i.projection_=ti(n.projection,"EPSG:3857"),i.viewportSize_=[100,100],i.targetCenter_=null,i.targetResolution_,i.targetRotation_,i.cancelAnchor_=void 0,n.center&&(n.center=pi(n.center,i.projection_)),n.extent&&(n.extent=di(n.extent,i.projection_)),i.applyOptions_(n),i}return oo(e,t),e.prototype.applyOptions_=function(t){var e=function(t){var e,i,n,o=void 0!==t.minZoom?t.minZoom:0,s=void 0!==t.maxZoom?t.maxZoom:28,a=void 0!==t.zoomFactor?t.zoomFactor:2,l=void 0!==t.multiWorld&&t.multiWorld,h=void 0===t.smoothResolutionConstraint||t.smoothResolutionConstraint,u=void 0!==t.showFullExtent&&t.showFullExtent,c=ti(t.projection,"EPSG:3857"),p=c.getExtent(),f=t.constrainOnlyCenter,d=t.extent;l||d||!c.isGlobal()||(f=!1,d=p);if(void 0!==t.resolutions){var _=t.resolutions;i=_[o],n=void 0!==_[s]?_[s]:_[_.length-1],e=t.constrainResolution?function(t,e,i,n){return function(o,s,a,l){if(void 0!==o){var h=t[0],u=t[t.length-1],c=i?Br(h,i,a,n):h;if(l)return void 0===e||e?Vr(o,c,u):Et(o,u,c);var p=Math.min(c,o),f=Math.floor(r(t,p,s));return t[f]>c&&f1&&"function"==typeof arguments[i-1]&&(e=arguments[i-1],--i),!this.isDef()){var n=arguments[i-1];return n.center&&this.setCenterInternal(n.center),void 0!==n.zoom&&this.setZoom(n.zoom),void 0!==n.rotation&&this.setRotation(n.rotation),void(e&&so(e,!0))}for(var r=Date.now(),o=this.targetCenter_.slice(),s=this.targetResolution_,a=this.targetRotation_,l=[],h=0;h0},e.prototype.getInteracting=function(){return this.hints_[Qr]>0},e.prototype.cancelAnimations=function(){var t;this.setHint(Jr,-this.hints_[Jr]);for(var e=0,i=this.animations_.length;e=0;--i){for(var n=this.animations_[i],r=!0,o=0,s=n.length;o0?l/a.duration:1;h>=1?(a.complete=!0,h=1):r=!1;var u=a.easing(h);if(a.sourceCenter){var c=a.sourceCenter[0],p=a.sourceCenter[1],f=c+u*(a.targetCenter[0]-c),d=p+u*(a.targetCenter[1]-p);this.targetCenter_=[f,d]}if(a.sourceResolution&&a.targetResolution){var _=1===u?a.targetResolution:a.sourceResolution+u*(a.targetResolution-a.sourceResolution);if(a.anchor){var g=this.getViewportSize_(this.getRotation()),y=this.constraints_.resolution(_,0,g,!0);this.targetCenter_=this.calculateCenterZoom(y,a.anchor)}this.targetResolution_=_,this.applyTargetState_(!0)}if(void 0!==a.sourceRotation&&void 0!==a.targetRotation){var v=1===u?Ot(a.targetRotation+Math.PI,2*Math.PI)-Math.PI:a.sourceRotation+u*(a.targetRotation-a.sourceRotation);if(a.anchor){var m=this.constraints_.rotation(v,!0);this.targetCenter_=this.calculateCenterRotate(m,a.anchor)}this.targetRotation_=v}if(this.applyTargetState_(!0),e=!0,!a.complete)break}}if(r){this.animations_[i]=null,this.setHint(Jr,-1);var x=n[0].callback;x&&so(x,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}},e.prototype.calculateCenterRotate=function(t,e){var i,n,r,o=this.getCenterInternal();return void 0!==o&&(no(i=[o[0]-e[0],o[1]-e[1]],t-this.getRotation()),r=e,(n=i)[0]+=+r[0],n[1]+=+r[1]),i},e.prototype.calculateCenterZoom=function(t,e){var i,n=this.getCenterInternal(),r=this.getResolution();void 0!==n&&void 0!==r&&(i=[e[0]-t*(e[0]-n[0])/r,e[1]-t*(e[1]-n[1])/r]);return i},e.prototype.getViewportSize_=function(t){var e=this.viewportSize_;if(t){var i=e[0],n=e[1];return[Math.abs(i*Math.cos(t))+Math.abs(n*Math.sin(t)),Math.abs(i*Math.sin(t))+Math.abs(n*Math.cos(t))]}return e},e.prototype.setViewportSize=function(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.resolveConstraints(0)},e.prototype.getCenter=function(){var t=this.getCenterInternal();return t?ci(t,this.getProjection()):t},e.prototype.getCenterInternal=function(){return this.get($r)},e.prototype.getConstraints=function(){return this.constraints_},e.prototype.getConstrainResolution=function(){return this.options_.constrainResolution},e.prototype.getHints=function(t){return void 0!==t?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()},e.prototype.calculateExtent=function(t){return fi(this.calculateExtentInternal(t),this.getProjection())},e.prototype.calculateExtentInternal=function(t){var e=t||this.getViewportSize_(),i=this.getCenterInternal();wt(i,1);var n=this.getResolution();wt(void 0!==n,2);var r=this.getRotation();return wt(void 0!==r,3),me(i,n,r,e)},e.prototype.getMaxResolution=function(){return this.maxResolution_},e.prototype.getMinResolution=function(){return this.minResolution_},e.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.minResolution_)},e.prototype.setMaxZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))},e.prototype.getMinZoom=function(){return this.getZoomForResolution(this.maxResolution_)},e.prototype.setMinZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))},e.prototype.setConstrainResolution=function(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolution=function(){return this.get(to)},e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getResolutionForExtent=function(t,e){return this.getResolutionForExtentInternal(di(t,this.getProjection()),e)},e.prototype.getResolutionForExtentInternal=function(t,e){var i=e||this.getViewportSize_(),n=Ee(t)/i[0],r=xe(t)/i[1];return Math.max(n,r)},e.prototype.getResolutionForValueFunction=function(t){var e=t||2,i=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,r=Math.log(i/n)/Math.log(e);return function(t){return i/Math.pow(e,t*r)}},e.prototype.getRotation=function(){return this.get(eo)},e.prototype.getValueForResolutionFunction=function(t){var e=Math.log(t||2),i=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,r=Math.log(i/n)/e;return function(t){return Math.log(i/t)/e/r}},e.prototype.getState=function(){var t=this.getCenterInternal(),e=this.getProjection(),i=this.getResolution(),n=this.getRotation();return{center:t.slice(0),projection:void 0!==e?e:null,resolution:i,rotation:n,zoom:this.getZoom()}},e.prototype.getZoom=function(){var t,e=this.getResolution();return void 0!==e&&(t=this.getZoomForResolution(e)),t},e.prototype.getZoomForResolution=function(t){var e,i,n=this.minZoom_||0;if(this.resolutions_){var o=r(this.resolutions_,t,1);n=o,e=this.resolutions_[o],i=o==this.resolutions_.length-1?2:e/this.resolutions_[o+1]}else e=this.maxResolution_,i=this.zoomFactor_;return n+Math.log(e/t)/Math.log(i)},e.prototype.getResolutionForZoom=function(t){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;var e=Et(Math.floor(t),0,this.resolutions_.length-2),i=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(i,Et(t-e,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)},e.prototype.fit=function(t,e){var i,n=v({size:this.getViewportSize_()},e||{});if(wt(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))wt(!Te(t),25),i=wn(r=di(t,this.getProjection()));else if(t.getType()===zt){var r;(i=wn(r=di(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),ye(r))}else{var o=ui();i=o?t.clone().transform(o,this.getProjection()):t}this.fitInternal(i,n)},e.prototype.fitInternal=function(t,e){var i=e||{},n=i.size;n||(n=this.getViewportSize_());var r,o=void 0!==i.padding?i.padding:[0,0,0,0],s=void 0!==i.nearest&&i.nearest;r=void 0!==i.minResolution?i.minResolution:void 0!==i.maxZoom?this.getResolutionForZoom(i.maxZoom):0;for(var a=t.getFlatCoordinates(),l=this.getRotation(),h=Math.cos(-l),c=Math.sin(-l),p=1/0,f=1/0,d=-1/0,_=-1/0,g=t.getStride(),y=0,v=a.length;y=0;n--){var r=i[n];if(r.getActive())if(!r.handleEvent(t))break}}}},e.prototype.handlePostRender=function(){var t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){var i=this.maxTilesLoading_,n=i;if(t){var r=t.viewHints;if(r[Jr]||r[Qr]){var o=!et&&Date.now()-t.time>8;i=o?0:8,n=o?0:2}}e.getTilesLoading()0&&t[1]>0}(e)&&i&&i.isDef()){var o=i.getHints(this.frameState_?this.frameState_.viewHints:void 0),s=i.getState();r={animate:!1,coordinateToPixelTransform:this.coordinateToPixelTransform_,declutterItems:n?n.declutterItems:[],extent:me(s.center,s.resolution,s.rotation,e),index:this.frameIndex_++,layerIndex:0,layerStatesArray:this.getLayerGroup().getLayerStatesArray(),pixelRatio:this.pixelRatio_,pixelToCoordinateTransform:this.pixelToCoordinateTransform_,postRenderFunctions:[],size:e,tileQueue:this.tileQueue_,time:t,usedTiles:{},viewState:s,viewHints:o,wantedTiles:{}}}if(this.frameState_=r,this.renderer_.renderFrame(r),r){if(r.animate&&this.render(),Array.prototype.push.apply(this.postRenderFunctions_,r.postRenderFunctions),n)(!this.previousExtent_||!Te(this.previousExtent_)&&!le(r.extent,this.previousExtent_))&&(this.dispatchEvent(new yr(p,this,n)),this.previousExtent_=ae(this.previousExtent_));this.previousExtent_&&!r.viewHints[Jr]&&!r.viewHints[Qr]&&!le(r.extent,this.previousExtent_)&&(this.dispatchEvent(new yr(f,this,r)),$t(r.extent,this.previousExtent_))}this.dispatchEvent(new yr(c,this,r)),this.postRenderTimeoutHandle_=setTimeout(this.handlePostRender.bind(this),0)},e.prototype.setLayerGroup=function(t){this.set(Rr,t)},e.prototype.setSize=function(t){this.set(Ir,t)},e.prototype.setTarget=function(t){this.set(Or,t)},e.prototype.setView=function(t){this.set(Pr,t)},e.prototype.updateSize=function(){var t=this.getTargetElement();if(t){var e=getComputedStyle(t);this.setSize([t.offsetWidth-parseFloat(e.borderLeftWidth)-parseFloat(e.paddingLeft)-parseFloat(e.paddingRight)-parseFloat(e.borderRightWidth),t.offsetHeight-parseFloat(e.borderTopWidth)-parseFloat(e.paddingTop)-parseFloat(e.paddingBottom)-parseFloat(e.borderBottomWidth)])}else this.setSize(void 0);this.updateViewportSize_()},e.prototype.updateViewportSize_=function(){var t=this.getView();if(t){var e=void 0,i=getComputedStyle(this.viewport_);i.width&&i.height&&(e=[parseInt(i.width,10),parseInt(i.height,10)]),t.setViewportSize(e)}},e}(U),Oo=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function Po(t,e){if(!t.visible)return!1;var i=e.resolution;if(i=t.maxResolution)return!1;var n=e.zoom;return n>t.minZoom&&n<=t.maxZoom}var Mo=function(t){function e(e){var i=this,n=v({},e);delete n.source,(i=t.call(this,n)||this).mapPrecomposeKey_=null,i.mapRenderKey_=null,i.sourceChangeKey_=null,i.renderer_=null,e.render&&(i.render=e.render),e.map&&i.setMap(e.map),i.addEventListener(V(vo),i.handleSourcePropertyChange_);var r=e.source?e.source:null;return i.setSource(r),i}return Oo(e,t),e.prototype.getLayersArray=function(t){var e=t||[];return e.push(this),e},e.prototype.getLayerStatesArray=function(t){var e=t||[];return e.push(this.getLayerState()),e},e.prototype.getSource=function(){return this.get(vo)||null},e.prototype.getSourceState=function(){var t=this.getSource();return t?t.getState():So},e.prototype.handleSourceChange_=function(){this.changed()},e.prototype.handleSourcePropertyChange_=function(){this.sourceChangeKey_&&(E(this.sourceChangeKey_),this.sourceChangeKey_=null);var t=this.getSource();t&&(this.sourceChangeKey_=C(t,P,this.handleSourceChange_,this)),this.changed()},e.prototype.getFeatures=function(t){return this.renderer_.getFeatures(t)},e.prototype.render=function(t,e){var i=this.getRenderer();if(i.prepareFrame(t))return i.renderFrame(t,e)},e.prototype.setMap=function(t){this.mapPrecomposeKey_&&(E(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),t||this.changed(),this.mapRenderKey_&&(E(this.mapRenderKey_),this.mapRenderKey_=null),t&&(this.mapPrecomposeKey_=C(t,Fr,(function(t){var e=t.frameState.layerStatesArray,i=this.getLayerState(!1);wt(!e.some((function(t){return t.layer===i.layer})),67),e.push(i)}),this),this.mapRenderKey_=C(this,P,t.render,t),this.changed())},e.prototype.setSource=function(t){this.set(vo,t)},e.prototype.getRenderer=function(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_},e.prototype.hasRenderer=function(){return!!this.renderer_},e.prototype.createRenderer=function(){return null},e.prototype.disposeInternal=function(){this.setSource(null),t.prototype.disposeInternal.call(this)},e}(xo),Lo=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function Fo(t){this.updateElement_(t.frameState)}var Ao=function(t){function e(e){var i=this,n=e||{};(i=t.call(this,{element:document.createElement("div"),render:n.render||Fo,target:n.target})||this).ulElement_=document.createElement("ul"),i.collapsed_=void 0===n.collapsed||n.collapsed,i.overrideCollapsible_=void 0!==n.collapsible,i.collapsible_=void 0===n.collapsible||n.collapsible,i.collapsible_||(i.collapsed_=!1);var r=void 0!==n.className?n.className:"ol-attribution",o=void 0!==n.tipLabel?n.tipLabel:"Attributions",s=void 0!==n.collapseLabel?n.collapseLabel:"»";"string"==typeof s?(i.collapseLabel_=document.createElement("span"),i.collapseLabel_.textContent=s):i.collapseLabel_=s;var a=void 0!==n.label?n.label:"i";"string"==typeof a?(i.label_=document.createElement("span"),i.label_.textContent=a):i.label_=a;var l=i.collapsible_&&!i.collapsed_?i.collapseLabel_:i.label_,h=document.createElement("button");h.setAttribute("type","button"),h.title=o,h.appendChild(l),h.addEventListener(F,i.handleClick_.bind(i),!1);var u=r+" ol-unselectable ol-control"+(i.collapsed_&&i.collapsible_?" ol-collapsed":"")+(i.collapsible_?"":" ol-uncollapsible"),c=i.element;return c.className=u,c.appendChild(i.ulElement_),c.appendChild(h),i.renderedAttributions_=[],i.renderedVisible_=!0,i}return Lo(e,t),e.prototype.collectSourceAttributions_=function(t){for(var e={},i=[],n=t.layerStatesArray,r=0,o=n.length;r0;if(this.renderedVisible_!=i&&(this.element.style.display=i?"":"none",this.renderedVisible_=i),!a(e,this.renderedAttributions_)){lt(this.ulElement_);for(var n=0,r=e.length;n0&&this.points_[i+2]>t;)i-=3;var n=this.points_[e+2]-this.points_[i+2];if(n<1e3/60)return!1;var r=this.points_[e]-this.points_[i],o=this.points_[e+1]-this.points_[i+1];return this.angle_=Math.atan2(o,r),this.initialVelocity_=Math.sqrt(r*r+o*o)/n,this.initialVelocity_>this.minVelocity_},t.prototype.getDistance=function(){return(this.minVelocity_-this.initialVelocity_)/this.decay_},t.prototype.getAngle=function(){return this.angle_},t}(),ko="active",jo=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function Go(t,e,i,n){var r=t.getZoom();if(void 0!==r){var o=t.getConstrainedZoom(r+e),s=t.getResolutionForZoom(o);t.getAnimating()&&t.cancelAnimations(),t.animate({resolution:s,anchor:i,duration:void 0!==n?n:250,easing:_t})}}var zo=function(t){function e(e){var i=t.call(this)||this;return e.handleEvent&&(i.handleEvent=e.handleEvent),i.map_=null,i.setActive(!0),i}return jo(e,t),e.prototype.getActive=function(){return this.get(ko)},e.prototype.getMap=function(){return this.map_},e.prototype.handleEvent=function(t){return!0},e.prototype.setActive=function(t){this.set(ko,t)},e.prototype.setMap=function(t){this.map_=t},e}(U),Wo=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function Xo(t){var e=!1;if(t.type==xr.DBLCLICK){var i=t.originalEvent,n=t.map,r=t.coordinate,o=i.shiftKey?-this.delta_:this.delta_;Go(n.getView(),o,r,this.duration_),t.preventDefault(),e=!0}return!e}var Ko=function(t){function e(e){var i=t.call(this,{handleEvent:Xo})||this,n=e||{};return i.delta_=n.delta?n.delta:1,i.duration_=void 0!==n.duration?n.duration:250,i}return Wo(e,t),e}(zo),Yo=function(t){var e=t.originalEvent;return e.altKey&&!(e.metaKey||e.ctrlKey)&&e.shiftKey},No=function(t){return t.target.getTargetElement()===document.activeElement},Zo=l,Bo=function(t){var e=t.originalEvent;return 0==e.button&&!(J&&Q&&e.ctrlKey)},Vo=function(t){var e=t.originalEvent;return!e.altKey&&!(e.metaKey||e.ctrlKey)&&!e.shiftKey},Uo=function(t){var e=t.originalEvent;return!e.altKey&&!(e.metaKey||e.ctrlKey)&&e.shiftKey},Ho=function(t){var e=t.originalEvent.target.tagName;return"INPUT"!==e&&"SELECT"!==e&&"TEXTAREA"!==e},qo=function(t){var e=t.pointerEvent;return wt(void 0!==e,56),"mouse"==e.pointerType},Jo=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function Qo(t){for(var e=t.length,i=0,n=0,r=0;r0}}else if(t.type==xr.POINTERDOWN){var n=this.handleDownEvent(t);this.handlingDownUpSequence=n,e=this.stopDown(n)}else t.type==xr.POINTERMOVE&&this.handleMoveEvent(t);return!e},e.prototype.handleMoveEvent=function(t){},e.prototype.handleUpEvent=function(t){return!1},e.prototype.stopDown=function(t){return t},e.prototype.updateTrackedPointers_=function(t){if(function(t){var e=t.type;return e===xr.POINTERDOWN||e===xr.POINTERDRAG||e===xr.POINTERUP}(t)){var e=t.pointerEvent,i=e.pointerId.toString();t.type==xr.POINTERUP?delete this.trackedPointers_[i]:(t.type==xr.POINTERDOWN||i in this.trackedPointers_)&&(this.trackedPointers_[i]=e),this.targetPointers=x(this.trackedPointers_)}},e}(zo),ts=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function es(t){return Vo(t)&&function(t){var e=t.pointerEvent;return wt(void 0!==e,56),e.isPrimary&&0===e.button}(t)}var is=function(t){function e(e){var i=t.call(this,{stopDown:h})||this,n=e||{};return i.kinetic_=n.kinetic,i.lastCentroid=null,i.lastPointersCount_,i.panning_=!1,i.condition_=n.condition?n.condition:es,i.noKinetic_=!1,i}return ts(e,t),e.prototype.conditionInternal_=function(t){var e=!0;return t.map.getTargetElement().hasAttribute("tabindex")&&(e=No(t)),e&&this.condition_(t)},e.prototype.handleDragEvent=function(t){this.panning_||(this.panning_=!0,this.getMap().getView().beginInteraction());var e,i,n=this.targetPointers,r=Qo(n);if(n.length==this.lastPointersCount_){if(this.kinetic_&&this.kinetic_.update(r[0],r[1]),this.lastCentroid){var o=[this.lastCentroid[0]-r[0],r[1]-this.lastCentroid[1]],s=t.map.getView();e=o,i=s.getResolution(),e[0]*=i,e[1]*=i,no(o,s.getRotation()),s.adjustCenterInternal(o)}}else this.kinetic_&&this.kinetic_.begin();this.lastCentroid=r,this.lastPointersCount_=n.length,t.originalEvent.preventDefault()},e.prototype.handleUpEvent=function(t){var e=t.map,i=e.getView();if(0===this.targetPointers.length){if(!this.noKinetic_&&this.kinetic_&&this.kinetic_.end()){var n=this.kinetic_.getDistance(),r=this.kinetic_.getAngle(),o=i.getCenterInternal(),s=e.getPixelFromCoordinateInternal(o),a=e.getCoordinateFromPixelInternal([s[0]-n*Math.cos(r),s[1]-n*Math.sin(r)]);i.animateInternal({center:i.getConstrainedCenter(a),duration:500,easing:_t})}return this.panning_&&(this.panning_=!1,i.endInteraction()),!1}return this.kinetic_&&this.kinetic_.begin(),this.lastCentroid=null,!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>0&&this.conditionInternal_(t)){var e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1},e}($o),ns=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),rs=function(t){function e(e){var i=this,n=e||{};return(i=t.call(this,{stopDown:h})||this).condition_=n.condition?n.condition:Yo,i.lastAngle_=void 0,i.duration_=void 0!==n.duration?n.duration:250,i}return ns(e,t),e.prototype.handleDragEvent=function(t){if(qo(t)){var e=t.map,i=e.getView();if(i.getConstraints().rotation!==Hr){var n=e.getSize(),r=t.pixel,o=Math.atan2(n[1]/2-r[1],r[0]-n[0]/2);if(void 0!==this.lastAngle_){var s=o-this.lastAngle_;i.adjustRotationInternal(-s)}this.lastAngle_=o}}},e.prototype.handleUpEvent=function(t){return!qo(t)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){return!!qo(t)&&(!(!Bo(t)||!this.condition_(t))&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,!0))},e}($o),os=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ss=function(t){function e(e){var i=t.call(this)||this;return i.geometry_=null,i.element_=document.createElement("div"),i.element_.style.position="absolute",i.element_.className="ol-box "+e,i.map_=null,i.startPixel_=null,i.endPixel_=null,i}return os(e,t),e.prototype.disposeInternal=function(){this.setMap(null)},e.prototype.render_=function(){var t=this.startPixel_,e=this.endPixel_,i=this.element_.style;i.left=Math.min(t[0],e[0])+"px",i.top=Math.min(t[1],e[1])+"px",i.width=Math.abs(e[0]-t[0])+"px",i.height=Math.abs(e[1]-t[1])+"px"},e.prototype.setMap=function(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);var e=this.element_.style;e.left="inherit",e.top="inherit",e.width="inherit",e.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)},e.prototype.setPixels=function(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()},e.prototype.createOrUpdateGeometry=function(){var t=this.startPixel_,e=this.endPixel_,i=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);i[4]=i[0].slice(),this.geometry_?this.geometry_.setCoordinates([i]):this.geometry_=new Cn([i])},e.prototype.getGeometry=function(){return this.geometry_},e}(b),as=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ls="boxstart",hs="boxdrag",us="boxend",cs=function(t){function e(e,i,n){var r=t.call(this,e)||this;return r.coordinate=i,r.mapBrowserEvent=n,r}return as(e,t),e}(R),ps=function(t){function e(e){var i=t.call(this)||this,n=e||{};return i.box_=new ss(n.className||"ol-dragbox"),i.minArea_=void 0!==n.minArea?n.minArea:64,i.onBoxEnd_=n.onBoxEnd?n.onBoxEnd:u,i.startPixel_=null,i.condition_=n.condition?n.condition:Bo,i.boxEndCondition_=n.boxEndCondition?n.boxEndCondition:i.defaultBoxEndCondition,i}return as(e,t),e.prototype.defaultBoxEndCondition=function(t,e,i){var n=i[0]-e[0],r=i[1]-e[1];return n*n+r*r>=this.minArea_},e.prototype.getGeometry=function(){return this.box_.getGeometry()},e.prototype.handleDragEvent=function(t){this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new cs(hs,t.coordinate,t))},e.prototype.handleUpEvent=function(t){return this.box_.setMap(null),this.boxEndCondition_(t,this.startPixel_,t.pixel)&&(this.onBoxEnd_(t),this.dispatchEvent(new cs(us,t.coordinate,t))),!1},e.prototype.handleDownEvent=function(t){return!!this.condition_(t)&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new cs(ls,t.coordinate,t)),!0)},e}($o),fs=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function ds(){var t,e,i=this.getMap(),n=i.getView(),r=i.getSize(),o=this.getGeometry().getExtent();if(this.out_){var s=n.calculateExtentInternal(r),a=(t=[i.getPixelFromCoordinateInternal(_e(o)),i.getPixelFromCoordinateInternal(we(o))],ce(ae(e),t));!function(t,e){var i=(t[2]-t[0])/2*(e-1),n=(t[3]-t[1])/2*(e-1);t[0]-=i,t[2]+=i,t[1]-=n,t[3]+=n}(s,1/n.getResolutionForExtentInternal(a,r)),o=s}var l=n.getConstrainedResolution(n.getResolutionForExtentInternal(o,r)),h=n.getConstrainedCenter(ye(o),l);n.animateInternal({resolution:l,center:h,duration:this.duration_,easing:_t})}var _s=function(t){function e(e){var i=this,n=e||{},r=n.condition?n.condition:Uo;return(i=t.call(this,{condition:r,className:n.className||"ol-dragzoom",minArea:n.minArea,onBoxEnd:ds})||this).duration_=void 0!==n.duration?n.duration:200,i.out_=void 0!==n.out&&n.out,i}return fs(e,t),e}(ps),gs=37,ys=38,vs=39,ms=40,xs=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function Ss(t){var e=!1;if(t.type==D){var i=t.originalEvent.keyCode;if(this.condition_(t)&&(i==ms||i==gs||i==vs||i==ys)){var n=t.map.getView(),r=n.getResolution()*this.pixelDelta_,o=0,s=0;i==ms?s=-r:i==gs?o=-r:i==vs?o=r:s=r;var a=[o,s];no(a,n.getRotation()),function(t,e,i){var n=t.getCenterInternal();if(n){var r=[n[0]+e[0],n[1]+e[1]];t.animateInternal({duration:void 0!==i?i:250,easing:yt,center:t.getConstrainedCenter(r)})}}(n,a,this.duration_),t.preventDefault(),e=!0}}return!e}var Cs=function(t){function e(e){var i=t.call(this,{handleEvent:Ss})||this,n=e||{};return i.defaultCondition_=function(t){return Vo(t)&&Ho(t)},i.condition_=void 0!==n.condition?n.condition:i.defaultCondition_,i.duration_=void 0!==n.duration?n.duration:100,i.pixelDelta_=void 0!==n.pixelDelta?n.pixelDelta:128,i}return xs(e,t),e}(zo),ws=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function Es(t){var e=!1;if(t.type==D||t.type==k){var i=t.originalEvent.charCode;if(this.condition_(t)&&(i=="+".charCodeAt(0)||i=="-".charCodeAt(0))){var n=t.map,r=i=="+".charCodeAt(0)?this.delta_:-this.delta_;Go(n.getView(),r,void 0,this.duration_),t.preventDefault(),e=!0}}return!e}var bs=function(t){function e(e){var i=t.call(this,{handleEvent:Es})||this,n=e||{};return i.condition_=n.condition?n.condition:Ho,i.delta_=n.delta?n.delta:1,i.duration_=void 0!==n.duration?n.duration:100,i}return ws(e,t),e}(zo),Ts=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Rs="trackpad",Is="wheel",Os=function(t){function e(e){var i=this,n=e||{};return(i=t.call(this,n)||this).totalDelta_=0,i.lastDelta_=0,i.maxDelta_=void 0!==n.maxDelta?n.maxDelta:1,i.duration_=void 0!==n.duration?n.duration:250,i.timeout_=void 0!==n.timeout?n.timeout:80,i.useAnchor_=void 0===n.useAnchor||n.useAnchor,i.condition_=n.condition?n.condition:Zo,i.lastAnchor_=null,i.startTime_=void 0,i.timeoutId_,i.mode_=void 0,i.trackpadEventGap_=400,i.trackpadTimeoutId_,i.deltaPerZoom_=300,i}return Ts(e,t),e.prototype.conditionInternal_=function(t){var e=!0;return t.map.getTargetElement().hasAttribute("tabindex")&&(e=No(t)),e&&this.condition_(t)},e.prototype.endInteraction_=function(){this.trackpadTimeoutId_=void 0,this.getMap().getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)},e.prototype.handleEvent=function(t){if(!this.conditionInternal_(t))return!0;if(t.type!==W)return!0;t.preventDefault();var e,i=t.map,n=t.originalEvent;if(this.useAnchor_&&(this.lastAnchor_=t.coordinate),t.type==W&&(e=n.deltaY,q&&n.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(e/=$),n.deltaMode===WheelEvent.DOM_DELTA_LINE&&(e*=40)),0===e)return!1;this.lastDelta_=e;var r=Date.now();void 0===this.startTime_&&(this.startTime_=r),(!this.mode_||r-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(e)<4?Rs:Is);var o=i.getView();if(this.mode_===Rs&&!o.getConstrainResolution())return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(o.getAnimating()&&o.cancelAnimations(),o.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),o.adjustZoom(-e/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=r,!1;this.totalDelta_+=e;var s=Math.max(this.timeout_-(r-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,i),s),!1},e.prototype.handleWheelZoom_=function(t){var e=t.getView();e.getAnimating()&&e.cancelAnimations();var i=-Et(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;e.getConstrainResolution()&&(i=i?i>0?1:-1:0),Go(e,i,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0},e.prototype.setMouseAnchor=function(t){this.useAnchor_=t,t||(this.lastAnchor_=null)},e}(zo),Ps=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ms=function(t){function e(e){var i=this,n=e||{},r=n;return r.stopDown||(r.stopDown=h),(i=t.call(this,r)||this).anchor_=null,i.lastAngle_=void 0,i.rotating_=!1,i.rotationDelta_=0,i.threshold_=void 0!==n.threshold?n.threshold:.3,i.duration_=void 0!==n.duration?n.duration:250,i}return Ps(e,t),e.prototype.handleDragEvent=function(t){var e=0,i=this.targetPointers[0],n=this.targetPointers[1],r=Math.atan2(n.clientY-i.clientY,n.clientX-i.clientX);if(void 0!==this.lastAngle_){var o=r-this.lastAngle_;this.rotationDelta_+=o,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=o}this.lastAngle_=r;var s=t.map,a=s.getView();if(a.getConstraints().rotation!==Hr){var l=s.getViewport().getBoundingClientRect(),h=Qo(this.targetPointers);h[0]-=l.left,h[1]-=l.top,this.anchor_=s.getCoordinateFromPixelInternal(h),this.rotating_&&(s.render(),a.adjustRotationInternal(e,this.anchor_))}},e.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}($o),Ls=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Fs=function(t){function e(e){var i=this,n=e||{},r=n;return r.stopDown||(r.stopDown=h),(i=t.call(this,r)||this).anchor_=null,i.duration_=void 0!==n.duration?n.duration:400,i.lastDistance_=void 0,i.lastScaleDelta_=1,i}return Ls(e,t),e.prototype.handleDragEvent=function(t){var e=1,i=this.targetPointers[0],n=this.targetPointers[1],r=i.clientX-n.clientX,o=i.clientY-n.clientY,s=Math.sqrt(r*r+o*o);void 0!==this.lastDistance_&&(e=this.lastDistance_/s),this.lastDistance_=s;var a=t.map,l=a.getView();1!=e&&(this.lastScaleDelta_=e);var h=a.getViewport().getBoundingClientRect(),u=Qo(this.targetPointers);u[0]-=h.left,u[1]-=h.top,this.anchor_=a.getCoordinateFromPixelInternal(u),a.render(),l.adjustResolutionInternal(e,this.anchor_)},e.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map.getView(),i=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,i),!1}return!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}($o);var As=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ds=function(t){function e(e,i,n,r){var o=t.call(this,e)||this;return o.inversePixelTransform=i,o.frameState=n,o.context=r,o}return As(e,t),e}(R);function ks(t){return Array.isArray(t)?Zn(t):t}var js=function(){function t(){}return t.prototype.drawCustom=function(t,e,i){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,e){},t.prototype.drawFeature=function(t,e){},t.prototype.drawGeometryCollection=function(t,e){},t.prototype.drawLineString=function(t,e){},t.prototype.drawMultiLineString=function(t,e){},t.prototype.drawMultiPoint=function(t,e){},t.prototype.drawMultiPolygon=function(t,e){},t.prototype.drawPoint=function(t,e){},t.prototype.drawPolygon=function(t,e){},t.prototype.drawText=function(t,e){},t.prototype.setFillStrokeStyle=function(t,e){},t.prototype.setImageStyle=function(t,e){},t.prototype.setTextStyle=function(t,e){},t}(),Gs=[],zs=[0,0,0,0],Ws=new U;(new O).setSize=function(){console.warn("labelCache is deprecated.")};var Xs,Ks,Ys,Ns=null,Zs={},Bs=function(){var t,e,i=["monospace","serif"],n=i.length,r="wmytzilWMYTZIL@#/&?$%10";function o(t,o,s){for(var a=!0,l=0;l=0;--x){var S=g[x],C=S.layer;if(C.hasRenderer()&&Po(S,h)&&s.call(a,C)){var w=C.getRenderer(),E=C.getSource();if(w&&E){var b=E.getWrapX()?p:t,T=u.bind(null,S.managed);v[0]=b[0]+f[m][0],v[1]=b[1]+f[m][1],l=w.forEachFeatureAtCoordinate(v,e,i,T,_)}if(l)return l}}},e.prototype.forEachLayerAtPixel=function(t,e,i,n,r){return d()},e.prototype.hasFeatureAtCoordinate=function(t,e,i,n,r,o){return void 0!==this.forEachFeatureAtCoordinate(t,e,i,n,l,this,r,o)},e.prototype.getMap=function(){return this.map_},e.prototype.renderFrame=function(t){this.declutterTree_=function(t,e){e&&e.clear();for(var i=t.declutterItems,n=i.length-1;n>=0;--n)for(var r=i[n],o=r.items,s=0,a=o.length;s=0;--a){var l=s[a],h=l.layer;if(h.hasRenderer()&&Po(l,o)&&r(h)){var u=h.getRenderer().getDataAtPixel(t,e,i);if(u){var c=n(h,u);if(c)return c}}}},e}(_a),va=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ma=function(t){function e(e){return(e=v({},e)).controls||(e.controls=function(t){var e=t||{},i=new _r;return(void 0===e.zoom||e.zoom)&&i.push(new bi(e.zoomOptions)),(void 0===e.rotate||e.rotate)&&i.push(new xt(e.rotateOptions)),(void 0===e.attribution||e.attribution)&&i.push(new Ao(e.attributionOptions)),i}()),e.interactions||(e.interactions=function(t){var e=t||{},i=new _r,n=new Do(-.005,.05,100);return(void 0===e.altShiftDragRotate||e.altShiftDragRotate)&&i.push(new rs),(void 0===e.doubleClickZoom||e.doubleClickZoom)&&i.push(new Ko({delta:e.zoomDelta,duration:e.zoomDuration})),(void 0===e.dragPan||e.dragPan)&&i.push(new is({condition:e.onFocusOnly?No:void 0,kinetic:n})),(void 0===e.pinchRotate||e.pinchRotate)&&i.push(new Ms),(void 0===e.pinchZoom||e.pinchZoom)&&i.push(new Fs({duration:e.zoomDuration})),(void 0===e.keyboard||e.keyboard)&&(i.push(new Cs),i.push(new bs({delta:e.zoomDelta,duration:e.zoomDuration}))),(void 0===e.mouseWheelZoom||e.mouseWheelZoom)&&i.push(new Os({condition:e.onFocusOnly?No:void 0,duration:e.zoomDuration})),(void 0===e.shiftDragZoom||e.shiftDragZoom)&&i.push(new _s({duration:e.zoomDuration})),i}()),t.call(this,e)||this}return va(e,t),e.prototype.createRenderer=function(){return new ya(this)},e}(Io),xa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Sa=function(t){function e(e,i,n){var r=t.call(this)||this,o=n||{};return r.tileCoord=e,r.state=i,r.interimTile=null,r.hifi=!0,r.key="",r.transition_=void 0===o.transition?250:o.transition,r.transitionStarts_={},r}return xa(e,t),e.prototype.changed=function(){this.dispatchEvent(P)},e.prototype.release=function(){},e.prototype.getKey=function(){return this.key+"/"+this.tileCoord},e.prototype.getInterimTile=function(){if(!this.interimTile)return this;var t=this.interimTile;do{if(t.getState()==Gr)return this.transition_=0,t;t=t.interimTile}while(t);return this},e.prototype.refreshInterimChain=function(){if(this.interimTile){var t=this.interimTile,e=this;do{if(t.getState()==Gr){t.interimTile=null;break}t.getState()==jr?e=t:t.getState()==kr?e.interimTile=t.interimTile:e=t,t=e.interimTile}while(t)}},e.prototype.getTileCoord=function(){return this.tileCoord},e.prototype.getState=function(){return this.state},e.prototype.setState=function(t){if(this.state!==zr&&this.state>t)throw new Error("Tile load sequence violation");this.state=t,this.changed()},e.prototype.load=function(){d()},e.prototype.getAlpha=function(t,e){if(!this.transition_)return 1;var i=this.transitionStarts_[t];if(i){if(-1===i)return 1}else i=e,this.transitionStarts_[t]=i;var n=e-i+1e3/60;return n>=this.transition_?1:dt(n/this.transition_)},e.prototype.inTransition=function(t){return!!this.transition_&&-1!==this.transitionStarts_[t]},e.prototype.endTransition=function(t){this.transition_&&(this.transitionStarts_[t]=-1)},e}(O),Ca=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();var wa=function(t){function e(e,i,n,r,o,s){var a=t.call(this,e,i,s)||this;return a.crossOrigin_=r,a.src_=n,a.image_=new Image,null!==r&&(a.image_.crossOrigin=r),a.unlisten_=null,a.tileLoadFunction_=o,a}return Ca(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.getKey=function(){return this.src_},e.prototype.handleImageError_=function(){var t;this.state=zr,this.unlistenImage_(),this.image_=((t=nt(1,1)).fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas),this.changed()},e.prototype.handleImageLoad_=function(){var t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=Gr:this.state=Wr,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state==zr&&(this.state=kr,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==kr&&(this.state=jr,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=tr(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},e}(Sa),Ea=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}return t.prototype.canExpireCache=function(){return this.getCount()>this.highWaterMark},t.prototype.clear=function(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null},t.prototype.containsKey=function(t){return this.entries_.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var e=this.oldest_;e;)t(e.value_,e.key_,this),e=e.newer},t.prototype.get=function(t,e){var i=this.entries_[t];return wt(void 0!==i,15),i===this.newest_||(i===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(i.newer.older=i.older,i.older.newer=i.newer),i.newer=null,i.older=this.newest_,this.newest_.newer=i,this.newest_=i),i.value_},t.prototype.remove=function(t){var e=this.entries_[t];return wt(void 0!==e,15),e===this.newest_?(this.newest_=e.older,this.newest_&&(this.newest_.newer=null)):e===this.oldest_?(this.oldest_=e.newer,this.oldest_&&(this.oldest_.older=null)):(e.newer.older=e.older,e.older.newer=e.newer),delete this.entries_[t],--this.count_,e.value_},t.prototype.getCount=function(){return this.count_},t.prototype.getKeys=function(){var t,e=new Array(this.count_),i=0;for(t=this.newest_;t;t=t.older)e[i++]=t.key_;return e},t.prototype.getValues=function(){var t,e=new Array(this.count_),i=0;for(t=this.newest_;t;t=t.older)e[i++]=t.value_;return e},t.prototype.peekLast=function(){return this.oldest_.value_},t.prototype.peekLastKey=function(){return this.oldest_.key_},t.prototype.peekFirstKey=function(){return this.newest_.key_},t.prototype.pop=function(){var t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_},t.prototype.replace=function(t,e){this.get(t),this.entries_[t].value_=e},t.prototype.set=function(t,e){wt(!(t in this.entries_),16);var i={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=i:this.oldest_=i,this.newest_=i,this.entries_[t]=i,++this.count_},t.prototype.setSize=function(t){this.highWaterMark=t},t}();function ba(t,e,i,n){return void 0!==n?(n[0]=t,n[1]=e,n[2]=i,n):[t,e,i]}function Ta(t,e,i){return t+"/"+e+"/"+i}function Ra(t){return Ta(t[0],t[1],t[2])}var Ia=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Oa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Ia(e,t),e.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},e.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=function(t){return t.split("/").map(Number)}(this.peekFirstKey())[0];this.forEach(function(e){e.tileCoord[0]!==t&&(this.remove(Ra(e.tileCoord)),e.release())}.bind(this))}},e}(Ea);function Pa(t,e,i,n){var r=i-t,o=n-e,s=Math.sqrt(r*r+o*o);return[Math.round(i+r/s),Math.round(n+o/s)]}function Ma(t,e,i,n,r,o,s,a,l,h,u){var c=nt(Math.round(i*t),Math.round(i*e));if(0===l.length)return c.canvas;c.scale(i,i);var p=[1/0,1/0,-1/0,-1/0];l.forEach((function(t,e,i){he(p,t.extent)}));var f=Ee(p),d=xe(p),_=nt(Math.round(i*f/n),Math.round(i*d/n)),g=i/n;l.forEach((function(t,e,i){var n=t.extent[0]-p[0],r=-(t.extent[3]-p[3]),o=Ee(t.extent),s=xe(t.extent);_.drawImage(t.image,h,h,t.image.width-2*h,t.image.height-2*h,n*g,r*g,o*g,s*g)}));var y=Ce(s);return a.getTriangles().forEach((function(t,e,r){var s=t.source,a=t.target,l=s[0][0],h=s[0][1],u=s[1][0],f=s[1][1],d=s[2][0],g=s[2][1],v=(a[0][0]-y[0])/o,m=-(a[0][1]-y[1])/o,x=(a[1][0]-y[0])/o,S=-(a[1][1]-y[1])/o,C=(a[2][0]-y[0])/o,w=-(a[2][1]-y[1])/o,E=l,b=h;l=0,h=0;var T=function(t){for(var e=t.length,i=0;ir&&(r=s,n=o)}if(0===r)return null;var a=t[n];t[n]=t[i],t[i]=a;for(var l=i+1;l=0;p--){c[p]=t[p][e]/t[p][p];for(var f=p-1;f>=0;f--)t[f][e]-=t[f][p]*c[p]}return c}([[u-=E,f-=b,0,0,x-v],[d-=E,g-=b,0,0,C-v],[0,0,u,f,S-m],[0,0,d,g,w-m]]);if(T){c.save(),c.beginPath();var R=(v+x+C)/3,I=(m+S+w)/3,O=Pa(R,I,v,m),P=Pa(R,I,x,S),M=Pa(R,I,C,w);c.moveTo(P[0],P[1]),c.lineTo(O[0],O[1]),c.lineTo(M[0],M[1]),c.clip(),c.transform(T[0],T[2],T[1],T[3],v,m),c.translate(p[0]-E,p[3]-b),c.scale(n/i,-n/i),c.drawImage(_.canvas,0,0),c.restore()}})),u&&(c.save(),c.strokeStyle="black",c.lineWidth=1,a.getTriangles().forEach((function(t,e,i){var n=t.target,r=(n[0][0]-y[0])/o,s=-(n[0][1]-y[1])/o,a=(n[1][0]-y[0])/o,l=-(n[1][1]-y[1])/o,h=(n[2][0]-y[0])/o,u=-(n[2][1]-y[1])/o;c.beginPath(),c.moveTo(a,l),c.lineTo(r,s),c.lineTo(h,u),c.closePath(),c.stroke()})),c.restore()),c.canvas}var La=function(){function t(t,e,i,n,r,o){this.sourceProj_=t,this.targetProj_=e;var s={},a=ni(this.targetProj_,this.sourceProj_);this.transformInv_=function(t){var e=t[0]+"/"+t[1];return s[e]||(s[e]=a(t)),s[e]},this.maxSourceExtent_=n,this.errorThresholdSquared_=r*r,this.triangles_=[],this.wrapsXInSource_=!1,this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!n&&!!this.sourceProj_.getExtent()&&Ee(n)==Ee(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?Ee(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?Ee(this.targetProj_.getExtent()):null;var l=Ce(i),h=we(i),u=ge(i),c=_e(i),p=this.transformInv_(l),f=this.transformInv_(h),d=this.transformInv_(u),_=this.transformInv_(c),g=10+(o?Math.max(0,Math.ceil(Math.log2(de(i)/(o*o*256*256)))):0);if(this.addQuad_(l,h,u,c,p,f,d,_,g),this.wrapsXInSource_){var y=1/0;this.triangles_.forEach((function(t,e,i){y=Math.min(y,t.source[0][0],t.source[1][0],t.source[2][0])})),this.triangles_.forEach(function(t){if(Math.max(t.source[0][0],t.source[1][0],t.source[2][0])-y>this.sourceWorldWidth_/2){var e=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];e[0][0]-y>this.sourceWorldWidth_/2&&(e[0][0]-=this.sourceWorldWidth_),e[1][0]-y>this.sourceWorldWidth_/2&&(e[1][0]-=this.sourceWorldWidth_),e[2][0]-y>this.sourceWorldWidth_/2&&(e[2][0]-=this.sourceWorldWidth_);var i=Math.min(e[0][0],e[1][0],e[2][0]);Math.max(e[0][0],e[1][0],e[2][0])-i.5&&u<1,f=!1;if(l>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_)f=Ee(Jt([t,e,i,n]))/this.targetWorldWidth_>.25||f;!p&&this.sourceProj_.isGlobal()&&u&&(f=u>.25||f)}if(f||!this.maxSourceExtent_||be(h,this.maxSourceExtent_)){if(!(f||isFinite(r[0])&&isFinite(r[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(s[0])&&isFinite(s[1])&&isFinite(a[0])&&isFinite(a[1]))){if(!(l>0))return;f=!0}if(l>0){if(!f){var d=[(t[0]+i[0])/2,(t[1]+i[1])/2],_=this.transformInv_(d),g=void 0;if(p)g=(Ot(r[0],c)+Ot(s[0],c))/2-Ot(_[0],c);else g=(r[0]+s[0])/2-_[0];var y=(r[1]+s[1])/2-_[1];f=g*g+y*y>this.errorThresholdSquared_}if(f){if(Math.abs(t[0]-i[0])<=Math.abs(t[1]-i[1])){var v=[(e[0]+i[0])/2,(e[1]+i[1])/2],m=this.transformInv_(v),x=[(n[0]+t[0])/2,(n[1]+t[1])/2],S=this.transformInv_(x);this.addQuad_(t,e,v,x,r,o,m,S,l-1),this.addQuad_(x,v,i,n,S,m,s,a,l-1)}else{var C=[(t[0]+e[0])/2,(t[1]+e[1])/2],w=this.transformInv_(C),E=[(i[0]+n[0])/2,(i[1]+n[1])/2],b=this.transformInv_(E);this.addQuad_(t,C,E,n,r,w,b,a,l-1),this.addQuad_(C,e,i,E,w,o,s,b,l-1)}return}}if(p){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}this.addTriangle_(t,i,n,r,s,a),this.addTriangle_(t,e,i,r,o,s)}},t.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.triangles_.forEach((function(e,i,n){var r=e.source;ue(t,r[0]),ue(t,r[1]),ue(t,r[2])})),t},t.prototype.getTriangles=function(){return this.triangles_},t}(),Fa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Aa=function(t){function e(e,i,n,r,o,s,a,l,h,u,c){var p=t.call(this,o,kr)||this;p.renderEdges_=void 0!==c&&c,p.pixelRatio_=a,p.gutter_=l,p.canvas_=null,p.sourceTileGrid_=i,p.targetTileGrid_=r,p.wrappedTileCoord_=s||o,p.sourceTiles_=[],p.sourcesListenerKeys_=null,p.sourceZ_=0;var f=r.getTileCoordExtent(p.wrappedTileCoord_),d=p.targetTileGrid_.getExtent(),_=p.sourceTileGrid_.getExtent(),g=d?Se(f,d):f;if(0===de(g))return p.state=Wr,p;var y=e.getExtent();y&&(_=_?Se(_,y):y);var v=r.getResolution(p.wrappedTileCoord_[0]),m=function(t,e,i,n){var r=ri(i,e,t),o=Qe(e,n,i),s=e.getMetersPerUnit();void 0!==s&&(o*=s);var a=t.getMetersPerUnit();void 0!==a&&(o/=a);var l=t.getExtent();if(!l||ee(l,r)){var h=Qe(t,o,r)/o;isFinite(h)&&h>0&&(o/=h)}return o}(e,n,ye(g),v);if(!isFinite(m)||m<=0)return p.state=Wr,p;var x=void 0!==u?u:.5;if(p.triangulation_=new La(e,n,g,_,m*x,v),0===p.triangulation_.getTriangles().length)return p.state=Wr,p;p.sourceZ_=i.getZForResolution(m);var S=p.triangulation_.calculateSourceExtent();if(_&&(e.canWrapX()?(S[1]=Et(S[1],_[1],_[3]),S[3]=Et(S[3],_[1],_[3])):S=Se(S,_)),de(S)){for(var C=i.getTileRangeForExtentAndZ(S,p.sourceZ_),w=C.minX;w<=C.maxX;w++)for(var E=C.minY;E<=C.maxY;E++){var b=h(p.sourceZ_,w,E,a);b&&p.sourceTiles_.push(b)}0===p.sourceTiles_.length&&(p.state=Wr)}else p.state=Wr;return p}return Fa(e,t),e.prototype.getImage=function(){return this.canvas_},e.prototype.reproject_=function(){var t=[];if(this.sourceTiles_.forEach(function(e,i,n){e&&e.getState()==Gr&&t.push({extent:this.sourceTileGrid_.getTileCoordExtent(e.tileCoord),image:e.getImage()})}.bind(this)),this.sourceTiles_.length=0,0===t.length)this.state=zr;else{var e=this.wrappedTileCoord_[0],i=this.targetTileGrid_.getTileSize(e),n="number"==typeof i?i:i[0],r="number"==typeof i?i:i[1],o=this.targetTileGrid_.getResolution(e),s=this.sourceTileGrid_.getResolution(this.sourceZ_),a=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=Ma(n,r,this.pixelRatio_,s,this.sourceTileGrid_.getExtent(),o,a,this.triangulation_,t,this.gutter_,this.renderEdges_),this.state=Gr}this.changed()},e.prototype.load=function(){if(this.state==kr){this.state=jr,this.changed();var t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach(function(e,i,n){var r=e.getState();if(r==kr||r==jr){t++;var o=C(e,P,(function(i){var n=e.getState();n!=Gr&&n!=zr&&n!=Wr||(E(o),0===--t&&(this.unlistenSources_(),this.reproject_()))}),this);this.sourcesListenerKeys_.push(o)}}.bind(this)),this.sourceTiles_.forEach((function(t,e,i){t.getState()==kr&&t.load()})),0===t&&setTimeout(this.reproject_.bind(this),0)}},e.prototype.unlistenSources_=function(){this.sourcesListenerKeys_.forEach(E),this.sourcesListenerKeys_=null},e}(Sa);function Da(t,e){var i=/\{z\}/g,n=/\{x\}/g,r=/\{y\}/g,o=/\{-y\}/g;return function(s,a,l){return s?t.replace(i,s[0].toString()).replace(n,s[1].toString()).replace(r,s[2].toString()).replace(o,(function(){var t=s[0],i=e.getFullTileRange(t);return wt(i,55),(i.getHeight()-s[2]-1).toString()})):void 0}}function ka(t,e){for(var i=t.length,n=new Array(i),r=0;rthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function Ka(t,e,i,n,r){return void 0!==r?(r.minX=t,r.maxX=e,r.minY=i,r.maxY=n,r):new Xa(t,e,i,n)}var Ya=Xa,Na=[0,0,0],Za=function(){function t(t){var e,i,r,o;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.resolutions_=t.resolutions,wt((e=this.resolutions_,i=!0,r=function(t,e){return e-t}||n,e.every((function(t,n){if(0===n)return!0;var o=r(e[n-1],t);return!(o>0||i&&0===o)}))),17),!t.origins)for(var s=0,a=this.resolutions_.length-1;s=this.minZoom;){if(e(a,2===this.zoomFactor_?Ka(r=Math.floor(r/2),r,o=Math.floor(o/2),o,i):this.getTileRangeForExtentAndZ(s,a,i)))return!0;--a}return!1},t.prototype.getExtent=function(){return this.extent_},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this.origin_?this.origin_:this.origins_[t]},t.prototype.getResolution=function(t){return this.resolutions_[t]},t.prototype.getResolutions=function(){return this.resolutions_},t.prototype.getTileCoordChildTileRange=function(t,e,i){if(t[0]0?n:Math.max(s/a[0],o/a[1]),h=r+1,u=new Array(h),c=0;ci||i>e.getMaxZoom())return!1;var o,s=e.getExtent();return!(o=s?e.getTileRangeForExtentAndZ(s,i):e.getFullTileRange(i))||o.containsXY(n,r)}(t,n)?t:null},e.prototype.clear=function(){this.tileCache.clear()},e.prototype.refresh=function(){this.clear(),t.prototype.refresh.call(this)},e.prototype.useTile=function(t,e,i,n){},e}(Wa),Ja=function(t){function e(e,i){var n=t.call(this,e)||this;return n.tile=i,n}return Ha(e,t),e}(R),Qa=qa,$a="tileloadstart",tl="tileloadend",el="tileloaderror",il=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),nl=function(t){function e(e){var i=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,opaque:e.opaque,projection:e.projection,state:e.state,tileGrid:e.tileGrid,tilePixelRatio:e.tilePixelRatio,wrapX:e.wrapX,transition:e.transition,key:e.key,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection})||this;return i.generateTileUrlFunction_=!e.tileUrlFunction,i.tileLoadFunction=e.tileLoadFunction,i.tileUrlFunction=e.tileUrlFunction?e.tileUrlFunction.bind(i):ja,i.urls=null,e.urls?i.setUrls(e.urls):e.url&&i.setUrl(e.url),i.tileLoadingKeys_={},i}return il(e,t),e.prototype.getTileLoadFunction=function(){return this.tileLoadFunction},e.prototype.getTileUrlFunction=function(){return this.tileUrlFunction},e.prototype.getUrls=function(){return this.urls},e.prototype.handleTileChange=function(t){var e,i=t.target,n=g(i),r=i.getState();r==jr?(this.tileLoadingKeys_[n]=!0,e=$a):n in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[n],e=r==zr?el:r==Gr?tl:void 0),null!=e&&this.dispatchEvent(new Ja(e,i))},e.prototype.setTileLoadFunction=function(t){this.tileCache.clear(),this.tileLoadFunction=t,this.changed()},e.prototype.setTileUrlFunction=function(t,e){this.tileUrlFunction=t,this.tileCache.pruneExceptNewestZ(),void 0!==e?this.setKey(e):this.changed()},e.prototype.setUrl=function(t){var e=function(t){var e=[],i=/\{([a-z])-([a-z])\}/.exec(t);if(i){var n=i[1].charCodeAt(0),r=i[2].charCodeAt(0),o=void 0;for(o=n;o<=r;++o)e.push(t.replace(i[0],String.fromCharCode(o)));return e}if(i=/\{(\d+)-(\d+)\}/.exec(t)){for(var s=parseInt(i[2],10),a=parseInt(i[1],10);a<=s;a++)e.push(t.replace(i[0],a.toString()));return e}return e.push(t),e}(t);this.urls=e,this.setUrls(e)},e.prototype.setUrls=function(t){this.urls=t;var e=t.join("\n");this.generateTileUrlFunction_?this.setTileUrlFunction(ka(t,this.tileGrid),e):this.setKey(e)},e.prototype.useTile=function(t,e,i){var n=Ta(t,e,i);this.tileCache.containsKey(n)&&this.tileCache.get(n)},e}(Qa),rl=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function ol(t,e){t.getImage().src=e}var sl=function(t){function e(e){var i=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,opaque:e.opaque,projection:e.projection,state:e.state,tileGrid:e.tileGrid,tileLoadFunction:e.tileLoadFunction?e.tileLoadFunction:ol,tilePixelRatio:e.tilePixelRatio,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:e.wrapX,transition:e.transition,key:e.key,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection})||this;return i.crossOrigin=void 0!==e.crossOrigin?e.crossOrigin:null,i.tileClass=void 0!==e.tileClass?e.tileClass:wa,i.tileCacheForProjection={},i.tileGridForProjection={},i.reprojectionErrorThreshold_=e.reprojectionErrorThreshold,i.renderReprojectionEdges_=!1,i}return rl(e,t),e.prototype.canExpireCache=function(){if(this.tileCache.canExpireCache())return!0;for(var t in this.tileCacheForProjection)if(this.tileCacheForProjection[t].canExpireCache())return!0;return!1},e.prototype.expireCache=function(t,e){var i=this.getTileCacheForProjection(t);for(var n in this.tileCache.expireCache(this.tileCache==i?e:{}),this.tileCacheForProjection){var r=this.tileCacheForProjection[n];r.expireCache(r==i?e:{})}},e.prototype.getGutterForProjection=function(t){return this.getProjection()&&t&&!ei(this.getProjection(),t)?0:this.getGutter()},e.prototype.getGutter=function(){return 0},e.prototype.getOpaque=function(e){return!(this.getProjection()&&e&&!ei(this.getProjection(),e))&&t.prototype.getOpaque.call(this,e)},e.prototype.getTileGridForProjection=function(t){var e=this.getProjection();if(!this.tileGrid||e&&!ei(e,t)){var i=g(t);return i in this.tileGridForProjection||(this.tileGridForProjection[i]=Ba(t)),this.tileGridForProjection[i]}return this.tileGrid},e.prototype.getTileCacheForProjection=function(t){var e=this.getProjection();if(!e||ei(e,t))return this.tileCache;var i=g(t);return i in this.tileCacheForProjection||(this.tileCacheForProjection[i]=new Oa(this.tileCache.highWaterMark)),this.tileCacheForProjection[i]},e.prototype.createTile_=function(t,e,i,n,r,o){var s=[t,e,i],a=this.getTileCoordForTileUrlFunction(s,r),l=a?this.tileUrlFunction(a,n,r):void 0,h=new this.tileClass(s,void 0!==l?kr:Wr,void 0!==l?l:"",this.crossOrigin,this.tileLoadFunction,this.tileOptions);return h.key=o,h.addEventListener(P,this.handleTileChange.bind(this)),h},e.prototype.getTile=function(t,e,i,n,r){var o=this.getProjection();if(o&&r&&!ei(o,r)){var s=this.getTileCacheForProjection(r),a=[t,e,i],l=void 0,h=Ra(a);s.containsKey(h)&&(l=s.get(h));var u=this.getKey();if(l&&l.key==u)return l;var c=this.getTileGridForProjection(o),p=this.getTileGridForProjection(r),f=this.getTileCoordForTileUrlFunction(a,r),d=new Aa(o,c,r,p,a,f,this.getTilePixelRatio(n),this.getGutter(),function(t,e,i,n){return this.getTileInternal(t,e,i,n,o)}.bind(this),this.reprojectionErrorThreshold_,this.renderReprojectionEdges_);return d.key=u,l?(d.interimTile=l,d.refreshInterimChain(),s.replace(h,d)):s.set(h,d),d}return this.getTileInternal(t,e,i,n,o||r)},e.prototype.getTileInternal=function(t,e,i,n,r){var o=null,s=Ta(t,e,i),a=this.getKey();if(this.tileCache.containsKey(s)){if((o=this.tileCache.get(s)).key!=a){var l=o;o=this.createTile_(t,e,i,n,r,a),l.getState()==kr?o.interimTile=l.interimTile:o.interimTile=l,o.refreshInterimChain(),this.tileCache.replace(s,o)}}else o=this.createTile_(t,e,i,n,r,a),this.tileCache.set(s,o);return o},e.prototype.setRenderReprojectionEdges=function(t){if(this.renderReprojectionEdges_!=t){for(var e in this.renderReprojectionEdges_=t,this.tileCacheForProjection)this.tileCacheForProjection[e].clear();this.changed()}},e.prototype.setTileGridForProjection=function(t,e){var i=Je(t);if(i){var n=g(i);n in this.tileGridForProjection||(this.tileGridForProjection[n]=e)}},e}(nl),al=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ll=function(t){function e(e){var i=e||{},n=void 0!==i.projection?i.projection:"EPSG:3857",r=void 0!==i.tileGrid?i.tileGrid:function(t){var e=t||{},i=e.extent||Je("EPSG:3857").getExtent(),n={extent:i,minZoom:e.minZoom,tileSize:e.tileSize,resolutions:Va(i,e.maxZoom,e.tileSize,e.maxResolution)};return new Za(n)}({extent:Ua(n),maxResolution:i.maxResolution,maxZoom:i.maxZoom,minZoom:i.minZoom,tileSize:i.tileSize});return t.call(this,{attributions:i.attributions,cacheSize:i.cacheSize,crossOrigin:i.crossOrigin,opaque:i.opaque,projection:n,reprojectionErrorThreshold:i.reprojectionErrorThreshold,tileGrid:r,tileLoadFunction:i.tileLoadFunction,tilePixelRatio:i.tilePixelRatio,tileUrlFunction:i.tileUrlFunction,url:i.url,urls:i.urls,wrapX:void 0===i.wrapX||i.wrapX,transition:i.transition,attributionsCollapsible:i.attributionsCollapsible,zDirection:i.zDirection})||this}return al(e,t),e}(sl),hl=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ul=function(t){function e(e){var i,n=e||{};i=void 0!==n.attributions?n.attributions:['© OpenStreetMap contributors.'];var r=void 0!==n.crossOrigin?n.crossOrigin:"anonymous",o=void 0!==n.url?n.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";return t.call(this,{attributions:i,cacheSize:n.cacheSize,crossOrigin:r,opaque:void 0===n.opaque||n.opaque,maxZoom:void 0!==n.maxZoom?n.maxZoom:19,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileLoadFunction:n.tileLoadFunction,url:o,wrapX:n.wrapX,attributionsCollapsible:!1})||this}return hl(e,t),e}(ll),cl="bottom-left",pl="bottom-center",fl="bottom-right",dl="center-left",_l="center-center",gl="center-right",yl="top-left",vl="top-center",ml="top-right";function xl(t){return(xl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Sl=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Cl="element",wl="map",El="offset",bl="position",Tl="positioning",Rl=function(t){function e(e){var i=t.call(this)||this;i.options=e,i.id=e.id,i.insertFirst=void 0===e.insertFirst||e.insertFirst,i.stopEvent=void 0===e.stopEvent||e.stopEvent,i.element=document.createElement("div"),i.element.className=void 0!==e.className?e.className:"ol-overlay-container ol-selectable",i.element.style.position="absolute";var n=e.autoPan;return n&&"object"!==xl(n)&&(n={animation:e.autoPanAnimation,margin:e.autoPanMargin}),i.autoPan=n||!1,i.rendered={transform_:"",visible:!0},i.mapPostrenderListenerKey=null,i.addEventListener(V(Cl),i.handleElementChanged),i.addEventListener(V(wl),i.handleMapChanged),i.addEventListener(V(El),i.handleOffsetChanged),i.addEventListener(V(bl),i.handlePositionChanged),i.addEventListener(V(Tl),i.handlePositioningChanged),void 0!==e.element&&i.setElement(e.element),i.setOffset(void 0!==e.offset?e.offset:[0,0]),i.setPositioning(void 0!==e.positioning?e.positioning:yl),void 0!==e.position&&i.setPosition(e.position),i}return Sl(e,t),e.prototype.getElement=function(){return this.get(Cl)},e.prototype.getId=function(){return this.id},e.prototype.getMap=function(){return this.get(wl)},e.prototype.getOffset=function(){return this.get(El)},e.prototype.getPosition=function(){return this.get(bl)},e.prototype.getPositioning=function(){return this.get(Tl)},e.prototype.handleElementChanged=function(){lt(this.element);var t=this.getElement();t&&this.element.appendChild(t)},e.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(at(this.element),E(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=C(t,c,this.render,this),this.updatePixelPosition();var e=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?e.insertBefore(this.element,e.childNodes[0]||null):e.appendChild(this.element),this.performAutoPan()}},e.prototype.render=function(){this.updatePixelPosition()},e.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},e.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},e.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},e.prototype.setElement=function(t){this.set(Cl,t)},e.prototype.setMap=function(t){this.set(wl,t)},e.prototype.setOffset=function(t){this.set(El,t)},e.prototype.setPosition=function(t){this.set(bl,t)},e.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},e.prototype.panIntoView=function(t){var e=this.getMap();if(e&&e.getTargetElement()&&this.get(bl)){var i=this.getRect(e.getTargetElement(),e.getSize()),n=this.getElement(),r=this.getRect(n,[rt(n),ot(n)]),o=void 0===t.margin?20:t.margin;if(!ie(i,r)){var s=r[0]-i[0],a=i[2]-r[2],l=r[1]-i[1],h=i[3]-r[3],u=[0,0];if(s<0?u[0]=s-o:a<0&&(u[0]=Math.abs(a)+o),l<0?u[1]=l-o:h<0&&(u[1]=Math.abs(h)+o),0!==u[0]||0!==u[1]){var c=e.getView().getCenterInternal(),p=e.getPixelFromCoordinateInternal(c),f=[p[0]+u[0],p[1]+u[1]],d=t.animation||{};e.getView().animateInternal({center:e.getCoordinateFromPixelInternal(f),duration:d.duration,easing:d.easing})}}}},e.prototype.getRect=function(t,e){var i=t.getBoundingClientRect(),n=i.left+window.pageXOffset,r=i.top+window.pageYOffset;return[n,r,n+e[0],r+e[1]]},e.prototype.setPositioning=function(t){this.set(Tl,t)},e.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},e.prototype.updatePixelPosition=function(){var t=this.getMap(),e=this.getPosition();if(t&&t.isRendered()&&e){var i=t.getPixelFromCoordinate(e),n=t.getSize();this.updateRenderedPosition(i,n)}else this.setVisible(!1)},e.prototype.updateRenderedPosition=function(t,e){var i=this.element.style,n=this.getOffset(),r=this.getPositioning();this.setVisible(!0);var o=Math.round(t[0]+n[0])+"px",s=Math.round(t[1]+n[1])+"px",a="0%",l="0%";r==fl||r==gl||r==ml?a="-100%":r!=pl&&r!=_l&&r!=vl||(a="-50%"),r==cl||r==pl||r==fl?l="-100%":r!=dl&&r!=_l&&r!=gl||(l="-50%");var h="translate("+a+", "+l+") translate("+o+", "+s+")";this.rendered.transform_!=h&&(this.rendered.transform_=h,i.transform=h,i.msTransform=h)},e.prototype.getOptions=function(){return this.options},e}(U),Il=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null,this.lineCap_=e.lineCap,this.lineDash_=void 0!==e.lineDash?e.lineDash:null,this.lineDashOffset_=e.lineDashOffset,this.lineJoin_=e.lineJoin,this.miterLimit_=e.miterLimit,this.width_=e.width}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.color_},t.prototype.getLineCap=function(){return this.lineCap_},t.prototype.getLineDash=function(){return this.lineDash_},t.prototype.getLineDashOffset=function(){return this.lineDashOffset_},t.prototype.getLineJoin=function(){return this.lineJoin_},t.prototype.getMiterLimit=function(){return this.miterLimit_},t.prototype.getWidth=function(){return this.width_},t.prototype.setColor=function(t){this.color_=t},t.prototype.setLineCap=function(t){this.lineCap_=t},t.prototype.setLineDash=function(t){this.lineDash_=t},t.prototype.setLineDashOffset=function(t){this.lineDashOffset_=t},t.prototype.setLineJoin=function(t){this.lineJoin_=t},t.prototype.setMiterLimit=function(t){this.miterLimit_=t},t.prototype.setWidth=function(t){this.width_=t},t}(),Ol=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Pl=function(t){function e(e){var i=this,n=void 0!==e.rotateWithView&&e.rotateWithView;return(i=t.call(this,{opacity:1,rotateWithView:n,rotation:void 0!==e.rotation?e.rotation:0,scale:1,displacement:void 0!==e.displacement?e.displacement:[0,0]})||this).canvas_=null,i.hitDetectionCanvas_=null,i.fill_=void 0!==e.fill?e.fill:null,i.origin_=[0,0],i.points_=e.points,i.radius_=void 0!==e.radius?e.radius:e.radius1,i.radius2_=e.radius2,i.angle_=void 0!==e.angle?e.angle:0,i.stroke_=void 0!==e.stroke?e.stroke:null,i.anchor_=null,i.size_=null,i.imageSize_=null,i.hitDetectionImageSize_=null,i.render(),i}return Ol(e,t),e.prototype.clone=function(){var t=new e({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(),displacement:this.getDisplacement().slice()});return t.setOpacity(this.getOpacity()),t.setScale(this.getScale()),t},e.prototype.getAnchor=function(){return this.anchor_},e.prototype.getAngle=function(){return this.angle_},e.prototype.getFill=function(){return this.fill_},e.prototype.getHitDetectionImage=function(t){return this.hitDetectionCanvas_},e.prototype.getImage=function(t){return this.canvas_},e.prototype.getImageSize=function(){return this.imageSize_},e.prototype.getHitDetectionImageSize=function(){return this.hitDetectionImageSize_},e.prototype.getImageState=function(){return Dn},e.prototype.getOrigin=function(){return this.origin_},e.prototype.getPoints=function(){return this.points_},e.prototype.getRadius=function(){return this.radius_},e.prototype.getRadius2=function(){return this.radius2_},e.prototype.getSize=function(){return this.size_},e.prototype.getStroke=function(){return this.stroke_},e.prototype.listenImageChange=function(t){},e.prototype.load=function(){},e.prototype.unlistenImageChange=function(t){},e.prototype.render=function(){var t,e="round",i="round",n=0,r=null,o=0,s=0;this.stroke_&&(null===(t=this.stroke_.getColor())&&(t="#000"),t=ks(t),void 0===(s=this.stroke_.getWidth())&&(s=1),r=this.stroke_.getLineDash(),o=this.stroke_.getLineDashOffset(),void 0===(i=this.stroke_.getLineJoin())&&(i="round"),void 0===(e=this.stroke_.getLineCap())&&(e="round"),void 0===(n=this.stroke_.getMiterLimit())&&(n=10));var a=2*(this.radius_+s)+1,l={strokeStyle:t,strokeWidth:s,size:a,lineCap:e,lineDash:r,lineDashOffset:o,lineJoin:i,miterLimit:n},h=nt(a,a);this.canvas_=h.canvas;var u=a=this.canvas_.width,c=this.getDisplacement();this.draw_(l,h,0,0),this.createHitDetectionCanvas_(l),this.anchor_=[a/2-c[0],a/2+c[1]],this.size_=[a,a],this.imageSize_=[u,u]},e.prototype.draw_=function(t,e,i,n){var r,o,s;e.setTransform(1,0,0,1,0,0),e.translate(i,n),e.beginPath();var a=this.points_;if(a===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var l=void 0!==this.radius2_?this.radius2_:this.radius_;for(l!==this.radius_&&(a*=2),r=0;r<=a;r++)o=2*r*Math.PI/a-Math.PI/2+this.angle_,s=r%2==0?this.radius_:l,e.lineTo(t.size/2+s*Math.cos(o),t.size/2+s*Math.sin(o))}if(this.fill_){var h=this.fill_.getColor();null===h&&(h="#000"),e.fillStyle=ks(h),e.fill()}this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,e.setLineDash&&t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.lineCap=t.lineCap,e.lineJoin=t.lineJoin,e.miterLimit=t.miterLimit,e.stroke()),e.closePath()},e.prototype.createHitDetectionCanvas_=function(t){if(this.hitDetectionImageSize_=[t.size,t.size],this.hitDetectionCanvas_=this.canvas_,this.fill_){var e=this.fill_.getColor(),i=0;if("string"==typeof e&&(e=Yn(e)),null===e?i=1:Array.isArray(e)&&(i=4===e.length?e[3]:1),0===i){var n=nt(t.size,t.size);this.hitDetectionCanvas_=n.canvas,this.drawHitDetectionCanvas_(t,n,0,0)}}},e.prototype.drawHitDetectionCanvas_=function(t,e,i,n){e.setTransform(1,0,0,1,0,0),e.translate(i,n),e.beginPath();var r=this.points_;if(r===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var o=void 0!==this.radius2_?this.radius2_:this.radius_;o!==this.radius_&&(r*=2);var s=void 0,a=void 0,l=void 0;for(s=0;s<=r;s++)l=2*s*Math.PI/r-Math.PI/2+this.angle_,a=s%2==0?this.radius_:o,e.lineTo(t.size/2+a*Math.cos(l),t.size/2+a*Math.sin(l))}e.fillStyle="#000",e.fill(),this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.stroke()),e.closePath()},e}(ar),Ml=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ll=function(t){function e(e){var i=e||{};return t.call(this,{points:1/0,fill:i.fill,radius:i.radius,stroke:i.stroke,displacement:void 0!==i.displacement?i.displacement:[0,0]})||this}return Ml(e,t),e.prototype.clone=function(){var t=new e({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),displacement:this.getDisplacement().slice()});return t.setOpacity(this.getOpacity()),t.setScale(this.getScale()),t},e.prototype.setRadius=function(t){this.radius_=t,this.render()},e}(Pl),Fl=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0})},t.prototype.getColor=function(){return this.color_},t.prototype.setColor=function(t){this.color_=t},t}();function Al(t){return(Al="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Dl=function(){function t(t){var e=t||{};this.geometry_=null,this.geometryFunction_=Gl,void 0!==e.geometry&&this.setGeometry(e.geometry),this.fill_=void 0!==e.fill?e.fill:null,this.image_=void 0!==e.image?e.image:null,this.renderer_=void 0!==e.renderer?e.renderer:null,this.stroke_=void 0!==e.stroke?e.stroke:null,this.text_=void 0!==e.text?e.text:null,this.zIndex_=e.zIndex}return t.prototype.clone=function(){var e=this.getGeometry();return e&&"object"===Al(e)&&(e=e.clone()),new t({geometry:e,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})},t.prototype.getRenderer=function(){return this.renderer_},t.prototype.setRenderer=function(t){this.renderer_=t},t.prototype.getGeometry=function(){return this.geometry_},t.prototype.getGeometryFunction=function(){return this.geometryFunction_},t.prototype.getFill=function(){return this.fill_},t.prototype.setFill=function(t){this.fill_=t},t.prototype.getImage=function(){return this.image_},t.prototype.setImage=function(t){this.image_=t},t.prototype.getStroke=function(){return this.stroke_},t.prototype.setStroke=function(t){this.stroke_=t},t.prototype.getText=function(){return this.text_},t.prototype.setText=function(t){this.text_=t},t.prototype.getZIndex=function(){return this.zIndex_},t.prototype.setGeometry=function(t){"function"==typeof t?this.geometryFunction_=t:"string"==typeof t?this.geometryFunction_=function(e){return e.get(t)}:t?void 0!==t&&(this.geometryFunction_=function(){return t}):this.geometryFunction_=Gl,this.geometry_=t},t.prototype.setZIndex=function(t){this.zIndex_=t},t}();var kl=null;function jl(t,e){if(!kl){var i=new Fl({color:"rgba(255,255,255,0.4)"}),n=new Il({color:"#3399CC",width:1.25});kl=[new Dl({image:new Ll({fill:i,stroke:n,radius:5}),fill:i,stroke:n})]}return kl}function Gl(t){return t.getGeometry()}var zl=Dl,Wl="preload",Xl="useInterimTilesOnError",Kl=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Yl=function(t){function e(e){var i=this,n=e||{},r=v({},n);return delete r.preload,delete r.useInterimTilesOnError,(i=t.call(this,r)||this).setPreload(void 0!==n.preload?n.preload:0),i.setUseInterimTilesOnError(void 0===n.useInterimTilesOnError||n.useInterimTilesOnError),i}return Kl(e,t),e.prototype.getPreload=function(){return this.get(Wl)},e.prototype.setPreload=function(t){this.set(Wl,t)},e.prototype.getUseInterimTilesOnError=function(){return this.get(Xl)},e.prototype.setUseInterimTilesOnError=function(t){this.set(Xl,t)},e}(Mo),Nl=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Zl=function(t){function e(e){var i=t.call(this)||this;return i.boundHandleImageChange_=i.handleImageChange_.bind(i),i.layer_=e,i}return Nl(e,t),e.prototype.getFeatures=function(t){return d()},e.prototype.prepareFrame=function(t){return d()},e.prototype.renderFrame=function(t,e){return d()},e.prototype.loadedTileCallback=function(t,e,i){t[e]||(t[e]={}),t[e][i.tileCoord.toString()]=i},e.prototype.createLoadedTileFinder=function(t,e,i){return function(n,r){var o=this.loadedTileCallback.bind(this,i,n);return t.forEachLoadedTile(e,n,r,o)}.bind(this)},e.prototype.forEachFeatureAtCoordinate=function(t,e,i,n,r){},e.prototype.getDataAtPixel=function(t,e,i){return d()},e.prototype.getLayer=function(){return this.layer_},e.prototype.handleFontsChanged=function(){},e.prototype.handleImageChange_=function(t){t.target.getState()===Dn&&this.renderIfReadyAndVisible()},e.prototype.loadImage=function(t){var e=t.getState();return e!=Dn&&e!=kn&&t.addEventListener(P,this.boundHandleImageChange_),e==Fn&&(t.load(),e=t.getState()),e==Dn},e.prototype.renderIfReadyAndVisible=function(){var t=this.getLayer();t.getVisible()&&t.getSourceState()==Co&&t.changed()},e}(K),Bl=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Vl=function(t){function e(e){var i=t.call(this,e)||this;return i.container=null,i.renderedResolution,i.tempTransform_=[1,0,0,1,0,0],i.pixelTransform=[1,0,0,1,0,0],i.inversePixelTransform=[1,0,0,1,0,0],i.context=null,i.containerReused=!1,i}return Bl(e,t),e.prototype.useContainer=function(t,e,i){var n,r,o=this.getLayer().getClassName();t&&""===t.style.opacity&&t.className===o&&((a=t.firstElementChild)instanceof HTMLCanvasElement&&(r=a.getContext("2d")));if(r&&r.canvas.style.transform===e?(this.container=t,this.context=r,this.containerReused=!0):this.containerReused&&(this.container=null,this.context=null,this.containerReused=!1),!this.container){(n=document.createElement("div")).className=o;var s=n.style;s.position="absolute",s.width="100%",s.height="100%";var a=(r=nt()).canvas;n.appendChild(a),(s=a.style).position="absolute",s.left="0",s.transformOrigin="top left",this.container=n,this.context=r}},e.prototype.clip=function(t,e,i){var n=e.pixelRatio,r=e.size[0]*n/2,o=e.size[1]*n/2,s=e.viewState.rotation,a=Ce(i),l=we(i),h=ge(i),u=_e(i);Li(e.coordinateToPixelTransform,a),Li(e.coordinateToPixelTransform,l),Li(e.coordinateToPixelTransform,h),Li(e.coordinateToPixelTransform,u),t.save(),Js(t,-s,r,o),t.beginPath(),t.moveTo(a[0]*n,a[1]*n),t.lineTo(l[0]*n,l[1]*n),t.lineTo(h[0]*n,h[1]*n),t.lineTo(u[0]*n,u[1]*n),t.clip(),Js(t,s,r,o)},e.prototype.clipUnrotated=function(t,e,i){var n=Ce(i),r=we(i),o=ge(i),s=_e(i);Li(e.coordinateToPixelTransform,n),Li(e.coordinateToPixelTransform,r),Li(e.coordinateToPixelTransform,o),Li(e.coordinateToPixelTransform,s);var a=this.inversePixelTransform;Li(a,n),Li(a,r),Li(a,o),Li(a,s),t.save(),t.beginPath(),t.moveTo(Math.round(n[0]),Math.round(n[1])),t.lineTo(Math.round(r[0]),Math.round(r[1])),t.lineTo(Math.round(o[0]),Math.round(o[1])),t.lineTo(Math.round(s[0]),Math.round(s[1])),t.clip()},e.prototype.dispatchRenderEvent_=function(t,e,i){var n=this.getLayer();if(n.hasListener(t)){var r=new Ds(t,this.inversePixelTransform,i,e);n.dispatchEvent(r)}},e.prototype.preRender=function(t,e){this.dispatchRenderEvent_(Mr,t,e)},e.prototype.postRender=function(t,e){this.dispatchRenderEvent_(Lr,t,e)},e.prototype.getRenderTransform=function(t,e,i,n,r,o,s){var a=r/2,l=o/2,h=n/e,u=-h,c=-t[0]+s,p=-t[1];return Fi(this.tempTransform_,a,l,h,u,-i,c,p)},e.prototype.getDataAtPixel=function(t,e,i){var n,r=Li(this.inversePixelTransform,t.slice()),o=this.context;try{n=o.getImageData(Math.round(r[0]),Math.round(r[1]),1,1).data}catch(t){return"SecurityError"===t.name?new Uint8Array:n}return 0===n[3]?null:n},e}(Zl),Ul=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Hl=function(t){function e(e){var i=t.call(this,e)||this;return i.extentChanged=!0,i.renderedExtent_=null,i.renderedPixelRatio,i.renderedProjection=null,i.renderedRevision,i.renderedTiles=[],i.newTiles_=!1,i.tmpExtent=[1/0,1/0,-1/0,-1/0],i.tmpTileRange_=new Ya(0,0,0,0),i}return Ul(e,t),e.prototype.isDrawableTile=function(t){var e=this.getLayer(),i=t.getState(),n=e.getUseInterimTilesOnError();return i==Gr||i==Wr||i==zr&&!n},e.prototype.getTile=function(t,e,i,n){var r=n.pixelRatio,o=n.viewState.projection,s=this.getLayer(),a=s.getSource().getTile(t,e,i,r,o);return a.getState()==zr&&(s.getUseInterimTilesOnError()?s.getPreload()>0&&(this.newTiles_=!0):a.setState(Gr)),this.isDrawableTile(a)||(a=a.getInterimTile()),a},e.prototype.loadedTileCallback=function(e,i,n){return!!this.isDrawableTile(n)&&t.prototype.loadedTileCallback.call(this,e,i,n)},e.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},e.prototype.renderFrame=function(t,e){var i=t.layerStatesArray[t.layerIndex],r=t.viewState,o=r.projection,s=r.resolution,a=r.center,l=r.rotation,h=t.pixelRatio,u=this.getLayer(),c=u.getSource(),p=c.getRevision(),f=c.getTileGridForProjection(o),d=f.getZForResolution(s,c.zDirection),_=f.getResolution(d),y=t.extent,v=i.extent&&di(i.extent,o);v&&(y=Se(y,di(i.extent,o)));var m=c.getTilePixelRatio(h),x=Math.round(t.size[0]*m),S=Math.round(t.size[1]*m);if(l){var C=Math.round(Math.sqrt(x*x+S*S));x=C,S=C}var w=_*x/2/m,E=_*S/2/m,b=[a[0]-w,a[1]-E,a[0]+w,a[1]+E],T=f.getTileRangeForExtentAndZ(y,d),R={};R[d]={};var I=this.createLoadedTileFinder(c,o,R),O=this.tmpExtent,P=this.tmpTileRange_;this.newTiles_=!1;for(var M=T.minX;M<=T.maxX;++M)for(var L=T.minY;L<=T.maxY;++L){var F=this.getTile(d,M,L,t);if(this.isDrawableTile(F)){var A=g(this);if(F.getState()==Gr){R[d][F.tileCoord.toString()]=F;var D=F.inTransition(A);this.newTiles_||!D&&-1!==this.renderedTiles.indexOf(F)||(this.newTiles_=!0)}if(1===F.getAlpha(A,t.time))continue}var k=f.getTileCoordChildTileRange(F.tileCoord,P,O),j=!1;k&&(j=I(d+1,k)),j||f.forEachTileCoordParentTileRange(F.tileCoord,I,P,O)}var G=_/s;Fi(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/m,1/m,l,-x/2,-S/2);var z,W=(z=this.pixelTransform,tt?Di(z):($s||($s=nt(1,1).canvas),$s.style.transform=Di(z),$s.style.transform));this.useContainer(e,W,i.opacity);var X=this.context,K=X.canvas;Ai(this.inversePixelTransform,this.pixelTransform),Fi(this.tempTransform_,x/2,S/2,G,G,0,-x/2,-S/2),K.width!=x||K.height!=S?(K.width=x,K.height=S):this.containerReused||X.clearRect(0,0,x,S),v&&this.clipUnrotated(X,t,v),this.preRender(X,t),this.renderedTiles.length=0;var Y,N,Z,B=Object.keys(R).map(Number);B.sort(n),1!==i.opacity||this.containerReused&&!c.getOpaque(t.viewState.projection)?(Y=[],N=[]):B=B.reverse();for(var V=B.length-1;V>=0;--V){var U=B[V],H=c.getTilePixelSize(U,h,o),q=f.getResolution(U)/_,J=H[0]*q*G,Q=H[1]*q*G,$=f.getTileCoordForCoordAndZ(Ce(b),U),et=f.getTileCoordExtent($),it=Li(this.tempTransform_,[m*(et[0]-b[0])/_,m*(b[3]-et[3])/_]),rt=m*c.getGutterForProjection(o),ot=R[U];for(var st in ot){var at=(F=ot[st]).tileCoord,lt=it[0]-($[1]-at[1])*J,ht=Math.round(lt+J),ut=it[1]-($[2]-at[2])*Q,ct=Math.round(ut+Q),pt=ht-(M=Math.round(lt)),ft=ct-(L=Math.round(ut)),dt=d===U;if(!(D=dt&&1!==F.getAlpha(g(this),t.time)))if(Y){X.save(),Z=[M,L,M+pt,L,M+pt,L+ft,M,L+ft];for(var _t=0,gt=Y.length;_t=200&&a.status<300){var o=e.getType(),l=void 0;o==th||o==eh?l=a.responseText:o==ih?(l=a.responseXML)||(l=(new DOMParser).parseFromString(a.responseText,"application/xml")):o==$l&&(l=a.response),l?i.call(this,e.readFeatures(l,{extent:r,featureProjection:s}),e.readProjection(l)):n.call(this)}else n.call(this)}.bind(this),a.onerror=function(){n.call(this)}.bind(this),a.send()}}(t,e,(function(t,e){"function"==typeof this.addFeatures&&this.addFeatures(t)}),u)}function oh(t,e){return[[-1/0,-1/0,1/0,1/0]]}var sh="addfeature",ah="changefeature",lh="clear",hh="removefeature",uh=i(394),ch=i.n(uh),ph=function(){function t(t){this.rbush_=new ch.a(t),this.items_={}}return t.prototype.insert=function(t,e){var i={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:e};this.rbush_.insert(i),this.items_[g(e)]=i},t.prototype.load=function(t,e){for(var i=new Array(e.length),n=0,r=e.length;nthis.maxLineWidth&&(this.maxLineWidth=i.lineWidth,this.bufferedMaxExtent_=null)}else i.strokeStyle=void 0,i.lineCap=void 0,i.lineDash=null,i.lineDashOffset=void 0,i.lineJoin=void 0,i.lineWidth=void 0,i.miterLimit=void 0},e.prototype.createFill=function(t){var e=t.fillStyle,i=[Eh.SET_FILL_STYLE,e];return"string"!=typeof e&&i.push(!0),i},e.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},e.prototype.createStroke=function(t){return[Eh.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},e.prototype.updateFillStyle=function(t,e){var i=t.fillStyle;"string"==typeof i&&t.currentFillStyle==i||(void 0!==i&&this.instructions.push(e.call(this,t)),t.currentFillStyle=i)},e.prototype.updateStrokeStyle=function(t,e){var i=t.strokeStyle,n=t.lineCap,r=t.lineDash,o=t.lineDashOffset,s=t.lineJoin,l=t.lineWidth,h=t.miterLimit;(t.currentStrokeStyle!=i||t.currentLineCap!=n||r!=t.currentLineDash&&!a(t.currentLineDash,r)||t.currentLineDashOffset!=o||t.currentLineJoin!=s||t.currentLineWidth!=l||t.currentMiterLimit!=h)&&(void 0!==i&&e.call(this,t),t.currentStrokeStyle=i,t.currentLineCap=n,t.currentLineDash=r,t.currentLineDashOffset=o,t.currentLineJoin=s,t.currentLineWidth=l,t.currentMiterLimit=h)},e.prototype.endGeometry=function(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;var e=[Eh.END_GEOMETRY,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)},e.prototype.getBufferedMaxExtent=function(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=$t(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;Qt(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_},e}(js),Rh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ih=function(t){function e(e,i,n,r){var o=t.call(this,e,i,n,r)||this;return o.declutterGroups_=null,o.hitDetectionImage_=null,o.image_=null,o.anchorX_=void 0,o.anchorY_=void 0,o.height_=void 0,o.opacity_=void 0,o.originX_=void 0,o.originY_=void 0,o.rotateWithView_=void 0,o.rotation_=void 0,o.scale_=void 0,o.width_=void 0,o}return Rh(e,t),e.prototype.drawCoordinates_=function(t,e,i,n){return this.appendFlatCoordinates(t,e,i,n,!1,!1)},e.prototype.drawPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var i=t.getFlatCoordinates(),n=t.getStride(),r=this.coordinates.length,o=this.drawCoordinates_(i,0,i.length,n);this.instructions.push([Eh.DRAW_IMAGE,r,o,this.image_,this.anchorX_,this.anchorY_,this.declutterGroups_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_*this.pixelRatio,this.width_]),this.hitDetectionInstructions.push([Eh.DRAW_IMAGE,r,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.declutterGroups_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_]),this.endGeometry(e)}},e.prototype.drawMultiPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var i=t.getFlatCoordinates(),n=t.getStride(),r=this.coordinates.length,o=this.drawCoordinates_(i,0,i.length,n);this.instructions.push([Eh.DRAW_IMAGE,r,o,this.image_,this.anchorX_,this.anchorY_,this.declutterGroups_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_*this.pixelRatio,this.width_]),this.hitDetectionInstructions.push([Eh.DRAW_IMAGE,r,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.declutterGroups_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_]),this.endGeometry(e)}},e.prototype.finish=function(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,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,t.prototype.finish.call(this)},e.prototype.setImageStyle=function(t,e){var i=t.getAnchor(),n=t.getSize(),r=t.getHitDetectionImage(1),o=t.getImage(1),s=t.getOrigin();this.anchorX_=i[0],this.anchorY_=i[1],this.declutterGroups_=e,this.hitDetectionImage_=r,this.image_=o,this.height_=n[1],this.opacity_=t.getOpacity(),this.originX_=s[0],this.originY_=s[1],this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScale(),this.width_=n[0]},e}(Th),Oh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ph=function(t){function e(e,i,n,r){return t.call(this,e,i,n,r)||this}return Oh(e,t),e.prototype.drawFlatCoordinates_=function(t,e,i,n){var r=this.coordinates.length,o=this.appendFlatCoordinates(t,e,i,n,!1,!1),s=[Eh.MOVE_TO_LINE_TO,r,o];return this.instructions.push(s),this.hitDetectionInstructions.push(s),i},e.prototype.drawLineString=function(t,e){var i=this.state,n=i.strokeStyle,r=i.lineWidth;if(void 0!==n&&void 0!==r){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Eh.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset],Ch);var o=t.getFlatCoordinates(),s=t.getStride();this.drawFlatCoordinates_(o,0,o.length,s),this.hitDetectionInstructions.push(Sh),this.endGeometry(e)}},e.prototype.drawMultiLineString=function(t,e){var i=this.state,n=i.strokeStyle,r=i.lineWidth;if(void 0!==n&&void 0!==r){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Eh.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset],Ch);for(var o=t.getEnds(),s=t.getFlatCoordinates(),a=t.getStride(),l=0,h=0,u=o.length;ht&&(y>g&&(g=y,d=v,_=o),y=0,v=o-r)),s=a,u=p,c=f),l=m,h=x}return(y+=a)>g?[v,o]:[d,_]}var Ah="line",Dh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),kh={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},jh={Circle:Lh,Default:Th,Image:Ih,LineString:Ph,Polygon:Lh,Text:function(t){function e(e,i,n,r){var o=t.call(this,e,i,n,r)||this;return o.declutterGroups_,o.labels_=null,o.text_="",o.textOffsetX_=0,o.textOffsetY_=0,o.textRotateWithView_=void 0,o.textRotation_=0,o.textFillState_=null,o.fillStates={},o.textStrokeState_=null,o.strokeStates={},o.textState_={},o.textStates={},o.textKey_="",o.fillKey_="",o.strokeKey_="",o}return Dh(e,t),e.prototype.finish=function(){var e=t.prototype.finish.call(this);return e.textStates=this.textStates,e.fillStates=this.fillStates,e.strokeStates=this.strokeStates,e},e.prototype.drawText=function(t,e){var i=this.textFillState_,n=this.textStrokeState_,r=this.textState_;if(""!==this.text_&&r&&(i||n)){var o,s,a=this.coordinates.length,l=t.getType(),h=null,u=2,c=2;if(r.placement===Ah){if(!be(this.getBufferedMaxExtent(),t.getExtent()))return;var p=void 0;if(h=t.getFlatCoordinates(),c=t.getStride(),l==Lt)p=[h.length];else if(l==kt)p=t.getEnds();else if(l==At)p=t.getEnds().slice(0,1);else if(l==jt){var f=t.getEndss();for(p=[],o=0,s=f.length;ot[i-n],_=r.length,g=t[e],y=t[e+1],v=t[e+=n],m=t[e+1],x=0,S=Math.sqrt(Math.pow(v-g,2)+Math.pow(m-y,2)),C=!1,w=0;w<_;++w){for(var E=r[c=d?_-w-1:w],b=a*l(h,E,u),T=o+b/2;e0?-Math.PI:Math.PI),void 0!==p){var O=I-p;if(C=C||0!==O,O+=O>Math.PI?-2*Math.PI:O<-Math.PI?2*Math.PI:0,Math.abs(O)>s)return null}p=I;var P=R/S,M=Pt(g,v,P),L=Pt(y,m,P);f[c]=[M,L,b/2,I,E],o+=b}return C?f:[[f[0][0],f[0][1],f[0][2],f[0][3],r]]}var Wh=[1/0,1/0,-1/0,-1/0],Xh=[1,0,0,1,0,0],Kh=[],Yh=[],Nh=[],Zh=[],Bh=function(){function t(t,e,i,n){this.overlaps=i,this.pixelRatio=e,this.resolution=t,this.alignFill_,this.declutterItems=[],this.instructions=n.instructions,this.coordinates=n.coordinates,this.coordinateCache_={},this.renderedTransform_=[1,0,0,1,0,0],this.hitDetectionInstructions=n.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=n.fillStates||{},this.strokeStates=n.strokeStates||{},this.textStates=n.textStates||{},this.widths_={},this.labels_={}}return t.prototype.createLabel=function(t,e,i,n){var r=t+e+i+n;if(this.labels_[r])return this.labels_[r];var o=n?this.strokeStates[n]:null,s=i?this.fillStates[i]:null,a=this.textStates[e],l=this.pixelRatio,h=a.scale*l,u=kh[a.textAlign||"center"],c=n&&o.lineWidth?o.lineWidth:0,p=t.split("\n"),f=p.length,d=[],_=function(t,e,i){for(var n=e.length,r=0,o=0;on.width?n.width-h:d,x=a+u>n.height?n.height-u:a,S=_[3]+m*p+_[1],C=_[0]+x*p+_[2],w=e-_[3],E=i-_[0];(v||0!==c)&&(Kh[0]=w,Zh[0]=w,Kh[1]=E,Yh[1]=E,Yh[0]=w+S,Nh[0]=Yh[0],Nh[1]=E+C,Zh[1]=Nh[1]);var b=null;if(0!==c){var T=e+r,R=i+o;b=Fi(Xh,T,R,1,1,c,-T,-R),Li(Xh,Kh),Li(Xh,Yh),Li(Xh,Nh),Li(Xh,Zh),se(Math.min(Kh[0],Yh[0],Nh[0],Zh[0]),Math.min(Kh[1],Yh[1],Nh[1],Zh[1]),Math.max(Kh[0],Yh[0],Nh[0],Zh[0]),Math.max(Kh[1],Yh[1],Nh[1],Zh[1]),Wh)}else se(w,E,w+S,E+C,Wh);var I=t.canvas,O=y?y[2]*p/2:0,P=Wh[0]-O<=I.width&&Wh[2]+O>=0&&Wh[1]-O<=I.height&&Wh[3]+O>=0;if(f&&(e=Math.round(e),i=Math.round(i)),s){if(!P&&1==s[4])return;he(s,Wh);var M=P?[t,b?b.slice(0):null,l,n,h,u,m,x,e,i,p]:null;M&&(v&&M.push(g,y,Kh.slice(0),Yh.slice(0),Nh.slice(0),Zh.slice(0)),s.push(M))}else P&&(v&&this.replayTextBackground_(t,Kh,Yh,Nh,Zh,g,y),Qs(t,b,l,n,h,u,m,x,e,i,p))},t.prototype.fill_=function(t){if(this.alignFill_){var e=Li(this.renderedTransform_,[0,0]),i=512*this.pixelRatio;t.save(),t.translate(e[0]%i,e[1]%i),t.rotate(this.viewRotation_)}t.fill(),this.alignFill_&&t.restore()},t.prototype.setStrokeStyle_=function(t,e){t.strokeStyle=e[1],t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.setLineDash&&(t.lineDashOffset=e[7],t.setLineDash(e[6]))},t.prototype.renderDeclutter=function(t,e,i,n){if(t&&t.length>5){var r=t[4];if(1==r||r==t.length-5){var o={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:e};if(n||(n=new ch.a(9)),!n.collides(o)){n.insert(o);for(var s=5,a=t.length;s11&&this.replayTextBackground_(l[0],l[13],l[14],l[15],l[16],l[11],l[12]),Qs.apply(void 0,l),u!==i&&(h.globalAlpha=u)}}t.length=5,ae(t)}}return n},t.prototype.drawLabelWithPointPlacement_=function(t,e,i,n){var r=this.textStates[e],o=this.createLabel(t,e,n,i),s=this.strokeStates[i],a=this.pixelRatio,l=kh[r.textAlign||"center"],h=kh[r.textBaseline||"middle"],u=s&&s.lineWidth?s.lineWidth:0;return{label:o,anchorX:l*(o.width/a-2*r.scale)+2*(.5-l)*u,anchorY:h*o.height/a+2*(.5-h)*u}},t.prototype.execute_=function(t,e,i,n,r,o){var s,l,h;this.declutterItems.length=0,this.pixelCoordinates_&&a(e,this.renderedTransform_)?s=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),s=Pi(this.coordinates,0,this.coordinates.length,2,e,this.pixelCoordinates_),l=this.renderedTransform_,h=e,l[0]=h[0],l[1]=h[1],l[2]=h[2],l[3]=h[3],l[4]=h[4],l[5]=h[5]);for(var u,c,p,f,d,_,g,y,v,m,x,S,C,w,E,b,T,R=0,I=i.length,O=0,P=0,M=0,L=null,F=null,A=this.coordinateCache_,D=this.viewRotation_,k=Math.round(1e12*Math.atan2(-e[1],e[0]))/1e12,j={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:D},G=this.instructions!=i||this.overlaps?0:200;RG&&(this.fill_(t),P=0),M>G&&(t.stroke(),M=0),P||M||(t.beginPath(),f=NaN,d=NaN),++R;break;case Eh.CIRCLE:var W=s[O=z[1]],X=s[O+1],K=s[O+2]-W,Y=s[O+3]-X,N=Math.sqrt(K*K+Y*Y);t.moveTo(W+N,X),t.arc(W,X,N,0,2*Math.PI,!0),++R;break;case Eh.CLOSE_PATH:t.closePath(),++R;break;case Eh.CUSTOM:O=z[1],u=z[2];var Z=z[3],B=z[4],V=6==z.length?z[5]:void 0;j.geometry=Z,j.feature=E,R in A||(A[R]=[]);var U=A[R];V?V(s,O,u,2,U):(U[0]=s[O],U[1]=s[O+1],U.length=2),B(U,j),++R;break;case Eh.DRAW_IMAGE:O=z[1],u=z[2],m=z[3],c=z[4],p=z[5],v=r?null:z[6];var H=z[7],q=z[8],J=z[9],Q=z[10],$=z[11],tt=z[12],et=z[13],it=z[14];if(!m&&z.length>=19){x=z[18],S=z[19],C=z[20],w=z[21];var nt=this.drawLabelWithPointPlacement_(x,S,C,w);m=nt.label,z[3]=m;var rt=z[22];c=(nt.anchorX-rt)*this.pixelRatio,z[4]=c;var ot=z[23];p=(nt.anchorY-ot)*this.pixelRatio,z[5]=p,H=m.height,z[7]=H,it=m.width,z[14]=it}var st=void 0;z.length>24&&(st=z[24]);var at=void 0,lt=void 0,ht=void 0;z.length>16?(at=z[15],lt=z[16],ht=z[17]):(at=zs,lt=!1,ht=!1),$&&k?tt+=D:$||k||(tt-=D);for(var ut=0,ct=0;O=o;)qh(i,t+r,t+o),qh(i,t+o,t+r),qh(i,t-o,t+r),qh(i,t-r,t+o),qh(i,t-r,t-o),qh(i,t-o,t-r),qh(i,t+o,t-r),qh(i,t+r,t-o),o++,2*((s+=1+2*o)-r)+1>0&&(s+=1-2*(r-=1));return Hh[t]=i,i}(r);function f(t){for(var e=u.getImageData(0,0,a,a).data,i=0;i0){var r=void 0;return(!s||c!=ra&&c!=aa||-1!==s.indexOf(t))&&(r=o(t)),r||void u.clearRect(0,0,a,a)}}var d,_,g,y,v,m=Object.keys(this.executorsByZIndex_).map(Number);for(m.sort(n),d=m.length-1;d>=0;--d){var x=m[d].toString();for(g=this.executorsByZIndex_[x],_=Vh.length-1;_>=0;--_)if(void 0!==(y=g[c=Vh[_]])&&(v=y.executeHitDetection(u,l,i,f,h)))return v}},t.prototype.getClipCoords=function(t){var e=this.maxExtent_;if(!e)return null;var i=e[0],n=e[1],r=e[2],o=e[3],s=[i,n,i,o,r,o,r,n];return Pi(s,0,8,2,t,s),s},t.prototype.isEmpty=function(){return S(this.executorsByZIndex_)},t.prototype.execute=function(t,e,i,r,o,s){var a=Object.keys(this.executorsByZIndex_).map(Number);a.sort(n),this.maxExtent_&&(t.save(),this.clip(t,e));var l,h,u,c,p,f,d=o||Vh;for(l=0,h=a.length;l=r)for(n=r;n0&&(a.width=0),this.container;var h=Math.round(t.size[0]*i),u=Math.round(t.size[1]*i);a.width!=h||a.height!=u?(a.width=h,a.height=u,a.style.transform!==o&&(a.style.transform=o)):this.containerReused||s.clearRect(0,0,h,u),this.preRender(s,t);var c=t.extent,p=t.viewState,f=p.center,d=p.resolution,_=p.projection,g=p.rotation,y=_.getExtent(),v=this.getLayer().getSource(),m=!1;if(r.extent){var x=di(r.extent,_);(m=!ie(x,t.extent)&&be(x,t.extent))&&this.clip(s,t,x)}var S=t.viewHints,C=!(S[Jr]||S[Qr]),w=this.getRenderTransform(f,d,g,i,h,u,0),E=this.getLayer().getDeclutter()?{}:null;if(l.execute(s,w,g,C,void 0,E),v.getWrapX()&&_.canWrapX()&&!ie(y,c)){for(var b=c[0],T=Ee(y),R=0,I=void 0;by[2];){I=T*++R;var P=this.getRenderTransform(f,d,g,i,h,u,I);l.execute(s,P,g,C,void 0,E),b-=T}}if(E){var M=t.viewHints;!function(t,e,i,r,o,s){for(var a=Object.keys(t).map(Number).sort(n),l=0,h=a.length;l_[2];)m=y*++v,c.push(this.getRenderTransform(o,s,a,.5,p,f,m).slice()),g-=y}this.hitDetectionImageData_=function(t,e,i,r,o,s,a){var l=nt(t[0]/2,t[1]/2);l.imageSmoothingEnabled=!1;for(var h=l.canvas,u=new ea(l,.5,o,null,a),c=i.length,p=Math.floor(16777215/c),f={},d=1;d<=c;++d){var _=i[d-1],g=_.getStyleFunction()||r;if(r){var y=g(_,s);if(y){Array.isArray(y)||(y=[y]);for(var v="#"+("000000"+(d*p).toString(16)).slice(-6),m=0,x=y.length;m=i[2])){var r=Ee(i),o=Math.floor((n[0]-i[0])/r)*r;t[0]-=o,t[2]-=o}return t}(y[0],h);S[0]v[0]&&S[2]>v[2]&&y.push([S[0]-m,S[1],S[2]-m,S[3]])}if(!this.dirty_&&this.renderedResolution_==u&&this.renderedRevision_==p&&this.renderedRenderOrder_==d&&ie(this.renderedExtent_,g))return this.replayGroupChanged=!1,!0;this.replayGroup_=null,this.dirty_=!1;var C,w=new Gh(ca(u,c),g,u,c,e.getDeclutter()),E=ui();if(E){for(var b=0,T=y.length;b180)&&(i[0]=Ot(n+180,360)-180),i}},su={OSM:ul,Vector:_h,XYZ:ll},au={Icon:hr,Stroke:Il,Style:zl}}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{394:function(t,e,i){var n,r,o;function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}o=function(){"use strict";function t(t,n,r,o,s){!function t(i,n,r,o,s){for(;o>r;){if(o-r>600){var a=o-r+1,l=n-r+1,h=Math.log(a),u=.5*Math.exp(2*h/3),c=.5*Math.sqrt(h*u*(a-u)/a)*(l-a/2<0?-1:1);t(i,n,Math.max(r,Math.floor(n-l*u/a+c)),Math.min(o,Math.floor(n+(a-l)*u/a+c)),s)}var p=i[n],f=r,d=o;for(e(i,r,n),s(i[o],p)>0&&e(i,r,o);f0;)d--}0===s(i[r],p)?e(i,r,d):e(i,++d,o),d<=n&&(r=d+1),n<=d&&(o=d-1)}}(t,n,r||0,o||t.length-1,s||i)}function e(t,e,i){var n=t[e];t[e]=t[i],t[i]=n}function i(t,e){return te?1:0}var n=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function r(t,e,i){if(!i)return e.indexOf(t);for(var n=0;n=t.minX&&e.maxY>=t.minY}function d(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function _(e,i,n,r,o){for(var s=[i,n];s.length;)if(!((n=s.pop())-(i=s.pop())<=r)){var a=i+Math.ceil((n-i)/r/2)*r;t(e,a,i,n,o),s.push(i,a,a,n)}}return n.prototype.all=function(){return this._all(this.data,[])},n.prototype.search=function(t){var e=this.data,i=[];if(!f(t,e))return i;for(var n=this.toBBox,r=[];e;){for(var o=0;o=0&&r[e].children.length>this._maxEntries;)this._split(r,e),e--;this._adjustParentBBoxes(n,r,e)},n.prototype._split=function(t,e){var i=t[e],n=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,n);var s=this._chooseSplitIndex(i,r,n),a=d(i.children.splice(s,i.children.length-s));a.height=i.height,a.leaf=i.leaf,o(i,this.toBBox),o(a,this.toBBox),e?t[e-1].children.push(a):this._splitRoot(i,a)},n.prototype._splitRoot=function(t,e){this.data=d([t,e]),this.data.height=t.height+1,this.data.leaf=!1,o(this.data,this.toBBox)},n.prototype._chooseSplitIndex=function(t,e,i){for(var n,r,o,a,l,h,c,p=1/0,f=1/0,d=e;d<=i-e;d++){var _=s(t,0,d,this.toBBox),g=s(t,d,i,this.toBBox),y=(r=_,o=g,a=void 0,l=void 0,h=void 0,c=void 0,a=Math.max(r.minX,o.minX),l=Math.max(r.minY,o.minY),h=Math.min(r.maxX,o.maxX),c=Math.min(r.maxY,o.maxY),Math.max(0,h-a)*Math.max(0,c-l)),v=u(_)+u(g);y=e;f--){var d=t.children[f];a(l,t.leaf?r(d):d),h+=c(l)}return h},n.prototype._adjustParentBBoxes=function(t,e,i){for(var n=i;n>=0;n--)a(e[n],t)},n.prototype._condense=function(t){for(var e=t.length-1,i=void 0;e>=0;e--)0===t[e].children.length?e>0?(i=t[e-1].children).splice(i.indexOf(t[e]),1):this.clear():o(t[e],this.toBBox)},n},"object"===s(e)&&void 0!==t?t.exports=o():void 0===(r="function"==typeof(n=o)?n.call(e,i,e,t):n)||(t.exports=r)},409:function(t,e,i){"use strict";i.r(e),i.d(e,"Feature",(function(){return Zn})),i.d(e,"Map",(function(){return La})),i.d(e,"Overlay",(function(){return Yl})),i.d(e,"View",(function(){return Ms})),i.d(e,"control",(function(){return mu})),i.d(e,"geom",(function(){return xu})),i.d(e,"layer",(function(){return Su})),i.d(e,"proj",(function(){return Cu})),i.d(e,"source",(function(){return wu})),i.d(e,"style",(function(){return Eu}));var n=function(){function t(t){this.propagationStopped,this.type=t,this.target=null}return t.prototype.preventDefault=function(){this.propagationStopped=!0},t.prototype.stopPropagation=function(){this.propagationStopped=!0},t}(),r="propertychange",o=function(){function t(){this.disposed=!1}return t.prototype.dispose=function(){this.disposed||(this.disposed=!0,this.disposeInternal())},t.prototype.disposeInternal=function(){},t}();function s(t,e){return t>e?1:t0){for(r=1;r0)},e.prototype.removeEventListener=function(t,e){var i=this.listeners_&&this.listeners_[t];if(i){var n=i.indexOf(e);-1!==n&&(this.pendingRemovals_&&t in this.pendingRemovals_?(i[n]=f,++this.pendingRemovals_[t]):(i.splice(n,1),0===i.length&&delete this.listeners_[t]))}},e}(o),S="change",C="error",w="contextmenu",E="click",b="dblclick",T="keydown",R="keypress",O="load",P="resize",I="touchmove",M="wheel";function F(t,e,i,n,r){if(n&&n!==t&&(i=i.bind(n)),r){var o=i;i=function(){t.removeEventListener(e,i),o.apply(this,arguments)}}var s={target:t,type:e,listener:i};return t.addEventListener(e,i),s}function L(t,e,i,n){return F(t,e,i,n,!0)}function A(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),_(t))}var D=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();var k=function(t){function e(){var e=t.call(this)||this;return e.revision_=0,e}return D(e,t),e.prototype.changed=function(){++this.revision_,this.dispatchEvent(S)},e.prototype.getRevision=function(){return this.revision_},e.prototype.on=function(t,e){if(Array.isArray(t)){for(var i=t.length,n=new Array(i),r=0;r0&&e%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:xt}):t.setRotation(0))}},e.prototype.render=function(t){var e=t.frameState;if(e){var i=e.viewState.rotation;if(i!=this.rotation_){var n="rotate("+i+"rad)";if(this.autoHide_){var r=this.element.classList.contains(pt);r||0!==i?r&&0!==i&&this.element.classList.remove(pt):this.element.classList.add(pt)}this.label_.style.transform=n}this.rotation_=i}},e}(ct),bt={DEGREES:"degrees",FEET:"ft",METERS:"m",PIXELS:"pixels",TILE_PIXELS:"tile-pixels",USFEET:"us-ft"},Tt={};Tt[bt.DEGREES]=2*Math.PI*6370997/360,Tt[bt.FEET]=.3048,Tt[bt.METERS]=1,Tt[bt.USFEET]=1200/3937;var Rt=bt,Ot=function(){function t(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}return t.prototype.canWrapX=function(){return this.canWrapX_},t.prototype.getCode=function(){return this.code_},t.prototype.getExtent=function(){return this.extent_},t.prototype.getUnits=function(){return this.units_},t.prototype.getMetersPerUnit=function(){return this.metersPerUnit_||Tt[this.units_]},t.prototype.getWorldExtent=function(){return this.worldExtent_},t.prototype.getAxisOrientation=function(){return this.axisOrientation_},t.prototype.isGlobal=function(){return this.global_},t.prototype.setGlobal=function(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)},t.prototype.getDefaultTileGrid=function(){return this.defaultTileGrid_},t.prototype.setDefaultTileGrid=function(t){this.defaultTileGrid_=t},t.prototype.setExtent=function(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)},t.prototype.setWorldExtent=function(t){this.worldExtent_=t},t.prototype.setGetPointResolution=function(t){this.getPointResolutionFunc_=t},t.prototype.getPointResolutionFunc=function(){return this.getPointResolutionFunc_},t}();function Pt(t,e,i){return Math.min(Math.max(t,e),i)}var It="cosh"in Math?Math.cosh:function(t){var e=Math.exp(t);return(e+1/e)/2},Mt="log2"in Math?Math.log2:function(t){return Math.log(t)*Math.LOG2E};function Ft(t,e,i,n,r,o){var s=r-i,a=o-n;if(0!==s||0!==a){var l=((t-i)*s+(e-n)*a)/(s*s+a*a);l>1?(i=r,n=o):l>0&&(i+=s*l,n+=a*l)}return Lt(t,e,i,n)}function Lt(t,e,i,n){var r=i-t,o=n-e;return r*r+o*o}function At(t){return t*Math.PI/180}function Dt(t,e){var i=t%e;return i*e<0?i+e:i}function kt(t,e,i){return t+i*(e-t)}var jt=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Gt=6378137,zt=Math.PI*Gt,Wt=[-zt,-zt,zt,zt],Xt=[-180,-85,180,85],Nt=function(t){function e(e){return t.call(this,{code:e,units:Rt.METERS,extent:Wt,global:!0,worldExtent:Xt,getPointResolution:function(t,e){return t/It(e[1]/Gt)}})||this}return jt(e,t),e}(Ot),Kt=[new Nt("EPSG:3857"),new Nt("EPSG:102100"),new Nt("EPSG:102113"),new Nt("EPSG:900913"),new Nt("urn:ogc:def:crs:EPSG:6.18:3:3857"),new Nt("urn:ogc:def:crs:EPSG::3857"),new Nt("http://www.opengis.net/gml/srs/epsg.xml#3857")];function Yt(t,e,i){var n=t.length,r=i>1?i:2,o=e;void 0===o&&(o=r>2?t.slice():new Array(n));for(var s=zt,a=0;as?l=s:l<-s&&(l=-s),o[a+1]=l}return o}function Zt(t,e,i){var n=t.length,r=i>1?i:2,o=e;void 0===o&&(o=r>2?t.slice():new Array(n));for(var s=0;sr&&(l|=ae),ao&&(l|=se),l===re&&(l=oe),l}function Se(){return[1/0,1/0,-1/0,-1/0]}function Ce(t,e,i,n,r){return r?(r[0]=t,r[1]=e,r[2]=i,r[3]=n,r):[t,e,i,n]}function we(t){return Ce(1/0,1/0,-1/0,-1/0,t)}function Ee(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function be(t,e){e[0]t[2]&&(t[2]=e[0]),e[1]t[3]&&(t[3]=e[1])}function Te(t,e){for(var i=0,n=e.length;ie[0]?n[0]=t[0]:n[0]=e[0],t[1]>e[1]?n[1]=t[1]:n[1]=e[1],t[2]=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function Ne(t){return t[2]1)for(var o=t[2]-t[0],s=t[3]-t[1],a=0;a=0;--n)if(t[n]!=e[n]){i=!1;break}return i}function ii(t,e){var i=Math.cos(e),n=Math.sin(e),r=t[0]*i-t[1]*n,o=t[1]*i+t[0]*n;return t[0]=r,t[1]=o,t}function ni(t,e){if(e.canWrapX()){var i=We(e.getExtent()),n=ri(t,e,i);n&&(t[0]-=n*i)}return t}function ri(t,e,i){var n=e.getExtent(),r=0;if(e.canWrapX()&&(t[0]n[2])){var o=i||We(n);r=Math.floor((t[0]-n[0])/o)}return r}function oi(t,e,i){var n;if(void 0!==e){for(var r=0,o=t.length;r=s)break;++d}f=this.scaleBar_?this.createScaleBar(c,u,l):u.toFixed(p<0?-p:0)+" "+l,this.renderedHTML_!=f&&(this.innerElement_.innerHTML=f,this.renderedHTML_=f),this.renderedWidth_!=c&&(this.innerElement_.style.width=c+"px",this.renderedWidth_=c),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}else this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1)},e.prototype.createScaleBar=function(t,e,i){for(var n="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),r=[],o=t/this.scaleBarSteps_,s="#ffffff",a=0;a
'+this.createMarker("relative",a)+(a%2==0||2===this.scaleBarSteps_?this.createStepText(a,t,!1,e,i):"")+""),a===this.scaleBarSteps_-1&&r.push(this.createStepText(a+1,t,!0,e,i)),s="#ffffff"===s?"#000000":"#ffffff";return'
'+(this.scaleBarText_?'
'+n+"
":"")+r.join("")+"
"},e.prototype.createMarker=function(t,e){return'
'},e.prototype.createStepText=function(t,e,i,n,r){var o=(0===t?0:Math.round(n/this.scaleBarSteps_*t*100)/100)+(0===t?"":" "+r);return'
'+o+"
"},e.prototype.getScaleForResolution=function(){var t=hi(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center),e=this.dpi_||Ai,i=this.viewState_.projection.getMetersPerUnit();return parseFloat(t.toString())*i*39.37*e},e.prototype.render=function(t){var e=t.frameState;this.viewState_=e?e.viewState:null,this.updateElement_()},e}(ct),ki=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ji=function(t){function e(e){var i=this,n=e||{};i=t.call(this,{element:document.createElement("div"),target:n.target})||this;var r=void 0!==n.className?n.className:"ol-zoom",o=void 0!==n.delta?n.delta:1,s=void 0!==n.zoomInLabel?n.zoomInLabel:"+",a=void 0!==n.zoomOutLabel?n.zoomOutLabel:"−",l=void 0!==n.zoomInTipLabel?n.zoomInTipLabel:"Zoom in",h=void 0!==n.zoomOutTipLabel?n.zoomOutTipLabel:"Zoom out",u=document.createElement("button");u.className=r+"-in",u.setAttribute("type","button"),u.title=l,u.appendChild("string"==typeof s?document.createTextNode(s):s),u.addEventListener(E,i.handleClick_.bind(i,o),!1);var c=document.createElement("button");c.className=r+"-out",c.setAttribute("type","button"),c.title=h,c.appendChild("string"==typeof a?document.createTextNode(a):a),c.addEventListener(E,i.handleClick_.bind(i,-o),!1);var p=r+" "+"ol-unselectable "+dt,f=i.element;return f.className=p,f.appendChild(u),f.appendChild(c),i.duration_=void 0!==n.duration?n.duration:250,i}return ki(e,t),e.prototype.handleClick_=function(t,e){e.preventDefault(),this.zoomByDelta_(t)},e.prototype.zoomByDelta_=function(t){var e=this.getMap().getView();if(e){var i=e.getZoom();if(void 0!==i){var n=e.getConstrainedZoom(i+t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({zoom:n,duration:this.duration_,easing:xt})):e.setZoom(n)}}},e}(ct),Gi="XY",zi="XYZ",Wi="XYM",Xi="XYZM";new Array(6);function Ni(t,e,i,n,r,o,s){return t[0]=e,t[1]=i,t[2]=n,t[3]=r,t[4]=o,t[5]=s,t}function Ki(t,e){var i=e[0],n=e[1];return e[0]=t[0]*i+t[2]*n+t[4],e[1]=t[1]*i+t[3]*n+t[5],e}function Yi(t,e,i,n,r,o,s,a){var l=Math.sin(o),h=Math.cos(o);return t[0]=n*h,t[1]=r*l,t[2]=-n*l,t[3]=r*h,t[4]=s*n*h-a*n*l+e,t[5]=s*r*l+a*r*h+i,t}function Zi(t,e){var i,n=(i=e)[0]*i[3]-i[1]*i[2];pe(0!==n,32);var r=e[0],o=e[1],s=e[2],a=e[3],l=e[4],h=e[5];return t[0]=a/n,t[1]=-o/n,t[2]=-s/n,t[3]=r/n,t[4]=(s*h-a*l)/n,t[5]=-(r*h-o*l)/n,t}function Bi(t){return"matrix("+t.join(", ")+")"}function Vi(t,e,i,n,r,o){for(var s=o||[],a=0,l=e;l1)a=i;else{if(p>0){for(var f=0;fr&&(r=h),o=a,s=l}return r}function rn(t,e,i,n,r){for(var o=0,s=i.length;o0;){for(var c=h.pop(),p=h.pop(),f=0,d=t[p],_=t[p+1],g=t[c],y=t[c+1],v=p+n;vf&&(u=v,f=m)}f>r&&(l[(u-e)/n]=1,p+n0&&_>f)&&(d<0&&g0&&g>d)?(a=c,l=p):(o[s++]=a,o[s++]=l,h=a,u=l,a=c,l=p)}}return o[s++]=a,o[s++]=l,s}function pn(t,e,i,n,r,o,s,a){for(var l=0,h=i.length;lo&&(h-a)*(o-l)-(r-a)*(u-l)>0&&s++:u<=o&&(h-a)*(o-l)-(r-a)*(u-l)<0&&s--,a=h,l=u}return 0!==s}function En(t,e,i,n,r,o){if(0===i.length)return!1;if(!wn(t,e,i[0],n,r,o))return!1;for(var s=1,a=i.length;sS&&En(t,e,i,n,u=(c+p)/2,_)&&(x=u,S=C),c=p}return isNaN(x)&&(x=r[o]),a?(a.push(x,_,S),a):[x,_,S]}function Tn(t,e,i,n,r){for(var o,s=[t[e],t[e+1]],a=[];e+n=r[0]&&o[2]<=r[2]||(o[1]>=r[1]&&o[3]<=r[3]||Tn(t,e,i,n,(function(t,e){return function(t,e,i){var n=!1,r=xe(t,e),o=xe(t,i);if(r===oe||o===oe)n=!0;else{var s=t[0],a=t[1],l=t[2],h=t[3],u=e[0],c=e[1],p=i[0],f=i[1],d=(f-c)/(p-u),_=void 0,g=void 0;o&se&&!(r&se)&&(n=(_=p-(f-h)/d)>=s&&_<=l),n||!(o&ae)||r&ae||(n=(g=f-(p-l)*d)>=a&&g<=h),n||!(o&le)||r&le||(n=(_=p-(f-a)/d)>=s&&_<=l),n||!(o&he)||r&he||(n=(g=f-(p-s)*d)>=a&&g<=h)}return n}(r,t,e)})))))}function On(t,e,i,n,r){if(!function(t,e,i,n,r){return!!(Rn(t,e,i,n,r)||wn(t,e,i,n,r[0],r[1])||wn(t,e,i,n,r[0],r[3])||wn(t,e,i,n,r[2],r[1])||wn(t,e,i,n,r[2],r[3]))}(t,e,i[0],n,r))return!1;if(1===i.length)return!0;for(var o=1,s=i.length;oo||(h==o&&l>=s||(r=a,o=h,s=l))}return r}(t,e,i,n),a=s-n;a=i&&(l=e);var h=t[a],u=t[a+1],c=t[s],p=t[s+1],f=t[l],d=t[l+1];return c*d+h*p+u*f-(u*c+p*f+h*d)<0}function Mn(t,e,i,n,r){for(var o=void 0!==r&&r,s=0,a=i.length;s>1)],e))<0?a=n+1:(l=n,h=!r);return h?a:~a}(d,v);m<0?(h=(v-d[-m-2])/(d[-m-1]-d[-m-2]),l=e+(-m-2)*n):l=e+m*n}var x=a>1?a:2,S=o||new Array(x);for(_=0;_>1;r=1024){var i=0;for(var n in ar)0==(3&i++)&&(delete ar[n],--lr)}e=function(t){var e,i,n,r,o;if(or.exec(t)&&(t=sr(t)),rr.exec(t)){var s=t.length-1,a=void 0;a=s<=4?1:2;var l=4===s||8===s;e=parseInt(t.substr(1+0*a,a),16),i=parseInt(t.substr(1+1*a,a),16),n=parseInt(t.substr(1+2*a,a),16),r=l?parseInt(t.substr(1+3*a,a),16):255,1==a&&(e=(e<<4)+e,i=(i<<4)+i,n=(n<<4)+n,l&&(r=(r<<4)+r)),o=[e,i,n,r/255]}else 0==t.indexOf("rgba(")?cr(o=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((o=t.slice(4,-1).split(",").map(Number)).push(1),cr(o)):pe(!1,14);return o}(t),ar[t]=e,++lr}return e});function ur(t){return Array.isArray(t)?t:hr(t)}function cr(t){return t[0]=Pt(t[0]+.5|0,0,255),t[1]=Pt(t[1]+.5|0,0,255),t[2]=Pt(t[2]+.5|0,0,255),t[3]=Pt(t[3],0,1),t}function pr(t){var e=t[0];e!=(0|e)&&(e=e+.5|0);var i=t[1];i!=(0|i)&&(i=i+.5|0);var n=t[2];return n!=(0|n)&&(n=n+.5|0),"rgba("+e+","+i+","+n+","+(void 0===t[3]?1:t[3])+")"}var fr=function(){function t(){this.cache_={},this.cacheSize_=0,this.maxCacheSize_=32}return t.prototype.clear=function(){this.cache_={},this.cacheSize_=0},t.prototype.canExpireCache=function(){return this.cacheSize_>this.maxCacheSize_},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var e in this.cache_){var i=this.cache_[e];0!=(3&t++)||i.hasListener()||(delete this.cache_[e],--this.cacheSize_)}}},t.prototype.get=function(t,e,i){var n=dr(t,e,i);return n in this.cache_?this.cache_[n]:null},t.prototype.set=function(t,e,i,n){var r=dr(t,e,i);this.cache_[r]=n,++this.cacheSize_},t.prototype.setSize=function(t){this.maxCacheSize_=t,this.expire()},t}();function dr(t,e,i){return e+":"+t+":"+(i?function(t){return"string"==typeof t?t:pr(t)}(i):"null")}var _r=new fr,gr=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),yr=function(t){function e(e,i,n,r){var o=t.call(this)||this;return o.extent=e,o.pixelRatio_=n,o.resolution=i,o.state=r,o}return gr(e,t),e.prototype.changed=function(){this.dispatchEvent(S)},e.prototype.getExtent=function(){return this.extent},e.prototype.getImage=function(){return j()},e.prototype.getPixelRatio=function(){return this.pixelRatio_},e.prototype.getResolution=function(){return this.resolution},e.prototype.getState=function(){return this.state},e.prototype.load=function(){j()},e}(x),vr=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function mr(t,e,i){var n=t;if(n.src&&it){var r=n.decode(),o=!0;return r.then((function(){o&&e()})).catch((function(t){o&&("EncodingError"===t.name&&"Invalid image type."===t.message?e():i())})),function(){o=!1}}var s=[L(n,O,e),L(n,C,i)];return function(){s.forEach(A)}}!function(t){function e(e,i,n,r,o,s){var a=t.call(this,e,i,n,Qn)||this;return a.src_=r,a.image_=new Image,null!==o&&(a.image_.crossOrigin=o),a.unlisten_=null,a.state=Qn,a.imageLoadFunction_=s,a}vr(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.handleImageError_=function(){this.state=er,this.unlistenImage_(),this.changed()},e.prototype.handleImageLoad_=function(){void 0===this.resolution&&(this.resolution=ke(this.extent)/this.image_.height),this.state=tr,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state!=Qn&&this.state!=er||(this.state=$n,this.changed(),this.imageLoadFunction_(this,this.src_),this.unlisten_=mr(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.setImage=function(t){this.image_=t},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)}}(yr);var xr=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Sr=null,Cr=function(t){function e(e,i,n,r,o,s){var a=t.call(this)||this;return a.hitDetectionImage_=null,a.image_=e||new Image,null!==r&&(a.image_.crossOrigin=r),a.canvas_={},a.color_=s,a.unlisten_=null,a.imageState_=o,a.size_=n,a.src_=i,a.tainted_,a}return xr(e,t),e.prototype.isTainted_=function(){if(void 0===this.tainted_&&this.imageState_===tr){Sr||(Sr=rt(1,1)),Sr.drawImage(this.image_,0,0);try{Sr.getImageData(0,0,1,1),this.tainted_=!1}catch(t){Sr=null,this.tainted_=!0}}return!0===this.tainted_},e.prototype.dispatchChangeEvent_=function(){this.dispatchEvent(S)},e.prototype.handleImageError_=function(){this.imageState_=er,this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.handleImageLoad_=function(){this.imageState_=tr,this.size_?(this.image_.width=this.size_[0],this.image_.height=this.size_[1]):this.size_=[this.image_.width,this.image_.height],this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.getImage=function(t){return this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_},e.prototype.getPixelRatio=function(t){return this.replaceColor_(t),this.canvas_[t]?t:1},e.prototype.getImageState=function(){return this.imageState_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionImage_)if(this.isTainted_()){var t=this.size_[0],e=this.size_[1],i=rt(t,e);i.fillRect(0,0,t,e),this.hitDetectionImage_=i.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_},e.prototype.getSize=function(){return this.size_},e.prototype.getSrc=function(){return this.src_},e.prototype.load=function(){if(this.imageState_==Qn){this.imageState_=$n;try{this.image_.src=this.src_}catch(t){this.handleImageError_()}this.unlisten_=mr(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this))}},e.prototype.replaceColor_=function(t){if(this.color_&&!this.canvas_[t]){var e=document.createElement("canvas");this.canvas_[t]=e,e.width=Math.ceil(this.image_.width*t),e.height=Math.ceil(this.image_.height*t);var i=e.getContext("2d");if(i.scale(t,t),i.drawImage(this.image_,0,0),this.isTainted_()){var n=this.color_;return i.globalCompositeOperation="multiply",i.fillStyle="rgb("+n[0]+","+n[1]+","+n[2]+")",i.fillRect(0,0,e.width,e.height),i.globalCompositeOperation="destination-in",void i.drawImage(this.image_,0,0)}for(var r=i.getImageData(0,0,e.width,e.height),o=r.data,s=this.color_[0]/255,a=this.color_[1]/255,l=this.color_[2]/255,h=0,u=o.length;h0,6);var c=void 0!==n.src?Qn:tr;return i.color_=void 0!==n.color?ur(n.color):null,i.iconImage_=function(t,e,i,n,r,o){var s=_r.get(e,n,o);return s||(s=new Cr(t,e,i,n,r,o),_r.set(e,n,o,s)),s}(l,u,h,i.crossOrigin_,c,i.color_),i.offset_=void 0!==n.offset?n.offset:[0,0],i.offsetOrigin_=void 0!==n.offsetOrigin?n.offsetOrigin:qn,i.origin_=null,i.size_=void 0!==n.size?n.size:null,i}return wr(e,t),e.prototype.clone=function(){var t=this.getScale();return new e({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,crossOrigin:this.crossOrigin_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,src:this.getSrc(),offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,size:null!==this.size_?this.size_.slice():void 0,opacity:this.getOpacity(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView()})},e.prototype.getAnchor=function(){if(this.normalizedAnchor_)return this.normalizedAnchor_;var t=this.anchor_,e=this.getSize();if(this.anchorXUnits_==Bn||this.anchorYUnits_==Bn){if(!e)return null;t=this.anchor_.slice(),this.anchorXUnits_==Bn&&(t[0]*=e[0]),this.anchorYUnits_==Bn&&(t[1]*=e[1])}if(this.anchorOrigin_!=qn){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),this.anchorOrigin_!=Jn&&this.anchorOrigin_!=Hn||(t[0]=-t[0]+e[0]),this.anchorOrigin_!=Un&&this.anchorOrigin_!=Hn||(t[1]=-t[1]+e[1])}return this.normalizedAnchor_=t,this.normalizedAnchor_},e.prototype.setAnchor=function(t){this.anchor_=t,this.normalizedAnchor_=null},e.prototype.getColor=function(){return this.color_},e.prototype.getImage=function(t){return this.iconImage_.getImage(t)},e.prototype.getPixelRatio=function(t){return this.iconImage_.getPixelRatio(t)},e.prototype.getImageSize=function(){return this.iconImage_.getSize()},e.prototype.getHitDetectionImageSize=function(){return this.getImageSize()},e.prototype.getImageState=function(){return this.iconImage_.getImageState()},e.prototype.getHitDetectionImage=function(){return this.iconImage_.getHitDetectionImage()},e.prototype.getOrigin=function(){if(this.origin_)return this.origin_;var t=this.offset_,e=this.getDisplacement();if(this.offsetOrigin_!=qn){var i=this.getSize(),n=this.iconImage_.getSize();if(!i||!n)return null;t=t.slice(),this.offsetOrigin_!=Jn&&this.offsetOrigin_!=Hn||(t[0]=n[0]-i[0]-t[0]),this.offsetOrigin_!=Un&&this.offsetOrigin_!=Hn||(t[1]=n[1]-i[1]-t[1])}return t[0]+=e[0],t[1]+=e[1],this.origin_=t,this.origin_},e.prototype.getSrc=function(){return this.iconImage_.getSrc()},e.prototype.getSize=function(){return this.size_?this.size_:this.iconImage_.getSize()},e.prototype.listenImageChange=function(t){this.iconImage_.addEventListener(S,t)},e.prototype.load=function(){this.iconImage_.load()},e.prototype.unlistenImageChange=function(t){this.iconImage_.removeEventListener(S,t)},e}(nr),br="opacity",Tr="visible",Rr="extent",Or="zIndex",Pr="maxResolution",Ir="minResolution",Mr="maxZoom",Fr="minZoom",Lr="source",Ar=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Dr=function(t){function e(e){var i=t.call(this)||this,n=d({},e);return n[br]=void 0!==e.opacity?e.opacity:1,pe("number"==typeof n[br],64),n[Tr]=void 0===e.visible||e.visible,n[Or]=e.zIndex,n[Pr]=void 0!==e.maxResolution?e.maxResolution:1/0,n[Ir]=void 0!==e.minResolution?e.minResolution:0,n[Fr]=void 0!==e.minZoom?e.minZoom:-1/0,n[Mr]=void 0!==e.maxZoom?e.maxZoom:1/0,i.className_=void 0!==n.className?e.className:"ol-layer",delete n.className,i.setProperties(n),i.state_=null,i}return Ar(e,t),e.prototype.getClassName=function(){return this.className_},e.prototype.getLayerState=function(t){var e=this.state_||{layer:this,managed:void 0===t||t},i=this.getZIndex();return e.opacity=Pt(Math.round(100*this.getOpacity())/100,0,1),e.sourceState=this.getSourceState(),e.visible=this.getVisible(),e.extent=this.getExtent(),e.zIndex=void 0!==i?i:!1===e.managed?1/0:0,e.maxResolution=this.getMaxResolution(),e.minResolution=Math.max(this.getMinResolution(),0),e.minZoom=this.getMinZoom(),e.maxZoom=this.getMaxZoom(),this.state_=e,e},e.prototype.getLayersArray=function(t){return j()},e.prototype.getLayerStatesArray=function(t){return j()},e.prototype.getExtent=function(){return this.get(Rr)},e.prototype.getMaxResolution=function(){return this.get(Pr)},e.prototype.getMinResolution=function(){return this.get(Ir)},e.prototype.getMinZoom=function(){return this.get(Fr)},e.prototype.getMaxZoom=function(){return this.get(Mr)},e.prototype.getOpacity=function(){return this.get(br)},e.prototype.getSourceState=function(){return j()},e.prototype.getVisible=function(){return this.get(Tr)},e.prototype.getZIndex=function(){return this.get(Or)},e.prototype.setExtent=function(t){this.set(Rr,t)},e.prototype.setMaxResolution=function(t){this.set(Pr,t)},e.prototype.setMinResolution=function(t){this.set(Ir,t)},e.prototype.setMaxZoom=function(t){this.set(Mr,t)},e.prototype.setMinZoom=function(t){this.set(Fr,t)},e.prototype.setOpacity=function(t){pe("number"==typeof t,64),this.set(br,t)},e.prototype.setVisible=function(t){this.set(Tr,t)},e.prototype.setZIndex=function(t){this.set(Or,t)},e.prototype.disposeInternal=function(){this.state_&&(this.state_.layer=null,this.state_=null),t.prototype.disposeInternal.call(this)},e}(B),kr="prerender",jr="postrender",Gr="precompose",zr="postcompose",Wr="rendercomplete",Xr="undefined",Nr="ready",Kr=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function Yr(t,e){if(!t.visible)return!1;var i=e.resolution;if(i=t.maxResolution)return!1;var n=e.zoom;return n>t.minZoom&&n<=t.maxZoom}var Zr=function(t){function e(e){var i=this,n=d({},e);delete n.source,(i=t.call(this,n)||this).mapPrecomposeKey_=null,i.mapRenderKey_=null,i.sourceChangeKey_=null,i.renderer_=null,e.render&&(i.render=e.render),e.map&&i.setMap(e.map),i.addEventListener(Z(Lr),i.handleSourcePropertyChange_);var r=e.source?e.source:null;return i.setSource(r),i}return Kr(e,t),e.prototype.getLayersArray=function(t){var e=t||[];return e.push(this),e},e.prototype.getLayerStatesArray=function(t){var e=t||[];return e.push(this.getLayerState()),e},e.prototype.getSource=function(){return this.get(Lr)||null},e.prototype.getSourceState=function(){var t=this.getSource();return t?t.getState():Xr},e.prototype.handleSourceChange_=function(){this.changed()},e.prototype.handleSourcePropertyChange_=function(){this.sourceChangeKey_&&(A(this.sourceChangeKey_),this.sourceChangeKey_=null);var t=this.getSource();t&&(this.sourceChangeKey_=F(t,S,this.handleSourceChange_,this)),this.changed()},e.prototype.getFeatures=function(t){return this.renderer_.getFeatures(t)},e.prototype.render=function(t,e){var i=this.getRenderer();if(i.prepareFrame(t))return i.renderFrame(t,e)},e.prototype.setMap=function(t){this.mapPrecomposeKey_&&(A(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),t||this.changed(),this.mapRenderKey_&&(A(this.mapRenderKey_),this.mapRenderKey_=null),t&&(this.mapPrecomposeKey_=F(t,Gr,(function(t){var e=t.frameState.layerStatesArray,i=this.getLayerState(!1);pe(!e.some((function(t){return t.layer===i.layer})),67),e.push(i)}),this),this.mapRenderKey_=F(this,S,t.render,t),this.changed())},e.prototype.setSource=function(t){this.set(Lr,t)},e.prototype.getRenderer=function(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_},e.prototype.hasRenderer=function(){return!!this.renderer_},e.prototype.createRenderer=function(){return null},e.prototype.disposeInternal=function(){this.setSource(null),t.prototype.disposeInternal.call(this)},e}(Dr),Br=function(){function t(){}return t.prototype.drawCustom=function(t,e,i){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,e){},t.prototype.drawFeature=function(t,e){},t.prototype.drawGeometryCollection=function(t,e){},t.prototype.drawLineString=function(t,e){},t.prototype.drawMultiLineString=function(t,e){},t.prototype.drawMultiPoint=function(t,e){},t.prototype.drawMultiPolygon=function(t,e){},t.prototype.drawPoint=function(t,e){},t.prototype.drawPolygon=function(t,e){},t.prototype.drawText=function(t,e){},t.prototype.setFillStrokeStyle=function(t,e){},t.prototype.setImageStyle=function(t,e){},t.prototype.setTextStyle=function(t,e){},t}();function Vr(t){return Array.isArray(t)?pr(t):t}var Ur="10px sans-serif",Hr="#000",qr="round",Jr=[],Qr="round",$r="#000",to="center",eo="middle",io=[0,0,0,0],no=new B;(new x).setSize=function(){console.warn("labelCache is deprecated.")};var ro,oo,so,ao=null,lo={},ho=function(){var t,e,i="32px ",n=["monospace","serif"],r=n.length,o="wmytzilWMYTZIL@#/&?$%10";function s(t,s,a){for(var l=!0,h=0;h=0;--x){var S=g[x],C=S.layer;if(C.hasRenderer()&&Yr(S,h)&&s.call(a,C)){var w=C.getRenderer(),E=C.getSource();if(w&&E){var b=E.getWrapX()?p:t,T=u.bind(null,S.managed);v[0]=b[0]+f[m][0],v[1]=b[1]+f[m][1],l=w.forEachFeatureAtCoordinate(v,e,i,T,_)}if(l)return l}}},e.prototype.forEachLayerAtPixel=function(t,e,i,n,r){return j()},e.prototype.hasFeatureAtCoordinate=function(t,e,i,n,r,o){return void 0!==this.forEachFeatureAtCoordinate(t,e,i,n,c,this,r,o)},e.prototype.getMap=function(){return this.map_},e.prototype.renderFrame=function(t){this.declutterTree_=function(t,e){e&&e.clear();for(var i=t.declutterItems,n=i.length-1;n>=0;--n)for(var r=i[n],o=r.items,s=0,a=o.length;s=0;--a){var l=s[a],h=l.layer;if(h.hasRenderer()&&Yr(l,o)&&r(h)){var u=h.getRenderer().getDataAtPixel(t,e,i);if(u){var c=n(h,u);if(c)return c}}}},e}(Lo),Go="add",zo="remove",Wo=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Xo="length",No=function(t){function e(e,i,n){var r=t.call(this,e)||this;return r.element=i,r.index=n,r}return Wo(e,t),e}(n),Ko=function(t){function e(e,i){var n=t.call(this)||this,r=i||{};if(n.unique_=!!r.unique,n.array_=e||[],n.unique_)for(var o=0,s=n.array_.length;o0;)this.pop()},e.prototype.extend=function(t){for(var e=0,i=t.length;ethis.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_},e.prototype.disposeInternal=function(){this.relayedListenerKey_&&(A(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(I,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(A(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(A),this.dragListenerKeys_.length=0,this.element_=null,t.prototype.disposeInternal.call(this)},e}(x),is="layergroup",ns="size",rs="target",os="view",ss=1/0,as=function(){function t(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}}return t.prototype.clear=function(){this.elements_.length=0,this.priorities_.length=0,_(this.queuedElements_)},t.prototype.dequeue=function(){var t=this.elements_,e=this.priorities_,i=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));var n=this.keyFunction_(i);return delete this.queuedElements_[n],i},t.prototype.enqueue=function(t){pe(!(this.keyFunction_(t)in this.queuedElements_),31);var e=this.priorityFunction_(t);return e!=ss&&(this.elements_.push(t),this.priorities_.push(e),this.queuedElements_[this.keyFunction_(t)]=!0,this.siftDown_(0,this.elements_.length-1),!0)},t.prototype.getCount=function(){return this.elements_.length},t.prototype.getLeftChildIndex_=function(t){return 2*t+1},t.prototype.getRightChildIndex_=function(t){return 2*t+2},t.prototype.getParentIndex_=function(t){return t-1>>1},t.prototype.heapify_=function(){var t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)},t.prototype.isEmpty=function(){return 0===this.elements_.length},t.prototype.isKeyQueued=function(t){return t in this.queuedElements_},t.prototype.isQueued=function(t){return this.isKeyQueued(this.keyFunction_(t))},t.prototype.siftUp_=function(t){for(var e=this.elements_,i=this.priorities_,n=e.length,r=e[t],o=i[t],s=t;t>1;){var a=this.getLeftChildIndex_(t),l=this.getRightChildIndex_(t),h=lt;){var s=this.getParentIndex_(e);if(!(n[s]>o))break;i[e]=i[s],n[e]=n[s],e=s}i[e]=r,n[e]=o},t.prototype.reprioritize=function(){var t,e,i,n=this.priorityFunction_,r=this.elements_,o=this.priorities_,s=0,a=r.length;for(e=0;e0;)n=(i=this.dequeue()[0]).getKey(),i.getState()!==ls||n in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[n]=!0,++this.tilesLoading_,++r,i.load())},e}(as);var _s=0,gs=1,ys="center",vs="resolution",ms="rotation",xs=256;function Ss(t,e,i){return function(n,r,o,s){if(n){var a=e?0:o[0]*r,l=e?0:o[1]*r,h=t[0]+a/2,u=t[2]-a/2,c=t[1]+l/2,p=t[3]-l/2;h>u&&(u=h=(u+h)/2),c>p&&(p=c=(p+c)/2);var f=Pt(n[0],h,u),d=Pt(n[1],c,p),_=30*r;return s&&i&&(f+=-_*Math.log(1+Math.max(0,h-n[0])/_)+_*Math.log(1+Math.max(0,n[0]-u)/_),d+=-_*Math.log(1+Math.max(0,c-n[1])/_)+_*Math.log(1+Math.max(0,n[1]-p)/_)),[f,d]}}}function Cs(t){return t}function ws(t,e,i,n){var r=We(e)/i[0],o=ke(e)/i[1];return n?Math.min(t,Math.max(r,o)):Math.min(t,Math.min(r,o))}function Es(t,e,i){var n=Math.min(t,e);return n*=Math.log(1+50*Math.max(0,t/e-1))/50+1,i&&(n=Math.max(n,i),n/=Math.log(1+50*Math.max(0,i/t-1))/50+1),Pt(n,i/2,2*e)}function bs(t,e,i,n,r){return function(o,s,a,l){if(void 0!==o){var h=n?ws(t,n,a,r):t;return(void 0===i||i)&&l?Es(o,h,e):Pt(o,e,h)}}}function Ts(t){return void 0!==t?0:void 0}function Rs(t){return void 0!==t?t:void 0}var Os=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function Ps(t,e){setTimeout((function(){t(e)}),0)}function Is(t){return!(t.sourceCenter&&t.targetCenter&&!ei(t.sourceCenter,t.targetCenter))&&(t.sourceResolution===t.targetResolution&&t.sourceRotation===t.targetRotation)}var Ms=function(t){function e(e){var i=t.call(this)||this,n=d({},e);return i.hints_=[0,0],i.animations_=[],i.updateAnimationKey_,i.projection_=ci(n.projection,"EPSG:3857"),i.viewportSize_=[100,100],i.targetCenter_=null,i.targetResolution_,i.targetRotation_,i.cancelAnchor_=void 0,n.center&&(n.center=wi(n.center,i.projection_)),n.extent&&(n.extent=bi(n.extent,i.projection_)),i.applyOptions_(n),i}return Os(e,t),e.prototype.applyOptions_=function(t){var e=function(t){var e,i,n,r=28,o=2,s=void 0!==t.minZoom?t.minZoom:0,l=void 0!==t.maxZoom?t.maxZoom:r,h=void 0!==t.zoomFactor?t.zoomFactor:o,u=void 0!==t.multiWorld&&t.multiWorld,c=void 0===t.smoothResolutionConstraint||t.smoothResolutionConstraint,p=void 0!==t.showFullExtent&&t.showFullExtent,f=ci(t.projection,"EPSG:3857"),d=f.getExtent(),_=t.constrainOnlyCenter,g=t.extent;u||g||!f.isGlobal()||(_=!1,g=d);if(void 0!==t.resolutions){var y=t.resolutions;i=y[s],n=void 0!==y[l]?y[l]:y[y.length-1],e=t.constrainResolution?function(t,e,i,n){return function(r,o,s,l){if(void 0!==r){var h=t[0],u=t[t.length-1],c=i?ws(h,i,s,n):h;if(l)return void 0===e||e?Es(r,c,u):Pt(r,u,c);var p=Math.min(c,r),f=Math.floor(a(t,p,o));return t[f]>c&&f1&&"function"==typeof arguments[i-1]&&(e=arguments[i-1],--i),!this.isDef()){var n=arguments[i-1];return n.center&&this.setCenterInternal(n.center),void 0!==n.zoom&&this.setZoom(n.zoom),void 0!==n.rotation&&this.setRotation(n.rotation),void(e&&Ps(e,!0))}for(var r=Date.now(),o=this.targetCenter_.slice(),s=this.targetResolution_,a=this.targetRotation_,l=[],h=0;h0},e.prototype.getInteracting=function(){return this.hints_[gs]>0},e.prototype.cancelAnimations=function(){var t;this.setHint(_s,-this.hints_[_s]);for(var e=0,i=this.animations_.length;e=0;--i){for(var n=this.animations_[i],r=!0,o=0,s=n.length;o0?l/a.duration:1;h>=1?(a.complete=!0,h=1):r=!1;var u=a.easing(h);if(a.sourceCenter){var c=a.sourceCenter[0],p=a.sourceCenter[1],f=c+u*(a.targetCenter[0]-c),d=p+u*(a.targetCenter[1]-p);this.targetCenter_=[f,d]}if(a.sourceResolution&&a.targetResolution){var _=1===u?a.targetResolution:a.sourceResolution+u*(a.targetResolution-a.sourceResolution);if(a.anchor){var g=this.getViewportSize_(this.getRotation()),y=this.constraints_.resolution(_,0,g,!0);this.targetCenter_=this.calculateCenterZoom(y,a.anchor)}this.targetResolution_=_,this.applyTargetState_(!0)}if(void 0!==a.sourceRotation&&void 0!==a.targetRotation){var v=1===u?Dt(a.targetRotation+Math.PI,2*Math.PI)-Math.PI:a.sourceRotation+u*(a.targetRotation-a.sourceRotation);if(a.anchor){var m=this.constraints_.rotation(v,!0);this.targetCenter_=this.calculateCenterRotate(m,a.anchor)}this.targetRotation_=v}if(this.applyTargetState_(!0),e=!0,!a.complete)break}}if(r){this.animations_[i]=null,this.setHint(_s,-1);var x=n[0].callback;x&&Ps(x,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}},e.prototype.calculateCenterRotate=function(t,e){var i,n,r,o=this.getCenterInternal();return void 0!==o&&(ii(i=[o[0]-e[0],o[1]-e[1]],t-this.getRotation()),r=e,(n=i)[0]+=+r[0],n[1]+=+r[1]),i},e.prototype.calculateCenterZoom=function(t,e){var i,n=this.getCenterInternal(),r=this.getResolution();void 0!==n&&void 0!==r&&(i=[e[0]-t*(e[0]-n[0])/r,e[1]-t*(e[1]-n[1])/r]);return i},e.prototype.getViewportSize_=function(t){var e=this.viewportSize_;if(t){var i=e[0],n=e[1];return[Math.abs(i*Math.cos(t))+Math.abs(n*Math.sin(t)),Math.abs(i*Math.sin(t))+Math.abs(n*Math.cos(t))]}return e},e.prototype.setViewportSize=function(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)},e.prototype.getCenter=function(){var t=this.getCenterInternal();return t?Ci(t,this.getProjection()):t},e.prototype.getCenterInternal=function(){return this.get(ys)},e.prototype.getConstraints=function(){return this.constraints_},e.prototype.getConstrainResolution=function(){return this.options_.constrainResolution},e.prototype.getHints=function(t){return void 0!==t?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()},e.prototype.calculateExtent=function(t){return Ei(this.calculateExtentInternal(t),this.getProjection())},e.prototype.calculateExtentInternal=function(t){var e=t||this.getViewportSize_(),i=this.getCenterInternal();pe(i,1);var n=this.getResolution();pe(void 0!==n,2);var r=this.getRotation();return pe(void 0!==r,3),De(i,n,r,e)},e.prototype.getMaxResolution=function(){return this.maxResolution_},e.prototype.getMinResolution=function(){return this.minResolution_},e.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.minResolution_)},e.prototype.setMaxZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))},e.prototype.getMinZoom=function(){return this.getZoomForResolution(this.maxResolution_)},e.prototype.setMinZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))},e.prototype.setConstrainResolution=function(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolution=function(){return this.get(vs)},e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getResolutionForExtent=function(t,e){return this.getResolutionForExtentInternal(bi(t,this.getProjection()),e)},e.prototype.getResolutionForExtentInternal=function(t,e){var i=e||this.getViewportSize_(),n=We(t)/i[0],r=ke(t)/i[1];return Math.max(n,r)},e.prototype.getResolutionForValueFunction=function(t){var e=t||2,i=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,r=Math.log(i/n)/Math.log(e);return function(t){return i/Math.pow(e,t*r)}},e.prototype.getRotation=function(){return this.get(ms)},e.prototype.getValueForResolutionFunction=function(t){var e=Math.log(t||2),i=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,r=Math.log(i/n)/e;return function(t){return Math.log(i/t)/e/r}},e.prototype.getState=function(){var t=this.getCenterInternal(),e=this.getProjection(),i=this.getResolution(),n=this.getRotation();return{center:t.slice(0),projection:void 0!==e?e:null,resolution:i,rotation:n,zoom:this.getZoom()}},e.prototype.getZoom=function(){var t,e=this.getResolution();return void 0!==e&&(t=this.getZoomForResolution(e)),t},e.prototype.getZoomForResolution=function(t){var e,i,n=this.minZoom_||0;if(this.resolutions_){var r=a(this.resolutions_,t,1);n=r,e=this.resolutions_[r],i=r==this.resolutions_.length-1?2:e/this.resolutions_[r+1]}else e=this.maxResolution_,i=this.zoomFactor_;return n+Math.log(e/t)/Math.log(i)},e.prototype.getResolutionForZoom=function(t){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;var e=Pt(Math.floor(t),0,this.resolutions_.length-2),i=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(i,Pt(t-e,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)},e.prototype.fit=function(t,e){var i,n=d({size:this.getViewportSize_()},e||{});if(pe(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))pe(!Ne(t),25),i=kn(r=bi(t,this.getProjection()));else if(t.getType()===Qe){var r;(i=kn(r=bi(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),Le(r))}else{var o=Si();i=o?t.clone().transform(o,this.getProjection()):t}this.fitInternal(i,n)},e.prototype.fitInternal=function(t,e){var i=e||{},n=i.size;n||(n=this.getViewportSize_());var r,o=void 0!==i.padding?i.padding:[0,0,0,0],s=void 0!==i.nearest&&i.nearest;r=void 0!==i.minResolution?i.minResolution:void 0!==i.maxZoom?this.getResolutionForZoom(i.maxZoom):0;for(var a=t.getFlatCoordinates(),l=this.getRotation(),h=Math.cos(-l),u=Math.sin(-l),c=1/0,p=1/0,d=-1/0,_=-1/0,g=t.getStride(),y=0,v=a.length;y=0;s--){var a=o[s];if(a.getActive())if(!a.handleEvent(t))break}}},e.prototype.handlePostRender=function(){var t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){var i=this.maxTilesLoading_,n=i;if(t){var r=t.viewHints;if(r[_s]||r[gs]){var o=!it&&Date.now()-t.time>8;i=o?0:8,n=o?0:2}}e.getTilesLoading()0&&t[1]>0}(e)&&i&&i.isDef()){var o=i.getHints(this.frameState_?this.frameState_.viewHints:void 0),s=i.getState();r={animate:!1,coordinateToPixelTransform:this.coordinateToPixelTransform_,declutterItems:n?n.declutterItems:[],extent:De(s.center,s.resolution,s.rotation,e),index:this.frameIndex_++,layerIndex:0,layerStatesArray:this.getLayerGroup().getLayerStatesArray(),pixelRatio:this.pixelRatio_,pixelToCoordinateTransform:this.pixelToCoordinateTransform_,postRenderFunctions:[],size:e,tileQueue:this.tileQueue_,time:t,usedTiles:{},viewState:s,viewHints:o,wantedTiles:{}}}if(this.frameState_=r,this.renderer_.renderFrame(r),r){if(r.animate&&this.render(),Array.prototype.push.apply(this.postRenderFunctions_,r.postRenderFunctions),n)(!this.previousExtent_||!Ne(this.previousExtent_)&&!Ee(r.extent,this.previousExtent_))&&(this.dispatchEvent(new Uo(U,this,n)),this.previousExtent_=we(this.previousExtent_));this.previousExtent_&&!r.viewHints[_s]&&!r.viewHints[gs]&&!Ee(r.extent,this.previousExtent_)&&(this.dispatchEvent(new Uo(H,this,r)),_e(r.extent,this.previousExtent_))}this.dispatchEvent(new Uo(V,this,r)),this.postRenderTimeoutHandle_=setTimeout(this.handlePostRender.bind(this),0)},e.prototype.setLayerGroup=function(t){this.set(is,t)},e.prototype.setSize=function(t){this.set(ns,t)},e.prototype.setTarget=function(t){this.set(rs,t)},e.prototype.setView=function(t){this.set(os,t)},e.prototype.updateSize=function(){var t=this.getTargetElement();if(t){var e=getComputedStyle(t);this.setSize([t.offsetWidth-parseFloat(e.borderLeftWidth)-parseFloat(e.paddingLeft)-parseFloat(e.paddingRight)-parseFloat(e.borderRightWidth),t.offsetHeight-parseFloat(e.borderTopWidth)-parseFloat(e.paddingTop)-parseFloat(e.paddingBottom)-parseFloat(e.borderBottomWidth)])}else this.setSize(void 0);this.updateViewportSize_()},e.prototype.updateViewportSize_=function(){var t=this.getView();if(t){var e=void 0,i=getComputedStyle(this.viewport_);i.width&&i.height&&(e=[parseInt(i.width,10),parseInt(i.height,10)]),t.setViewportSize(e)}},e}(B),As=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ds=function(t){function e(e){var i=this,n=e||{};(i=t.call(this,{element:document.createElement("div"),render:n.render,target:n.target})||this).ulElement_=document.createElement("ul"),i.collapsed_=void 0===n.collapsed||n.collapsed,i.overrideCollapsible_=void 0!==n.collapsible,i.collapsible_=void 0===n.collapsible||n.collapsible,i.collapsible_||(i.collapsed_=!1);var r=void 0!==n.className?n.className:"ol-attribution",o=void 0!==n.tipLabel?n.tipLabel:"Attributions",s=void 0!==n.collapseLabel?n.collapseLabel:"»";"string"==typeof s?(i.collapseLabel_=document.createElement("span"),i.collapseLabel_.textContent=s):i.collapseLabel_=s;var a=void 0!==n.label?n.label:"i";"string"==typeof a?(i.label_=document.createElement("span"),i.label_.textContent=a):i.label_=a;var l=i.collapsible_&&!i.collapsed_?i.collapseLabel_:i.label_,h=document.createElement("button");h.setAttribute("type","button"),h.title=o,h.appendChild(l),h.addEventListener(E,i.handleClick_.bind(i),!1);var u=r+" "+"ol-unselectable "+dt+(i.collapsed_&&i.collapsible_?" ol-collapsed":"")+(i.collapsible_?"":" ol-uncollapsible"),c=i.element;return c.className=u,c.appendChild(i.ulElement_),c.appendChild(h),i.renderedAttributions_=[],i.renderedVisible_=!0,i}return As(e,t),e.prototype.collectSourceAttributions_=function(t){for(var e={},i=[],n=t.layerStatesArray,r=0,o=n.length;r0;if(this.renderedVisible_!=i&&(this.element.style.display=i?"":"none",this.renderedVisible_=i),!u(e,this.renderedAttributions_)){ht(this.ulElement_);for(var n=0,r=e.length;n0}}else if(t.type==Jo.POINTERDOWN){var n=this.handleDownEvent(t);this.handlingDownUpSequence=n,e=this.stopDown(n)}else t.type==Jo.POINTERMOVE&&this.handleMoveEvent(t);return!e},e.prototype.handleMoveEvent=function(t){},e.prototype.handleUpEvent=function(t){return!1},e.prototype.stopDown=function(t){return t},e.prototype.updateTrackedPointers_=function(t){if(function(t){var e=t.type;return e===Jo.POINTERDOWN||e===Jo.POINTERDRAG||e===Jo.POINTERUP}(t)){var e=t.originalEvent,i=e.pointerId.toString();t.type==Jo.POINTERUP?delete this.trackedPointers_[i]:(t.type==Jo.POINTERDOWN||i in this.trackedPointers_)&&(this.trackedPointers_[i]=e),this.targetPointers=g(this.trackedPointers_)}},e}(zs);function Zs(t){var e=arguments;return function(t){for(var i=!0,n=0,r=e.length;n0&&this.condition_(t)){var e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1},e}(Ys),na=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ra=function(t){function e(e){var i=this,n=e||{};return(i=t.call(this,{stopDown:p})||this).condition_=n.condition?n.condition:Bs,i.lastAngle_=void 0,i.duration_=void 0!==n.duration?n.duration:250,i}return na(e,t),e.prototype.handleDragEvent=function(t){if($s(t)){var e=t.map,i=e.getView();if(i.getConstraints().rotation!==Ts){var n=e.getSize(),r=t.pixel,o=Math.atan2(n[1]/2-r[1],r[0]-n[0]/2);if(void 0!==this.lastAngle_){var s=o-this.lastAngle_;i.adjustRotationInternal(-s)}this.lastAngle_=o}}},e.prototype.handleUpEvent=function(t){return!$s(t)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){return!!$s(t)&&(!(!Hs(t)||!this.condition_(t))&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,!0))},e}(Ys),oa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),sa=function(t){function e(e){var i=t.call(this)||this;return i.geometry_=null,i.element_=document.createElement("div"),i.element_.style.position="absolute",i.element_.style.pointerEvents="auto",i.element_.className="ol-box "+e,i.map_=null,i.startPixel_=null,i.endPixel_=null,i}return oa(e,t),e.prototype.disposeInternal=function(){this.setMap(null)},e.prototype.render_=function(){var t=this.startPixel_,e=this.endPixel_,i="px",n=this.element_.style;n.left=Math.min(t[0],e[0])+i,n.top=Math.min(t[1],e[1])+i,n.width=Math.abs(e[0]-t[0])+i,n.height=Math.abs(e[1]-t[1])+i},e.prototype.setMap=function(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);var e=this.element_.style;e.left="inherit",e.top="inherit",e.width="inherit",e.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)},e.prototype.setPixels=function(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()},e.prototype.createOrUpdateGeometry=function(){var t=this.startPixel_,e=this.endPixel_,i=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);i[4]=i[0].slice(),this.geometry_?this.geometry_.setCoordinates([i]):this.geometry_=new Dn([i])},e.prototype.getGeometry=function(){return this.geometry_},e}(o),aa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),la="boxstart",ha="boxdrag",ua="boxend",ca=function(t){function e(e,i,n){var r=t.call(this,e)||this;return r.coordinate=i,r.mapBrowserEvent=n,r}return aa(e,t),e}(n),pa=function(t){function e(e){var i=t.call(this)||this,n=e||{};return i.box_=new sa(n.className||"ol-dragbox"),i.minArea_=void 0!==n.minArea?n.minArea:64,n.onBoxEnd&&(i.onBoxEnd=n.onBoxEnd),i.startPixel_=null,i.condition_=n.condition?n.condition:Hs,i.boxEndCondition_=n.boxEndCondition?n.boxEndCondition:i.defaultBoxEndCondition,i}return aa(e,t),e.prototype.defaultBoxEndCondition=function(t,e,i){var n=i[0]-e[0],r=i[1]-e[1];return n*n+r*r>=this.minArea_},e.prototype.getGeometry=function(){return this.box_.getGeometry()},e.prototype.handleDragEvent=function(t){this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new ca(ha,t.coordinate,t))},e.prototype.handleUpEvent=function(t){return this.box_.setMap(null),this.boxEndCondition_(t,this.startPixel_,t.pixel)&&(this.onBoxEnd(t),this.dispatchEvent(new ca(ua,t.coordinate,t))),!1},e.prototype.handleDownEvent=function(t){return!!this.condition_(t)&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new ca(la,t.coordinate,t)),!0)},e.prototype.onBoxEnd=function(t){},e}(Ys),fa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),da=function(t){function e(e){var i=this,n=e||{},r=n.condition?n.condition:Js;return(i=t.call(this,{condition:r,className:n.className||"ol-dragzoom",minArea:n.minArea})||this).duration_=void 0!==n.duration?n.duration:200,i.out_=void 0!==n.out&&n.out,i}return fa(e,t),e.prototype.onBoxEnd=function(t){var e,i,n=this.getMap(),r=n.getView(),o=n.getSize(),s=this.getGeometry().getExtent();if(this.out_){var a=r.calculateExtentInternal(o),l=(e=[n.getPixelFromCoordinateInternal(Me(s)),n.getPixelFromCoordinateInternal(ze(s))],Te(we(i),e));!function(t,e){var i=(t[2]-t[0])/2*(e-1),n=(t[3]-t[1])/2*(e-1);t[0]-=i,t[2]+=i,t[1]-=n,t[3]+=n}(a,1/r.getResolutionForExtentInternal(l,o)),s=a}var h=r.getConstrainedResolution(r.getResolutionForExtentInternal(s,o)),u=r.getConstrainedCenter(Le(s),h);r.animateInternal({resolution:h,center:u,duration:this.duration_,easing:xt})},e}(pa),_a=37,ga=38,ya=39,va=40,ma=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),xa=function(t){function e(e){var i=t.call(this)||this,n=e||{};return i.defaultCondition_=function(t){return qs(t)&&Qs(t)},i.condition_=void 0!==n.condition?n.condition:i.defaultCondition_,i.duration_=void 0!==n.duration?n.duration:100,i.pixelDelta_=void 0!==n.pixelDelta?n.pixelDelta:128,i}return ma(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==T){var i=t.originalEvent.keyCode;if(this.condition_(t)&&(i==va||i==_a||i==ya||i==ga)){var n=t.map.getView(),r=n.getResolution()*this.pixelDelta_,o=0,s=0;i==va?s=-r:i==_a?o=-r:i==ya?o=r:s=r;var a=[o,s];ii(a,n.getRotation()),function(t,e,i){var n=t.getCenterInternal();if(n){var r=[n[0]+e[0],n[1]+e[1]];t.animateInternal({duration:void 0!==i?i:250,easing:Ct,center:t.getConstrainedCenter(r)})}}(n,a,this.duration_),t.preventDefault(),e=!0}}return!e},e}(zs),Sa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ca=function(t){function e(e){var i=t.call(this)||this,n=e||{};return i.condition_=n.condition?n.condition:Qs,i.delta_=n.delta?n.delta:1,i.duration_=void 0!==n.duration?n.duration:100,i}return Sa(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==T||t.type==R){var i=t.originalEvent.charCode;if(this.condition_(t)&&(i=="+".charCodeAt(0)||i=="-".charCodeAt(0))){var n=t.map,r=i=="+".charCodeAt(0)?this.delta_:-this.delta_;Gs(n.getView(),r,void 0,this.duration_),t.preventDefault(),e=!0}}return!e},e}(zs),wa=function(){function t(t,e,i){this.decay_=t,this.minVelocity_=e,this.delay_=i,this.points_=[],this.angle_=0,this.initialVelocity_=0}return t.prototype.begin=function(){this.points_.length=0,this.angle_=0,this.initialVelocity_=0},t.prototype.update=function(t,e){this.points_.push(t,e,Date.now())},t.prototype.end=function(){if(this.points_.length<6)return!1;var t=Date.now()-this.delay_,e=this.points_.length-3;if(this.points_[e+2]0&&this.points_[i+2]>t;)i-=3;var n=this.points_[e+2]-this.points_[i+2];if(n<1e3/60)return!1;var r=this.points_[e]-this.points_[i],o=this.points_[e+1]-this.points_[i+1];return this.angle_=Math.atan2(o,r),this.initialVelocity_=Math.sqrt(r*r+o*o)/n,this.initialVelocity_>this.minVelocity_},t.prototype.getDistance=function(){return(this.minVelocity_-this.initialVelocity_)/this.decay_},t.prototype.getAngle=function(){return this.angle_},t}(),Ea=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ba="trackpad",Ta="wheel",Ra=function(t){function e(e){var i=this,n=e||{};(i=t.call(this,n)||this).totalDelta_=0,i.lastDelta_=0,i.maxDelta_=void 0!==n.maxDelta?n.maxDelta:1,i.duration_=void 0!==n.duration?n.duration:250,i.timeout_=void 0!==n.timeout?n.timeout:80,i.useAnchor_=void 0===n.useAnchor||n.useAnchor,i.constrainResolution_=void 0!==n.constrainResolution&&n.constrainResolution;var r=n.condition?n.condition:Us;return i.condition_=n.onFocusOnly?Zs(Vs,r):r,i.lastAnchor_=null,i.startTime_=void 0,i.timeoutId_,i.mode_=void 0,i.trackpadEventGap_=400,i.trackpadTimeoutId_,i.deltaPerZoom_=300,i}return Ea(e,t),e.prototype.endInteraction_=function(){this.trackpadTimeoutId_=void 0,this.getMap().getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;if(t.type!==M)return!0;t.preventDefault();var e,i=t.map,n=t.originalEvent;if(this.useAnchor_&&(this.lastAnchor_=t.coordinate),t.type==M&&(e=n.deltaY,J&&n.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(e/=tt),n.deltaMode===WheelEvent.DOM_DELTA_LINE&&(e*=40)),0===e)return!1;this.lastDelta_=e;var r=Date.now();void 0===this.startTime_&&(this.startTime_=r),(!this.mode_||r-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(e)<4?ba:Ta);var o=i.getView();if(this.mode_===ba&&!o.getConstrainResolution()&&!this.constrainResolution_)return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(o.getAnimating()&&o.cancelAnimations(),o.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),o.adjustZoom(-e/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=r,!1;this.totalDelta_+=e;var s=Math.max(this.timeout_-(r-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,i),s),!1},e.prototype.handleWheelZoom_=function(t){var e=t.getView();e.getAnimating()&&e.cancelAnimations();var i=-Pt(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;(e.getConstrainResolution()||this.constrainResolution_)&&(i=i?i>0?1:-1:0),Gs(e,i,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0},e.prototype.setMouseAnchor=function(t){this.useAnchor_=t,t||(this.lastAnchor_=null)},e}(zs),Oa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Pa=function(t){function e(e){var i=this,n=e||{},r=n;return r.stopDown||(r.stopDown=p),(i=t.call(this,r)||this).anchor_=null,i.lastAngle_=void 0,i.rotating_=!1,i.rotationDelta_=0,i.threshold_=void 0!==n.threshold?n.threshold:.3,i.duration_=void 0!==n.duration?n.duration:250,i}return Oa(e,t),e.prototype.handleDragEvent=function(t){var e=0,i=this.targetPointers[0],n=this.targetPointers[1],r=Math.atan2(n.clientY-i.clientY,n.clientX-i.clientX);if(void 0!==this.lastAngle_){var o=r-this.lastAngle_;this.rotationDelta_+=o,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=o}this.lastAngle_=r;var s=t.map,a=s.getView();if(a.getConstraints().rotation!==Ts){var l=s.getViewport().getBoundingClientRect(),h=Ks(this.targetPointers);h[0]-=l.left,h[1]-=l.top,this.anchor_=s.getCoordinateFromPixelInternal(h),this.rotating_&&(s.render(),a.adjustRotationInternal(e,this.anchor_))}},e.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}(Ys),Ia=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ma=function(t){function e(e){var i=this,n=e||{},r=n;return r.stopDown||(r.stopDown=p),(i=t.call(this,r)||this).anchor_=null,i.duration_=void 0!==n.duration?n.duration:400,i.lastDistance_=void 0,i.lastScaleDelta_=1,i}return Ia(e,t),e.prototype.handleDragEvent=function(t){var e=1,i=this.targetPointers[0],n=this.targetPointers[1],r=i.clientX-n.clientX,o=i.clientY-n.clientY,s=Math.sqrt(r*r+o*o);void 0!==this.lastDistance_&&(e=this.lastDistance_/s),this.lastDistance_=s;var a=t.map,l=a.getView();1!=e&&(this.lastScaleDelta_=e);var h=a.getViewport().getBoundingClientRect(),u=Ks(this.targetPointers);u[0]-=h.left,u[1]-=h.top,this.anchor_=a.getCoordinateFromPixelInternal(u),a.render(),l.adjustResolutionInternal(e,this.anchor_)},e.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map.getView(),i=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,i),!1}return!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}(Ys);var Fa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),La=function(t){function e(e){return(e=d({},e)).controls||(e.controls=function(t){var e=t||{},i=new Ko;return(void 0===e.zoom||e.zoom)&&i.push(new ji(e.zoomOptions)),(void 0===e.rotate||e.rotate)&&i.push(new Et(e.rotateOptions)),(void 0===e.attribution||e.attribution)&&i.push(new Ds(e.attributionOptions)),i}()),e.interactions||(e.interactions=function(t){var e=t||{},i=new Ko,n=new wa(-.005,.05,100);return(void 0===e.altShiftDragRotate||e.altShiftDragRotate)&&i.push(new ra),(void 0===e.doubleClickZoom||e.doubleClickZoom)&&i.push(new Xs({delta:e.zoomDelta,duration:e.zoomDuration})),(void 0===e.dragPan||e.dragPan)&&i.push(new ia({onFocusOnly:e.onFocusOnly,kinetic:n})),(void 0===e.pinchRotate||e.pinchRotate)&&i.push(new Pa),(void 0===e.pinchZoom||e.pinchZoom)&&i.push(new Ma({duration:e.zoomDuration})),(void 0===e.keyboard||e.keyboard)&&(i.push(new xa),i.push(new Ca({delta:e.zoomDelta,duration:e.zoomDuration}))),(void 0===e.mouseWheelZoom||e.mouseWheelZoom)&&i.push(new Ra({onFocusOnly:e.onFocusOnly,duration:e.zoomDuration})),(void 0===e.shiftDragZoom||e.shiftDragZoom)&&i.push(new da({duration:e.zoomDuration})),i}({onFocusOnly:!0})),t.call(this,e)||this}return Fa(e,t),e.prototype.createRenderer=function(){return new jo(this)},e}(Ls),Aa=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Da=function(t){function e(e,i,n){var r=t.call(this)||this,o=n||{};return r.tileCoord=e,r.state=i,r.interimTile=null,r.hifi=!0,r.key="",r.transition_=void 0===o.transition?250:o.transition,r.transitionStarts_={},r}return Aa(e,t),e.prototype.changed=function(){this.dispatchEvent(S)},e.prototype.release=function(){},e.prototype.getKey=function(){return this.key+"/"+this.tileCoord},e.prototype.getInterimTile=function(){if(!this.interimTile)return this;var t=this.interimTile;do{if(t.getState()==us)return this.transition_=0,t;t=t.interimTile}while(t);return this},e.prototype.refreshInterimChain=function(){if(this.interimTile){var t=this.interimTile,e=this;do{if(t.getState()==us){t.interimTile=null;break}t.getState()==hs?e=t:t.getState()==ls?e.interimTile=t.interimTile:e=t,t=e.interimTile}while(t)}},e.prototype.getTileCoord=function(){return this.tileCoord},e.prototype.getState=function(){return this.state},e.prototype.setState=function(t){if(this.state!==cs&&this.state>t)throw new Error("Tile load sequence violation");this.state=t,this.changed()},e.prototype.load=function(){j()},e.prototype.getAlpha=function(t,e){if(!this.transition_)return 1;var i=this.transitionStarts_[t];if(i){if(-1===i)return 1}else i=e,this.transitionStarts_[t]=i;var n=e-i+1e3/60;return n>=this.transition_?1:mt(n/this.transition_)},e.prototype.inTransition=function(t){return!!this.transition_&&-1!==this.transitionStarts_[t]},e.prototype.endTransition=function(t){this.transition_&&(this.transitionStarts_[t]=-1)},e}(x),ka=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();var ja,Ga=function(t){function e(e,i,n,r,o,s){var a=t.call(this,e,i,s)||this;return a.crossOrigin_=r,a.src_=n,a.image_=new Image,null!==r&&(a.image_.crossOrigin=r),a.unlisten_=null,a.tileLoadFunction_=o,a}return ka(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.getKey=function(){return this.src_},e.prototype.handleImageError_=function(){var t;this.state=cs,this.unlistenImage_(),this.image_=((t=rt(1,1)).fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas),this.changed()},e.prototype.handleImageLoad_=function(){var t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=us:this.state=ps,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state==cs&&(this.state=ls,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==ls&&(this.state=hs,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=mr(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},e}(Da),za=function(){function t(t,e,i,n,r,o){this.sourceProj_=t,this.targetProj_=e;var s={},a=di(this.targetProj_,this.sourceProj_);this.transformInv_=function(t){var e=t[0]+"/"+t[1];return s[e]||(s[e]=a(t)),s[e]},this.maxSourceExtent_=n,this.errorThresholdSquared_=r*r,this.triangles_=[],this.wrapsXInSource_=!1,this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!n&&!!this.sourceProj_.getExtent()&&We(n)==We(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?We(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?We(this.targetProj_.getExtent()):null;var l=Ge(i),h=ze(i),u=Fe(i),c=Me(i),p=this.transformInv_(l),f=this.transformInv_(h),d=this.transformInv_(u),_=this.transformInv_(c),g=10+(o?Math.max(0,Math.ceil(Mt(Ie(i)/(o*o*256*256)))):0);if(this.addQuad_(l,h,u,c,p,f,d,_,g),this.wrapsXInSource_){var y=1/0;this.triangles_.forEach((function(t,e,i){y=Math.min(y,t.source[0][0],t.source[1][0],t.source[2][0])})),this.triangles_.forEach(function(t){if(Math.max(t.source[0][0],t.source[1][0],t.source[2][0])-y>this.sourceWorldWidth_/2){var e=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];e[0][0]-y>this.sourceWorldWidth_/2&&(e[0][0]-=this.sourceWorldWidth_),e[1][0]-y>this.sourceWorldWidth_/2&&(e[1][0]-=this.sourceWorldWidth_),e[2][0]-y>this.sourceWorldWidth_/2&&(e[2][0]-=this.sourceWorldWidth_);var i=Math.min(e[0][0],e[1][0],e[2][0]);Math.max(e[0][0],e[1][0],e[2][0])-i.5&&u<1,f=!1;if(l>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_)f=We(fe([t,e,i,n]))/this.targetWorldWidth_>.25||f;!p&&this.sourceProj_.isGlobal()&&u&&(f=u>.25||f)}if(!(!f&&this.maxSourceExtent_&&isFinite(h[0])&&isFinite(h[1])&&isFinite(h[2])&&isFinite(h[3]))||Xe(h,this.maxSourceExtent_)){var d=0;if(!(f||isFinite(r[0])&&isFinite(r[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(s[0])&&isFinite(s[1])&&isFinite(a[0])&&isFinite(a[1])))if(l>0)f=!0;else if(1!=(d=(isFinite(r[0])&&isFinite(r[1])?0:8)+(isFinite(o[0])&&isFinite(o[1])?0:4)+(isFinite(s[0])&&isFinite(s[1])?0:2)+(isFinite(a[0])&&isFinite(a[1])?0:1))&&2!=d&&4!=d&&8!=d)return;if(l>0){if(!f){var _=[(t[0]+i[0])/2,(t[1]+i[1])/2],g=this.transformInv_(_),y=void 0;if(p)y=(Dt(r[0],c)+Dt(s[0],c))/2-Dt(g[0],c);else y=(r[0]+s[0])/2-g[0];var v=(r[1]+s[1])/2-g[1];f=y*y+v*v>this.errorThresholdSquared_}if(f){if(Math.abs(t[0]-i[0])<=Math.abs(t[1]-i[1])){var m=[(e[0]+i[0])/2,(e[1]+i[1])/2],x=this.transformInv_(m),S=[(n[0]+t[0])/2,(n[1]+t[1])/2],C=this.transformInv_(S);this.addQuad_(t,e,m,S,r,o,x,C,l-1),this.addQuad_(S,m,i,n,C,x,s,a,l-1)}else{var w=[(t[0]+e[0])/2,(t[1]+e[1])/2],E=this.transformInv_(w),b=[(i[0]+n[0])/2,(i[1]+n[1])/2],T=this.transformInv_(b);this.addQuad_(t,w,b,n,r,E,T,a,l-1),this.addQuad_(w,e,i,b,E,o,s,T,l-1)}return}}if(p){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}0==(11&d)&&this.addTriangle_(t,i,n,r,s,a),0==(14&d)&&this.addTriangle_(t,i,e,r,s,o),d&&(0==(13&d)&&this.addTriangle_(e,n,t,o,a,r),0==(7&d)&&this.addTriangle_(e,n,i,o,a,s))}},t.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.triangles_.forEach((function(e,i,n){var r=e.source;be(t,r[0]),be(t,r[1]),be(t,r[2])})),t},t.prototype.getTriangles=function(){return this.triangles_},t}(),Wa={imageSmoothingEnabled:!1,msImageSmoothingEnabled:!1};function Xa(t,e,i,n,r){t.beginPath(),t.moveTo(0,0),t.lineTo(e,i),t.lineTo(n,r),t.closePath(),t.save(),t.clip(),t.fillRect(0,0,Math.max(e,n)+1,Math.max(i,r)),t.restore()}function Na(t,e){return Math.abs(t[4*e]-210)>2||Math.abs(t[4*e+3]-191.25)>2}function Ka(t,e,i,n){var r=_i(i,e,t),o=hi(e,n,i),s=e.getMetersPerUnit();void 0!==s&&(o*=s);var a=t.getMetersPerUnit();void 0!==a&&(o/=a);var l=t.getExtent();if(!l||ye(l,r)){var h=hi(t,o,r)/o;isFinite(h)&&h>0&&(o/=h)}return o}function Ya(t,e,i,n,r,o,s,a,l,h,u,c){var p=rt(Math.round(i*t),Math.round(i*e));if(d(p,c),0===l.length)return p.canvas;function f(t){return Math.round(t*i)/i}p.scale(i,i),p.globalCompositeOperation="lighter";var _=[1/0,1/0,-1/0,-1/0];l.forEach((function(t,e,i){var n,r;n=_,(r=t.extent)[0]n[2]&&(n[2]=r[2]),r[1]n[3]&&(n[3]=r[3])}));var g=We(_),y=ke(_),v=rt(Math.round(i*g/n),Math.round(i*y/n));d(v,c);var m=i/n;l.forEach((function(t,e,i){var n=t.extent[0]-_[0],r=-(t.extent[3]-_[3]),o=We(t.extent),s=ke(t.extent);t.image.width>0&&t.image.height>0&&v.drawImage(t.image,h,h,t.image.width-2*h,t.image.height-2*h,n*m,r*m,o*m,s*m)}));var x=Ge(s);return a.getTriangles().forEach((function(t,e,r){var s=t.source,a=t.target,l=s[0][0],h=s[0][1],u=s[1][0],d=s[1][1],g=s[2][0],y=s[2][1],m=f((a[0][0]-x[0])/o),S=f(-(a[0][1]-x[1])/o),C=f((a[1][0]-x[0])/o),w=f(-(a[1][1]-x[1])/o),E=f((a[2][0]-x[0])/o),b=f(-(a[2][1]-x[1])/o),T=l,R=h;l=0,h=0;var O=function(t){for(var e=t.length,i=0;ir&&(r=s,n=o)}if(0===r)return null;var a=t[n];t[n]=t[i],t[i]=a;for(var l=i+1;l=0;p--){c[p]=t[p][e]/t[p][p];for(var f=p-1;f>=0;f--)t[f][e]-=t[f][p]*c[p]}return c}([[u-=T,d-=R,0,0,C-m],[g-=T,y-=R,0,0,E-m],[0,0,u,d,w-S],[0,0,g,y,b-S]]);if(O){if(p.save(),p.beginPath(),function(){if(void 0===ja){var t=document.createElement("canvas").getContext("2d");t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",Xa(t,4,5,4,0),Xa(t,4,5,0,5);var e=t.getImageData(0,0,3,3).data;ja=Na(e,0)||Na(e,4)||Na(e,8)}return ja}()||c===Wa){p.moveTo(C,w);for(var P=m-C,I=S-w,M=0;M<4;M++)p.lineTo(C+f((M+1)*P/4),w+f(M*I/3)),3!=M&&p.lineTo(C+f((M+1)*P/4),w+f((M+1)*I/3));p.lineTo(E,b)}else p.moveTo(C,w),p.lineTo(m,S),p.lineTo(E,b);p.clip(),p.transform(O[0],O[2],O[1],O[3],m,S),p.translate(_[0]-T,_[3]-R),p.scale(n/i,-n/i),p.drawImage(v.canvas,0,0),p.restore()}})),u&&(p.save(),p.globalCompositeOperation="source-over",p.strokeStyle="black",p.lineWidth=1,a.getTriangles().forEach((function(t,e,i){var n=t.target,r=(n[0][0]-x[0])/o,s=-(n[0][1]-x[1])/o,a=(n[1][0]-x[0])/o,l=-(n[1][1]-x[1])/o,h=(n[2][0]-x[0])/o,u=-(n[2][1]-x[1])/o;p.beginPath(),p.moveTo(a,l),p.lineTo(r,s),p.lineTo(h,u),p.closePath(),p.stroke()})),p.restore()),p.canvas}var Za=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Ba=function(t){function e(e,i,n,r,o,s,a,l,h,u,c,p){var f=t.call(this,o,ls)||this;f.renderEdges_=void 0!==c&&c,f.contextOptions_=p,f.pixelRatio_=a,f.gutter_=l,f.canvas_=null,f.sourceTileGrid_=i,f.targetTileGrid_=r,f.wrappedTileCoord_=s||o,f.sourceTiles_=[],f.sourcesListenerKeys_=null,f.sourceZ_=0;var d=r.getTileCoordExtent(f.wrappedTileCoord_),_=f.targetTileGrid_.getExtent(),g=f.sourceTileGrid_.getExtent(),y=_?je(d,_):d;if(0===Ie(y))return f.state=ps,f;var v=e.getExtent();v&&(g=g?je(g,v):v);var m=r.getResolution(f.wrappedTileCoord_[0]),x=function(t,e,i,n){var r=Le(i),o=Ka(t,e,r,n);return(!isFinite(o)||o<=0)&&Pe(i,(function(i){return o=Ka(t,e,i,n),isFinite(o)&&o>0})),o}(e,n,y,m);if(!isFinite(x)||x<=0)return f.state=ps,f;var S=void 0!==u?u:.5;if(f.triangulation_=new za(e,n,y,g,x*S,m),0===f.triangulation_.getTriangles().length)return f.state=ps,f;f.sourceZ_=i.getZForResolution(x);var C=f.triangulation_.calculateSourceExtent();if(g&&(e.canWrapX()?(C[1]=Pt(C[1],g[1],g[3]),C[3]=Pt(C[3],g[1],g[3])):C=je(C,g)),Ie(C)){for(var w=i.getTileRangeForExtentAndZ(C,f.sourceZ_),E=w.minX;E<=w.maxX;E++)for(var b=w.minY;b<=w.maxY;b++){var T=h(f.sourceZ_,E,b,a);T&&f.sourceTiles_.push(T)}0===f.sourceTiles_.length&&(f.state=ps)}else f.state=ps;return f}return Za(e,t),e.prototype.getImage=function(){return this.canvas_},e.prototype.reproject_=function(){var t=[];if(this.sourceTiles_.forEach(function(e,i,n){e&&e.getState()==us&&t.push({extent:this.sourceTileGrid_.getTileCoordExtent(e.tileCoord),image:e.getImage()})}.bind(this)),this.sourceTiles_.length=0,0===t.length)this.state=cs;else{var e=this.wrappedTileCoord_[0],i=this.targetTileGrid_.getTileSize(e),n="number"==typeof i?i:i[0],r="number"==typeof i?i:i[1],o=this.targetTileGrid_.getResolution(e),s=this.sourceTileGrid_.getResolution(this.sourceZ_),a=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=Ya(n,r,this.pixelRatio_,s,this.sourceTileGrid_.getExtent(),o,a,this.triangulation_,t,this.gutter_,this.renderEdges_,this.contextOptions_),this.state=us}this.changed()},e.prototype.load=function(){if(this.state==ls){this.state=hs,this.changed();var t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach(function(e,i,n){var r=e.getState();if(r==ls||r==hs){t++;var o=F(e,S,(function(i){var n=e.getState();n!=us&&n!=cs&&n!=ps||(A(o),0===--t&&(this.unlistenSources_(),this.reproject_()))}),this);this.sourcesListenerKeys_.push(o)}}.bind(this)),this.sourceTiles_.forEach((function(t,e,i){t.getState()==ls&&t.load()})),0===t&&setTimeout(this.reproject_.bind(this),0)}},e.prototype.unlistenSources_=function(){this.sourcesListenerKeys_.forEach(A),this.sourcesListenerKeys_=null},e}(Da),Va=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}return t.prototype.canExpireCache=function(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark},t.prototype.clear=function(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null},t.prototype.containsKey=function(t){return this.entries_.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var e=this.oldest_;e;)t(e.value_,e.key_,this),e=e.newer},t.prototype.get=function(t,e){var i=this.entries_[t];return pe(void 0!==i,15),i===this.newest_||(i===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(i.newer.older=i.older,i.older.newer=i.newer),i.newer=null,i.older=this.newest_,this.newest_.newer=i,this.newest_=i),i.value_},t.prototype.remove=function(t){var e=this.entries_[t];return pe(void 0!==e,15),e===this.newest_?(this.newest_=e.older,this.newest_&&(this.newest_.newer=null)):e===this.oldest_?(this.oldest_=e.newer,this.oldest_&&(this.oldest_.older=null)):(e.newer.older=e.older,e.older.newer=e.newer),delete this.entries_[t],--this.count_,e.value_},t.prototype.getCount=function(){return this.count_},t.prototype.getKeys=function(){var t,e=new Array(this.count_),i=0;for(t=this.newest_;t;t=t.older)e[i++]=t.key_;return e},t.prototype.getValues=function(){var t,e=new Array(this.count_),i=0;for(t=this.newest_;t;t=t.older)e[i++]=t.value_;return e},t.prototype.peekLast=function(){return this.oldest_.value_},t.prototype.peekLastKey=function(){return this.oldest_.key_},t.prototype.peekFirstKey=function(){return this.newest_.key_},t.prototype.pop=function(){var t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_},t.prototype.replace=function(t,e){this.get(t),this.entries_[t].value_=e},t.prototype.set=function(t,e){pe(!(t in this.entries_),16);var i={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=i:this.oldest_=i,this.newest_=i,this.entries_[t]=i,++this.count_},t.prototype.setSize=function(t){this.highWaterMark=t},t}();function Ua(t,e,i,n){return void 0!==n?(n[0]=t,n[1]=e,n[2]=i,n):[t,e,i]}function Ha(t,e,i){return t+"/"+e+"/"+i}function qa(t){return Ha(t[0],t[1],t[2])}var Ja=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Qa=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Ja(e,t),e.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},e.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=function(t){return t.split("/").map(Number)}(this.peekFirstKey())[0];this.forEach(function(e){e.tileCoord[0]!==t&&(this.remove(qa(e.tileCoord)),e.release())}.bind(this))}},e}(Va),$a="tileloadstart",tl="tileloadend",el="tileloaderror",il=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}();function nl(t){return t?Array.isArray(t)?function(e){return t}:"function"==typeof t?t:function(e){return[t]}:null}var rl=function(t){function e(e){var i=t.call(this)||this;return i.projection_=li(e.projection),i.attributions_=nl(e.attributions),i.attributionsCollapsible_=void 0===e.attributionsCollapsible||e.attributionsCollapsible,i.loading=!1,i.state_=void 0!==e.state?e.state:Nr,i.wrapX_=void 0!==e.wrapX&&e.wrapX,i}return il(e,t),e.prototype.getAttributions=function(){return this.attributions_},e.prototype.getAttributionsCollapsible=function(){return this.attributionsCollapsible_},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolutions=function(){return j()},e.prototype.getState=function(){return this.state_},e.prototype.getWrapX=function(){return this.wrapX_},e.prototype.getContextOptions=function(){},e.prototype.refresh=function(){this.changed()},e.prototype.setAttributions=function(t){this.attributions_=nl(t),this.changed()},e.prototype.setState=function(t){this.state_=t,this.changed()},e}(B),ol=function(){function t(t,e,i,n){this.minX=t,this.maxX=e,this.minY=i,this.maxY=n}return t.prototype.contains=function(t){return this.containsXY(t[1],t[2])},t.prototype.containsTileRange=function(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY},t.prototype.containsXY=function(t,e){return this.minX<=t&&t<=this.maxX&&this.minY<=e&&e<=this.maxY},t.prototype.equals=function(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY},t.prototype.extend=function(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function sl(t,e,i,n,r){return void 0!==r?(r.minX=t,r.maxX=e,r.minY=i,r.maxY=n,r):new ol(t,e,i,n)}var al=ol,ll=[0,0,0],hl=function(){function t(t){var e,i,n,r;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.resolutions_=t.resolutions,pe((e=this.resolutions_,i=!0,n=function(t,e){return e-t}||s,e.every((function(t,r){if(0===r)return!0;var o=n(e[r-1],t);return!(o>0||i&&0===o)}))),17),!t.origins)for(var o=0,a=this.resolutions_.length-1;o=this.minZoom;){if(e(a,2===this.zoomFactor_?sl(r=Math.floor(r/2),r,o=Math.floor(o/2),o,i):this.getTileRangeForExtentAndZ(s,a,i)))return!0;--a}return!1},t.prototype.getExtent=function(){return this.extent_},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this.origin_?this.origin_:this.origins_[t]},t.prototype.getResolution=function(t){return this.resolutions_[t]},t.prototype.getResolutions=function(){return this.resolutions_},t.prototype.getTileCoordChildTileRange=function(t,e,i){if(t[0]0?n:Math.max(s/a[0],o/a[1]),h=r+1,u=new Array(h),c=0;ci||i>e.getMaxZoom())return!1;var o,s=e.getExtent();return!(o=s?e.getTileRangeForExtentAndZ(s,i):e.getFullTileRange(i))||o.containsXY(n,r)}(t,n)?t:null},e.prototype.clear=function(){this.tileCache.clear()},e.prototype.refresh=function(){this.clear(),t.prototype.refresh.call(this)},e.prototype.updateCacheSize=function(t,e){var i=this.getTileCacheForProjection(e);t>i.highWaterMark&&(i.highWaterMark=t)},e.prototype.useTile=function(t,e,i,n){},e}(rl),_l=function(t){function e(e,i){var n=t.call(this,e)||this;return n.tile=i,n}return fl(e,t),e}(n),gl=dl;function yl(t,e){var i=/\{z\}/g,n=/\{x\}/g,r=/\{y\}/g,o=/\{-y\}/g;return function(s,a,l){return s?t.replace(i,s[0].toString()).replace(n,s[1].toString()).replace(r,s[2].toString()).replace(o,(function(){var t=s[0],i=e.getFullTileRange(t);return pe(i,55),(i.getHeight()-s[2]-1).toString()})):void 0}}function vl(t,e){for(var i=t.length,n=new Array(i),r=0;rOpenStreetMap contributors.'];var r=void 0!==n.crossOrigin?n.crossOrigin:"anonymous",o=void 0!==n.url?n.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";return t.call(this,{attributions:i,cacheSize:n.cacheSize,crossOrigin:r,imageSmoothing:n.imageSmoothing,opaque:void 0===n.opaque||n.opaque,maxZoom:void 0!==n.maxZoom?n.maxZoom:19,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileLoadFunction:n.tileLoadFunction,url:o,wrapX:n.wrapX,attributionsCollapsible:!1})||this}return Tl(e,t),e}(bl),Ol="bottom-left",Pl="bottom-center",Il="bottom-right",Ml="center-left",Fl="center-center",Ll="center-right",Al="top-left",Dl="top-center",kl="top-right";function jl(t){return(jl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Gl=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),zl="element",Wl="map",Xl="offset",Nl="position",Kl="positioning",Yl=function(t){function e(e){var i=t.call(this)||this;i.options=e,i.id=e.id,i.insertFirst=void 0===e.insertFirst||e.insertFirst,i.stopEvent=void 0===e.stopEvent||e.stopEvent,i.element=document.createElement("div"),i.element.className=void 0!==e.className?e.className:"ol-overlay-container ol-selectable",i.element.style.position="absolute",i.element.style.pointerEvents="auto";var n=e.autoPan;return n&&"object"!==jl(n)&&(n={animation:e.autoPanAnimation,margin:e.autoPanMargin}),i.autoPan=n||!1,i.rendered={transform_:"",visible:!0},i.mapPostrenderListenerKey=null,i.addEventListener(Z(zl),i.handleElementChanged),i.addEventListener(Z(Wl),i.handleMapChanged),i.addEventListener(Z(Xl),i.handleOffsetChanged),i.addEventListener(Z(Nl),i.handlePositionChanged),i.addEventListener(Z(Kl),i.handlePositioningChanged),void 0!==e.element&&i.setElement(e.element),i.setOffset(void 0!==e.offset?e.offset:[0,0]),i.setPositioning(void 0!==e.positioning?e.positioning:Al),void 0!==e.position&&i.setPosition(e.position),i}return Gl(e,t),e.prototype.getElement=function(){return this.get(zl)},e.prototype.getId=function(){return this.id},e.prototype.getMap=function(){return this.get(Wl)},e.prototype.getOffset=function(){return this.get(Xl)},e.prototype.getPosition=function(){return this.get(Nl)},e.prototype.getPositioning=function(){return this.get(Kl)},e.prototype.handleElementChanged=function(){ht(this.element);var t=this.getElement();t&&this.element.appendChild(t)},e.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(lt(this.element),A(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=F(t,V,this.render,this),this.updatePixelPosition();var e=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?e.insertBefore(this.element,e.childNodes[0]||null):e.appendChild(this.element),this.performAutoPan()}},e.prototype.render=function(){this.updatePixelPosition()},e.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},e.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},e.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},e.prototype.setElement=function(t){this.set(zl,t)},e.prototype.setMap=function(t){this.set(Wl,t)},e.prototype.setOffset=function(t){this.set(Xl,t)},e.prototype.setPosition=function(t){this.set(Nl,t)},e.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},e.prototype.panIntoView=function(t){var e=this.getMap();if(e&&e.getTargetElement()&&this.get(Nl)){var i=this.getRect(e.getTargetElement(),e.getSize()),n=this.getElement(),r=this.getRect(n,[ot(n),st(n)]),o=t||{},s=void 0===o.margin?20:o.margin;if(!ve(i,r)){var a=r[0]-i[0],l=i[2]-r[2],h=r[1]-i[1],u=i[3]-r[3],c=[0,0];if(a<0?c[0]=a-s:l<0&&(c[0]=Math.abs(l)+s),h<0?c[1]=h-s:u<0&&(c[1]=Math.abs(u)+s),0!==c[0]||0!==c[1]){var p=e.getView().getCenterInternal(),f=e.getPixelFromCoordinateInternal(p),d=[f[0]+c[0],f[1]+c[1]],_=o.animation||{};e.getView().animateInternal({center:e.getCoordinateFromPixelInternal(d),duration:_.duration,easing:_.easing})}}}},e.prototype.getRect=function(t,e){var i=t.getBoundingClientRect(),n=i.left+window.pageXOffset,r=i.top+window.pageYOffset;return[n,r,n+e[0],r+e[1]]},e.prototype.setPositioning=function(t){this.set(Kl,t)},e.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},e.prototype.updatePixelPosition=function(){var t=this.getMap(),e=this.getPosition();if(t&&t.isRendered()&&e){var i=t.getPixelFromCoordinate(e),n=t.getSize();this.updateRenderedPosition(i,n)}else this.setVisible(!1)},e.prototype.updateRenderedPosition=function(t,e){var i=this.element.style,n=this.getOffset(),r=this.getPositioning();this.setVisible(!0);var o=Math.round(t[0]+n[0])+"px",s=Math.round(t[1]+n[1])+"px",a="0%",l="0%";r==Il||r==Ll||r==kl?a="-100%":r!=Pl&&r!=Fl&&r!=Dl||(a="-50%"),r==Ol||r==Pl||r==Il?l="-100%":r!=Ml&&r!=Fl&&r!=Ll||(l="-50%");var h="translate("+a+", "+l+") translate("+o+", "+s+")";this.rendered.transform_!=h&&(this.rendered.transform_=h,i.transform=h,i.msTransform=h)},e.prototype.getOptions=function(){return this.options},e}(B),Zl=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null,this.lineCap_=e.lineCap,this.lineDash_=void 0!==e.lineDash?e.lineDash:null,this.lineDashOffset_=e.lineDashOffset,this.lineJoin_=e.lineJoin,this.miterLimit_=e.miterLimit,this.width_=e.width}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.color_},t.prototype.getLineCap=function(){return this.lineCap_},t.prototype.getLineDash=function(){return this.lineDash_},t.prototype.getLineDashOffset=function(){return this.lineDashOffset_},t.prototype.getLineJoin=function(){return this.lineJoin_},t.prototype.getMiterLimit=function(){return this.miterLimit_},t.prototype.getWidth=function(){return this.width_},t.prototype.setColor=function(t){this.color_=t},t.prototype.setLineCap=function(t){this.lineCap_=t},t.prototype.setLineDash=function(t){this.lineDash_=t},t.prototype.setLineDashOffset=function(t){this.lineDashOffset_=t},t.prototype.setLineJoin=function(t){this.lineJoin_=t},t.prototype.setMiterLimit=function(t){this.miterLimit_=t},t.prototype.setWidth=function(t){this.width_=t},t}(),Bl=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Vl=function(t){function e(e){var i=this,n=void 0!==e.rotateWithView&&e.rotateWithView;return(i=t.call(this,{opacity:1,rotateWithView:n,rotation:void 0!==e.rotation?e.rotation:0,scale:1,displacement:void 0!==e.displacement?e.displacement:[0,0]})||this).canvas_={},i.hitDetectionCanvas_=null,i.fill_=void 0!==e.fill?e.fill:null,i.origin_=[0,0],i.points_=e.points,i.radius_=void 0!==e.radius?e.radius:e.radius1,i.radius2_=e.radius2,i.angle_=void 0!==e.angle?e.angle:0,i.stroke_=void 0!==e.stroke?e.stroke:null,i.anchor_=null,i.size_=null,i.imageSize_=null,i.hitDetectionImageSize_=null,i.render(),i}return Bl(e,t),e.prototype.clone=function(){var t=new e({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(),displacement:this.getDisplacement().slice()});return t.setOpacity(this.getOpacity()),t.setScale(this.getScale()),t},e.prototype.getAnchor=function(){return this.anchor_},e.prototype.getAngle=function(){return this.angle_},e.prototype.getFill=function(){return this.fill_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionCanvas_){var t=this.createRenderOptions();this.createHitDetectionCanvas_(t)}return this.hitDetectionCanvas_},e.prototype.getImage=function(t){if(!this.canvas_[t||1]){var e=this.createRenderOptions(),i=rt(e.size*t||1,e.size*t||1);this.draw_(e,i,0,0,t||1),this.canvas_[t||1]=i.canvas}return this.canvas_[t||1]},e.prototype.getPixelRatio=function(t){return t},e.prototype.getImageSize=function(){return this.imageSize_},e.prototype.getHitDetectionImageSize=function(){return this.hitDetectionImageSize_},e.prototype.getImageState=function(){return tr},e.prototype.getOrigin=function(){return this.origin_},e.prototype.getPoints=function(){return this.points_},e.prototype.getRadius=function(){return this.radius_},e.prototype.getRadius2=function(){return this.radius2_},e.prototype.getSize=function(){return this.size_},e.prototype.getStroke=function(){return this.stroke_},e.prototype.listenImageChange=function(t){},e.prototype.load=function(){},e.prototype.unlistenImageChange=function(t){},e.prototype.createRenderOptions=function(){var t,e=qr,i=Qr,n=0,r=null,o=0,s=0;return this.stroke_&&(null===(t=this.stroke_.getColor())&&(t=$r),t=Vr(t),void 0===(s=this.stroke_.getWidth())&&(s=1),r=this.stroke_.getLineDash(),o=this.stroke_.getLineDashOffset(),void 0===(i=this.stroke_.getLineJoin())&&(i=Qr),void 0===(e=this.stroke_.getLineCap())&&(e=qr),void 0===(n=this.stroke_.getMiterLimit())&&(n=10)),{strokeStyle:t,strokeWidth:s,size:2*(this.radius_+s)+1,lineCap:e,lineDash:r,lineDashOffset:o,lineJoin:i,miterLimit:n}},e.prototype.render=function(){var t=this.createRenderOptions(),e=rt(t.size,t.size);this.draw_(t,e,0,0,1),this.canvas_[1]=e.canvas;var i=e.canvas.width,n=i,r=this.getDisplacement();this.hitDetectionImageSize_=[t.size,t.size],this.createHitDetectionCanvas_(t),this.anchor_=[i/2-r[0],i/2+r[1]],this.size_=[i,i],this.imageSize_=[n,n]},e.prototype.draw_=function(t,e,i,n,r){var o,s,a;e.setTransform(r,0,0,r,0,0),e.translate(i,n),e.beginPath();var l=this.points_;if(l===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var h=void 0!==this.radius2_?this.radius2_:this.radius_;for(h!==this.radius_&&(l*=2),o=0;o<=l;o++)s=2*o*Math.PI/l-Math.PI/2+this.angle_,a=o%2==0?this.radius_:h,e.lineTo(t.size/2+a*Math.cos(s),t.size/2+a*Math.sin(s))}if(this.fill_){var u=this.fill_.getColor();null===u&&(u=Hr),e.fillStyle=Vr(u),e.fill()}this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,e.setLineDash&&t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.lineCap=t.lineCap,e.lineJoin=t.lineJoin,e.miterLimit=t.miterLimit,e.stroke()),e.closePath()},e.prototype.createHitDetectionCanvas_=function(t){if(this.hitDetectionCanvas_=this.getImage(1),this.fill_){var e=this.fill_.getColor(),i=0;if("string"==typeof e&&(e=ur(e)),null===e?i=1:Array.isArray(e)&&(i=4===e.length?e[3]:1),0===i){var n=rt(t.size,t.size);this.hitDetectionCanvas_=n.canvas,this.drawHitDetectionCanvas_(t,n,0,0)}}},e.prototype.drawHitDetectionCanvas_=function(t,e,i,n){e.translate(i,n),e.beginPath();var r=this.points_;if(r===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var o=void 0!==this.radius2_?this.radius2_:this.radius_;o!==this.radius_&&(r*=2);var s=void 0,a=void 0,l=void 0;for(s=0;s<=r;s++)l=2*s*Math.PI/r-Math.PI/2+this.angle_,a=s%2==0?this.radius_:o,e.lineTo(t.size/2+a*Math.cos(l),t.size/2+a*Math.sin(l))}e.fillStyle=Hr,e.fill(),this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.stroke()),e.closePath()},e}(nr),Ul=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Hl=function(t){function e(e){var i=e||{};return t.call(this,{points:1/0,fill:i.fill,radius:i.radius,stroke:i.stroke,displacement:void 0!==i.displacement?i.displacement:[0,0]})||this}return Ul(e,t),e.prototype.clone=function(){var t=new e({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),displacement:this.getDisplacement().slice()});return t.setOpacity(this.getOpacity()),t.setScale(this.getScale()),t},e.prototype.setRadius=function(t){this.radius_=t,this.render()},e}(Vl),ql=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0})},t.prototype.getColor=function(){return this.color_},t.prototype.setColor=function(t){this.color_=t},t}();function Jl(t){return(Jl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Ql=function(){function t(t){var e=t||{};this.geometry_=null,this.geometryFunction_=eh,void 0!==e.geometry&&this.setGeometry(e.geometry),this.fill_=void 0!==e.fill?e.fill:null,this.image_=void 0!==e.image?e.image:null,this.renderer_=void 0!==e.renderer?e.renderer:null,this.stroke_=void 0!==e.stroke?e.stroke:null,this.text_=void 0!==e.text?e.text:null,this.zIndex_=e.zIndex}return t.prototype.clone=function(){var e=this.getGeometry();return e&&"object"===Jl(e)&&(e=e.clone()),new t({geometry:e,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})},t.prototype.getRenderer=function(){return this.renderer_},t.prototype.setRenderer=function(t){this.renderer_=t},t.prototype.getGeometry=function(){return this.geometry_},t.prototype.getGeometryFunction=function(){return this.geometryFunction_},t.prototype.getFill=function(){return this.fill_},t.prototype.setFill=function(t){this.fill_=t},t.prototype.getImage=function(){return this.image_},t.prototype.setImage=function(t){this.image_=t},t.prototype.getStroke=function(){return this.stroke_},t.prototype.setStroke=function(t){this.stroke_=t},t.prototype.getText=function(){return this.text_},t.prototype.setText=function(t){this.text_=t},t.prototype.getZIndex=function(){return this.zIndex_},t.prototype.setGeometry=function(t){"function"==typeof t?this.geometryFunction_=t:"string"==typeof t?this.geometryFunction_=function(e){return e.get(t)}:t?void 0!==t&&(this.geometryFunction_=function(){return t}):this.geometryFunction_=eh,this.geometry_=t},t.prototype.setZIndex=function(t){this.zIndex_=t},t}();var $l=null;function th(t,e){if(!$l){var i=new ql({color:"rgba(255,255,255,0.4)"}),n=new Zl({color:"#3399CC",width:1.25});$l=[new Ql({image:new Hl({fill:i,stroke:n,radius:5}),fill:i,stroke:n})]}return $l}function eh(t){return t.getGeometry()}var ih=Ql,nh="preload",rh="useInterimTilesOnError",oh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),sh=function(t){function e(e){var i=this,n=e||{},r=d({},n);return delete r.preload,delete r.useInterimTilesOnError,(i=t.call(this,r)||this).setPreload(void 0!==n.preload?n.preload:0),i.setUseInterimTilesOnError(void 0===n.useInterimTilesOnError||n.useInterimTilesOnError),i}return oh(e,t),e.prototype.getPreload=function(){return this.get(nh)},e.prototype.setPreload=function(t){this.set(nh,t)},e.prototype.getUseInterimTilesOnError=function(){return this.get(rh)},e.prototype.setUseInterimTilesOnError=function(t){this.set(rh,t)},e}(Zr),ah=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),lh=function(t){function e(e){var i=t.call(this)||this;return i.boundHandleImageChange_=i.handleImageChange_.bind(i),i.layer_=e,i}return ah(e,t),e.prototype.getFeatures=function(t){return j()},e.prototype.prepareFrame=function(t){return j()},e.prototype.renderFrame=function(t,e){return j()},e.prototype.loadedTileCallback=function(t,e,i){t[e]||(t[e]={}),t[e][i.tileCoord.toString()]=i},e.prototype.createLoadedTileFinder=function(t,e,i){return function(n,r){var o=this.loadedTileCallback.bind(this,i,n);return t.forEachLoadedTile(e,n,r,o)}.bind(this)},e.prototype.forEachFeatureAtCoordinate=function(t,e,i,n,r){},e.prototype.getDataAtPixel=function(t,e,i){return j()},e.prototype.getLayer=function(){return this.layer_},e.prototype.handleFontsChanged=function(){},e.prototype.handleImageChange_=function(t){t.target.getState()===tr&&this.renderIfReadyAndVisible()},e.prototype.loadImage=function(t){var e=t.getState();return e!=tr&&e!=er&&t.addEventListener(S,this.boundHandleImageChange_),e==Qn&&(t.load(),e=t.getState()),e==tr},e.prototype.renderIfReadyAndVisible=function(){var t=this.getLayer();t.getVisible()&&t.getSourceState()==Nr&&t.changed()},e}(k),hh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),uh=function(t){function e(e){var i=t.call(this,e)||this;return i.container=null,i.renderedResolution,i.tempTransform=[1,0,0,1,0,0],i.pixelTransform=[1,0,0,1,0,0],i.inversePixelTransform=[1,0,0,1,0,0],i.context=null,i.containerReused=!1,i}return hh(e,t),e.prototype.useContainer=function(t,e,i){var n,r,o=this.getLayer().getClassName();t&&""===t.style.opacity&&t.className===o&&((a=t.firstElementChild)instanceof HTMLCanvasElement&&(r=a.getContext("2d")));if(!r||0!==r.canvas.width&&r.canvas.style.transform!==e?this.containerReused&&(this.container=null,this.context=null,this.containerReused=!1):(this.container=t,this.context=r,this.containerReused=!0),!this.container){(n=document.createElement("div")).className=o;var s=n.style;s.position="absolute",s.width="100%",s.height="100%";var a=(r=rt()).canvas;n.appendChild(a),(s=a.style).position="absolute",s.left="0",s.transformOrigin="top left",this.container=n,this.context=r}},e.prototype.clip=function(t,e,i){var n=e.pixelRatio,r=e.size[0]*n/2,o=e.size[1]*n/2,s=e.viewState.rotation,a=Ge(i),l=ze(i),h=Fe(i),u=Me(i);Ki(e.coordinateToPixelTransform,a),Ki(e.coordinateToPixelTransform,l),Ki(e.coordinateToPixelTransform,h),Ki(e.coordinateToPixelTransform,u),t.save(),_o(t,-s,r,o),t.beginPath(),t.moveTo(a[0]*n,a[1]*n),t.lineTo(l[0]*n,l[1]*n),t.lineTo(h[0]*n,h[1]*n),t.lineTo(u[0]*n,u[1]*n),t.clip(),_o(t,s,r,o)},e.prototype.clipUnrotated=function(t,e,i){var n=Ge(i),r=ze(i),o=Fe(i),s=Me(i);Ki(e.coordinateToPixelTransform,n),Ki(e.coordinateToPixelTransform,r),Ki(e.coordinateToPixelTransform,o),Ki(e.coordinateToPixelTransform,s);var a=this.inversePixelTransform;Ki(a,n),Ki(a,r),Ki(a,o),Ki(a,s),t.save(),t.beginPath(),t.moveTo(Math.round(n[0]),Math.round(n[1])),t.lineTo(Math.round(r[0]),Math.round(r[1])),t.lineTo(Math.round(o[0]),Math.round(o[1])),t.lineTo(Math.round(s[0]),Math.round(s[1])),t.clip()},e.prototype.dispatchRenderEvent_=function(t,e,i){var n=this.getLayer();if(n.hasListener(t)){var r=new Do(t,this.inversePixelTransform,i,e);n.dispatchEvent(r)}},e.prototype.preRender=function(t,e){this.dispatchRenderEvent_(kr,t,e)},e.prototype.postRender=function(t,e){this.dispatchRenderEvent_(jr,t,e)},e.prototype.getRenderTransform=function(t,e,i,n,r,o,s){var a=r/2,l=o/2,h=n/e,u=-h,c=-t[0]+s,p=-t[1];return Yi(this.tempTransform,a,l,h,u,-i,c,p)},e.prototype.getDataAtPixel=function(t,e,i){var n,r=Ki(this.inversePixelTransform,t.slice()),o=this.context;try{var s=Math.round(r[0]),a=Math.round(r[1]),l=document.createElement("canvas"),h=l.getContext("2d");l.width=1,l.height=1,h.clearRect(0,0,1,1),h.drawImage(o.canvas,s,a,1,1,0,0,1,1),n=h.getImageData(0,0,1,1).data}catch(t){return"SecurityError"===t.name?new Uint8Array:n}return 0===n[3]?null:n},e}(lh),ch=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),ph=function(t){function e(e){var i=t.call(this,e)||this;return i.extentChanged=!0,i.renderedExtent_=null,i.renderedPixelRatio,i.renderedProjection=null,i.renderedRevision,i.renderedTiles=[],i.newTiles_=!1,i.tmpExtent=[1/0,1/0,-1/0,-1/0],i.tmpTileRange_=new al(0,0,0,0),i}return ch(e,t),e.prototype.isDrawableTile=function(t){var e=this.getLayer(),i=t.getState(),n=e.getUseInterimTilesOnError();return i==us||i==ps||i==cs&&!n},e.prototype.getTile=function(t,e,i,n){var r=n.pixelRatio,o=n.viewState.projection,s=this.getLayer(),a=s.getSource().getTile(t,e,i,r,o);return a.getState()==cs&&(s.getUseInterimTilesOnError()?s.getPreload()>0&&(this.newTiles_=!0):a.setState(us)),this.isDrawableTile(a)||(a=a.getInterimTile()),a},e.prototype.loadedTileCallback=function(e,i,n){return!!this.isDrawableTile(n)&&t.prototype.loadedTileCallback.call(this,e,i,n)},e.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},e.prototype.renderFrame=function(t,e){var i=t.layerStatesArray[t.layerIndex],n=t.viewState,r=n.projection,o=n.resolution,a=n.center,l=n.rotation,h=t.pixelRatio,u=this.getLayer(),c=u.getSource(),p=c.getRevision(),f=c.getTileGridForProjection(r),_=f.getZForResolution(o,c.zDirection),g=f.getResolution(_),y=t.extent,v=i.extent&&bi(i.extent,r);v&&(y=je(y,bi(i.extent,r)));var m=c.getTilePixelRatio(h),x=Math.round(t.size[0]*m),S=Math.round(t.size[1]*m);if(l){var C=Math.round(Math.sqrt(x*x+S*S));x=C,S=C}var w=g*x/2/m,E=g*S/2/m,b=[a[0]-w,a[1]-E,a[0]+w,a[1]+E],T=f.getTileRangeForExtentAndZ(y,_),R={};R[_]={};var O=this.createLoadedTileFinder(c,r,R),P=this.tmpExtent,I=this.tmpTileRange_;this.newTiles_=!1;for(var M=T.minX;M<=T.maxX;++M)for(var F=T.minY;F<=T.maxY;++F){var L=this.getTile(_,M,F,t);if(this.isDrawableTile(L)){var A=z(this);if(L.getState()==us){R[_][L.tileCoord.toString()]=L;var D=L.inTransition(A);this.newTiles_||!D&&-1!==this.renderedTiles.indexOf(L)||(this.newTiles_=!0)}if(1===L.getAlpha(A,t.time))continue}var k=f.getTileCoordChildTileRange(L.tileCoord,I,P),j=!1;k&&(j=O(_+1,k)),j||f.forEachTileCoordParentTileRange(L.tileCoord,O,I,P)}var G=g/o;Yi(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/m,1/m,l,-x/2,-S/2);var W,X=(W=this.pixelTransform,et?Bi(W):(yo||(yo=rt(1,1).canvas),yo.style.transform=Bi(W),yo.style.transform));this.useContainer(e,X,i.opacity);var N=this.context,K=N.canvas;Zi(this.inversePixelTransform,this.pixelTransform),Yi(this.tempTransform,x/2,S/2,G,G,0,-x/2,-S/2),K.width!=x||K.height!=S?(K.width=x,K.height=S):this.containerReused||N.clearRect(0,0,x,S),v&&this.clipUnrotated(N,t,v),d(N,c.getContextOptions()),this.preRender(N,t),this.renderedTiles.length=0;var Y,Z,B,V=Object.keys(R).map(Number);V.sort(s),1!==i.opacity||this.containerReused&&!c.getOpaque(t.viewState.projection)?(Y=[],Z=[]):V=V.reverse();for(var U=V.length-1;U>=0;--U){var H=V[U],q=c.getTilePixelSize(H,h,r),J=f.getResolution(H)/g,Q=q[0]*J*G,$=q[1]*J*G,tt=f.getTileCoordForCoordAndZ(Ge(b),H),it=f.getTileCoordExtent(tt),nt=Ki(this.tempTransform,[m*(it[0]-b[0])/g,m*(b[3]-it[3])/g]),ot=m*c.getGutterForProjection(r),st=R[H];for(var at in st){var lt=(L=st[at]).tileCoord,ht=nt[0]-(tt[1]-lt[1])*Q,ut=Math.round(ht+Q),ct=nt[1]-(tt[2]-lt[2])*$,pt=Math.round(ct+$),ft=ut-(M=Math.round(ht)),dt=pt-(F=Math.round(ct)),_t=_===H;if(!(D=_t&&1!==L.getAlpha(z(this),t.time)))if(Y){N.save(),B=[M,F,M+ft,F,M+ft,F+dt,M,F+dt];for(var gt=0,yt=Y.length;gt=200&&a.status<300){var o=e.getType(),l=void 0;o==bh||o==Th?l=a.responseText:o==Rh?(l=a.responseXML)||(l=(new DOMParser).parseFromString(a.responseText,"application/xml")):o==Eh&&(l=a.response),l?i.call(this,e.readFeatures(l,{extent:r,featureProjection:s}),e.readProjection(l)):n.call(this)}else n.call(this)}.bind(this),a.onerror=function(){n.call(this)}.bind(this),a.send()}}(t,e,(function(t,e){"function"==typeof this.addFeatures&&this.addFeatures(t)}),f)}var Ih=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Mh=function(t){function e(e,i){var n=t.call(this,e)||this;return n.feature=i,n}return Ih(e,t),e}(n),Fh=function(t){function e(e){var i=this,n=e||{};(i=t.call(this,{attributions:n.attributions,projection:void 0,state:Nr,wrapX:void 0===n.wrapX||n.wrapX})||this).loader_=f,i.format_=n.format,i.overlaps_=void 0===n.overlaps||n.overlaps,i.url_=n.url,void 0!==n.loader?i.loader_=n.loader:void 0!==i.url_&&(pe(i.format_,7),i.loader_=Ph(i.url_,i.format_)),i.strategy_=void 0!==n.strategy?n.strategy:wh;var r,o,s=void 0===n.useSpatialIndex||n.useSpatialIndex;return i.featuresRtree_=s?new vh:null,i.loadedExtentsRtree_=new vh,i.nullGeometryFeatures_={},i.idIndex_={},i.uidIndex_={},i.featureChangeKeys_={},i.featuresCollection_=null,Array.isArray(n.features)?o=n.features:n.features&&(o=(r=n.features).getArray()),s||void 0!==r||(r=new Ko(o)),void 0!==o&&i.addFeaturesInternal(o),void 0!==r&&i.bindFeaturesCollection_(r),i}return Ih(e,t),e.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},e.prototype.addFeatureInternal=function(t){var e=z(t);if(this.addToIndex_(e,t)){this.setupChangeEvents_(e,t);var i=t.getGeometry();if(i){var n=i.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(n,t)}else this.nullGeometryFeatures_[e]=t;this.dispatchEvent(new Mh(mh,t))}else this.featuresCollection_&&this.featuresCollection_.remove(t)},e.prototype.setupChangeEvents_=function(t,e){this.featureChangeKeys_[t]=[F(e,S,this.handleFeatureChange_,this),F(e,r,this.handleFeatureChange_,this)]},e.prototype.addToIndex_=function(t,e){var i=!0,n=e.getId();return void 0!==n&&(n.toString()in this.idIndex_?i=!1:this.idIndex_[n.toString()]=e),i&&(pe(!(t in this.uidIndex_),30),this.uidIndex_[t]=e),i},e.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},e.prototype.addFeaturesInternal=function(t){for(var e=[],i=[],n=[],r=0,o=t.length;rthis.maxLineWidth&&(this.maxLineWidth=i.lineWidth,this.bufferedMaxExtent_=null)}else i.strokeStyle=void 0,i.lineCap=void 0,i.lineDash=null,i.lineDashOffset=void 0,i.lineJoin=void 0,i.lineWidth=void 0,i.miterLimit=void 0},e.prototype.createFill=function(t){var e=t.fillStyle,i=[Xh.SET_FILL_STYLE,e];return"string"!=typeof e&&i.push(!0),i},e.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},e.prototype.createStroke=function(t){return[Xh.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},e.prototype.updateFillStyle=function(t,e){var i=t.fillStyle;"string"==typeof i&&t.currentFillStyle==i||(void 0!==i&&this.instructions.push(e.call(this,t)),t.currentFillStyle=i)},e.prototype.updateStrokeStyle=function(t,e){var i=t.strokeStyle,n=t.lineCap,r=t.lineDash,o=t.lineDashOffset,s=t.lineJoin,a=t.lineWidth,l=t.miterLimit;(t.currentStrokeStyle!=i||t.currentLineCap!=n||r!=t.currentLineDash&&!u(t.currentLineDash,r)||t.currentLineDashOffset!=o||t.currentLineJoin!=s||t.currentLineWidth!=a||t.currentMiterLimit!=l)&&(void 0!==i&&e.call(this,t),t.currentStrokeStyle=i,t.currentLineCap=n,t.currentLineDash=r,t.currentLineDashOffset=o,t.currentLineJoin=s,t.currentLineWidth=a,t.currentMiterLimit=l)},e.prototype.endGeometry=function(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;var e=[Xh.END_GEOMETRY,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)},e.prototype.getBufferedMaxExtent=function(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=_e(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;de(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_},e}(Br),Yh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Zh=function(t){function e(e,i,n,r){var o=t.call(this,e,i,n,r)||this;return o.declutterGroups_=null,o.hitDetectionImage_=null,o.image_=null,o.imagePixelRatio_=void 0,o.anchorX_=void 0,o.anchorY_=void 0,o.height_=void 0,o.opacity_=void 0,o.originX_=void 0,o.originY_=void 0,o.rotateWithView_=void 0,o.rotation_=void 0,o.scale_=void 0,o.width_=void 0,o}return Yh(e,t),e.prototype.drawCoordinates_=function(t,e,i,n){return this.appendFlatCoordinates(t,e,i,n,!1,!1)},e.prototype.drawPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var i=t.getFlatCoordinates(),n=t.getStride(),r=this.coordinates.length,o=this.drawCoordinates_(i,0,i.length,n);this.instructions.push([Xh.DRAW_IMAGE,r,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,this.declutterGroups_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,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.hitDetectionInstructions.push([Xh.DRAW_IMAGE,r,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.declutterGroups_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_]),this.endGeometry(e)}},e.prototype.drawMultiPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var i=t.getFlatCoordinates(),n=t.getStride(),r=this.coordinates.length,o=this.drawCoordinates_(i,0,i.length,n);this.instructions.push([Xh.DRAW_IMAGE,r,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,this.declutterGroups_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,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.hitDetectionInstructions.push([Xh.DRAW_IMAGE,r,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.declutterGroups_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_]),this.endGeometry(e)}},e.prototype.finish=function(){return 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,t.prototype.finish.call(this)},e.prototype.setImageStyle=function(t,e){var i=t.getAnchor(),n=t.getSize(),r=t.getHitDetectionImage(),o=t.getImage(this.pixelRatio),s=t.getOrigin();this.imagePixelRatio_=t.getPixelRatio(this.pixelRatio),this.anchorX_=i[0],this.anchorY_=i[1],this.declutterGroups_=e,this.hitDetectionImage_=r,this.image_=o,this.height_=n[1],this.opacity_=t.getOpacity(),this.originX_=s[0],this.originY_=s[1],this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScaleArray(),this.width_=n[0]},e}(Kh),Bh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),Vh=function(t){function e(e,i,n,r){return t.call(this,e,i,n,r)||this}return Bh(e,t),e.prototype.drawFlatCoordinates_=function(t,e,i,n){var r=this.coordinates.length,o=this.appendFlatCoordinates(t,e,i,n,!1,!1),s=[Xh.MOVE_TO_LINE_TO,r,o];return this.instructions.push(s),this.hitDetectionInstructions.push(s),i},e.prototype.drawLineString=function(t,e){var i=this.state,n=i.strokeStyle,r=i.lineWidth;if(void 0!==n&&void 0!==r){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Xh.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset],zh);var o=t.getFlatCoordinates(),s=t.getStride();this.drawFlatCoordinates_(o,0,o.length,s),this.hitDetectionInstructions.push(Gh),this.endGeometry(e)}},e.prototype.drawMultiLineString=function(t,e){var i=this.state,n=i.strokeStyle,r=i.lineWidth;if(void 0!==n&&void 0!==r){this.updateStrokeStyle(i,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Xh.SET_STROKE_STYLE,i.strokeStyle,i.lineWidth,i.lineCap,i.lineJoin,i.miterLimit,i.lineDash,i.lineDashOffset],zh);for(var o=t.getEnds(),s=t.getFlatCoordinates(),a=t.getStride(),l=0,h=0,u=o.length;ht&&(y>g&&(g=y,d=v,_=o),y=0,v=o-r)),s=a,u=p,c=f),l=m,h=x}return(y+=a)>g?[v,o]:[d,_]}var Qh=function(){var t=function(e,i){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(e,i)};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),$h={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},tu={Circle:Hh,Default:Kh,Image:Zh,LineString:Vh,Polygon:Hh,Text:function(t){function e(e,i,n,r){var o=t.call(this,e,i,n,r)||this;return o.declutterGroups_,o.labels_=null,o.text_="",o.textOffsetX_=0,o.textOffsetY_=0,o.textRotateWithView_=void 0,o.textRotation_=0,o.textFillState_=null,o.fillStates={},o.textStrokeState_=null,o.strokeStates={},o.textState_={},o.textStates={},o.textKey_="",o.fillKey_="",o.strokeKey_="",o}return Qh(e,t),e.prototype.finish=function(){var e=t.prototype.finish.call(this);return e.textStates=this.textStates,e.fillStates=this.fillStates,e.strokeStates=this.strokeStates,e},e.prototype.drawText=function(t,e){var i=this.textFillState_,n=this.textStrokeState_,r=this.textState_;if(""!==this.text_&&r&&(i||n)){var o,s,a=this.coordinates.length,l=t.getType(),h=null,u=2,c=t.getStride();if(r.placement===qh){if(!Xe(this.getBufferedMaxExtent(),t.getExtent()))return;var p=void 0;if(h=t.getFlatCoordinates(),l==Ze)p=[h.length];else if(l==He)p=t.getEnds();else if(l==Ve)p=t.getEnds().slice(0,1);else if(l==qe){var f=t.getEndss();for(p=[],o=0,s=f.length;od[d.length-n]}else p=t[e]>t[i-n];for(var _,g,y=r.length,v=t[e],m=t[e+1],x=t[e+=n],S=t[e+1],C=0,w=Math.sqrt(Math.pow(x-v,2)+Math.pow(S-m,2)),E=!1,b=0;b0?-Math.PI:Math.PI),void 0!==g){var M=I-g;if(E=E||0!==M,M+=M>Math.PI?-2*Math.PI:M<-Math.PI?2*Math.PI:0,Math.abs(M)>s)return null}g=I;var F=P/w,L=kt(v,x,F),A=kt(m,S,F);f[_]=[L,A,R/2,I,T],o+=R}return E?f:[[f[0][0],f[0][1],f[0][2],f[0][3],r]]}var nu=[1/0,1/0,-1/0,-1/0],ru=[1,0,0,1,0,0],ou=[],su=[],au=[],lu=[],hu=function(){function t(t,e,i,n,r){this.overlaps=i,this.pixelRatio=e,this.resolution=t,this.alignFill_,this.declutterItems=[],this.instructions=n.instructions,this.coordinates=n.coordinates,this.coordinateCache_={},this.renderBuffer_=r,this.renderedTransform_=[1,0,0,1,0,0],this.hitDetectionInstructions=n.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=n.fillStates||{},this.strokeStates=n.strokeStates||{},this.textStates=n.textStates||{},this.widths_={},this.labels_={}}return t.prototype.createLabel=function(t,e,i,n){var r=t+e+i+n;if(this.labels_[r])return this.labels_[r];var o=n?this.strokeStates[n]:null,s=i?this.fillStates[i]:null,a=this.textStates[e],l=this.pixelRatio,h=[a.scale[0]*l,a.scale[1]*l],u=$h[a.textAlign||to],c=n&&o.lineWidth?o.lineWidth:0,p=t.split("\n"),f=p.length,d=[],_=function(t,e,i){for(var n=e.length,r=0,o=0;or.width?r.width-u:_,S=l+c>r.height?r.height-c:l,C=g[3]+x*f[0]+g[1],w=g[0]+S*f[1]+g[2],E=i-g[3],b=n-g[0];(m||0!==p)&&(ou[0]=E,lu[0]=E,ou[1]=b,su[1]=b,su[0]=E+C,au[0]=su[0],au[1]=b+w,lu[1]=au[1]);var T=null;if(0!==p){var R=i+o,O=n+s;T=Yi(ru,R,O,1,1,p,-R,-O),Ki(ru,ou),Ki(ru,su),Ki(ru,au),Ki(ru,lu),Ce(Math.min(ou[0],su[0],au[0],lu[0]),Math.min(ou[1],su[1],au[1],lu[1]),Math.max(ou[0],su[0],au[0],lu[0]),Math.max(ou[1],su[1],au[1],lu[1]),nu)}else Ce(E,b,E+C,b+w,nu);var P=0,I=0;if(a){var M=this.renderBuffer_;M[0]=Math.max(M[0],We(nu)),P=M[0],M[1]=Math.max(M[1],ke(nu)),I=M[1]}var F=t.canvas,L=v?v[2]*f[0]/2:0,A=nu[0]-L<=(F.width+P)/e&&nu[2]+L>=-P/e&&nu[1]-L<=(F.height+I)/e&&nu[3]+L>=-I/e;if(d&&(i=Math.round(i),n=Math.round(n)),a){if(!A&&1==a[0])return!1;var D=A?[t,T?T.slice(0):null,h,r,u,c,x,S,i,n,f,nu.slice()]:null;D&&(m&&D.push(y,v,ou.slice(0),su.slice(0),au.slice(0),lu.slice(0)),a.push(D))}else A&&(m&&this.replayTextBackground_(t,ou,su,au,lu,y,v,!1),go(t,T,h,r,u,c,x,S,i,n,f));return!0},t.prototype.fill_=function(t){if(this.alignFill_){var e=Ki(this.renderedTransform_,[0,0]),i=512*this.pixelRatio;t.save(),t.translate(e[0]%i,e[1]%i),t.rotate(this.viewRotation_)}t.fill(),this.alignFill_&&t.restore()},t.prototype.setStrokeStyle_=function(t,e){t.strokeStyle=e[1],t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.setLineDash&&(t.lineDashOffset=e[7],t.setLineDash(e[6]))},t.prototype.renderDeclutter=function(t,e,i,n){for(var r=[],o=1,s=t.length;o12&&this.replayTextBackground_(c[0],c[14],c[15],c[16],c[17],c[12],c[13],!0),go.apply(void 0,c),f!==i&&(p.globalAlpha=f)}}return t.length=1,n},t.prototype.drawLabelWithPointPlacement_=function(t,e,i,n){var r=this.textStates[e],o=this.createLabel(t,e,n,i),s=this.strokeStates[i],a=this.pixelRatio,l=$h[r.textAlign||to],h=$h[r.textBaseline||eo],u=s&&s.lineWidth?s.lineWidth:0;return{label:o,anchorX:l*(o.width/a-2*r.scale[0])+2*(.5-l)*u,anchorY:h*o.height/a+2*(.5-h)*u}},t.prototype.execute_=function(t,e,i,n,r,o,s){var a,l,h;this.declutterItems.length=0,this.pixelCoordinates_&&u(i,this.renderedTransform_)?a=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),a=Vi(this.coordinates,0,this.coordinates.length,2,i,this.pixelCoordinates_),l=this.renderedTransform_,h=i,l[0]=h[0],l[1]=h[1],l[2]=h[2],l[3]=h[3],l[4]=h[4],l[5]=h[5]);for(var c,p,f,d,_,g,y,v,m,x,S,C,w,E,b,T,R,O=0,P=n.length,I=0,M=0,F=0,L=null,A=null,D=this.coordinateCache_,k=this.viewRotation_,j=Math.round(1e12*Math.atan2(-i[1],i[0]))/1e12,G={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:k},z=this.instructions!=n||this.overlaps?0:200;Oz&&(this.fill_(t),M=0),F>z&&(t.stroke(),F=0),M||F||(t.beginPath(),d=NaN,_=NaN),++O;break;case Xh.CIRCLE:var X=a[I=W[1]],N=a[I+1],K=a[I+2]-X,Y=a[I+3]-N,Z=Math.sqrt(K*K+Y*Y);t.moveTo(X+Z,N),t.arc(X,N,Z,0,2*Math.PI,!0),++O;break;case Xh.CLOSE_PATH:t.closePath(),++O;break;case Xh.CUSTOM:I=W[1],c=W[2];var B=W[3],V=W[4],U=6==W.length?W[5]:void 0;G.geometry=B,G.feature=b,O in D||(D[O]=[]);var H=D[O];U?U(a,I,c,2,H):(H[0]=a[I],H[1]=a[I+1],H.length=2),V(H,G),++O;break;case Xh.DRAW_IMAGE:I=W[1],c=W[2],x=W[3],p=W[4],f=W[5],m=o?null:W[6];var q=W[7],J=W[8],Q=W[9],$=W[10],tt=W[11],et=W[12],it=W[13],nt=W[14];if(!x&&W.length>=19){S=W[18],C=W[19],w=W[20],E=W[21];var rt=this.drawLabelWithPointPlacement_(S,C,w,E);x=rt.label,W[3]=x;var ot=W[22];p=(rt.anchorX-ot)*this.pixelRatio,W[4]=p;var st=W[23];f=(rt.anchorY-st)*this.pixelRatio,W[5]=f,q=x.height,W[7]=q,nt=x.width,W[14]=nt}var at=void 0;W.length>24&&(at=W[24]);var lt=void 0,ht=void 0,ut=void 0;W.length>16?(lt=W[15],ht=W[16],ut=W[17]):(lt=io,ht=!1,ut=!1),tt&&j?et+=k:tt||j||(et-=k);for(var ct=0,pt=0;I=o;)fu(i,t+r,t+o),fu(i,t+o,t+r),fu(i,t-o,t+r),fu(i,t-r,t+o),fu(i,t-r,t-o),fu(i,t-o,t-r),fu(i,t+o,t-r),fu(i,t+r,t-o),2*((s+=1+2*++o)-r)+1>0&&(s+=1-2*(r-=1));return pu[t]=i,i}(n);function f(t){for(var e=u.getImageData(0,0,a,a).data,i=0;i0){var s=void 0;return(!o||c!=Co&&c!=bo||-1!==o.indexOf(t))&&(s=r(t)),s||void u.clearRect(0,0,a,a)}}var d,_,g,y,v,m=Object.keys(this.executorsByZIndex_).map(Number);for(m.sort(s),d=m.length-1;d>=0;--d){var x=m[d].toString();for(g=this.executorsByZIndex_[x],_=uu.length-1;_>=0;--_)if(void 0!==(y=g[c=uu[_]])&&(v=y.executeHitDetection(u,l,i,f,h)))return v}},t.prototype.getClipCoords=function(t){var e=this.maxExtent_;if(!e)return null;var i=e[0],n=e[1],r=e[2],o=e[3],s=[i,n,i,o,r,o,r,n];return Vi(s,0,8,2,t,s),s},t.prototype.isEmpty=function(){return y(this.executorsByZIndex_)},t.prototype.execute=function(t,e,i,n,r,o,a){var l=Object.keys(this.executorsByZIndex_).map(Number);l.sort(s),this.maxExtent_&&(t.save(),this.clip(t,i));var h,u,c,p,f,d,_=o||uu;for(h=0,u=l.length;h=r)for(n=r;n0&&(a.width=0),this.container;var h=Math.round(t.size[0]*i),u=Math.round(t.size[1]*i);a.width!=h||a.height!=u?(a.width=h,a.height=u,a.style.transform!==r&&(a.style.transform=r)):this.containerReused||o.clearRect(0,0,h,u),this.preRender(o,t);var c=t.extent,p=t.viewState,f=p.center,d=p.resolution,_=p.projection,g=p.rotation,y=_.getExtent(),v=this.getLayer().getSource(),m=!1;if(n.extent&&this.clipping){var x=bi(n.extent,_);(m=!ve(x,t.extent)&&Xe(x,t.extent))&&this.clipUnrotated(o,t,x)}var S=t.viewHints,C=!(S[_s]||S[gs]),w=this.getRenderTransform(f,d,g,i,h,u,0),E=this.getLayer().getDeclutter()?{}:null;if(l.execute(o,1,w,g,C,void 0,E),v.getWrapX()&&_.canWrapX()&&!ve(y,c)){for(var b=c[0],T=We(y),R=0,O=void 0;by[2];){O=T*++R;var I=this.getRenderTransform(f,d,g,i,h,u,O);l.execute(o,1,I,g,C,void 0,E),b-=T}}if(E){var M=t.viewHints;!function(t,e,i,n,r,o){for(var a=Object.keys(t).map(Number).sort(s),l=0,h=a.length;l0&&(c=d,o.push({items:d.declutterItems,opacity:n}))}}(E,o,g,1,!(M[_s]||M[gs]),t.declutterItems)}m&&o.restore(),this.postRender(o,t);var F=n.opacity,L=this.container;return F!==parseFloat(L.style.opacity)&&(L.style.opacity=1===F?"":String(F)),this.renderedRotation_!==p.rotation&&(this.renderedRotation_=p.rotation,this.hitDetectionImageData_=null),this.container},e.prototype.getFeatures=function(t){return new Promise(function(e,i){if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){var n=[this.context.canvas.width,this.context.canvas.height];Ki(this.pixelTransform,n);var r=this.renderedCenter_,o=this.renderedResolution_,a=this.renderedRotation_,l=this.renderedProjection_,h=this.renderedExtent_,u=this.getLayer(),c=[],p=n[0]/2,f=n[1]/2;c.push(this.getRenderTransform(r,o,a,.5,p,f,0).slice());var d=u.getSource(),_=l.getExtent();if(d.getWrapX()&&l.canWrapX()&&!ve(_,h)){for(var g=h[0],y=We(_),v=0,m=void 0;g<_[0];)m=y*--v,c.push(this.getRenderTransform(r,o,a,.5,p,f,m).slice()),g+=y;for(v=0,g=h[2];g>_[2];)m=y*++v,c.push(this.getRenderTransform(r,o,a,.5,p,f,m).slice()),g-=y}this.hitDetectionImageData_=function(t,e,i,n,r,o,a){var l=rt(t[0]/2,t[1]/2);l.imageSmoothingEnabled=!1;for(var h=l.canvas,u=new mo(l,.5,r,null,a),c=i.length,p=Math.floor(16777215/c),f={},d=1;d<=c;++d){var _=i[d-1],g=_.getStyleFunction()||n;if(n){var y=g(_,o);if(y){Array.isArray(y)||(y=[y]);for(var v="#"+("000000"+(d*p).toString(16)).slice(-6),m=0,x=y.length;m=i[2])){var r=We(i),o=Math.floor((n[0]-i[0])/r)*r;t[0]-=o,t[2]-=o}return t}(y[0],h);S[0]v[0]&&S[2]>v[2]&&y.push([S[0]-m,S[1],S[2]-m,S[3]])}if(!this.dirty_&&this.renderedResolution_==u&&this.renderedRevision_==p&&this.renderedRenderOrder_==d&&ve(this.renderedExtent_,g))return this.replayGroupChanged=!1,!0;this.replayGroup_=null,this.dirty_=!1;var C,w=new eu(Po(u,c),g,u,c,e.getDeclutter()),E=Si();if(E){for(var b=0,T=y.length;b180)&&(i[0]=Dt(n+180,360)-180),i}},wu={OSM:Rl,Vector:Fh,XYZ:bl},Eu={Icon:Er,Stroke:Zl,Style:ih}}}]); //# sourceMappingURL=1.bundle.js.map \ No newline at end of file diff --git a/js/dist/1.bundle.js.map b/js/dist/1.bundle.js.map index 1154dea..0610d68 100644 --- a/js/dist/1.bundle.js.map +++ b/js/dist/1.bundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./node_modules/rbush/rbush.js","webpack:///../src/elm-pep.js","webpack:///src/array.js","webpack:///src/functions.js","webpack:///src/MapEventType.js","webpack:///src/util.js","webpack:///src/ObjectEventType.js","webpack:///src/obj.js","webpack:///src/events.js","webpack:///src/Disposable.js","webpack:///../src/events/Event.js","webpack:///../src/events/Target.js","webpack:///../src/events/EventType.js","webpack:///src/Observable.js","webpack:///src/Object.js","webpack:///src/has.js","webpack:///src/dom.js","webpack:///../src/control/Control.js","webpack:///src/css.js","webpack:///src/easing.js","webpack:///../src/control/Rotate.js","webpack:///src/AssertionError.js","webpack:///src/asserts.js","webpack:///src/math.js","webpack:///../src/geom/GeometryType.js","webpack:///src/sphere.js","webpack:///../src/extent/Corner.js","webpack:///../src/extent/Relationship.js","webpack:///src/extent.js","webpack:///../src/proj/Units.js","webpack:///../src/proj/Projection.js","webpack:///../src/proj/epsg3857.js","webpack:///../src/proj/epsg4326.js","webpack:///../src/proj/transforms.js","webpack:///../src/proj/projections.js","webpack:///src/proj.js","webpack:///../src/control/ScaleLine.js","webpack:///../src/control/Zoom.js","webpack:///../src/geom/GeometryLayout.js","webpack:///../../src/geom/flat/transform.js","webpack:///src/transform.js","webpack:///../src/geom/Geometry.js","webpack:///../src/geom/SimpleGeometry.js","webpack:///../../src/geom/flat/area.js","webpack:///../../src/geom/flat/closest.js","webpack:///../../src/geom/flat/deflate.js","webpack:///../../src/geom/flat/inflate.js","webpack:///../../src/geom/flat/simplify.js","webpack:///../src/geom/LinearRing.js","webpack:///../src/geom/Point.js","webpack:///../../src/geom/flat/contains.js","webpack:///../../src/geom/flat/interiorpoint.js","webpack:///../../src/geom/flat/segments.js","webpack:///../../src/geom/flat/intersectsextent.js","webpack:///../../src/geom/flat/reverse.js","webpack:///../../src/geom/flat/orient.js","webpack:///../src/geom/Polygon.js","webpack:///../src/control/ZoomToExtent.js","webpack:///../../src/geom/flat/interpolate.js","webpack:///../../src/geom/flat/length.js","webpack:///../src/geom/LineString.js","webpack:///src/Feature.js","webpack:///src/ImageState.js","webpack:///src/color.js","webpack:///../src/style/IconAnchorUnits.js","webpack:///../src/style/IconImageCache.js","webpack:///src/ImageBase.js","webpack:///src/Image.js","webpack:///../src/style/IconImage.js","webpack:///../src/style/IconOrigin.js","webpack:///../src/style/Image.js","webpack:///../src/style/Icon.js","webpack:///src/CollectionEventType.js","webpack:///src/Collection.js","webpack:///src/MapEvent.js","webpack:///src/MapBrowserEvent.js","webpack:///src/MapBrowserEventType.js","webpack:///src/MapBrowserPointerEvent.js","webpack:///../src/pointer/EventType.js","webpack:///src/MapBrowserEventHandler.js","webpack:///src/MapProperty.js","webpack:///../src/render/EventType.js","webpack:///src/TileState.js","webpack:///../src/structs/PriorityQueue.js","webpack:///src/TileQueue.js","webpack:///src/centerconstraint.js","webpack:///src/resolutionconstraint.js","webpack:///src/rotationconstraint.js","webpack:///src/ViewHint.js","webpack:///src/ViewProperty.js","webpack:///src/coordinate.js","webpack:///src/View.js","webpack:///../src/tilegrid/common.js","webpack:///../src/layer/Property.js","webpack:///../src/layer/Base.js","webpack:///../src/source/State.js","webpack:///../src/layer/Group.js","webpack:///src/size.js","webpack:///src/PluggableMap.js","webpack:///../src/layer/Layer.js","webpack:///../src/control/Attribution.js","webpack:///src/Kinetic.js","webpack:///../src/interaction/Property.js","webpack:///../src/interaction/Interaction.js","webpack:///../src/interaction/DoubleClickZoom.js","webpack:///../src/events/condition.js","webpack:///../src/interaction/Pointer.js","webpack:///../src/interaction/DragPan.js","webpack:///../src/interaction/DragRotate.js","webpack:///../src/render/Box.js","webpack:///../src/interaction/DragBox.js","webpack:///../src/interaction/DragZoom.js","webpack:///../src/events/KeyCode.js","webpack:///../src/interaction/KeyboardPan.js","webpack:///../src/interaction/KeyboardZoom.js","webpack:///../src/interaction/MouseWheelZoom.js","webpack:///../src/interaction/PinchRotate.js","webpack:///../src/interaction/PinchZoom.js","webpack:///../src/render/Event.js","webpack:///src/colorlike.js","webpack:///../src/render/VectorContext.js","webpack:///../src/render/canvas.js","webpack:///../../src/render/canvas/Immediate.js","webpack:///../../src/render/canvas/BuilderType.js","webpack:///../src/renderer/vector.js","webpack:///../src/renderer/Map.js","webpack:///src/render.js","webpack:///../src/renderer/Composite.js","webpack:///src/Map.js","webpack:///src/control.js","webpack:///src/interaction.js","webpack:///src/Tile.js","webpack:///src/ImageTile.js","webpack:///../src/structs/LRUCache.js","webpack:///src/tilecoord.js","webpack:///src/TileCache.js","webpack:///src/reproj.js","webpack:///../src/reproj/Triangulation.js","webpack:///../src/reproj/Tile.js","webpack:///../src/reproj/common.js","webpack:///src/tileurlfunction.js","webpack:///../src/source/Source.js","webpack:///src/TileRange.js","webpack:///../src/tilegrid/TileGrid.js","webpack:///src/tilegrid.js","webpack:///../src/source/Tile.js","webpack:///../src/source/TileEventType.js","webpack:///../src/source/UrlTile.js","webpack:///../src/source/TileImage.js","webpack:///../src/source/XYZ.js","webpack:///../src/source/OSM.js","webpack:///src/OverlayPositioning.js","webpack:///src/Overlay.js","webpack:///../src/style/Stroke.js","webpack:///../src/style/RegularShape.js","webpack:///../src/style/Circle.js","webpack:///../src/style/Fill.js","webpack:///../src/style/Style.js","webpack:///../src/layer/TileProperty.js","webpack:///../src/layer/BaseTile.js","webpack:///../src/renderer/Layer.js","webpack:///../../src/renderer/canvas/Layer.js","webpack:///../../src/renderer/canvas/TileLayer.js","webpack:///../src/layer/Tile.js","webpack:///../src/format/FormatType.js","webpack:///src/featureloader.js","webpack:///src/loadingstrategy.js","webpack:///../src/source/VectorEventType.js","webpack:///../src/structs/RBush.js","webpack:///../src/source/Vector.js","webpack:///../src/layer/BaseVector.js","webpack:///../../src/render/canvas/Instruction.js","webpack:///../../src/render/canvas/Builder.js","webpack:///../../src/render/canvas/ImageBuilder.js","webpack:///../../src/render/canvas/LineStringBuilder.js","webpack:///../../src/render/canvas/PolygonBuilder.js","webpack:///../../src/geom/flat/straightchunk.js","webpack:///../src/style/TextPlacement.js","webpack:///../../src/render/canvas/TextBuilder.js","webpack:///../../src/render/canvas/BuilderGroup.js","webpack:///../../src/geom/flat/textpath.js","webpack:///../../src/render/canvas/Executor.js","webpack:///../../src/render/canvas/ExecutorGroup.js","webpack:///../../src/renderer/canvas/VectorLayer.js","webpack:///../../src/render/canvas/hitdetect.js","webpack:///../src/layer/Vector.js","webpack:///./js/src/lib/ol.js"],"names":["factory","quickselect","arr","k","left","right","compare","quickselectStep","n","m","z","Math","log","s","exp","sd","sqrt","newLeft","max","floor","newRight","min","t","i","j","swap","length","defaultCompare","tmp","a","b","RBush","maxEntries","this","_maxEntries","_minEntries","ceil","clear","findItem","item","items","equalsFn","indexOf","calcBBox","node","toBBox","distBBox","children","p","destNode","createNode","minX","Infinity","minY","maxX","maxY","child","extend","leaf","compareNodeMinX","compareNodeMinY","bboxArea","bboxMargin","contains","intersects","height","multiSelect","stack","pop","mid","push","prototype","all","_all","data","search","bbox","result","nodesToSearch","childBBox","collides","load","insert","_build","slice","_splitRoot","tmpNode","_insert","remove","parent","goingUp","path","indexes","index","splice","_condense","compareMinX","compareMinY","toJSON","fromJSON","apply","N","M","pow","N2","N1","right2","right3","_chooseSubtree","level","minArea","minEnlargement","targetNode","area","enlargement","isNode","insertPath","_split","_adjustParentBBoxes","_chooseSplitAxis","splitIndex","_chooseSplitIndex","newNode","minOverlap","bbox1","bbox2","overlap","_allDistMargin","sort","leftBBox","rightBBox","margin","i$1","child$1","siblings","exports","module","define","pointerEvent","document","_this","propagate","Target","hasListener","listeners","eventType","BaseObject","unset","canvas","Control","getMap","button","element","x1","y1","extent","x","METERS_PER_UNIT","Units","Projection","y","output","suffix","pointResolution","options","inElement","outElement","set","f","transform","Geometry","getClosestPoint","flatCoordinates","dest","closestPoint","offset","coordinates","coordinatess","LinearRing","getSimplifiedGeometryInternal","simplifiedFlatCoordinates","Point","label","length_1","cumulativeLengths","pointX","opt_dest","end","coordinate","LineString","getCoordinateAtM","clone","Feature","getGeometryName","r","IconImageCache","ImageBase","ImageWrapper","handleImageLoad_","context","IconImage","ImageStyle","anchorYUnits","Icon","Collection","PriorityQueue","TileQueue","loadMoreTiles","tileKey","tile","maxResolution","animation","View","properties","state","layers","LayerGroup","handleLayersChanged_","PluggableMap","Layer","Attribution","Kinetic","view","originalEvent","PointerInteraction","getPointerCount","defaultCondition","mapBrowserEvent","DragRotate","handleUpEvent","DragBox","createOrUpdateEmpty","opt_extent","MouseWheelZoom","PinchRotate","handleDragEvent","VectorContext","drawGeometry","pixelCoordinates","renderGeometry","MapRenderer","frameState","entry","l","ReprojTile","Source","TileRange","tileRange","assert","TileSource","expireCache","tileCache","getTile","UrlTile","setTileUrlFunction","setUrl","TileImage","getTileCacheForProjection","insertFirst","Overlay","Stroke","Style","LayerRenderer","handleFontsChanged","image","style","CanvasLayerRenderer","clipUnrotated","CanvasTileLayerRenderer","renderFrame","fromUserExtent","layerState","projection","getUid","value","feature","updateWhileAnimating","BaseVectorLayer","CanvasBuilder","strokeStyle","ends","strokeState","instruction","ExecutorGroup","byGeometryType","control","Rotate","ScaleLine","Zoom","ZoomToExtent","geom","layer","TileLayer","VectorLayer","proj","fromLonLat","toLonLat","source","OSM","Vector","XYZ"],"mappings":"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","file":"1.bundle.js","sourcesContent":["(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = global || self, global.RBush = factory());\n}(this, function () { 'use strict';\n\nfunction quickselect(arr, k, left, right, compare) {\n quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselectStep(arr, k, newLeft, newRight, compare);\n }\n\n var t = arr[k];\n var i = left;\n var j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) { swap(arr, left, right); }\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) { i++; }\n while (compare(arr[j], t) > 0) { j--; }\n }\n\n if (compare(arr[left], t) === 0) { swap(arr, left, j); }\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) { left = j + 1; }\n if (k <= j) { right = j - 1; }\n }\n}\n\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nvar RBush = function RBush(maxEntries) {\n if ( maxEntries === void 0 ) maxEntries = 9;\n\n // max entries in a node is 9 by default; min node fill is 40% for best performance\n this._maxEntries = Math.max(4, maxEntries);\n this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n this.clear();\n};\n\nRBush.prototype.all = function all () {\n return this._all(this.data, []);\n};\n\nRBush.prototype.search = function search (bbox) {\n var node = this.data;\n var result = [];\n\n if (!intersects(bbox, node)) { return result; }\n\n var toBBox = this.toBBox;\n var nodesToSearch = [];\n\n while (node) {\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n var childBBox = node.leaf ? toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf) { result.push(child); }\n else if (contains(bbox, childBBox)) { this._all(child, result); }\n else { nodesToSearch.push(child); }\n }\n }\n node = nodesToSearch.pop();\n }\n\n return result;\n};\n\nRBush.prototype.collides = function collides (bbox) {\n var node = this.data;\n\n if (!intersects(bbox, node)) { return false; }\n\n var nodesToSearch = [];\n while (node) {\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n var childBBox = node.leaf ? this.toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf || contains(bbox, childBBox)) { return true; }\n nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n\n return false;\n};\n\nRBush.prototype.load = function load (data) {\n if (!(data && data.length)) { return this; }\n\n if (data.length < this._minEntries) {\n for (var i = 0; i < data.length; i++) {\n this.insert(data[i]);\n }\n return this;\n }\n\n // recursively build the tree with the given data from scratch using OMT algorithm\n var node = this._build(data.slice(), 0, data.length - 1, 0);\n\n if (!this.data.children.length) {\n // save as is if tree is empty\n this.data = node;\n\n } else if (this.data.height === node.height) {\n // split root if trees have the same height\n this._splitRoot(this.data, node);\n\n } else {\n if (this.data.height < node.height) {\n // swap trees if inserted one is bigger\n var tmpNode = this.data;\n this.data = node;\n node = tmpNode;\n }\n\n // insert the small tree into the large tree at appropriate level\n this._insert(node, this.data.height - node.height - 1, true);\n }\n\n return this;\n};\n\nRBush.prototype.insert = function insert (item) {\n if (item) { this._insert(item, this.data.height - 1); }\n return this;\n};\n\nRBush.prototype.clear = function clear () {\n this.data = createNode([]);\n return this;\n};\n\nRBush.prototype.remove = function remove (item, equalsFn) {\n if (!item) { return this; }\n\n var node = this.data;\n var bbox = this.toBBox(item);\n var path = [];\n var indexes = [];\n var i, parent, goingUp;\n\n // depth-first iterative tree traversal\n while (node || path.length) {\n\n if (!node) { // go up\n node = path.pop();\n parent = path[path.length - 1];\n i = indexes.pop();\n goingUp = true;\n }\n\n if (node.leaf) { // check current node\n var index = findItem(item, node.children, equalsFn);\n\n if (index !== -1) {\n // item found, remove the item and condense tree upwards\n node.children.splice(index, 1);\n path.push(node);\n this._condense(path);\n return this;\n }\n }\n\n if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n path.push(node);\n indexes.push(i);\n i = 0;\n parent = node;\n node = node.children[0];\n\n } else if (parent) { // go right\n i++;\n node = parent.children[i];\n goingUp = false;\n\n } else { node = null; } // nothing found\n }\n\n return this;\n};\n\nRBush.prototype.toBBox = function toBBox (item) { return item; };\n\nRBush.prototype.compareMinX = function compareMinX (a, b) { return a.minX - b.minX; };\nRBush.prototype.compareMinY = function compareMinY (a, b) { return a.minY - b.minY; };\n\nRBush.prototype.toJSON = function toJSON () { return this.data; };\n\nRBush.prototype.fromJSON = function fromJSON (data) {\n this.data = data;\n return this;\n};\n\nRBush.prototype._all = function _all (node, result) {\n var nodesToSearch = [];\n while (node) {\n if (node.leaf) { result.push.apply(result, node.children); }\n else { nodesToSearch.push.apply(nodesToSearch, node.children); }\n\n node = nodesToSearch.pop();\n }\n return result;\n};\n\nRBush.prototype._build = function _build (items, left, right, height) {\n\n var N = right - left + 1;\n var M = this._maxEntries;\n var node;\n\n if (N <= M) {\n // reached leaf level; return leaf\n node = createNode(items.slice(left, right + 1));\n calcBBox(node, this.toBBox);\n return node;\n }\n\n if (!height) {\n // target height of the bulk-loaded tree\n height = Math.ceil(Math.log(N) / Math.log(M));\n\n // target number of root entries to maximize storage utilization\n M = Math.ceil(N / Math.pow(M, height - 1));\n }\n\n node = createNode([]);\n node.leaf = false;\n node.height = height;\n\n // split the items into M mostly square tiles\n\n var N2 = Math.ceil(N / M);\n var N1 = N2 * Math.ceil(Math.sqrt(M));\n\n multiSelect(items, left, right, N1, this.compareMinX);\n\n for (var i = left; i <= right; i += N1) {\n\n var right2 = Math.min(i + N1 - 1, right);\n\n multiSelect(items, i, right2, N2, this.compareMinY);\n\n for (var j = i; j <= right2; j += N2) {\n\n var right3 = Math.min(j + N2 - 1, right2);\n\n // pack each entry recursively\n node.children.push(this._build(items, j, right3, height - 1));\n }\n }\n\n calcBBox(node, this.toBBox);\n\n return node;\n};\n\nRBush.prototype._chooseSubtree = function _chooseSubtree (bbox, node, level, path) {\n while (true) {\n path.push(node);\n\n if (node.leaf || path.length - 1 === level) { break; }\n\n var minArea = Infinity;\n var minEnlargement = Infinity;\n var targetNode = (void 0);\n\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n var area = bboxArea(child);\n var enlargement = enlargedArea(bbox, child) - area;\n\n // choose entry with the least area enlargement\n if (enlargement < minEnlargement) {\n minEnlargement = enlargement;\n minArea = area < minArea ? area : minArea;\n targetNode = child;\n\n } else if (enlargement === minEnlargement) {\n // otherwise choose one with the smallest area\n if (area < minArea) {\n minArea = area;\n targetNode = child;\n }\n }\n }\n\n node = targetNode || node.children[0];\n }\n\n return node;\n};\n\nRBush.prototype._insert = function _insert (item, level, isNode) {\n var bbox = isNode ? item : this.toBBox(item);\n var insertPath = [];\n\n // find the best node for accommodating the item, saving all nodes along the path too\n var node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n // put the item into the node\n node.children.push(item);\n extend(node, bbox);\n\n // split on node overflow; propagate upwards if necessary\n while (level >= 0) {\n if (insertPath[level].children.length > this._maxEntries) {\n this._split(insertPath, level);\n level--;\n } else { break; }\n }\n\n // adjust bboxes along the insertion path\n this._adjustParentBBoxes(bbox, insertPath, level);\n};\n\n// split overflowed node into two\nRBush.prototype._split = function _split (insertPath, level) {\n var node = insertPath[level];\n var M = node.children.length;\n var m = this._minEntries;\n\n this._chooseSplitAxis(node, m, M);\n\n var splitIndex = this._chooseSplitIndex(node, m, M);\n\n var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n newNode.height = node.height;\n newNode.leaf = node.leaf;\n\n calcBBox(node, this.toBBox);\n calcBBox(newNode, this.toBBox);\n\n if (level) { insertPath[level - 1].children.push(newNode); }\n else { this._splitRoot(node, newNode); }\n};\n\nRBush.prototype._splitRoot = function _splitRoot (node, newNode) {\n // split root node\n this.data = createNode([node, newNode]);\n this.data.height = node.height + 1;\n this.data.leaf = false;\n calcBBox(this.data, this.toBBox);\n};\n\nRBush.prototype._chooseSplitIndex = function _chooseSplitIndex (node, m, M) {\n var index;\n var minOverlap = Infinity;\n var minArea = Infinity;\n\n for (var i = m; i <= M - m; i++) {\n var bbox1 = distBBox(node, 0, i, this.toBBox);\n var bbox2 = distBBox(node, i, M, this.toBBox);\n\n var overlap = intersectionArea(bbox1, bbox2);\n var area = bboxArea(bbox1) + bboxArea(bbox2);\n\n // choose distribution with minimum overlap\n if (overlap < minOverlap) {\n minOverlap = overlap;\n index = i;\n\n minArea = area < minArea ? area : minArea;\n\n } else if (overlap === minOverlap) {\n // otherwise choose distribution with minimum area\n if (area < minArea) {\n minArea = area;\n index = i;\n }\n }\n }\n\n return index || M - m;\n};\n\n// sorts node children by the best axis for split\nRBush.prototype._chooseSplitAxis = function _chooseSplitAxis (node, m, M) {\n var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX;\n var compareMinY = node.leaf ? this.compareMinY : compareNodeMinY;\n var xMargin = this._allDistMargin(node, m, M, compareMinX);\n var yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n // if total distributions margin value is minimal for x, sort by minX,\n // otherwise it's already sorted by minY\n if (xMargin < yMargin) { node.children.sort(compareMinX); }\n};\n\n// total margin of all possible split distributions where each node is at least m full\nRBush.prototype._allDistMargin = function _allDistMargin (node, m, M, compare) {\n node.children.sort(compare);\n\n var toBBox = this.toBBox;\n var leftBBox = distBBox(node, 0, m, toBBox);\n var rightBBox = distBBox(node, M - m, M, toBBox);\n var margin = bboxMargin(leftBBox) + bboxMargin(rightBBox);\n\n for (var i = m; i < M - m; i++) {\n var child = node.children[i];\n extend(leftBBox, node.leaf ? toBBox(child) : child);\n margin += bboxMargin(leftBBox);\n }\n\n for (var i$1 = M - m - 1; i$1 >= m; i$1--) {\n var child$1 = node.children[i$1];\n extend(rightBBox, node.leaf ? toBBox(child$1) : child$1);\n margin += bboxMargin(rightBBox);\n }\n\n return margin;\n};\n\nRBush.prototype._adjustParentBBoxes = function _adjustParentBBoxes (bbox, path, level) {\n // adjust bboxes along the given tree path\n for (var i = level; i >= 0; i--) {\n extend(path[i], bbox);\n }\n};\n\nRBush.prototype._condense = function _condense (path) {\n // go through the path, removing empty nodes and updating bboxes\n for (var i = path.length - 1, siblings = (void 0); i >= 0; i--) {\n if (path[i].children.length === 0) {\n if (i > 0) {\n siblings = path[i - 1].children;\n siblings.splice(siblings.indexOf(path[i]), 1);\n\n } else { this.clear(); }\n\n } else { calcBBox(path[i], this.toBBox); }\n }\n};\n\nfunction findItem(item, items, equalsFn) {\n if (!equalsFn) { return items.indexOf(item); }\n\n for (var i = 0; i < items.length; i++) {\n if (equalsFn(item, items[i])) { return i; }\n }\n return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n if (!destNode) { destNode = createNode(null); }\n destNode.minX = Infinity;\n destNode.minY = Infinity;\n destNode.maxX = -Infinity;\n destNode.maxY = -Infinity;\n\n for (var i = k; i < p; i++) {\n var child = node.children[i];\n extend(destNode, node.leaf ? toBBox(child) : child);\n }\n\n return destNode;\n}\n\nfunction extend(a, b) {\n a.minX = Math.min(a.minX, b.minX);\n a.minY = Math.min(a.minY, b.minY);\n a.maxX = Math.max(a.maxX, b.maxX);\n a.maxY = Math.max(a.maxY, b.maxY);\n return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a) { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n var minX = Math.max(a.minX, b.minX);\n var minY = Math.max(a.minY, b.minY);\n var maxX = Math.min(a.maxX, b.maxX);\n var maxY = Math.min(a.maxY, b.maxY);\n\n return Math.max(0, maxX - minX) *\n Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n return a.minX <= b.minX &&\n a.minY <= b.minY &&\n b.maxX <= a.maxX &&\n b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n return b.minX <= a.maxX &&\n b.minY <= a.maxY &&\n b.maxX >= a.minX &&\n b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n return {\n children: children,\n height: 1,\n leaf: true,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n var stack = [left, right];\n\n while (stack.length) {\n right = stack.pop();\n left = stack.pop();\n\n if (right - left <= n) { continue; }\n\n var mid = left + Math.ceil((right - left) / n / 2) * n;\n quickselect(arr, mid, left, right, compare);\n\n stack.push(left, mid, mid, right);\n }\n}\n\nreturn RBush;\n\n}));\n","// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at http://mozilla.org/MPL/2.0/\n// Variable to hold current primary touch event identifier.\n// iOS needs this since it does not attribute\n// identifier 0 to primary touch event.\nvar primaryTouchId = null;\n// Variable to hold mouse pointer captures.\nvar mouseCaptureTarget = null;\nif (!(\"PointerEvent\" in window)) {\n // Define {set,release}PointerCapture\n definePointerCapture();\n // Create Pointer polyfill from mouse events only on non-touch device\n if (!(\"TouchEvent\" in window)) {\n addMouseToPointerListener(document, \"mousedown\", \"pointerdown\");\n addMouseToPointerListener(document, \"mousemove\", \"pointermove\");\n addMouseToPointerListener(document, \"mouseup\", \"pointerup\");\n }\n // Define Pointer polyfill from touch events\n addTouchToPointerListener(document, \"touchstart\", \"pointerdown\");\n addTouchToPointerListener(document, \"touchmove\", \"pointermove\");\n addTouchToPointerListener(document, \"touchend\", \"pointerup\");\n}\n// Function defining {set,release}PointerCapture from {set,releas}Capture\nfunction definePointerCapture() {\n Element.prototype.setPointerCapture = Element.prototype.setCapture;\n Element.prototype.releasePointerCapture = Element.prototype.releaseCapture;\n}\n// Function converting a Mouse event to a Pointer event.\nfunction addMouseToPointerListener(target, mouseType, pointerType) {\n target.addEventListener(mouseType, function (mouseEvent) {\n var pointerEvent = new MouseEvent(pointerType, mouseEvent);\n pointerEvent.pointerId = 1;\n pointerEvent.isPrimary = true;\n pointerEvent.pointerType = \"mouse\";\n pointerEvent.width = 1;\n pointerEvent.height = 1;\n pointerEvent.tiltX = 0;\n pointerEvent.tiltY = 0;\n // pressure is 0.5 if a button is holded\n \"buttons\" in mouseEvent && mouseEvent.buttons !== 0\n ? (pointerEvent.pressure = 0.5)\n : (pointerEvent.pressure = 0);\n // if already capturing mouse event, transfer target\n // and don't forget implicit release on mouseup.\n var target = mouseEvent.target;\n if (mouseCaptureTarget !== null) {\n target = mouseCaptureTarget;\n if (mouseType === \"mouseup\") {\n mouseCaptureTarget = null;\n }\n }\n target.dispatchEvent(pointerEvent);\n if (pointerEvent.defaultPrevented) {\n mouseEvent.preventDefault();\n }\n });\n}\n// Function converting a Touch event to a Pointer event.\nfunction addTouchToPointerListener(target, touchType, pointerType) {\n target.addEventListener(touchType, function (touchEvent) {\n var changedTouches = touchEvent.changedTouches;\n var nbTouches = changedTouches.length;\n for (var t = 0; t < nbTouches; t++) {\n var pointerEvent = new CustomEvent(pointerType, {\n bubbles: true,\n cancelable: true\n });\n pointerEvent.ctrlKey = touchEvent.ctrlKey;\n pointerEvent.shiftKey = touchEvent.shiftKey;\n pointerEvent.altKey = touchEvent.altKey;\n pointerEvent.metaKey = touchEvent.metaKey;\n var touch = changedTouches.item(t);\n pointerEvent.clientX = touch.clientX;\n pointerEvent.clientY = touch.clientY;\n pointerEvent.screenX = touch.screenX;\n pointerEvent.screenY = touch.screenY;\n pointerEvent.pageX = touch.pageX;\n pointerEvent.pageY = touch.pageY;\n var rect = touch.target.getBoundingClientRect();\n pointerEvent.offsetX = touch.clientX - rect.left;\n pointerEvent.offsetY = touch.clientY - rect.top;\n pointerEvent.pointerId = 1 + touch.identifier;\n // Default values for standard MouseEvent fields.\n pointerEvent.button = 0;\n pointerEvent.buttons = 1;\n pointerEvent.movementX = 0;\n pointerEvent.movementY = 0;\n pointerEvent.region = null;\n pointerEvent.relatedTarget = null;\n pointerEvent.x = pointerEvent.clientX;\n pointerEvent.y = pointerEvent.clientY;\n // Pointer event details\n pointerEvent.pointerType = \"touch\";\n pointerEvent.width = 1;\n pointerEvent.height = 1;\n pointerEvent.tiltX = 0;\n pointerEvent.tiltY = 0;\n pointerEvent.pressure = 1;\n // First touch is the primary pointer event.\n if (touchType === \"touchstart\" && primaryTouchId === null) {\n primaryTouchId = touch.identifier;\n }\n pointerEvent.isPrimary = touch.identifier === primaryTouchId;\n // If first touch ends, reset primary touch id.\n if (touchType === \"touchend\" && pointerEvent.isPrimary) {\n primaryTouchId = null;\n }\n touchEvent.target.dispatchEvent(pointerEvent);\n if (pointerEvent.defaultPrevented) {\n touchEvent.preventDefault();\n }\n }\n });\n}\n//# sourceMappingURL=elm-pep.js.map","/**\n * @module ol/array\n */\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function=} opt_comparator Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, opt_comparator) {\n var mid, cmp;\n var comparator = opt_comparator || numberSafeCompareFunction;\n var low = 0;\n var high = haystack.length;\n var found = false;\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + (high - low >> 1);\n cmp = +comparator(haystack[mid], needle);\n if (cmp < 0.0) { /* Too low. */\n low = mid + 1;\n }\n else { /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n /* Key not found. */\n return found ? low : ~low;\n}\n/**\n * Compare function for array sort that is safe for numbers.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function numberSafeCompareFunction(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n/**\n * Whether the array contains the given object.\n * @param {Array<*>} arr The array to test for the presence of the element.\n * @param {*} obj The object for which to test.\n * @return {boolean} The object is in the array.\n */\nexport function includes(arr, obj) {\n return arr.indexOf(obj) >= 0;\n}\n/**\n * @param {Array} arr Array.\n * @param {number} target Target.\n * @param {number} direction 0 means return the nearest, > 0\n * means return the largest nearest, < 0 means return the\n * smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n var n = arr.length;\n if (arr[0] <= target) {\n return 0;\n }\n else if (target <= arr[n - 1]) {\n return n - 1;\n }\n else {\n var i = void 0;\n if (direction > 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n }\n else if (direction < 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n }\n else {\n for (i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n else if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n else {\n return i;\n }\n }\n }\n }\n return n - 1;\n }\n}\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n var tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n var extension = Array.isArray(data) ? data : [data];\n var length = extension.length;\n for (var i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n var i = arr.indexOf(obj);\n var found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n/**\n * @param {Array} arr The array to search in.\n * @param {function(VALUE, number, ?) : boolean} func The function to compare.\n * @template VALUE\n * @return {VALUE|null} The element found or null.\n */\nexport function find(arr, func) {\n var length = arr.length >>> 0;\n var value;\n for (var i = 0; i < length; i++) {\n value = arr[i];\n if (func(value, i, arr)) {\n return value;\n }\n }\n return null;\n}\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n var len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (var i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Sort the passed array such that the relative order of equal elements is preverved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n var length = arr.length;\n var tmp = Array(arr.length);\n var i;\n for (i = 0; i < length; i++) {\n tmp[i] = { index: i, value: arr[i] };\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n/**\n * @param {Array<*>} arr The array to search in.\n * @param {Function} func Comparison function.\n * @return {number} Return index.\n */\nexport function findIndex(arr, func) {\n var index;\n var found = !arr.every(function (el, idx) {\n index = idx;\n return !func(el, idx, arr);\n });\n return found ? index : -1;\n}\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function=} opt_func Comparison function.\n * @param {boolean=} opt_strict Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, opt_func, opt_strict) {\n var compare = opt_func || numberSafeCompareFunction;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n var res = compare(arr[index - 1], currentVal);\n return !(res > 0 || opt_strict && res === 0);\n });\n}\n//# sourceMappingURL=array.js.map","/**\n * @module ol/functions\n */\nimport { equals as arrayEquals } from './array.js';\n/**\n * Always returns true.\n * @returns {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n/**\n * Always returns false.\n * @returns {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() { }\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n var called = false;\n /** @type {ReturnType} */\n var lastResult;\n /** @type {Array} */\n var lastArgs;\n var lastThis;\n return function () {\n var nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n//# sourceMappingURL=functions.js.map","/**\n * @module ol/MapEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend'\n};\n//# sourceMappingURL=MapEventType.js.map","/**\n * @module ol/util\n */\n/**\n * @return {?} Any return.\n */\nexport function abstract() {\n return /** @type {?} */ ((function () {\n throw new Error('Unimplemented abstract method.');\n })());\n}\n/**\n * Counter for getUid.\n * @type {number}\n * @private\n */\nvar uidCounter_ = 0;\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. Unique IDs are generated\n * as a strictly increasing sequence. Adapted from goog.getUid.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {string} The unique ID for the object.\n * @api\n */\nexport function getUid(obj) {\n return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));\n}\n/**\n * OpenLayers version.\n * @type {string}\n */\nexport var VERSION = '6.3.1';\n//# sourceMappingURL=util.js.map","/**\n * @module ol/ObjectEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange'\n};\n//# sourceMappingURL=ObjectEventType.js.map","/**\n * @module ol/obj\n */\n/**\n * Polyfill for Object.assign(). Assigns enumerable and own properties from\n * one or more source objects to a target object.\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.\n *\n * @param {!Object} target The target object.\n * @param {...Object} var_sources The source object(s).\n * @return {!Object} The modified target object.\n */\nexport var assign = (typeof Object.assign === 'function') ? Object.assign : function (target, var_sources) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var i = 1, ii = arguments.length; i < ii; ++i) {\n var source = arguments[i];\n if (source !== undefined && source !== null) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n return output;\n};\n/**\n * Removes all properties from an object.\n * @param {Object} object The object to clear.\n */\nexport function clear(object) {\n for (var property in object) {\n delete object[property];\n }\n}\n/**\n * Polyfill for Object.values(). Get an array of property values from an object.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n *\n * @param {!Object} object The object from which to get the values.\n * @return {!Array} The property values.\n * @template K,V\n */\nexport var getValues = (typeof Object.values === 'function') ? Object.values : function (object) {\n var values = [];\n for (var property in object) {\n values.push(object[property]);\n }\n return values;\n};\n/**\n * Determine if an object has any properties.\n * @param {Object} object The object to check.\n * @return {boolean} The object is empty.\n */\nexport function isEmpty(object) {\n var property;\n for (property in object) {\n return false;\n }\n return !property;\n}\n//# sourceMappingURL=obj.js.map","/**\n * @module ol/events\n */\nimport { clear } from './obj.js';\n/**\n * Key to use with {@link module:ol/Observable~Observable#unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener\n * @property {import(\"./events/Target.js\").EventTargetLike} target\n * @property {string} type\n * @api\n */\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent\n */\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events~unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean=} opt_once If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, opt_this, opt_once) {\n if (opt_this && opt_this !== target) {\n listener = listener.bind(opt_this);\n }\n if (opt_once) {\n var originalListener_1 = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener_1.apply(this, arguments);\n };\n }\n var eventsKey = {\n target: target,\n type: type,\n listener: listener\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events~unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events~listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, opt_this) {\n return listen(target, type, listener, opt_this, true);\n}\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events~listen} or {@link module:ol/events~listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n//# sourceMappingURL=events.js.map","/**\n * @module ol/Disposable\n */\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @private\n */\n this.disposed_ = false;\n }\n /**\n * Clean up.\n */\n Disposable.prototype.dispose = function () {\n if (!this.disposed_) {\n this.disposed_ = true;\n this.disposeInternal();\n }\n };\n /**\n * Extension point for disposable objects.\n * @protected\n */\n Disposable.prototype.disposeInternal = function () { };\n return Disposable;\n}());\nexport default Disposable;\n//# sourceMappingURL=Disposable.js.map","/**\n * @module ol/events/Event\n */\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * @param {string} type Type.\n */\n function BaseEvent(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.preventDefault = function () {\n this.propagationStopped = true;\n };\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n return BaseEvent;\n}());\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\nexport default BaseEvent;\n//# sourceMappingURL=Event.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport { VOID } from '../functions.js';\nimport Event from './Event.js';\nimport { clear } from '../obj.js';\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nvar Target = /** @class */ (function (_super) {\n __extends(Target, _super);\n /**\n * @param {*=} opt_target Default event target for dispatched events.\n */\n function Target(opt_target) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {*}\n */\n _this.eventTarget_ = opt_target;\n /**\n * @private\n * @type {!Object}\n */\n _this.pendingRemovals_ = {};\n /**\n * @private\n * @type {!Object}\n */\n _this.dispatching_ = {};\n /**\n * @private\n * @type {!Object>}\n */\n _this.listeners_ = {};\n return _this;\n }\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.addEventListener = function (type, listener) {\n if (!type || !listener) {\n return;\n }\n var listeners = this.listeners_[type];\n if (!listeners) {\n listeners = [];\n this.listeners_[type] = listeners;\n }\n if (listeners.indexOf(listener) === -1) {\n listeners.push(listener);\n }\n };\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n Target.prototype.dispatchEvent = function (event) {\n /** @type {import(\"./Event.js\").default|Event} */\n var evt = typeof event === 'string' ? new Event(event) : event;\n var type = evt.type;\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n var listeners = this.listeners_[type];\n var propagate;\n if (listeners) {\n if (!(type in this.dispatching_)) {\n this.dispatching_[type] = 0;\n this.pendingRemovals_[type] = 0;\n }\n ++this.dispatching_[type];\n for (var i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (listeners[i]).handleEvent(evt);\n }\n else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (listeners[i]).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n --this.dispatching_[type];\n if (this.dispatching_[type] === 0) {\n var pendingRemovals = this.pendingRemovals_[type];\n delete this.pendingRemovals_[type];\n while (pendingRemovals--) {\n this.removeEventListener(type, VOID);\n }\n delete this.dispatching_[type];\n }\n return propagate;\n }\n };\n /**\n * @inheritDoc\n */\n Target.prototype.disposeInternal = function () {\n clear(this.listeners_);\n };\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array} Listeners.\n */\n Target.prototype.getListeners = function (type) {\n return this.listeners_[type];\n };\n /**\n * @param {string=} opt_type Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n Target.prototype.hasListener = function (opt_type) {\n return opt_type ?\n opt_type in this.listeners_ :\n Object.keys(this.listeners_).length > 0;\n };\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.removeEventListener = function (type, listener) {\n var listeners = this.listeners_[type];\n if (listeners) {\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n if (type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n }\n else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n };\n return Target;\n}(Disposable));\nexport default Target;\n//# sourceMappingURL=Target.js.map","/**\n * @module ol/events/EventType\n */\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel'\n};\n//# sourceMappingURL=EventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Observable\n */\nimport { listen, unlistenByKey, listenOnce } from './events.js';\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nvar Observable = /** @class */ (function (_super) {\n __extends(Observable, _super);\n function Observable() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.revision_ = 0;\n return _this;\n }\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n Observable.prototype.changed = function () {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n Observable.prototype.getRevision = function () {\n return this.revision_;\n };\n /**\n * Listen for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {import(\"./events.js\").ListenerFunction} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n Observable.prototype.on = function (type, listener) {\n if (Array.isArray(type)) {\n var len = type.length;\n var keys = new Array(len);\n for (var i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n else {\n return listen(this, /** @type {string} */ (type), listener);\n }\n };\n /**\n * Listen once for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n Observable.prototype.once = function (type, listener) {\n if (Array.isArray(type)) {\n var len = type.length;\n var keys = new Array(len);\n for (var i = 0; i < len; ++i) {\n keys[i] = listenOnce(this, type[i], listener);\n }\n return keys;\n }\n else {\n return listenOnce(this, /** @type {string} */ (type), listener);\n }\n };\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @api\n */\n Observable.prototype.un = function (type, listener) {\n if (Array.isArray(type)) {\n for (var i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n }\n else {\n this.removeEventListener(type, listener);\n }\n };\n return Observable;\n}(EventTarget));\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (var i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n }\n else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\nexport default Observable;\n//# sourceMappingURL=Observable.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Object\n */\nimport { getUid } from './util.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport Event from './events/Event.js';\nimport { assign } from './obj.js';\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nvar ObjectEvent = /** @class */ (function (_super) {\n __extends(ObjectEvent, _super);\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n function ObjectEvent(type, key, oldValue) {\n var _this = _super.call(this, type) || this;\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n _this.key = key;\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n _this.oldValue = oldValue;\n return _this;\n }\n return ObjectEvent;\n}(Event));\nexport { ObjectEvent };\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nvar BaseObject = /** @class */ (function (_super) {\n __extends(BaseObject, _super);\n /**\n * @param {Object=} opt_values An object with key-value pairs.\n */\n function BaseObject(opt_values) {\n var _this = _super.call(this) || this;\n // Call {@link module:ol/util~getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(_this);\n /**\n * @private\n * @type {!Object}\n */\n _this.values_ = {};\n if (opt_values !== undefined) {\n _this.setProperties(opt_values);\n }\n return _this;\n }\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n BaseObject.prototype.get = function (key) {\n var value;\n if (this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n };\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n BaseObject.prototype.getKeys = function () {\n return Object.keys(this.values_);\n };\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n BaseObject.prototype.getProperties = function () {\n return assign({}, this.values_);\n };\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n BaseObject.prototype.notify = function (key, oldValue) {\n var eventType;\n eventType = getChangeEventType(key);\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n eventType = ObjectEventType.PROPERTYCHANGE;\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n };\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n BaseObject.prototype.set = function (key, value, opt_silent) {\n if (opt_silent) {\n this.values_[key] = value;\n }\n else {\n var oldValue = this.values_[key];\n this.values_[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n };\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n BaseObject.prototype.setProperties = function (values, opt_silent) {\n for (var key in values) {\n this.set(key, values[key], opt_silent);\n }\n };\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean=} opt_silent Unset without triggering an event.\n * @api\n */\n BaseObject.prototype.unset = function (key, opt_silent) {\n if (key in this.values_) {\n var oldValue = this.values_[key];\n delete this.values_[key];\n if (!opt_silent) {\n this.notify(key, oldValue);\n }\n }\n };\n return BaseObject;\n}(Observable));\n/**\n * @type {Object}\n */\nvar changeEventTypeCache = {};\n/**\n * @param {string} key Key name.\n * @return {string} Change name.\n */\nexport function getChangeEventType(key) {\n return changeEventTypeCache.hasOwnProperty(key) ?\n changeEventTypeCache[key] :\n (changeEventTypeCache[key] = 'change:' + key);\n}\nexport default BaseObject;\n//# sourceMappingURL=Object.js.map","/**\n * @module ol/has\n */\nvar ua = typeof navigator !== 'undefined' ?\n navigator.userAgent.toLowerCase() : '';\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport var FIREFOX = ua.indexOf('firefox') !== -1;\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport var SAFARI = ua.indexOf('safari') !== -1 && ua.indexOf('chrom') == -1;\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport var WEBKIT = ua.indexOf('webkit') !== -1 && ua.indexOf('edge') == -1;\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport var MAC = ua.indexOf('macintosh') !== -1;\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport var DEVICE_PIXEL_RATIO = typeof devicePixelRatio !== 'undefined' ? devicePixelRatio : 1;\n/**\n * The execution context is a worker with OffscreenCanvas available.\n * @const\n * @type {boolean}\n */\nexport var WORKER_OFFSCREEN_CANVAS = typeof WorkerGlobalScope !== 'undefined' && typeof OffscreenCanvas !== 'undefined' &&\n self instanceof WorkerGlobalScope; //eslint-disable-line\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport var IMAGE_DECODE = typeof Image !== 'undefined' && Image.prototype.decode;\n/**\n * @type {boolean}\n */\nexport var PASSIVE_EVENT_LISTENERS = (function () {\n var passive = false;\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passive = true;\n }\n });\n window.addEventListener('_', null, options);\n window.removeEventListener('_', null, options);\n }\n catch (error) {\n // passive not supported\n }\n return passive;\n})();\n//# sourceMappingURL=has.js.map","import { WORKER_OFFSCREEN_CANVAS } from './has.js';\n/**\n * @module ol/dom\n */\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number=} opt_width Canvas width.\n * @param {number=} opt_height Canvas height.\n * @param {Array=} opt_canvasPool Canvas pool to take existing canvas from.\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height, opt_canvasPool) {\n var canvas = opt_canvasPool && opt_canvasPool.length ?\n opt_canvasPool.shift() :\n WORKER_OFFSCREEN_CANVAS ?\n new OffscreenCanvas(opt_width || 300, opt_height || 300) :\n document.createElement('canvas');\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (canvas.getContext('2d'));\n}\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n return width;\n}\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n var height = element.offsetHeight;\n var style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n return height;\n}\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n var parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n/**\n * @param {Node} node The node to remove.\n * @returns {Node} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n var oldChildren = node.childNodes;\n for (var i = 0; true; ++i) {\n var oldChild = oldChildren[i];\n var newChild = children[i];\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n//# sourceMappingURL=dom.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Control\n */\nimport { VOID } from '../functions.js';\nimport MapEventType from '../MapEventType.js';\nimport BaseObject from '../Object.js';\nimport { removeNode } from '../dom.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control is a visible widget with a DOM element in a fixed position on the\n * screen. They can involve user input (buttons), or be informational only;\n * the position is determined using CSS. By default these are placed in the\n * container with CSS class name `ol-overlaycontainer-stopevent`, but can use\n * any outside DOM element.\n *\n * This is the base class for controls. You can use it for simple custom\n * controls by creating the element with listeners, creating an instance:\n * ```js\n * var myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nvar Control = /** @class */ (function (_super) {\n __extends(Control, _super);\n /**\n * @param {Options} options Control options.\n */\n function Control(options) {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {HTMLElement}\n */\n _this.element = options.element ? options.element : null;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.target_ = null;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n /**\n * @protected\n * @type {!Array}\n */\n _this.listenerKeys = [];\n /**\n * @private\n * @type {function(import(\"../MapEvent.js\").default): void}\n */\n _this.render_ = options.render ? options.render : VOID;\n if (options.target) {\n _this.setTarget(options.target);\n }\n return _this;\n }\n /**\n * @inheritDoc\n */\n Control.prototype.disposeInternal = function () {\n removeNode(this.element);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Get the map associated with this control.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Control.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Remove the control from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Control.prototype.setMap = function (map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (var i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n unlistenByKey(this.listenerKeys[i]);\n }\n this.listenerKeys.length = 0;\n this.map_ = map;\n if (this.map_) {\n var target = this.target_ ?\n this.target_ : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(listen(map, MapEventType.POSTRENDER, this.render, this));\n }\n map.render();\n }\n };\n /**\n * Update the projection. Rendering of the coordinates is done in\n * `handleMouseMove` and `handleMouseUp`.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n Control.prototype.render = function (mapEvent) {\n this.render_.call(this, mapEvent);\n };\n /**\n * This function is used to set a target element for the control. It has no\n * effect if it is called after the control has been added to the map (i.e.\n * after `setMap` is called on the control). If no `target` is set in the\n * options passed to the control constructor and if `setTarget` is not called\n * then the control is added to the map's overlay container.\n * @param {HTMLElement|string} target Target.\n * @api\n */\n Control.prototype.setTarget = function (target) {\n this.target_ = typeof target === 'string' ?\n document.getElementById(target) :\n target;\n };\n return Control;\n}(BaseObject));\nexport default Control;\n//# sourceMappingURL=Control.js.map","/**\n * @module ol/css\n */\n/**\n * @typedef {Object} FontParameters\n * @property {string} style\n * @property {string} variant\n * @property {string} weight\n * @property {string} size\n * @property {string} lineHeight\n * @property {string} family\n * @property {Array} families\n */\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_HIDDEN = 'ol-hidden';\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_SELECTABLE = 'ol-selectable';\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSELECTABLE = 'ol-unselectable';\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSUPPORTED = 'ol-unsupported';\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_CONTROL = 'ol-control';\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_COLLAPSED = 'ol-collapsed';\n/**\n * From http://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nvar fontRegEx = new RegExp([\n '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$'\n].join(''), 'i');\nvar fontRegExMatchIndex = [\n 'style',\n 'variant',\n 'weight',\n 'size',\n 'lineHeight',\n 'family'\n];\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters} The font parameters (or null if the input spec is invalid).\n */\nexport var getFontParameters = function (fontSpec) {\n var match = fontSpec.match(fontRegEx);\n if (!match) {\n return null;\n }\n var style = /** @type {FontParameters} */ ({\n lineHeight: 'normal',\n size: '1.2em',\n style: 'normal',\n weight: 'normal',\n variant: 'normal'\n });\n for (var i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n var value = match[i + 1];\n if (value !== undefined) {\n style[fontRegExMatchIndex[i]] = value;\n }\n }\n style.families = style.family.split(/,\\s?/);\n return style;\n};\n//# sourceMappingURL=css.js.map","/**\n * @module ol/easing\n */\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing~inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n }\n else {\n return 1 - inAndOut(2 * (t - 0.5));\n }\n}\n//# sourceMappingURL=easing.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\nimport EventType from '../events/EventType.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function()} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nvar Rotate = /** @class */ (function (_super) {\n __extends(Rotate, _super);\n /**\n * @param {Options=} opt_options Rotate options.\n */\n function Rotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-rotate';\n var label = options.label !== undefined ? options.label : '\\u21E7';\n /**\n * @type {HTMLElement}\n * @private\n */\n _this.label_ = null;\n if (typeof label === 'string') {\n _this.label_ = document.createElement('span');\n _this.label_.className = 'ol-compass';\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n _this.label_.classList.add('ol-compass');\n }\n var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n var button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(_this.label_);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n _this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @type {boolean}\n * @private\n */\n _this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.rotation_ = undefined;\n if (_this.autoHide_) {\n _this.element.classList.add(CLASS_HIDDEN);\n }\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Rotate.prototype.handleClick_ = function (event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n }\n else {\n this.resetNorth_();\n }\n };\n /**\n * @private\n */\n Rotate.prototype.resetNorth_ = function () {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var rotation = view.getRotation();\n if (rotation !== undefined) {\n if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut\n });\n }\n else {\n view.setRotation(0);\n }\n }\n };\n return Rotate;\n}(Control));\n/**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Rotate}\n */\nexport function render(mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n var rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n var transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n var contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n}\nexport default Rotate;\n//# sourceMappingURL=Rotate.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/AssertionError\n */\nimport { VERSION } from './util.js';\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n /**\n * @param {number} code Error code.\n */\n function AssertionError(code) {\n var _this = this;\n var path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n var message = 'Assertion failed. See https://openlayers.org/en/' + path +\n '/doc/errors/#' + code + ' for details.';\n _this = _super.call(this, message) || this;\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n _this.code = code;\n /**\n * @type {string}\n */\n _this.name = 'AssertionError';\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n _this.message = message;\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default AssertionError;\n//# sourceMappingURL=AssertionError.js.map","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n//# sourceMappingURL=asserts.js.map","/**\n * @module ol/math\n */\n/**\n * Takes a number and clamps it to within the provided bounds.\n * @param {number} value The input number.\n * @param {number} min The minimum value to return.\n * @param {number} max The maximum value to return.\n * @return {number} The input number if it is within bounds, or the nearest\n * number within the bounds.\n */\nexport function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n/**\n * Return the hyperbolic cosine of a given number. The method will use the\n * native `Math.cosh` function if it is available, otherwise the hyperbolic\n * cosine will be calculated via the reference implementation of the Mozilla\n * developer network.\n *\n * @param {number} x X.\n * @return {number} Hyperbolic cosine of x.\n */\nexport var cosh = (function () {\n // Wrapped in a iife, to save the overhead of checking for the native\n // implementation on every invocation.\n var cosh;\n if ('cosh' in Math) {\n // The environment supports the native Math.cosh function, use it…\n cosh = Math.cosh;\n }\n else {\n // … else, use the reference implementation of MDN:\n cosh = function (x) {\n var y = /** @type {Math} */ (Math).exp(x);\n return (y + 1 / y) / 2;\n };\n }\n return cosh;\n}());\n/**\n * Returns the square of the closest distance between the point (x, y) and the\n * line segment (x1, y1) to (x2, y2).\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredSegmentDistance(x, y, x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n if (dx !== 0 || dy !== 0) {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n x1 = x2;\n y1 = y2;\n }\n else if (t > 0) {\n x1 += dx * t;\n y1 += dy * t;\n }\n }\n return squaredDistance(x, y, x1, y1);\n}\n/**\n * Returns the square of the distance between the points (x1, y1) and (x2, y2).\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredDistance(x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n return dx * dx + dy * dy;\n}\n/**\n * Solves system of linear equations using Gaussian elimination method.\n *\n * @param {Array>} mat Augmented matrix (n x n + 1 column)\n * in row-major order.\n * @return {Array} The resulting vector.\n */\nexport function solveLinearSystem(mat) {\n var n = mat.length;\n for (var i = 0; i < n; i++) {\n // Find max in the i-th column (ignoring i - 1 first rows)\n var maxRow = i;\n var maxEl = Math.abs(mat[i][i]);\n for (var r = i + 1; r < n; r++) {\n var absValue = Math.abs(mat[r][i]);\n if (absValue > maxEl) {\n maxEl = absValue;\n maxRow = r;\n }\n }\n if (maxEl === 0) {\n return null; // matrix is singular\n }\n // Swap max row with i-th (current) row\n var tmp = mat[maxRow];\n mat[maxRow] = mat[i];\n mat[i] = tmp;\n // Subtract the i-th row to make all the remaining rows 0 in the i-th column\n for (var j = i + 1; j < n; j++) {\n var coef = -mat[j][i] / mat[i][i];\n for (var k = i; k < n + 1; k++) {\n if (i == k) {\n mat[j][k] = 0;\n }\n else {\n mat[j][k] += coef * mat[i][k];\n }\n }\n }\n }\n // Solve Ax=b for upper triangular matrix A (mat)\n var x = new Array(n);\n for (var l = n - 1; l >= 0; l--) {\n x[l] = mat[l][n] / mat[l][l];\n for (var m = l - 1; m >= 0; m--) {\n mat[m][n] -= mat[m][l] * x[l];\n }\n }\n return x;\n}\n/**\n * Converts radians to to degrees.\n *\n * @param {number} angleInRadians Angle in radians.\n * @return {number} Angle in degrees.\n */\nexport function toDegrees(angleInRadians) {\n return angleInRadians * 180 / Math.PI;\n}\n/**\n * Converts degrees to radians.\n *\n * @param {number} angleInDegrees Angle in degrees.\n * @return {number} Angle in radians.\n */\nexport function toRadians(angleInDegrees) {\n return angleInDegrees * Math.PI / 180;\n}\n/**\n * Returns the modulo of a / b, depending on the sign of b.\n *\n * @param {number} a Dividend.\n * @param {number} b Divisor.\n * @return {number} Modulo.\n */\nexport function modulo(a, b) {\n var r = a % b;\n return r * b < 0 ? r + b : r;\n}\n/**\n * Calculates the linearly interpolated value of x between a and b.\n *\n * @param {number} a Number\n * @param {number} b Number\n * @param {number} x Value to be interpolated.\n * @return {number} Interpolated value.\n */\nexport function lerp(a, b, x) {\n return a + x * (b - a);\n}\n//# sourceMappingURL=math.js.map","/**\n * @module ol/geom/GeometryType\n */\n/**\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, `'Circle'`.\n * @enum {string}\n */\nexport default {\n POINT: 'Point',\n LINE_STRING: 'LineString',\n LINEAR_RING: 'LinearRing',\n POLYGON: 'Polygon',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon',\n GEOMETRY_COLLECTION: 'GeometryCollection',\n CIRCLE: 'Circle'\n};\n//# sourceMappingURL=GeometryType.js.map","/**\n * @module ol/sphere\n */\nimport { toRadians, toDegrees } from './math.js';\nimport GeometryType from './geom/GeometryType.js';\n/**\n * Object literal with options for the {@link getLength} or {@link getArea}\n * functions.\n * @typedef {Object} SphereMetricOptions\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857']\n * Projection of the geometry. By default, the geometry is assumed to be in\n * Web Mercator.\n * @property {number} [radius=6371008.8] Sphere radius. By default, the\n * [mean Earth radius](https://en.wikipedia.org/wiki/Earth_radius#Mean_radius)\n * for the WGS84 ellipsoid is used.\n */\n/**\n * The mean Earth radius (1/3 * (2a + b)) for the WGS84 ellipsoid.\n * https://en.wikipedia.org/wiki/Earth_radius#Mean_radius\n * @type {number}\n */\nexport var DEFAULT_RADIUS = 6371008.8;\n/**\n * Get the great circle distance (in meters) between two geographic coordinates.\n * @param {Array} c1 Starting coordinate.\n * @param {Array} c2 Ending coordinate.\n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {number} The great circle distance between the points (in meters).\n * @api\n */\nexport function getDistance(c1, c2, opt_radius) {\n var radius = opt_radius || DEFAULT_RADIUS;\n var lat1 = toRadians(c1[1]);\n var lat2 = toRadians(c2[1]);\n var deltaLatBy2 = (lat2 - lat1) / 2;\n var deltaLonBy2 = toRadians(c2[0] - c1[0]) / 2;\n var a = Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) +\n Math.sin(deltaLonBy2) * Math.sin(deltaLonBy2) *\n Math.cos(lat1) * Math.cos(lat2);\n return 2 * radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n}\n/**\n * Get the cumulative great circle length of linestring coordinates (geographic).\n * @param {Array} coordinates Linestring coordinates.\n * @param {number} radius The sphere radius to use.\n * @return {number} The length (in meters).\n */\nfunction getLengthInternal(coordinates, radius) {\n var length = 0;\n for (var i = 0, ii = coordinates.length; i < ii - 1; ++i) {\n length += getDistance(coordinates[i], coordinates[i + 1], radius);\n }\n return length;\n}\n/**\n * Get the spherical length of a geometry. This length is the sum of the\n * great circle distances between coordinates. For polygons, the length is\n * the sum of all rings. For points, the length is zero. For multi-part\n * geometries, the length is the sum of the length of each part.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions=} opt_options Options for the\n * length calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical length (in meters).\n * @api\n */\nexport function getLength(geometry, opt_options) {\n var options = opt_options || {};\n var radius = options.radius || DEFAULT_RADIUS;\n var projection = options.projection || 'EPSG:3857';\n var type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n var length = 0;\n var coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT: {\n break;\n }\n case GeometryType.LINE_STRING:\n case GeometryType.LINEAR_RING: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n length = getLengthInternal(coordinates, radius);\n break;\n }\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n length += getLengthInternal(coordinates[i], radius);\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n for (j = 0, jj = coords.length; j < jj; ++j) {\n length += getLengthInternal(coords[j], radius);\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n var geometries = /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n length += getLength(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return length;\n}\n/**\n * Returns the spherical area for a list of coordinates.\n *\n * [Reference](https://trs-new.jpl.nasa.gov/handle/2014/40409)\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007\n *\n * @param {Array} coordinates List of coordinates of a linear\n * ring. If the ring is oriented clockwise, the area will be positive,\n * otherwise it will be negative.\n * @param {number} radius The sphere radius.\n * @return {number} Area (in square meters).\n */\nfunction getAreaInternal(coordinates, radius) {\n var area = 0;\n var len = coordinates.length;\n var x1 = coordinates[len - 1][0];\n var y1 = coordinates[len - 1][1];\n for (var i = 0; i < len; i++) {\n var x2 = coordinates[i][0];\n var y2 = coordinates[i][1];\n area += toRadians(x2 - x1) *\n (2 + Math.sin(toRadians(y1)) +\n Math.sin(toRadians(y2)));\n x1 = x2;\n y1 = y2;\n }\n return area * radius * radius / 2.0;\n}\n/**\n * Get the spherical area of a geometry. This is the area (in meters) assuming\n * that polygon edges are segments of great circles on a sphere.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions=} opt_options Options for the area\n * calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical area (in square meters).\n * @api\n */\nexport function getArea(geometry, opt_options) {\n var options = opt_options || {};\n var radius = options.radius || DEFAULT_RADIUS;\n var projection = options.projection || 'EPSG:3857';\n var type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n var area = 0;\n var coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT:\n case GeometryType.LINE_STRING:\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.LINEAR_RING: {\n break;\n }\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/Polygon.js\").default} */ (geometry).getCoordinates();\n area = Math.abs(getAreaInternal(coordinates[0], radius));\n for (i = 1, ii = coordinates.length; i < ii; ++i) {\n area -= Math.abs(getAreaInternal(coordinates[i], radius));\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n area += Math.abs(getAreaInternal(coords[0], radius));\n for (j = 1, jj = coords.length; j < jj; ++j) {\n area -= Math.abs(getAreaInternal(coords[j], radius));\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n var geometries = /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n area += getArea(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return area;\n}\n/**\n * Returns the coordinate at the given distance and bearing from `c1`.\n *\n * @param {import(\"./coordinate.js\").Coordinate} c1 The origin point (`[lon, lat]` in degrees).\n * @param {number} distance The great-circle distance between the origin\n * point and the target point.\n * @param {number} bearing The bearing (in radians).\n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {import(\"./coordinate.js\").Coordinate} The target point.\n */\nexport function offset(c1, distance, bearing, opt_radius) {\n var radius = opt_radius || DEFAULT_RADIUS;\n var lat1 = toRadians(c1[1]);\n var lon1 = toRadians(c1[0]);\n var dByR = distance / radius;\n var lat = Math.asin(Math.sin(lat1) * Math.cos(dByR) +\n Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing));\n var lon = lon1 + Math.atan2(Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat));\n return [toDegrees(lon), toDegrees(lat)];\n}\n//# sourceMappingURL=sphere.js.map","/**\n * @module ol/extent/Corner\n */\n/**\n * Extent corner.\n * @enum {string}\n */\nexport default {\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right'\n};\n//# sourceMappingURL=Corner.js.map","/**\n * @module ol/extent/Relationship\n */\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16\n};\n//# sourceMappingURL=Relationship.js.map","/**\n * @module ol/extent\n */\nimport { assert } from './asserts.js';\nimport Corner from './extent/Corner.js';\nimport Relationship from './extent/Relationship.js';\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n var extent = createEmpty();\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent=} opt_extent Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, opt_extent) {\n var minX = Math.min.apply(null, xs);\n var minY = Math.min.apply(null, ys);\n var maxX = Math.max.apply(null, xs);\n var maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n}\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0] - value;\n opt_extent[1] = extent[1] - value;\n opt_extent[2] = extent[2] + value;\n opt_extent[3] = extent[3] + value;\n return opt_extent;\n }\n else {\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value\n ];\n }\n}\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent.slice();\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n var dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n }\n else if (extent[2] < x) {\n dx = x - extent[2];\n }\n else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n }\n else if (extent[3] < y) {\n dy = y - extent[3];\n }\n else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return extent1[0] <= extent2[0] && extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] && extent2[3] <= extent1[3];\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {Relationship} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var x = coordinate[0];\n var y = coordinate[1];\n var relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n }\n else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n }\n else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = minX;\n opt_extent[1] = minY;\n opt_extent[2] = maxX;\n opt_extent[3] = maxY;\n return opt_extent;\n }\n else {\n return [minX, minY, maxX, maxY];\n }\n}\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(opt_extent) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, opt_extent);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, opt_extent) {\n var x = coordinate[0];\n var y = coordinate[1];\n return createOrUpdate(x, y, x, y, opt_extent);\n}\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendCoordinates(extent, coordinates);\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(flatCoordinates, offset, end, stride, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n/**\n * @param {Array>} rings Rings.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendRings(extent, rings);\n}\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return extent1[0] == extent2[0] && extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] && extent1[3] == extent2[3];\n}\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return Math.abs(extent1[0] - extent2[0]) < tolerance && Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance && Math.abs(extent1[3] - extent2[3]) < tolerance;\n}\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(extent, flatCoordinates, offset, end, stride) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (var i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n var val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n var area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {Corner} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n var coordinate;\n if (corner === Corner.BOTTOM_LEFT) {\n coordinate = getBottomLeft(extent);\n }\n else if (corner === Corner.BOTTOM_RIGHT) {\n coordinate = getBottomRight(extent);\n }\n else if (corner === Corner.TOP_LEFT) {\n coordinate = getTopLeft(extent);\n }\n else if (corner === Corner.TOP_RIGHT) {\n coordinate = getTopRight(extent);\n }\n else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n var minX = Math.min(extent1[0], extent2[0]);\n var minY = Math.min(extent1[1], extent2[1]);\n var maxX = Math.max(extent1[2], extent2[2]);\n var maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, opt_extent) {\n var dx = resolution * size[0] / 2;\n var dy = resolution * size[1] / 2;\n var cosRotation = Math.cos(rotation);\n var sinRotation = Math.sin(rotation);\n var xCos = dx * cosRotation;\n var xSin = dx * sinRotation;\n var yCos = dy * cosRotation;\n var ySin = dy * sinRotation;\n var x = center[0];\n var y = center[1];\n var x0 = x - xCos + ySin;\n var x1 = x - xCos - ySin;\n var x2 = x + xCos - ySin;\n var x3 = x + xCos + ySin;\n var y0 = y - xSin - yCos;\n var y1 = y - xSin + yCos;\n var y2 = y + xSin + yCos;\n var y3 = y + xSin - yCos;\n return createOrUpdate(Math.min(x0, x1, x2, x3), Math.min(y0, y1, y2, y3), Math.max(x0, x1, x2, x3), Math.max(y0, y1, y2, y3), opt_extent);\n}\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n var intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent=} opt_extent Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, opt_extent) {\n var intersection = opt_extent ? opt_extent : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n }\n else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n }\n else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n }\n else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n }\n else {\n intersection[3] = extent2[3];\n }\n }\n else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1];\n}\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent;\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n var deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n var deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n var intersects = false;\n var startRel = coordinateRelationship(extent, start);\n var endRel = coordinateRelationship(extent, end);\n if (startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING) {\n intersects = true;\n }\n else {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var startX = start[0];\n var startY = start[1];\n var endX = end[0];\n var endY = end[1];\n var slope = (endY - startY) / (endX - startX);\n var x = void 0, y = void 0;\n if (!!(endRel & Relationship.ABOVE) &&\n !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - ((endY - maxY) / slope);\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects && !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)) {\n // potentially intersects right\n y = endY - ((endX - maxX) * slope);\n intersects = y >= minY && y <= maxY;\n }\n if (!intersects && !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)) {\n // potentially intersects bottom\n x = endX - ((endY - minY) / slope);\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects && !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)) {\n // potentially intersects left\n y = endY - ((endX - minX) * slope);\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent=} opt_extent Destination extent.\n * @param {number=} opt_stops Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, opt_extent, opt_stops) {\n var coordinates = [];\n if (opt_stops > 1) {\n var width = extent[2] - extent[0];\n var height = extent[3] - extent[1];\n for (var i = 0; i < opt_stops; ++i) {\n coordinates.push(extent[0] + width * i / opt_stops, extent[1], extent[2], extent[1] + height * i / opt_stops, extent[2] - width * i / opt_stops, extent[3], extent[0], extent[3] - height * i / opt_stops);\n }\n }\n else {\n coordinates = [\n extent[0], extent[1],\n extent[2], extent[1],\n extent[2], extent[3],\n extent[0], extent[3]\n ];\n }\n transformFn(coordinates, coordinates, 2);\n var xs = [];\n var ys = [];\n for (var i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, opt_extent);\n}\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n var projectionExtent = projection.getExtent();\n var center = getCenter(extent);\n if (projection.canWrapX() && (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])) {\n var worldWidth = getWidth(projectionExtent);\n var worldsAway = Math.floor((center[0] - projectionExtent[0]) / worldWidth);\n var offset = (worldsAway * worldWidth);\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n//# sourceMappingURL=extent.js.map","/**\n * @module ol/proj/Units\n */\n/**\n * Projection units: `'degrees'`, `'ft'`, `'m'`, `'pixels'`, `'tile-pixels'` or\n * `'us-ft'`.\n * @enum {string}\n */\nvar Units = {\n DEGREES: 'degrees',\n FEET: 'ft',\n METERS: 'm',\n PIXELS: 'pixels',\n TILE_PIXELS: 'tile-pixels',\n USFEET: 'us-ft'\n};\n/**\n * Meters per unit lookup table.\n * @const\n * @type {Object}\n * @api\n */\nexport var METERS_PER_UNIT = {};\n// use the radius of the Normal sphere\nMETERS_PER_UNIT[Units.DEGREES] = 2 * Math.PI * 6370997 / 360;\nMETERS_PER_UNIT[Units.FEET] = 0.3048;\nMETERS_PER_UNIT[Units.METERS] = 1;\nMETERS_PER_UNIT[Units.USFEET] = 1200 / 3937;\nexport default Units;\n//# sourceMappingURL=Units.js.map","/**\n * @module ol/proj/Projection\n */\nimport { METERS_PER_UNIT } from './Units.js';\n/**\n * @typedef {Object} Options\n * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.\n * @property {import(\"./Units.js\").default|string} [units] Units. Required unless a\n * proj4 projection is defined for `code`.\n * @property {import(\"../extent.js\").Extent} [extent] The validity extent for the SRS.\n * @property {string} [axisOrientation='enu'] The axis orientation as specified in Proj4.\n * @property {boolean} [global=false] Whether the projection is valid for the whole globe.\n * @property {number} [metersPerUnit] The meters per unit for the SRS.\n * If not provided, the `units` are used to get the meters per unit from the {@link module:ol/proj/Units~METERS_PER_UNIT}\n * lookup table.\n * @property {import(\"../extent.js\").Extent} [worldExtent] The world extent for the SRS.\n * @property {function(number, import(\"../coordinate.js\").Coordinate):number} [getPointResolution]\n * Function to determine resolution at a point. The function is called with a\n * `{number}` view resolution and an `{import(\"../coordinate.js\").Coordinate}` as arguments, and returns\n * the `{number}` resolution in projection units at the passed coordinate. If this is `undefined`,\n * the default {@link module:ol/proj#getPointResolution} function will be used.\n */\n/**\n * @classdesc\n * Projection definition class. One of these is created for each projection\n * supported in the application and stored in the {@link module:ol/proj} namespace.\n * You can use these in applications, but this is not required, as API params\n * and options use {@link module:ol/proj~ProjectionLike} which means the simple string\n * code will suffice.\n *\n * You can use {@link module:ol/proj~get} to retrieve the object for a particular\n * projection.\n *\n * The library includes definitions for `EPSG:4326` and `EPSG:3857`, together\n * with the following aliases:\n * * `EPSG:4326`: CRS:84, urn:ogc:def:crs:EPSG:6.6:4326,\n * urn:ogc:def:crs:OGC:1.3:CRS84, urn:ogc:def:crs:OGC:2:84,\n * http://www.opengis.net/gml/srs/epsg.xml#4326,\n * urn:x-ogc:def:crs:EPSG:4326\n * * `EPSG:3857`: EPSG:102100, EPSG:102113, EPSG:900913,\n * urn:ogc:def:crs:EPSG:6.18:3:3857,\n * http://www.opengis.net/gml/srs/epsg.xml#3857\n *\n * If you use [proj4js](https://github.com/proj4js/proj4js), aliases can\n * be added using `proj4.defs()`. After all required projection definitions are\n * added, call the {@link module:ol/proj/proj4~register} function.\n *\n * @api\n */\nvar Projection = /** @class */ (function () {\n /**\n * @param {Options} options Projection options.\n */\n function Projection(options) {\n /**\n * @private\n * @type {string}\n */\n this.code_ = options.code;\n /**\n * Units of projected coordinates. When set to `TILE_PIXELS`, a\n * `this.extent_` and `this.worldExtent_` must be configured properly for each\n * tile.\n * @private\n * @type {import(\"./Units.js\").default}\n */\n this.units_ = /** @type {import(\"./Units.js\").default} */ (options.units);\n /**\n * Validity extent of the projection in projected coordinates. For projections\n * with `TILE_PIXELS` units, this is the extent of the tile in\n * tile pixel space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = options.extent !== undefined ? options.extent : null;\n /**\n * Extent of the world in EPSG:4326. For projections with\n * `TILE_PIXELS` units, this is the extent of the tile in\n * projected coordinate space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.worldExtent_ = options.worldExtent !== undefined ?\n options.worldExtent : null;\n /**\n * @private\n * @type {string}\n */\n this.axisOrientation_ = options.axisOrientation !== undefined ?\n options.axisOrientation : 'enu';\n /**\n * @private\n * @type {boolean}\n */\n this.global_ = options.global !== undefined ? options.global : false;\n /**\n * @private\n * @type {boolean}\n */\n this.canWrapX_ = !!(this.global_ && this.extent_);\n /**\n * @private\n * @type {function(number, import(\"../coordinate.js\").Coordinate):number|undefined}\n */\n this.getPointResolutionFunc_ = options.getPointResolution;\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n this.defaultTileGrid_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n this.metersPerUnit_ = options.metersPerUnit;\n }\n /**\n * @return {boolean} The projection is suitable for wrapping the x-axis\n */\n Projection.prototype.canWrapX = function () {\n return this.canWrapX_;\n };\n /**\n * Get the code for this projection, e.g. 'EPSG:4326'.\n * @return {string} Code.\n * @api\n */\n Projection.prototype.getCode = function () {\n return this.code_;\n };\n /**\n * Get the validity extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n Projection.prototype.getExtent = function () {\n return this.extent_;\n };\n /**\n * Get the units of this projection.\n * @return {import(\"./Units.js\").default} Units.\n * @api\n */\n Projection.prototype.getUnits = function () {\n return this.units_;\n };\n /**\n * Get the amount of meters per unit of this projection. If the projection is\n * not configured with `metersPerUnit` or a units identifier, the return is\n * `undefined`.\n * @return {number|undefined} Meters.\n * @api\n */\n Projection.prototype.getMetersPerUnit = function () {\n return this.metersPerUnit_ || METERS_PER_UNIT[this.units_];\n };\n /**\n * Get the world extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n Projection.prototype.getWorldExtent = function () {\n return this.worldExtent_;\n };\n /**\n * Get the axis orientation of this projection.\n * Example values are:\n * enu - the default easting, northing, elevation.\n * neu - northing, easting, up - useful for \"lat/long\" geographic coordinates,\n * or south orientated transverse mercator.\n * wnu - westing, northing, up - some planetary coordinate systems have\n * \"west positive\" coordinate systems\n * @return {string} Axis orientation.\n * @api\n */\n Projection.prototype.getAxisOrientation = function () {\n return this.axisOrientation_;\n };\n /**\n * Is this projection a global projection which spans the whole world?\n * @return {boolean} Whether the projection is global.\n * @api\n */\n Projection.prototype.isGlobal = function () {\n return this.global_;\n };\n /**\n * Set if the projection is a global projection which spans the whole world\n * @param {boolean} global Whether the projection is global.\n * @api\n */\n Projection.prototype.setGlobal = function (global) {\n this.global_ = global;\n this.canWrapX_ = !!(global && this.extent_);\n };\n /**\n * @return {import(\"../tilegrid/TileGrid.js\").default} The default tile grid.\n */\n Projection.prototype.getDefaultTileGrid = function () {\n return this.defaultTileGrid_;\n };\n /**\n * @param {import(\"../tilegrid/TileGrid.js\").default} tileGrid The default tile grid.\n */\n Projection.prototype.setDefaultTileGrid = function (tileGrid) {\n this.defaultTileGrid_ = tileGrid;\n };\n /**\n * Set the validity extent for this projection.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Projection.prototype.setExtent = function (extent) {\n this.extent_ = extent;\n this.canWrapX_ = !!(this.global_ && extent);\n };\n /**\n * Set the world extent for this projection.\n * @param {import(\"../extent.js\").Extent} worldExtent World extent\n * [minlon, minlat, maxlon, maxlat].\n * @api\n */\n Projection.prototype.setWorldExtent = function (worldExtent) {\n this.worldExtent_ = worldExtent;\n };\n /**\n * Set the getPointResolution function (see {@link module:ol/proj~getPointResolution}\n * for this projection.\n * @param {function(number, import(\"../coordinate.js\").Coordinate):number} func Function\n * @api\n */\n Projection.prototype.setGetPointResolution = function (func) {\n this.getPointResolutionFunc_ = func;\n };\n /**\n * Get the custom point resolution function for this projection (if set).\n * @return {function(number, import(\"../coordinate.js\").Coordinate):number|undefined} The custom point\n * resolution function (if set).\n */\n Projection.prototype.getPointResolutionFunc = function () {\n return this.getPointResolutionFunc_;\n };\n return Projection;\n}());\nexport default Projection;\n//# sourceMappingURL=Projection.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/proj/epsg3857\n */\nimport { cosh } from '../math.js';\nimport Projection from './Projection.js';\nimport Units from './Units.js';\n/**\n * Radius of WGS84 sphere\n *\n * @const\n * @type {number}\n */\nexport var RADIUS = 6378137;\n/**\n * @const\n * @type {number}\n */\nexport var HALF_SIZE = Math.PI * RADIUS;\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var EXTENT = [\n -HALF_SIZE, -HALF_SIZE,\n HALF_SIZE, HALF_SIZE\n];\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var WORLD_EXTENT = [-180, -85, 180, 85];\n/**\n * @classdesc\n * Projection object for web/spherical Mercator (EPSG:3857).\n */\nvar EPSG3857Projection = /** @class */ (function (_super) {\n __extends(EPSG3857Projection, _super);\n /**\n * @param {string} code Code.\n */\n function EPSG3857Projection(code) {\n return _super.call(this, {\n code: code,\n units: Units.METERS,\n extent: EXTENT,\n global: true,\n worldExtent: WORLD_EXTENT,\n getPointResolution: function (resolution, point) {\n return resolution / cosh(point[1] / RADIUS);\n }\n }) || this;\n }\n return EPSG3857Projection;\n}(Projection));\n/**\n * Projections equal to EPSG:3857.\n *\n * @const\n * @type {Array}\n */\nexport var PROJECTIONS = [\n new EPSG3857Projection('EPSG:3857'),\n new EPSG3857Projection('EPSG:102100'),\n new EPSG3857Projection('EPSG:102113'),\n new EPSG3857Projection('EPSG:900913'),\n new EPSG3857Projection('urn:ogc:def:crs:EPSG:6.18:3:3857'),\n new EPSG3857Projection('urn:ogc:def:crs:EPSG::3857'),\n new EPSG3857Projection('http://www.opengis.net/gml/srs/epsg.xml#3857')\n];\n/**\n * Transformation from EPSG:4326 to EPSG:3857.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function fromEPSG4326(input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n }\n else {\n output = new Array(length);\n }\n }\n var halfSize = HALF_SIZE;\n for (var i = 0; i < length; i += dimension) {\n output[i] = halfSize * input[i] / 180;\n var y = RADIUS *\n Math.log(Math.tan(Math.PI * (+input[i + 1] + 90) / 360));\n if (y > halfSize) {\n y = halfSize;\n }\n else if (y < -halfSize) {\n y = -halfSize;\n }\n output[i + 1] = y;\n }\n return output;\n}\n/**\n * Transformation from EPSG:3857 to EPSG:4326.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function toEPSG4326(input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n }\n else {\n output = new Array(length);\n }\n }\n for (var i = 0; i < length; i += dimension) {\n output[i] = 180 * input[i] / HALF_SIZE;\n output[i + 1] = 360 * Math.atan(Math.exp(input[i + 1] / RADIUS)) / Math.PI - 90;\n }\n return output;\n}\n//# sourceMappingURL=epsg3857.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/proj/epsg4326\n */\nimport Projection from './Projection.js';\nimport Units from './Units.js';\n/**\n * Semi-major radius of the WGS84 ellipsoid.\n *\n * @const\n * @type {number}\n */\nexport var RADIUS = 6378137;\n/**\n * Extent of the EPSG:4326 projection which is the whole world.\n *\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var EXTENT = [-180, -90, 180, 90];\n/**\n * @const\n * @type {number}\n */\nexport var METERS_PER_UNIT = Math.PI * RADIUS / 180;\n/**\n * @classdesc\n * Projection object for WGS84 geographic coordinates (EPSG:4326).\n *\n * Note that OpenLayers does not strictly comply with the EPSG definition.\n * The EPSG registry defines 4326 as a CRS for Latitude,Longitude (y,x).\n * OpenLayers treats EPSG:4326 as a pseudo-projection, with x,y coordinates.\n */\nvar EPSG4326Projection = /** @class */ (function (_super) {\n __extends(EPSG4326Projection, _super);\n /**\n * @param {string} code Code.\n * @param {string=} opt_axisOrientation Axis orientation.\n */\n function EPSG4326Projection(code, opt_axisOrientation) {\n return _super.call(this, {\n code: code,\n units: Units.DEGREES,\n extent: EXTENT,\n axisOrientation: opt_axisOrientation,\n global: true,\n metersPerUnit: METERS_PER_UNIT,\n worldExtent: EXTENT\n }) || this;\n }\n return EPSG4326Projection;\n}(Projection));\n/**\n * Projections equal to EPSG:4326.\n *\n * @const\n * @type {Array}\n */\nexport var PROJECTIONS = [\n new EPSG4326Projection('CRS:84'),\n new EPSG4326Projection('EPSG:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:EPSG::4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:EPSG:6.6:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:1.3:CRS84'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:2:84'),\n new EPSG4326Projection('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),\n new EPSG4326Projection('urn:x-ogc:def:crs:EPSG:4326', 'neu')\n];\n//# sourceMappingURL=epsg4326.js.map","/**\n * @module ol/proj/transforms\n */\nimport { isEmpty } from '../obj.js';\n/**\n * @private\n * @type {!Object>}\n */\nvar transforms = {};\n/**\n * Clear the transform cache.\n */\nexport function clear() {\n transforms = {};\n}\n/**\n * Registers a conversion function to convert coordinates from the source\n * projection to the destination projection.\n *\n * @param {import(\"./Projection.js\").default} source Source.\n * @param {import(\"./Projection.js\").default} destination Destination.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform.\n */\nexport function add(source, destination, transformFn) {\n var sourceCode = source.getCode();\n var destinationCode = destination.getCode();\n if (!(sourceCode in transforms)) {\n transforms[sourceCode] = {};\n }\n transforms[sourceCode][destinationCode] = transformFn;\n}\n/**\n * Unregisters the conversion function to convert coordinates from the source\n * projection to the destination projection. This method is used to clean up\n * cached transforms during testing.\n *\n * @param {import(\"./Projection.js\").default} source Source projection.\n * @param {import(\"./Projection.js\").default} destination Destination projection.\n * @return {import(\"../proj.js\").TransformFunction} transformFn The unregistered transform.\n */\nexport function remove(source, destination) {\n var sourceCode = source.getCode();\n var destinationCode = destination.getCode();\n var transform = transforms[sourceCode][destinationCode];\n delete transforms[sourceCode][destinationCode];\n if (isEmpty(transforms[sourceCode])) {\n delete transforms[sourceCode];\n }\n return transform;\n}\n/**\n * Get a transform given a source code and a destination code.\n * @param {string} sourceCode The code for the source projection.\n * @param {string} destinationCode The code for the destination projection.\n * @return {import(\"../proj.js\").TransformFunction|undefined} The transform function (if found).\n */\nexport function get(sourceCode, destinationCode) {\n var transform;\n if (sourceCode in transforms && destinationCode in transforms[sourceCode]) {\n transform = transforms[sourceCode][destinationCode];\n }\n return transform;\n}\n//# sourceMappingURL=transforms.js.map","/**\n * @module ol/proj/projections\n */\n/**\n * @type {Object}\n */\nvar cache = {};\n/**\n * Clear the projections cache.\n */\nexport function clear() {\n cache = {};\n}\n/**\n * Get a cached projection by code.\n * @param {string} code The code for the projection.\n * @return {import(\"./Projection.js\").default} The projection (if cached).\n */\nexport function get(code) {\n return cache[code] || null;\n}\n/**\n * Add a projection to the cache.\n * @param {string} code The projection code.\n * @param {import(\"./Projection.js\").default} projection The projection to cache.\n */\nexport function add(code, projection) {\n cache[code] = projection;\n}\n//# sourceMappingURL=projections.js.map","/**\n * @module ol/proj\n */\n/**\n * The ol/proj module stores:\n * * a list of {@link module:ol/proj/Projection}\n * objects, one for each projection supported by the application\n * * a list of transform functions needed to convert coordinates in one projection\n * into another.\n *\n * The static functions are the methods used to maintain these.\n * Each transform function can handle not only simple coordinate pairs, but also\n * large arrays of coordinates such as vector geometries.\n *\n * When loaded, the library adds projection objects for EPSG:4326 (WGS84\n * geographic coordinates) and EPSG:3857 (Web or Spherical Mercator, as used\n * for example by Bing Maps or OpenStreetMap), together with the relevant\n * transform functions.\n *\n * Additional transforms may be added by using the http://proj4js.org/\n * library (version 2.2 or later). You can use the full build supplied by\n * Proj4js, or create a custom build to support those projections you need; see\n * the Proj4js website for how to do this. You also need the Proj4js definitions\n * for the required projections. These definitions can be obtained from\n * https://epsg.io/, and are a JS function, so can be loaded in a script\n * tag (as in the examples) or pasted into your application.\n *\n * After all required projection definitions are added to proj4's registry (by\n * using `proj4.defs()`), simply call `register(proj4)` from the `ol/proj/proj4`\n * package. Existing transforms are not changed by this function. See\n * examples/wms-image-custom-proj for an example of this.\n *\n * Additional projection definitions can be registered with `proj4.defs()` any\n * time. Just make sure to call `register(proj4)` again; for example, with user-supplied data where you don't\n * know in advance what projections are needed, you can initially load minimal\n * support and then load whichever are requested.\n *\n * Note that Proj4js does not support projection extents. If you want to add\n * one for creating default tile grids, you can add it after the Projection\n * object has been created with `setExtent`, for example,\n * `get('EPSG:1234').setExtent(extent)`.\n *\n * In addition to Proj4js support, any transform functions can be added with\n * {@link module:ol/proj~addCoordinateTransforms}. To use this, you must first create\n * a {@link module:ol/proj/Projection} object for the new projection and add it with\n * {@link module:ol/proj~addProjection}. You can then add the forward and inverse\n * functions with {@link module:ol/proj~addCoordinateTransforms}. See\n * examples/wms-custom-proj for an example of this.\n *\n * Note that if no transforms are needed and you only need to define the\n * projection, just add a {@link module:ol/proj/Projection} with\n * {@link module:ol/proj~addProjection}. See examples/wms-no-proj for an example of\n * this.\n */\nimport { getDistance } from './sphere.js';\nimport { applyTransform } from './extent.js';\nimport { modulo } from './math.js';\nimport { toEPSG4326, fromEPSG4326, PROJECTIONS as EPSG3857_PROJECTIONS } from './proj/epsg3857.js';\nimport { PROJECTIONS as EPSG4326_PROJECTIONS } from './proj/epsg4326.js';\nimport Projection from './proj/Projection.js';\nimport Units, { METERS_PER_UNIT } from './proj/Units.js';\nimport { add as addTransformFunc, clear as clearTransformFuncs, get as getTransformFunc } from './proj/transforms.js';\nimport { add as addProj, clear as clearProj, get as getProj } from './proj/projections.js';\n/**\n * A projection as {@link module:ol/proj/Projection}, SRS identifier\n * string or undefined.\n * @typedef {Projection|string|undefined} ProjectionLike\n * @api\n */\n/**\n * A transform function accepts an array of input coordinate values, an optional\n * output array, and an optional dimension (default should be 2). The function\n * transforms the input coordinate values, populates the output array, and\n * returns the output array.\n *\n * @typedef {function(Array, Array=, number=): Array} TransformFunction\n * @api\n */\nexport { METERS_PER_UNIT };\nexport { Projection };\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Output coordinate array (new array, same coordinate\n * values).\n */\nexport function cloneTransform(input, opt_output, opt_dimension) {\n var output;\n if (opt_output !== undefined) {\n for (var i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n output = opt_output;\n }\n else {\n output = input.slice();\n }\n return output;\n}\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Input coordinate array (same array as input).\n */\nexport function identityTransform(input, opt_output, opt_dimension) {\n if (opt_output !== undefined && input !== opt_output) {\n for (var i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n input = opt_output;\n }\n return input;\n}\n/**\n * Add a Projection object to the list of supported projections that can be\n * looked up by their code.\n *\n * @param {Projection} projection Projection instance.\n * @api\n */\nexport function addProjection(projection) {\n addProj(projection.getCode(), projection);\n addTransformFunc(projection, projection, cloneTransform);\n}\n/**\n * @param {Array} projections Projections.\n */\nexport function addProjections(projections) {\n projections.forEach(addProjection);\n}\n/**\n * Fetches a Projection object for the code specified.\n *\n * @param {ProjectionLike} projectionLike Either a code string which is\n * a combination of authority and identifier such as \"EPSG:4326\", or an\n * existing projection object, or undefined.\n * @return {Projection} Projection object, or null if not in list.\n * @api\n */\nexport function get(projectionLike) {\n return typeof projectionLike === 'string' ?\n getProj(/** @type {string} */ (projectionLike)) :\n ( /** @type {Projection} */(projectionLike) || null);\n}\n/**\n * Get the resolution of the point in degrees or distance units.\n * For projections with degrees as the unit this will simply return the\n * provided resolution. For other projections the point resolution is\n * by default estimated by transforming the 'point' pixel to EPSG:4326,\n * measuring its width and height on the normal sphere,\n * and taking the average of the width and height.\n * A custom function can be provided for a specific projection, either\n * by setting the `getPointResolution` option in the\n * {@link module:ol/proj/Projection~Projection} constructor or by using\n * {@link module:ol/proj/Projection~Projection#setGetPointResolution} to change an existing\n * projection object.\n * @param {ProjectionLike} projection The projection.\n * @param {number} resolution Nominal resolution in projection units.\n * @param {import(\"./coordinate.js\").Coordinate} point Point to find adjusted resolution at.\n * @param {Units=} opt_units Units to get the point resolution in.\n * Default is the projection's units.\n * @return {number} Point resolution.\n * @api\n */\nexport function getPointResolution(projection, resolution, point, opt_units) {\n projection = get(projection);\n var pointResolution;\n var getter = projection.getPointResolutionFunc();\n if (getter) {\n pointResolution = getter(resolution, point);\n if (opt_units && opt_units !== projection.getUnits()) {\n var metersPerUnit = projection.getMetersPerUnit();\n if (metersPerUnit) {\n pointResolution = pointResolution * metersPerUnit / METERS_PER_UNIT[opt_units];\n }\n }\n }\n else {\n var units = projection.getUnits();\n if (units == Units.DEGREES && !opt_units || opt_units == Units.DEGREES) {\n pointResolution = resolution;\n }\n else {\n // Estimate point resolution by transforming the center pixel to EPSG:4326,\n // measuring its width and height on the normal sphere, and taking the\n // average of the width and height.\n var toEPSG4326_1 = getTransformFromProjections(projection, get('EPSG:4326'));\n var vertices = [\n point[0] - resolution / 2, point[1],\n point[0] + resolution / 2, point[1],\n point[0], point[1] - resolution / 2,\n point[0], point[1] + resolution / 2\n ];\n vertices = toEPSG4326_1(vertices, vertices, 2);\n var width = getDistance(vertices.slice(0, 2), vertices.slice(2, 4));\n var height = getDistance(vertices.slice(4, 6), vertices.slice(6, 8));\n pointResolution = (width + height) / 2;\n var metersPerUnit = opt_units ?\n METERS_PER_UNIT[opt_units] :\n projection.getMetersPerUnit();\n if (metersPerUnit !== undefined) {\n pointResolution /= metersPerUnit;\n }\n }\n }\n return pointResolution;\n}\n/**\n * Registers transformation functions that don't alter coordinates. Those allow\n * to transform between projections with equal meaning.\n *\n * @param {Array} projections Projections.\n * @api\n */\nexport function addEquivalentProjections(projections) {\n addProjections(projections);\n projections.forEach(function (source) {\n projections.forEach(function (destination) {\n if (source !== destination) {\n addTransformFunc(source, destination, cloneTransform);\n }\n });\n });\n}\n/**\n * Registers transformation functions to convert coordinates in any projection\n * in projection1 to any projection in projection2.\n *\n * @param {Array} projections1 Projections with equal\n * meaning.\n * @param {Array} projections2 Projections with equal\n * meaning.\n * @param {TransformFunction} forwardTransform Transformation from any\n * projection in projection1 to any projection in projection2.\n * @param {TransformFunction} inverseTransform Transform from any projection\n * in projection2 to any projection in projection1..\n */\nexport function addEquivalentTransforms(projections1, projections2, forwardTransform, inverseTransform) {\n projections1.forEach(function (projection1) {\n projections2.forEach(function (projection2) {\n addTransformFunc(projection1, projection2, forwardTransform);\n addTransformFunc(projection2, projection1, inverseTransform);\n });\n });\n}\n/**\n * Clear all cached projections and transforms.\n */\nexport function clearAllProjections() {\n clearProj();\n clearTransformFuncs();\n}\n/**\n * @param {Projection|string|undefined} projection Projection.\n * @param {string} defaultCode Default code.\n * @return {Projection} Projection.\n */\nexport function createProjection(projection, defaultCode) {\n if (!projection) {\n return get(defaultCode);\n }\n else if (typeof projection === 'string') {\n return get(projection);\n }\n else {\n return (\n /** @type {Projection} */ (projection));\n }\n}\n/**\n * Creates a {@link module:ol/proj~TransformFunction} from a simple 2D coordinate transform\n * function.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} coordTransform Coordinate\n * transform.\n * @return {TransformFunction} Transform function.\n */\nexport function createTransformFromCoordinateTransform(coordTransform) {\n return (\n /**\n * @param {Array} input Input.\n * @param {Array=} opt_output Output.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Output.\n */\n function (input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension !== undefined ? opt_dimension : 2;\n var output = opt_output !== undefined ? opt_output : new Array(length);\n for (var i = 0; i < length; i += dimension) {\n var point = coordTransform([input[i], input[i + 1]]);\n output[i] = point[0];\n output[i + 1] = point[1];\n for (var j = dimension - 1; j >= 2; --j) {\n output[i + j] = input[i + j];\n }\n }\n return output;\n });\n}\n/**\n * Registers coordinate transform functions to convert coordinates between the\n * source projection and the destination projection.\n * The forward and inverse functions convert coordinate pairs; this function\n * converts these into the functions used internally which also handle\n * extents and coordinate arrays.\n *\n * @param {ProjectionLike} source Source projection.\n * @param {ProjectionLike} destination Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} forward The forward transform\n * function (that is, from the source projection to the destination\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} inverse The inverse transform\n * function (that is, from the destination projection to the source\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @api\n */\nexport function addCoordinateTransforms(source, destination, forward, inverse) {\n var sourceProj = get(source);\n var destProj = get(destination);\n addTransformFunc(sourceProj, destProj, createTransformFromCoordinateTransform(forward));\n addTransformFunc(destProj, sourceProj, createTransformFromCoordinateTransform(inverse));\n}\n/**\n * Transforms a coordinate from longitude/latitude to a different projection.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate as longitude and latitude, i.e.\n * an array with longitude as 1st and latitude as 2nd element.\n * @param {ProjectionLike=} opt_projection Target projection. The\n * default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate projected to the target projection.\n * @api\n */\nexport function fromLonLat(coordinate, opt_projection) {\n return transform(coordinate, 'EPSG:4326', opt_projection !== undefined ? opt_projection : 'EPSG:3857');\n}\n/**\n * Transforms a coordinate to longitude/latitude.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Projected coordinate.\n * @param {ProjectionLike=} opt_projection Projection of the coordinate.\n * The default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate as longitude and latitude, i.e. an array\n * with longitude as 1st and latitude as 2nd element.\n * @api\n */\nexport function toLonLat(coordinate, opt_projection) {\n var lonLat = transform(coordinate, opt_projection !== undefined ? opt_projection : 'EPSG:3857', 'EPSG:4326');\n var lon = lonLat[0];\n if (lon < -180 || lon > 180) {\n lonLat[0] = modulo(lon + 180, 360) - 180;\n }\n return lonLat;\n}\n/**\n * Checks if two projections are the same, that is every coordinate in one\n * projection does represent the same geographic point as the same coordinate in\n * the other projection.\n *\n * @param {Projection} projection1 Projection 1.\n * @param {Projection} projection2 Projection 2.\n * @return {boolean} Equivalent.\n * @api\n */\nexport function equivalent(projection1, projection2) {\n if (projection1 === projection2) {\n return true;\n }\n var equalUnits = projection1.getUnits() === projection2.getUnits();\n if (projection1.getCode() === projection2.getCode()) {\n return equalUnits;\n }\n else {\n var transformFunc = getTransformFromProjections(projection1, projection2);\n return transformFunc === cloneTransform && equalUnits;\n }\n}\n/**\n * Searches in the list of transform functions for the function for converting\n * coordinates from the source projection to the destination projection.\n *\n * @param {Projection} sourceProjection Source Projection object.\n * @param {Projection} destinationProjection Destination Projection\n * object.\n * @return {TransformFunction} Transform function.\n */\nexport function getTransformFromProjections(sourceProjection, destinationProjection) {\n var sourceCode = sourceProjection.getCode();\n var destinationCode = destinationProjection.getCode();\n var transformFunc = getTransformFunc(sourceCode, destinationCode);\n if (!transformFunc) {\n transformFunc = identityTransform;\n }\n return transformFunc;\n}\n/**\n * Given the projection-like objects, searches for a transformation\n * function to convert a coordinates array from the source projection to the\n * destination projection.\n *\n * @param {ProjectionLike} source Source.\n * @param {ProjectionLike} destination Destination.\n * @return {TransformFunction} Transform function.\n * @api\n */\nexport function getTransform(source, destination) {\n var sourceProjection = get(source);\n var destinationProjection = get(destination);\n return getTransformFromProjections(sourceProjection, destinationProjection);\n}\n/**\n * Transforms a coordinate from source projection to destination projection.\n * This returns a new coordinate (and does not modify the original).\n *\n * See {@link module:ol/proj~transformExtent} for extent transformation.\n * See the transform method of {@link module:ol/geom/Geometry~Geometry} and its\n * subclasses for geometry transforms.\n *\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\nexport function transform(coordinate, source, destination) {\n var transformFunc = getTransform(source, destination);\n return transformFunc(coordinate, undefined, coordinate.length);\n}\n/**\n * Transforms an extent from source projection to destination projection. This\n * returns a new extent (and does not modify the original).\n *\n * @param {import(\"./extent.js\").Extent} extent The extent to transform.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @param {number=} opt_stops Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination, opt_stops) {\n var transformFunc = getTransform(source, destination);\n return applyTransform(extent, transformFunc, undefined, opt_stops);\n}\n/**\n * Transforms the given point to the destination projection.\n *\n * @param {import(\"./coordinate.js\").Coordinate} point Point.\n * @param {Projection} sourceProjection Source projection.\n * @param {Projection} destinationProjection Destination projection.\n * @return {import(\"./coordinate.js\").Coordinate} Point.\n */\nexport function transformWithProjections(point, sourceProjection, destinationProjection) {\n var transformFunc = getTransformFromProjections(sourceProjection, destinationProjection);\n return transformFunc(point);\n}\n/**\n * @type {?Projection}\n */\nvar userProjection = null;\n/**\n * Set the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @param {ProjectionLike} projection The user projection.\n */\nexport function setUserProjection(projection) {\n userProjection = get(projection);\n}\n/**\n * Clear the user projection if set. Note that this method is not yet a part of\n * the stable API. Support for user projections is not yet complete and should\n * be considered experimental.\n */\nexport function clearUserProjection() {\n userProjection = null;\n}\n/**\n * Get the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @returns {?Projection} The user projection (or null if not set).\n */\nexport function getUserProjection() {\n return userProjection;\n}\n/**\n * Use geographic coordinates (WGS-84 datum) in API methods. Note that this\n * method is not yet a part of the stable API. Support for user projections is\n * not yet complete and should be considered experimental.\n */\nexport function useGeographic() {\n setUserProjection('EPSG:4326');\n}\n/**\n * Return a coordinate transformed into the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} sourceProjection The input coordinate projection.\n * @returns {Array} The input coordinate in the user projection.\n */\nexport function toUserCoordinate(coordinate, sourceProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, sourceProjection, userProjection);\n}\n/**\n * Return a coordinate transformed from the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} destProjection The destination projection.\n * @returns {Array} The input coordinate transformed.\n */\nexport function fromUserCoordinate(coordinate, destProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, userProjection, destProjection);\n}\n/**\n * Return an extent transformed into the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} sourceProjection The input extent projection.\n * @returns {import(\"./extent.js\").Extent} The input extent in the user projection.\n */\nexport function toUserExtent(extent, sourceProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, sourceProjection, userProjection);\n}\n/**\n * Return an extent transformed from the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} destProjection The destination projection.\n * @returns {import(\"./extent.js\").Extent} The input extent transformed.\n */\nexport function fromUserExtent(extent, destProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, userProjection, destProjection);\n}\n/**\n * Add transforms to and from EPSG:4326 and EPSG:3857. This function is called\n * by when this module is executed and should only need to be called again after\n * `clearAllProjections()` is called (e.g. in tests).\n */\nexport function addCommon() {\n // Add transformations that don't alter coordinates to convert within set of\n // projections with equal meaning.\n addEquivalentProjections(EPSG3857_PROJECTIONS);\n addEquivalentProjections(EPSG4326_PROJECTIONS);\n // Add transformations to convert EPSG:4326 like coordinates to EPSG:3857 like\n // coordinates and back.\n addEquivalentTransforms(EPSG4326_PROJECTIONS, EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326);\n}\naddCommon();\n//# sourceMappingURL=proj.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/ScaleLine\n */\nimport { getChangeEventType } from '../Object.js';\nimport { assert } from '../asserts.js';\nimport Control from './Control.js';\nimport { CLASS_UNSELECTABLE } from '../css.js';\nimport { getPointResolution, METERS_PER_UNIT } from '../proj.js';\nimport ProjUnits from '../proj/Units.js';\n/**\n * @type {string}\n */\nvar UNITS_PROP = 'units';\n/**\n * Units for the scale line. Supported values are `'degrees'`, `'imperial'`,\n * `'nautical'`, `'metric'`, `'us'`.\n * @enum {string}\n */\nexport var Units = {\n DEGREES: 'degrees',\n IMPERIAL: 'imperial',\n NAUTICAL: 'nautical',\n METRIC: 'metric',\n US: 'us'\n};\n/**\n * @const\n * @type {Array}\n */\nvar LEADING_DIGITS = [1, 2, 5];\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-scale-line'] CSS Class name.\n * @property {number} [minWidth=64] Minimum width in pixels.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {Units|string} [units='metric'] Units.\n * @property {boolean} [bar=false] Render scalebars instead of a line.\n * @property {number} [steps=4] Number of steps the scalebar should use. Use even numbers\n * for best results. Only applies when `bar` is `true`.\n * @property {boolean} [text=false] Render the text scale above of the scalebar. Only applies\n * when `bar` is `true`.\n */\n/**\n * @classdesc\n * A control displaying rough y-axis distances, calculated for the center of the\n * viewport. For conformal projections (e.g. EPSG:3857, the default view\n * projection in OpenLayers), the scale is valid for all directions.\n * No scale line will be shown when the y-axis distance of a pixel at the\n * viewport center cannot be calculated in the view projection.\n * By default the scale line will show in the bottom left portion of the map,\n * but this can be changed by using the css selector `.ol-scale-line`.\n * When specifying `bar` as `true`, a scalebar will be rendered instead\n * of a scaleline.\n *\n * @api\n */\nvar ScaleLine = /** @class */ (function (_super) {\n __extends(ScaleLine, _super);\n /**\n * @param {Options=} opt_options Scale line options.\n */\n function ScaleLine(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var className = options.className !== undefined ? options.className :\n options.bar ? 'ol-scale-bar' : 'ol-scale-line';\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.innerElement_ = document.createElement('div');\n _this.innerElement_.className = className + '-inner';\n _this.element.className = className + ' ' + CLASS_UNSELECTABLE;\n _this.element.appendChild(_this.innerElement_);\n /**\n * @private\n * @type {?import(\"../View.js\").State}\n */\n _this.viewState_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.minWidth_ = options.minWidth !== undefined ? options.minWidth : 64;\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = false;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.renderedWidth_ = undefined;\n /**\n * @private\n * @type {string}\n */\n _this.renderedHTML_ = '';\n _this.addEventListener(getChangeEventType(UNITS_PROP), _this.handleUnitsChanged_);\n _this.setUnits(options.units || Units.METRIC);\n /**\n * @private\n * @type {boolean}\n */\n _this.scaleBar_ = options.bar || false;\n /**\n * @private\n * @type {number}\n */\n _this.scaleBarSteps_ = options.steps || 4;\n /**\n * @private\n * @type {boolean}\n */\n _this.scaleBarText_ = options.text || false;\n return _this;\n }\n /**\n * Return the units to use in the scale line.\n * @return {Units} The units\n * to use in the scale line.\n * @observable\n * @api\n */\n ScaleLine.prototype.getUnits = function () {\n return this.get(UNITS_PROP);\n };\n /**\n * @private\n */\n ScaleLine.prototype.handleUnitsChanged_ = function () {\n this.updateElement_();\n };\n /**\n * Set the units to use in the scale line.\n * @param {Units} units The units to use in the scale line.\n * @observable\n * @api\n */\n ScaleLine.prototype.setUnits = function (units) {\n this.set(UNITS_PROP, units);\n };\n /**\n * @private\n */\n ScaleLine.prototype.updateElement_ = function () {\n var viewState = this.viewState_;\n if (!viewState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var center = viewState.center;\n var projection = viewState.projection;\n var units = this.getUnits();\n var pointResolutionUnits = units == Units.DEGREES ?\n ProjUnits.DEGREES :\n ProjUnits.METERS;\n var pointResolution = getPointResolution(projection, viewState.resolution, center, pointResolutionUnits);\n var nominalCount = this.minWidth_ * pointResolution;\n var suffix = '';\n if (units == Units.DEGREES) {\n var metersPerDegree = METERS_PER_UNIT[ProjUnits.DEGREES];\n nominalCount *= metersPerDegree;\n if (nominalCount < metersPerDegree / 60) {\n suffix = '\\u2033'; // seconds\n pointResolution *= 3600;\n }\n else if (nominalCount < metersPerDegree) {\n suffix = '\\u2032'; // minutes\n pointResolution *= 60;\n }\n else {\n suffix = '\\u00b0'; // degrees\n }\n }\n else if (units == Units.IMPERIAL) {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution /= 0.0254;\n }\n else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.3048;\n }\n else {\n suffix = 'mi';\n pointResolution /= 1609.344;\n }\n }\n else if (units == Units.NAUTICAL) {\n pointResolution /= 1852;\n suffix = 'nm';\n }\n else if (units == Units.METRIC) {\n if (nominalCount < 0.001) {\n suffix = 'μm';\n pointResolution *= 1000000;\n }\n else if (nominalCount < 1) {\n suffix = 'mm';\n pointResolution *= 1000;\n }\n else if (nominalCount < 1000) {\n suffix = 'm';\n }\n else {\n suffix = 'km';\n pointResolution /= 1000;\n }\n }\n else if (units == Units.US) {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution *= 39.37;\n }\n else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.30480061;\n }\n else {\n suffix = 'mi';\n pointResolution /= 1609.3472;\n }\n }\n else {\n assert(false, 33); // Invalid units\n }\n var i = 3 * Math.floor(Math.log(this.minWidth_ * pointResolution) / Math.log(10));\n var count, width, decimalCount;\n while (true) {\n decimalCount = Math.floor(i / 3);\n var decimal = Math.pow(10, decimalCount);\n count = LEADING_DIGITS[((i % 3) + 3) % 3] * decimal;\n width = Math.round(count / pointResolution);\n if (isNaN(width)) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n return;\n }\n else if (width >= this.minWidth_) {\n break;\n }\n ++i;\n }\n var html;\n if (this.scaleBar_) {\n html = this.createScaleBar(width, count, suffix);\n }\n else {\n html = count.toFixed(decimalCount < 0 ? -decimalCount : 0) + ' ' + suffix;\n }\n if (this.renderedHTML_ != html) {\n this.innerElement_.innerHTML = html;\n this.renderedHTML_ = html;\n }\n if (this.renderedWidth_ != width) {\n this.innerElement_.style.width = width + 'px';\n this.renderedWidth_ = width;\n }\n if (!this.renderedVisible_) {\n this.element.style.display = '';\n this.renderedVisible_ = true;\n }\n };\n /**\n * @private\n * @param {number} width The current width of the scalebar.\n * @param {number} scale The current scale.\n * @param {string} suffix The suffix to append to the scale text.\n * @returns {string} The stringified HTML of the scalebar.\n */\n ScaleLine.prototype.createScaleBar = function (width, scale, suffix) {\n var mapScale = '1 : ' + Math.round(this.getScaleForResolution()).toLocaleString();\n var scaleSteps = [];\n var stepWidth = width / this.scaleBarSteps_;\n var backgroundColor = '#ffffff';\n for (var i = 0; i < this.scaleBarSteps_; i++) {\n if (i === 0) {\n // create the first marker at position 0\n scaleSteps.push(this.createMarker('absolute', i));\n }\n scaleSteps.push('
' +\n '
' +\n '
' +\n this.createMarker('relative', i) +\n /*render text every second step, except when only 2 steps */\n (i % 2 === 0 || this.scaleBarSteps_ === 2 ?\n this.createStepText(i, width, false, scale, suffix) :\n '') +\n '
');\n if (i === this.scaleBarSteps_ - 1) {\n { /*render text at the end */ }\n scaleSteps.push(this.createStepText(i + 1, width, true, scale, suffix));\n }\n // switch colors of steps between black and white\n if (backgroundColor === '#ffffff') {\n backgroundColor = '#000000';\n }\n else {\n backgroundColor = '#ffffff';\n }\n }\n var scaleBarText;\n if (this.scaleBarText_) {\n scaleBarText = '
' +\n mapScale +\n '
';\n }\n else {\n scaleBarText = '';\n }\n var container = '
' +\n scaleBarText +\n scaleSteps.join('') +\n '
';\n return container;\n };\n /**\n * Creates a marker at given position\n * @param {string} position - The position, absolute or relative\n * @param {number} i - The iterator\n * @returns {string} The stringified div containing the marker\n */\n ScaleLine.prototype.createMarker = function (position, i) {\n var top = position === 'absolute' ? 3 : -10;\n return '
';\n };\n /**\n * Creates the label for a marker marker at given position\n * @param {number} i - The iterator\n * @param {number} width - The width the scalebar will currently use\n * @param {boolean} isLast - Flag indicating if we add the last step text\n * @param {number} scale - The current scale for the whole scalebar\n * @param {string} suffix - The suffix for the scale\n * @returns {string} The stringified div containing the step text\n */\n ScaleLine.prototype.createStepText = function (i, width, isLast, scale, suffix) {\n var length = i === 0 ? 0 : Math.round((scale / this.scaleBarSteps_ * i) * 100) / 100;\n var lengthString = length + (i === 0 ? '' : ' ' + suffix);\n var margin = i === 0 ? -3 : width / this.scaleBarSteps_ * -1;\n var minWidth = i === 0 ? 0 : width / this.scaleBarSteps_ * 2;\n return '
' +\n lengthString +\n '
';\n };\n /**\n * Returns the appropriate scale for the given resolution and units.\n * @return {number} The appropriate scale.\n */\n ScaleLine.prototype.getScaleForResolution = function () {\n var resolution = this.getMap().getView().getResolution();\n var dpi = 25.4 / 0.28;\n var mpu = this.viewState_.projection.getMetersPerUnit();\n var inchesPerMeter = 39.37;\n return parseFloat(resolution.toString()) * mpu * inchesPerMeter * dpi;\n };\n return ScaleLine;\n}(Control));\n/**\n * Update the scale line element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {ScaleLine}\n */\nexport function render(mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n this.viewState_ = null;\n }\n else {\n this.viewState_ = frameState.viewState;\n }\n this.updateElement_();\n}\nexport default ScaleLine;\n//# sourceMappingURL=ScaleLine.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Zoom\n */\nimport EventType from '../events/EventType.js';\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='-'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nvar Zoom = /** @class */ (function (_super) {\n __extends(Zoom, _super);\n /**\n * @param {Options=} opt_options Zoom options.\n */\n function Zoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-zoom';\n var delta = options.delta !== undefined ? options.delta : 1;\n var zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n var zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2212';\n var zoomInTipLabel = options.zoomInTipLabel !== undefined ?\n options.zoomInTipLabel : 'Zoom in';\n var zoomOutTipLabel = options.zoomOutTipLabel !== undefined ?\n options.zoomOutTipLabel : 'Zoom out';\n var inElement = document.createElement('button');\n inElement.className = className + '-in';\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(typeof zoomInLabel === 'string' ? document.createTextNode(zoomInLabel) : zoomInLabel);\n inElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, delta), false);\n var outElement = document.createElement('button');\n outElement.className = className + '-out';\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(typeof zoomOutLabel === 'string' ? document.createTextNode(zoomOutLabel) : zoomOutLabel);\n outElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, -delta), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Zoom.prototype.handleClick_ = function (delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n };\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n Zoom.prototype.zoomByDelta_ = function (delta) {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n zoom: newZoom,\n duration: this.duration_,\n easing: easeOut\n });\n }\n else {\n view.setZoom(newZoom);\n }\n }\n };\n return Zoom;\n}(Control));\nexport default Zoom;\n//# sourceMappingURL=Zoom.js.map","/**\n * @module ol/geom/GeometryLayout\n */\n/**\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available. Supported values are `'XY'`,\n * `'XYZ'`, `'XYM'`, `'XYZM'`.\n * @enum {string}\n */\nexport default {\n XY: 'XY',\n XYZ: 'XYZ',\n XYM: 'XYM',\n XYZM: 'XYZM'\n};\n//# sourceMappingURL=GeometryLayout.js.map","/**\n * @module ol/geom/flat/transform\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function transform2D(flatCoordinates, offset, end, stride, transform, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var x = flatCoordinates[j];\n var y = flatCoordinates[j + 1];\n dest[i++] = transform[0] * x + transform[2] * y + transform[4];\n dest[i++] = transform[1] * x + transform[3] * y + transform[5];\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} angle Angle.\n * @param {Array} anchor Rotation anchor point.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function rotate(flatCoordinates, offset, end, stride, angle, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * Scale the coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} sx Scale factor in the x-direction.\n * @param {number} sy Scale factor in the y-direction.\n * @param {Array} anchor Scale anchor point.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function scale(flatCoordinates, offset, end, stride, sx, sy, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + sx * deltaX;\n dest[i++] = anchorY + sy * deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function translate(flatCoordinates, offset, end, stride, deltaX, deltaY, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n dest[i++] = flatCoordinates[j] + deltaX;\n dest[i++] = flatCoordinates[j + 1] + deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n//# sourceMappingURL=transform.js.map","/**\n * @module ol/transform\n */\nimport { assert } from './asserts.js';\n/**\n * An array representing an affine 2d transformation for use with\n * {@link module:ol/transform} functions. The array has 6 elements.\n * @typedef {!Array} Transform\n * @api\n */\n/**\n * Collection of affine 2d transformation functions. The functions work on an\n * array of 6 elements. The element order is compatible with the [SVGMatrix\n * interface](https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix) and is\n * a subset (elements a to f) of a 3×3 matrix:\n * ```\n * [ a c e ]\n * [ b d f ]\n * [ 0 0 1 ]\n * ```\n */\n/**\n * @private\n * @type {Transform}\n */\nvar tmp_ = new Array(6);\n/**\n * Create an identity transform.\n * @return {!Transform} Identity transform.\n */\nexport function create() {\n return [1, 0, 0, 1, 0, 0];\n}\n/**\n * Resets the given transform to an identity transform.\n * @param {!Transform} transform Transform.\n * @return {!Transform} Transform.\n */\nexport function reset(transform) {\n return set(transform, 1, 0, 0, 1, 0, 0);\n}\n/**\n * Multiply the underlying matrices of two transforms and return the result in\n * the first transform.\n * @param {!Transform} transform1 Transform parameters of matrix 1.\n * @param {!Transform} transform2 Transform parameters of matrix 2.\n * @return {!Transform} transform1 multiplied with transform2.\n */\nexport function multiply(transform1, transform2) {\n var a1 = transform1[0];\n var b1 = transform1[1];\n var c1 = transform1[2];\n var d1 = transform1[3];\n var e1 = transform1[4];\n var f1 = transform1[5];\n var a2 = transform2[0];\n var b2 = transform2[1];\n var c2 = transform2[2];\n var d2 = transform2[3];\n var e2 = transform2[4];\n var f2 = transform2[5];\n transform1[0] = a1 * a2 + c1 * b2;\n transform1[1] = b1 * a2 + d1 * b2;\n transform1[2] = a1 * c2 + c1 * d2;\n transform1[3] = b1 * c2 + d1 * d2;\n transform1[4] = a1 * e2 + c1 * f2 + e1;\n transform1[5] = b1 * e2 + d1 * f2 + f1;\n return transform1;\n}\n/**\n * Set the transform components a-f on a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} a The a component of the transform.\n * @param {number} b The b component of the transform.\n * @param {number} c The c component of the transform.\n * @param {number} d The d component of the transform.\n * @param {number} e The e component of the transform.\n * @param {number} f The f component of the transform.\n * @return {!Transform} Matrix with transform applied.\n */\nexport function set(transform, a, b, c, d, e, f) {\n transform[0] = a;\n transform[1] = b;\n transform[2] = c;\n transform[3] = d;\n transform[4] = e;\n transform[5] = f;\n return transform;\n}\n/**\n * Set transform on one matrix from another matrix.\n * @param {!Transform} transform1 Matrix to set transform to.\n * @param {!Transform} transform2 Matrix to set transform from.\n * @return {!Transform} transform1 with transform from transform2 applied.\n */\nexport function setFromArray(transform1, transform2) {\n transform1[0] = transform2[0];\n transform1[1] = transform2[1];\n transform1[2] = transform2[2];\n transform1[3] = transform2[3];\n transform1[4] = transform2[4];\n transform1[5] = transform2[5];\n return transform1;\n}\n/**\n * Transforms the given coordinate with the given transform returning the\n * resulting, transformed coordinate. The coordinate will be modified in-place.\n *\n * @param {Transform} transform The transformation.\n * @param {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} coordinate The coordinate to transform.\n * @return {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} return coordinate so that operations can be\n * chained together.\n */\nexport function apply(transform, coordinate) {\n var x = coordinate[0];\n var y = coordinate[1];\n coordinate[0] = transform[0] * x + transform[2] * y + transform[4];\n coordinate[1] = transform[1] * x + transform[3] * y + transform[5];\n return coordinate;\n}\n/**\n * Applies rotation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} angle Angle in radians.\n * @return {!Transform} The rotated transform.\n */\nexport function rotate(transform, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return multiply(transform, set(tmp_, cos, sin, -sin, cos, 0, 0));\n}\n/**\n * Applies scale to a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scaled transform.\n */\nexport function scale(transform, x, y) {\n return multiply(transform, set(tmp_, x, 0, 0, y, 0, 0));\n}\n/**\n * Creates a scale transform.\n * @param {!Transform} target Transform to overwrite.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scale transform.\n */\nexport function makeScale(target, x, y) {\n return set(target, x, 0, 0, y, 0, 0);\n}\n/**\n * Applies translation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} dx Translation x.\n * @param {number} dy Translation y.\n * @return {!Transform} The translated transform.\n */\nexport function translate(transform, dx, dy) {\n return multiply(transform, set(tmp_, 1, 0, 0, 1, dx, dy));\n}\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative).\n * @param {!Transform} transform The transform (will be modified in place).\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {!Transform} The composite transform.\n */\nexport function compose(transform, dx1, dy1, sx, sy, angle, dx2, dy2) {\n var sin = Math.sin(angle);\n var cos = Math.cos(angle);\n transform[0] = sx * cos;\n transform[1] = sy * sin;\n transform[2] = -sx * sin;\n transform[3] = sy * cos;\n transform[4] = dx2 * sx * cos - dy2 * sx * sin + dx1;\n transform[5] = dx2 * sy * sin + dy2 * sy * cos + dy1;\n return transform;\n}\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative). The resulting transform\n * string can be applied as `transform` porperty of an HTMLElement's style.\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {string} The composite css transform.\n * @api\n */\nexport function composeCssTransform(dx1, dy1, sx, sy, angle, dx2, dy2) {\n return toString(compose(create(), dx1, dy1, sx, sy, angle, dx2, dy2));\n}\n/**\n * Invert the given transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (source) transform.\n */\nexport function invert(source) {\n return makeInverse(source, source);\n}\n/**\n * Invert the given transform.\n * @param {!Transform} target Transform to be set as the inverse of\n * the source transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (target) transform.\n */\nexport function makeInverse(target, source) {\n var det = determinant(source);\n assert(det !== 0, 32); // Transformation matrix cannot be inverted\n var a = source[0];\n var b = source[1];\n var c = source[2];\n var d = source[3];\n var e = source[4];\n var f = source[5];\n target[0] = d / det;\n target[1] = -b / det;\n target[2] = -c / det;\n target[3] = a / det;\n target[4] = (c * f - d * e) / det;\n target[5] = -(a * f - b * e) / det;\n return target;\n}\n/**\n * Returns the determinant of the given matrix.\n * @param {!Transform} mat Matrix.\n * @return {number} Determinant.\n */\nexport function determinant(mat) {\n return mat[0] * mat[3] - mat[1] * mat[2];\n}\n/**\n * A string version of the transform. This can be used\n * for CSS transforms.\n * @param {!Transform} mat Matrix.\n * @return {string} The transform as a string.\n */\nexport function toString(mat) {\n return 'matrix(' + mat.join(', ') + ')';\n}\n//# sourceMappingURL=transform.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Geometry\n */\nimport { abstract } from '../util.js';\nimport BaseObject from '../Object.js';\nimport { createEmpty, getHeight, returnOrUpdate } from '../extent.js';\nimport { transform2D } from './flat/transform.js';\nimport { get as getProjection, getTransform } from '../proj.js';\nimport Units from '../proj/Units.js';\nimport { create as createTransform, compose as composeTransform } from '../transform.js';\nimport { memoizeOne } from '../functions.js';\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nvar tmpTransform = createTransform();\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nvar Geometry = /** @class */ (function (_super) {\n __extends(Geometry, _super);\n function Geometry() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n _this.extent_ = createEmpty();\n /**\n * @private\n * @type {number}\n */\n _this.extentRevision_ = -1;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryRevision = 0;\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} revision The geometry revision.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n _this.simplifyTransformedInternal = memoizeOne(function (revision, squaredTolerance, opt_transform) {\n if (!opt_transform) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n var clone = this.clone();\n clone.applyTransform(opt_transform);\n return clone.getSimplifiedGeometry(squaredTolerance);\n });\n return _this;\n }\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.simplifyTransformed = function (squaredTolerance, opt_transform) {\n return this.simplifyTransformedInternal(this.getRevision(), squaredTolerance, opt_transform);\n };\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n Geometry.prototype.clone = function () {\n return abstract();\n };\n /**\n * @abstract\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Geometry.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n return abstract();\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Geometry.prototype.containsXY = function (x, y) {\n var coord = this.getClosestPoint([x, y]);\n return coord[0] === x && coord[1] === y;\n };\n /**\n * Return the closest point of the geometry to the passed point as\n * {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} point Point.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_closestPoint Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n Geometry.prototype.getClosestPoint = function (point, opt_closestPoint) {\n var closestPoint = opt_closestPoint ? opt_closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\n };\n /**\n * Returns true if this geometry includes the specified coordinate. If the\n * coordinate is on the boundary of the geometry, returns false.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains coordinate.\n * @api\n */\n Geometry.prototype.intersectsCoordinate = function (coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n };\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Geometry.prototype.computeExtent = function (extent) {\n return abstract();\n };\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent=} opt_extent Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Geometry.prototype.getExtent = function (opt_extent) {\n if (this.extentRevision_ != this.getRevision()) {\n this.extent_ = this.computeExtent(this.extent_);\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, opt_extent);\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n Geometry.prototype.rotate = function (angle, anchor) {\n abstract();\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to\n * sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n Geometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n abstract();\n };\n /**\n * Create a simplified version of this geometry. For linestrings, this uses\n * the [Douglas Peucker](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)\n * algorithm. For polygons, a quantization-based\n * simplification is used to preserve topology.\n * @param {number} tolerance The tolerance distance for simplification.\n * @return {Geometry} A new, simplified version of the original geometry.\n * @api\n */\n Geometry.prototype.simplify = function (tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker\n * algorithm.\n * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n return abstract();\n };\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n */\n Geometry.prototype.getType = function () {\n return abstract();\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @abstract\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n */\n Geometry.prototype.applyTransform = function (transformFn) {\n abstract();\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n */\n Geometry.prototype.intersectsExtent = function (extent) {\n return abstract();\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @abstract\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n Geometry.prototype.translate = function (deltaX, deltaY) {\n abstract();\n };\n /**\n * Transform each coordinate of the geometry from one coordinate reference\n * system to another. The geometry is modified in place.\n * For example, a line will be transformed to a line and a circle to a circle.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Geometry} This geometry. Note that original geometry is\n * modified in place.\n * @api\n */\n Geometry.prototype.transform = function (source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n var sourceProj = getProjection(source);\n var transformFn = sourceProj.getUnits() == Units.TILE_PIXELS ?\n function (inCoordinates, outCoordinates, stride) {\n var pixelExtent = sourceProj.getExtent();\n var projectedExtent = sourceProj.getWorldExtent();\n var scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(tmpTransform, projectedExtent[0], projectedExtent[3], scale, -scale, 0, 0, 0);\n transform2D(inCoordinates, 0, inCoordinates.length, stride, tmpTransform, outCoordinates);\n return getTransform(sourceProj, destination)(inCoordinates, outCoordinates, stride);\n } :\n getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n };\n return Geometry;\n}(BaseObject));\nexport default Geometry;\n//# sourceMappingURL=Geometry.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/SimpleGeometry\n */\nimport { abstract } from '../util.js';\nimport { createOrUpdateFromFlatCoordinates, getCenter } from '../extent.js';\nimport Geometry from './Geometry.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport { rotate, scale, translate, transform2D } from './flat/transform.js';\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nvar SimpleGeometry = /** @class */ (function (_super) {\n __extends(SimpleGeometry, _super);\n function SimpleGeometry() {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {GeometryLayout}\n */\n _this.layout = GeometryLayout.XY;\n /**\n * @protected\n * @type {number}\n */\n _this.stride = 2;\n /**\n * @protected\n * @type {Array}\n */\n _this.flatCoordinates = null;\n return _this;\n }\n /**\n * @inheritDoc\n */\n SimpleGeometry.prototype.computeExtent = function (extent) {\n return createOrUpdateFromFlatCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * @abstract\n * @return {Array<*>} Coordinates.\n */\n SimpleGeometry.prototype.getCoordinates = function () {\n return abstract();\n };\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n SimpleGeometry.prototype.getFirstCoordinate = function () {\n return this.flatCoordinates.slice(0, this.stride);\n };\n /**\n * @return {Array} Flat coordinates.\n */\n SimpleGeometry.prototype.getFlatCoordinates = function () {\n return this.flatCoordinates;\n };\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n SimpleGeometry.prototype.getLastCoordinate = function () {\n return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride);\n };\n /**\n * Return the {@link module:ol/geom/GeometryLayout layout} of the geometry.\n * @return {GeometryLayout} Layout.\n * @api\n */\n SimpleGeometry.prototype.getLayout = function () {\n return this.layout;\n };\n /**\n * @inheritDoc\n */\n SimpleGeometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n // If squaredTolerance is negative or if we know that simplification will not\n // have any effect then just return this.\n if (squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)) {\n return this;\n }\n var simplifiedGeometry = this.getSimplifiedGeometryInternal(squaredTolerance);\n var simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n return simplifiedGeometry;\n }\n else {\n // Simplification did not actually remove any coordinates. We now know\n // that any calls to getSimplifiedGeometry with a squaredTolerance less\n // than or equal to the current squaredTolerance will also not have any\n // effect. This allows us to short circuit simplification (saving CPU\n // cycles) and prevents the cache of simplified geometries from filling\n // up with useless identical copies of this geometry (saving memory).\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n * @protected\n */\n SimpleGeometry.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n return this;\n };\n /**\n * @return {number} Stride.\n */\n SimpleGeometry.prototype.getStride = function () {\n return this.stride;\n };\n /**\n * @param {GeometryLayout} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n SimpleGeometry.prototype.setFlatCoordinates = function (layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n };\n /**\n * @abstract\n * @param {!Array<*>} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n */\n SimpleGeometry.prototype.setCoordinates = function (coordinates, opt_layout) {\n abstract();\n };\n /**\n * @param {GeometryLayout|undefined} layout Layout.\n * @param {Array<*>} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n SimpleGeometry.prototype.setLayout = function (layout, coordinates, nesting) {\n /** @type {number} */\n var stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n }\n else {\n for (var i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = GeometryLayout.XY;\n this.stride = 2;\n return;\n }\n else {\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n SimpleGeometry.prototype.applyTransform = function (transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\n }\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n SimpleGeometry.prototype.rotate = function (angle, anchor) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n rotate(flatCoordinates, 0, flatCoordinates.length, stride, angle, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to\n * sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n SimpleGeometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n var sy = opt_sy;\n if (sy === undefined) {\n sy = sx;\n }\n var anchor = opt_anchor;\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n scale(flatCoordinates, 0, flatCoordinates.length, stride, sx, sy, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n SimpleGeometry.prototype.translate = function (deltaX, deltaY) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n translate(flatCoordinates, 0, flatCoordinates.length, stride, deltaX, deltaY, flatCoordinates);\n this.changed();\n }\n };\n return SimpleGeometry;\n}(Geometry));\n/**\n * @param {number} stride Stride.\n * @return {GeometryLayout} layout Layout.\n */\nfunction getLayoutForStride(stride) {\n var layout;\n if (stride == 2) {\n layout = GeometryLayout.XY;\n }\n else if (stride == 3) {\n layout = GeometryLayout.XYZ;\n }\n else if (stride == 4) {\n layout = GeometryLayout.XYZM;\n }\n return (\n /** @type {GeometryLayout} */ (layout));\n}\n/**\n * @param {GeometryLayout} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n var stride;\n if (layout == GeometryLayout.XY) {\n stride = 2;\n }\n else if (layout == GeometryLayout.XYZ || layout == GeometryLayout.XYM) {\n stride = 3;\n }\n else if (layout == GeometryLayout.XYZM) {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, opt_dest) {\n var flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n }\n else {\n var stride = simpleGeometry.getStride();\n return transform2D(flatCoordinates, 0, flatCoordinates.length, stride, transform, opt_dest);\n }\n}\nexport default SimpleGeometry;\n//# sourceMappingURL=SimpleGeometry.js.map","/**\n * @module ol/geom/flat/area\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRing(flatCoordinates, offset, end, stride) {\n var twiceArea = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n twiceArea += y1 * x2 - x1 * y2;\n x1 = x2;\n y1 = y2;\n }\n return twiceArea / 2;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRings(flatCoordinates, offset, ends, stride) {\n var area = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n area += linearRing(flatCoordinates, offset, end, stride);\n offset = end;\n }\n return area;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n var area = 0;\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n area += linearRings(flatCoordinates, offset, ends, stride);\n offset = ends[ends.length - 1];\n }\n return area;\n}\n//# sourceMappingURL=area.js.map","/**\n * @module ol/geom/flat/closest\n */\nimport { lerp, squaredDistance as squaredDx } from '../../math.js';\n/**\n * Returns the point on the 2D line segment flatCoordinates[offset1] to\n * flatCoordinates[offset2] that is closest to the point (x, y). Extra\n * dimensions are linearly interpolated.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset1 Offset 1.\n * @param {number} offset2 Offset 2.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n */\nfunction assignClosest(flatCoordinates, offset1, offset2, stride, x, y, closestPoint) {\n var x1 = flatCoordinates[offset1];\n var y1 = flatCoordinates[offset1 + 1];\n var dx = flatCoordinates[offset2] - x1;\n var dy = flatCoordinates[offset2 + 1] - y1;\n var offset;\n if (dx === 0 && dy === 0) {\n offset = offset1;\n }\n else {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n offset = offset2;\n }\n else if (t > 0) {\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = lerp(flatCoordinates[offset1 + i], flatCoordinates[offset2 + i], t);\n }\n closestPoint.length = stride;\n return;\n }\n else {\n offset = offset1;\n }\n }\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n}\n/**\n * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n for (offset += stride; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n var squaredDelta = squaredDx(x1, y1, x2, y2);\n if (squaredDelta > max) {\n max = squaredDelta;\n }\n x1 = x2;\n y1 = y2;\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);\n offset = end;\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(flatCoordinates, offset, endss, stride, max) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);\n offset = ends[ends.length - 1];\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n if (offset == end) {\n return minSquaredDistance;\n }\n var i, squaredDistance;\n if (maxDelta === 0) {\n // All points are identical, so just test the first point.\n squaredDistance = squaredDx(x, y, flatCoordinates[offset], flatCoordinates[offset + 1]);\n if (squaredDistance < minSquaredDistance) {\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n }\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n var index = offset + stride;\n while (index < end) {\n assignClosest(flatCoordinates, index - stride, index, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n index += stride;\n }\n else {\n // Skip ahead multiple points, because we know that all the skipped\n // points cannot be any closer than the closest point we have found so\n // far. We know this because we know how close the current point is, how\n // close the closest point we have found so far is, and the maximum\n // distance between consecutive points. For example, if we're currently\n // at distance 10, the best we've found so far is 3, and that the maximum\n // distance between consecutive points is 2, then we'll need to skip at\n // least (10 - 3) / 2 == 3 (rounded down) points to have any chance of\n // finding a closer point. We use Math.max(..., 1) to ensure that we\n // always advance at least one point, to avoid an infinite loop.\n index += stride * Math.max(((Math.sqrt(squaredDistance) -\n Math.sqrt(minSquaredDistance)) / maxDelta) | 0, 1);\n }\n }\n if (isRing) {\n // Check the closing segment.\n assignClosest(flatCoordinates, end - stride, offset, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n minSquaredDistance = assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = end;\n }\n return minSquaredDistance;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(flatCoordinates, offset, endss, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n minSquaredDistance = assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = ends[ends.length - 1];\n }\n return minSquaredDistance;\n}\n//# sourceMappingURL=closest.js.map","/**\n * @module ol/geom/flat/deflate\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {\n for (var i = 0, ii = coordinate.length; i < ii; ++i) {\n flatCoordinates[offset++] = coordinate[i];\n }\n return offset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(flatCoordinates, offset, coordinates, stride) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n var coordinate = coordinates[i];\n for (var j = 0; j < stride; ++j) {\n flatCoordinates[offset++] = coordinate[j];\n }\n }\n return offset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array=} opt_ends Ends.\n * @return {Array} Ends.\n */\nexport function deflateCoordinatesArray(flatCoordinates, offset, coordinatess, stride, opt_ends) {\n var ends = opt_ends ? opt_ends : [];\n var i = 0;\n for (var j = 0, jj = coordinatess.length; j < jj; ++j) {\n var end = deflateCoordinates(flatCoordinates, offset, coordinatess[j], stride);\n ends[i++] = end;\n offset = end;\n }\n ends.length = i;\n return ends;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array>=} opt_endss Endss.\n * @return {Array>} Endss.\n */\nexport function deflateMultiCoordinatesArray(flatCoordinates, offset, coordinatesss, stride, opt_endss) {\n var endss = opt_endss ? opt_endss : [];\n var i = 0;\n for (var j = 0, jj = coordinatesss.length; j < jj; ++j) {\n var ends = deflateCoordinatesArray(flatCoordinates, offset, coordinatesss[j], stride, endss[i]);\n endss[i++] = ends;\n offset = ends[ends.length - 1];\n }\n endss.length = i;\n return endss;\n}\n//# sourceMappingURL=deflate.js.map","/**\n * @module ol/geom/flat/inflate\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array=} opt_coordinates Coordinates.\n * @return {Array} Coordinates.\n */\nexport function inflateCoordinates(flatCoordinates, offset, end, stride, opt_coordinates) {\n var coordinates = opt_coordinates !== undefined ? opt_coordinates : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n coordinates[i++] = flatCoordinates.slice(j, j + stride);\n }\n coordinates.length = i;\n return coordinates;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array>=} opt_coordinatess Coordinatess.\n * @return {Array>} Coordinatess.\n */\nexport function inflateCoordinatesArray(flatCoordinates, offset, ends, stride, opt_coordinatess) {\n var coordinatess = opt_coordinatess !== undefined ? opt_coordinatess : [];\n var i = 0;\n for (var j = 0, jj = ends.length; j < jj; ++j) {\n var end = ends[j];\n coordinatess[i++] = inflateCoordinates(flatCoordinates, offset, end, stride, coordinatess[i]);\n offset = end;\n }\n coordinatess.length = i;\n return coordinatess;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array>>=} opt_coordinatesss\n * Coordinatesss.\n * @return {Array>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(flatCoordinates, offset, endss, stride, opt_coordinatesss) {\n var coordinatesss = opt_coordinatesss !== undefined ? opt_coordinatesss : [];\n var i = 0;\n for (var j = 0, jj = endss.length; j < jj; ++j) {\n var ends = endss[j];\n coordinatesss[i++] = inflateCoordinatesArray(flatCoordinates, offset, ends, stride, coordinatesss[i]);\n offset = ends[ends.length - 1];\n }\n coordinatesss.length = i;\n return coordinatesss;\n}\n//# sourceMappingURL=inflate.js.map","/**\n * @module ol/geom/flat/simplify\n */\n// Based on simplify-js https://github.com/mourner/simplify-js\n// Copyright (c) 2012, Vladimir Agafonkin\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice,\n// this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n// POSSIBILITY OF SUCH DAMAGE.\nimport { squaredSegmentDistance, squaredDistance } from '../../math.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {boolean} highQuality Highest quality.\n * @param {Array=} opt_simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @return {Array} Simplified line string.\n */\nexport function simplifyLineString(flatCoordinates, offset, end, stride, squaredTolerance, highQuality, opt_simplifiedFlatCoordinates) {\n var simplifiedFlatCoordinates = opt_simplifiedFlatCoordinates !== undefined ?\n opt_simplifiedFlatCoordinates : [];\n if (!highQuality) {\n end = radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n flatCoordinates = simplifiedFlatCoordinates;\n offset = 0;\n stride = 2;\n }\n simplifiedFlatCoordinates.length = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return simplifiedFlatCoordinates;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n var n = (end - offset) / stride;\n if (n < 3) {\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n /** @type {Array} */\n var markers = new Array(n);\n markers[0] = 1;\n markers[n - 1] = 1;\n /** @type {Array} */\n var stack = [offset, end - stride];\n var index = 0;\n while (stack.length > 0) {\n var last = stack.pop();\n var first = stack.pop();\n var maxSquaredDistance = 0;\n var x1 = flatCoordinates[first];\n var y1 = flatCoordinates[first + 1];\n var x2 = flatCoordinates[last];\n var y2 = flatCoordinates[last + 1];\n for (var i = first + stride; i < last; i += stride) {\n var x = flatCoordinates[i];\n var y = flatCoordinates[i + 1];\n var squaredDistance_1 = squaredSegmentDistance(x, y, x1, y1, x2, y2);\n if (squaredDistance_1 > maxSquaredDistance) {\n index = i;\n maxSquaredDistance = squaredDistance_1;\n }\n }\n if (maxSquaredDistance > squaredTolerance) {\n markers[(index - offset) / stride] = 1;\n if (first + stride < index) {\n stack.push(first, index);\n }\n if (index + stride < last) {\n stack.push(index, last);\n }\n }\n }\n for (var i = 0; i < n; ++i) {\n if (markers[i]) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride + 1];\n }\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(flatCoordinates, offset, endss, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n if (end <= offset + stride) {\n // zero or one point, no simplification possible, so copy and return\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n // copy first point\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n var x2 = x1;\n var y2 = y1;\n for (offset += stride; offset < end; offset += stride) {\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {\n // copy point at offset\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n }\n }\n if (x2 != x1 || y2 != y1) {\n // copy last point\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n }\n return simplifiedOffset;\n}\n/**\n * @param {number} value Value.\n * @param {number} tolerance Tolerance.\n * @return {number} Rounded value.\n */\nexport function snap(value, tolerance) {\n return tolerance * Math.round(value / tolerance);\n}\n/**\n * Simplifies a line string using an algorithm designed by Tim Schaub.\n * Coordinates are snapped to the nearest value in a virtual grid and\n * consecutive duplicate coordinates are discarded. This effectively preserves\n * topology as the simplification of any subsection of a line string is\n * independent of the rest of the line string. This means that, for examples,\n * the common edge between two polygons will be simplified to the same line\n * string independently in both polygons. This implementation uses a single\n * pass over the coordinates and eliminates intermediate collinear points.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n // do nothing if the line is empty\n if (offset == end) {\n return simplifiedOffset;\n }\n // snap the first coordinate (P1)\n var x1 = snap(flatCoordinates[offset], tolerance);\n var y1 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // add the first coordinate to the output\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n // find the next coordinate that does not snap to the same value as the first\n // coordinate (P2)\n var x2, y2;\n do {\n x2 = snap(flatCoordinates[offset], tolerance);\n y2 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n if (offset == end) {\n // all coordinates snap to the same value, the line collapses to a point\n // push the last snapped value anyway to ensure that the output contains\n // at least two points\n // FIXME should we really return at least two points anyway?\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n }\n } while (x2 == x1 && y2 == y1);\n while (offset < end) {\n // snap the next coordinate (P3)\n var x3 = snap(flatCoordinates[offset], tolerance);\n var y3 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // skip P3 if it is equal to P2\n if (x3 == x2 && y3 == y2) {\n continue;\n }\n // calculate the delta between P1 and P2\n var dx1 = x2 - x1;\n var dy1 = y2 - y1;\n // calculate the delta between P3 and P1\n var dx2 = x3 - x1;\n var dy2 = y3 - y1;\n // if P1, P2, and P3 are colinear and P3 is further from P1 than P2 is from\n // P1 in the same direction then P2 is on the straight line between P1 and\n // P3\n if ((dx1 * dy2 == dy1 * dx2) &&\n ((dx1 < 0 && dx2 < dx1) || dx1 == dx2 || (dx1 > 0 && dx2 > dx1)) &&\n ((dy1 < 0 && dy2 < dy1) || dy1 == dy2 || (dy1 > 0 && dy2 > dy1))) {\n // discard P2 and set P2 = P3\n x2 = x3;\n y2 = y3;\n continue;\n }\n // either P1, P2, and P3 are not colinear, or they are colinear but P3 is\n // between P3 and P1 or on the opposite half of the line to P2. add P2,\n // and continue with P1 = P2 and P2 = P3\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n x2 = x3;\n y2 = y3;\n }\n // add the last point (P2)\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(flatCoordinates, offset, endss, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n//# sourceMappingURL=simplify.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LinearRing\n */\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { linearRing as linearRingArea } from './flat/area.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nvar LinearRing = /** @class */ (function (_super) {\n __extends(LinearRing, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {GeometryLayout=} opt_layout Layout.\n */\n function LinearRing(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(/** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @override\n * @api\n */\n LinearRing.prototype.clone = function () {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n };\n /**\n * @inheritDoc\n */\n LinearRing.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Return the area of the linear ring on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n LinearRing.prototype.getArea = function () {\n return linearRingArea(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinates of the linear ring.\n * @return {Array} Coordinates.\n * @override\n * @api\n */\n LinearRing.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @inheritDoc\n */\n LinearRing.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LinearRing(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * @inheritDoc\n * @api\n */\n LinearRing.prototype.getType = function () {\n return GeometryType.LINEAR_RING;\n };\n /**\n * @inheritDoc\n */\n LinearRing.prototype.intersectsExtent = function (extent) {\n return false;\n };\n /**\n * Set the coordinates of the linear ring.\n * @param {!Array} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n * @override\n * @api\n */\n LinearRing.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LinearRing;\n}(SimpleGeometry));\nexport default LinearRing;\n//# sourceMappingURL=LinearRing.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Point\n */\nimport { createOrUpdateFromCoordinate, containsXY } from '../extent.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { deflateCoordinate } from './flat/deflate.js';\nimport { squaredDistance as squaredDx } from '../math.js';\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nvar Point = /** @class */ (function (_super) {\n __extends(Point, _super);\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function Point(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n _this.setCoordinates(coordinates, opt_layout);\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!Point} Clone.\n * @override\n * @api\n */\n Point.prototype.clone = function () {\n var point = new Point(this.flatCoordinates.slice(), this.layout);\n return point;\n };\n /**\n * @inheritDoc\n */\n Point.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n var flatCoordinates = this.flatCoordinates;\n var squaredDistance = squaredDx(x, y, flatCoordinates[0], flatCoordinates[1]);\n if (squaredDistance < minSquaredDistance) {\n var stride = this.stride;\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n };\n /**\n * Return the coordinate of the point.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n * @override\n * @api\n */\n Point.prototype.getCoordinates = function () {\n return !this.flatCoordinates ? [] : this.flatCoordinates.slice();\n };\n /**\n * @inheritDoc\n */\n Point.prototype.computeExtent = function (extent) {\n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n };\n /**\n * @inheritDoc\n * @api\n */\n Point.prototype.getType = function () {\n return GeometryType.POINT;\n };\n /**\n * @inheritDoc\n * @api\n */\n Point.prototype.intersectsExtent = function (extent) {\n return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n };\n /**\n * @inheritDoc\n * @api\n */\n Point.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinate(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return Point;\n}(SimpleGeometry));\nexport default Point;\n//# sourceMappingURL=Point.js.map","/**\n * @module ol/geom/flat/contains\n */\nimport { forEachCorner } from '../../extent.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} Contains extent.\n */\nexport function linearRingContainsExtent(flatCoordinates, offset, end, stride, extent) {\n var outside = forEachCorner(extent, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains (x, y).\n */\n function (coordinate) {\n return !linearRingContainsXY(flatCoordinates, offset, end, stride, coordinate[0], coordinate[1]);\n });\n return !outside;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingContainsXY(flatCoordinates, offset, end, stride, x, y) {\n // http://geomalgorithms.com/a03-_inclusion.html\n // Copyright 2000 softSurfer, 2012 Dan Sunday\n // This code may be freely used and modified for any purpose\n // providing that this copyright notice is included with it.\n // SoftSurfer makes no warranty for this code, and cannot be held\n // liable for any real or imagined damage resulting from its use.\n // Users of this code must verify correctness for their application.\n var wn = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n if (y1 <= y) {\n if (y2 > y && ((x2 - x1) * (y - y1)) - ((x - x1) * (y2 - y1)) > 0) {\n wn++;\n }\n }\n else if (y2 <= y && ((x2 - x1) * (y - y1)) - ((x - x1) * (y2 - y1)) < 0) {\n wn--;\n }\n x1 = x2;\n y1 = y2;\n }\n return wn !== 0;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y) {\n if (ends.length === 0) {\n return false;\n }\n if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {\n return false;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) {\n return false;\n }\n }\n return true;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingssContainsXY(flatCoordinates, offset, endss, stride, x, y) {\n if (endss.length === 0) {\n return false;\n }\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=contains.js.map","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport { numberSafeCompareFunction } from '../../array.js';\nimport { linearRingsContainsXY } from './contains.js';\n/**\n * Calculates a point that is likely to lie in the interior of the linear rings.\n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @param {number} flatCentersOffset Flat center offset.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Destination point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, flatCentersOffset, opt_dest) {\n var i, ii, x, x1, x2, y1, y2;\n var y = flatCenters[flatCentersOffset + 1];\n /** @type {Array} */\n var intersections = [];\n // Calculate intersections with the horizontal line\n for (var r = 0, rr = ends.length; r < rr; ++r) {\n var end = ends[r];\n x1 = flatCoordinates[end - stride];\n y1 = flatCoordinates[end - stride + 1];\n for (i = offset; i < end; i += stride) {\n x2 = flatCoordinates[i];\n y2 = flatCoordinates[i + 1];\n if ((y <= y1 && y2 <= y) || (y1 <= y && y <= y2)) {\n x = (y - y1) / (y2 - y1) * (x2 - x1) + x1;\n intersections.push(x);\n }\n x1 = x2;\n y1 = y2;\n }\n }\n // Find the longest segment of the horizontal line that has its center point\n // inside the linear ring.\n var pointX = NaN;\n var maxSegmentLength = -Infinity;\n intersections.sort(numberSafeCompareFunction);\n x1 = intersections[0];\n for (i = 1, ii = intersections.length; i < ii; ++i) {\n x2 = intersections[i];\n var segmentLength = Math.abs(x2 - x1);\n if (segmentLength > maxSegmentLength) {\n x = (x1 + x2) / 2;\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n pointX = x;\n maxSegmentLength = segmentLength;\n }\n }\n x1 = x2;\n }\n if (isNaN(pointX)) {\n // There is no horizontal line that has its center point inside the linear\n // ring. Use the center of the the linear ring's extent.\n pointX = flatCenters[flatCentersOffset];\n }\n if (opt_dest) {\n opt_dest.push(pointX, y, maxSegmentLength);\n return opt_dest;\n }\n else {\n return [pointX, y, maxSegmentLength];\n }\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @return {Array} Interior points as XYM coordinates, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointsOfMultiArray(flatCoordinates, offset, endss, stride, flatCenters) {\n var interiorPoints = [];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n interiorPoints = getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, 2 * i, interiorPoints);\n offset = ends[ends.length - 1];\n }\n return interiorPoints;\n}\n//# sourceMappingURL=interiorpoint.js.map","/**\n * @module ol/geom/flat/segments\n */\n/**\n * This function calls `callback` for each segment of the flat coordinates\n * array. If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {function(import(\"../../coordinate.js\").Coordinate, import(\"../../coordinate.js\").Coordinate): T} callback Function\n * called for each segment.\n * @return {T|boolean} Value.\n * @template T\n */\nexport function forEach(flatCoordinates, offset, end, stride, callback) {\n var point1 = [flatCoordinates[offset], flatCoordinates[offset + 1]];\n var point2 = [];\n var ret;\n for (; (offset + stride) < end; offset += stride) {\n point2[0] = flatCoordinates[offset + stride];\n point2[1] = flatCoordinates[offset + stride + 1];\n ret = callback(point1, point2);\n if (ret) {\n return ret;\n }\n point1[0] = point2[0];\n point1[1] = point2[1];\n }\n return false;\n}\n//# sourceMappingURL=segments.js.map","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport { containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment } from '../../extent.js';\nimport { linearRingContainsXY, linearRingContainsExtent } from './contains.js';\nimport { forEach as forEachSegment } from './segments.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineString(flatCoordinates, offset, end, stride, extent) {\n var coordinatesExtent = extendFlatCoordinates(createEmpty(), flatCoordinates, offset, end, stride);\n if (!intersects(extent, coordinatesExtent)) {\n return false;\n }\n if (containsExtent(extent, coordinatesExtent)) {\n return true;\n }\n if (coordinatesExtent[0] >= extent[0] &&\n coordinatesExtent[2] <= extent[2]) {\n return true;\n }\n if (coordinatesExtent[1] >= extent[1] &&\n coordinatesExtent[3] <= extent[3]) {\n return true;\n }\n return forEachSegment(flatCoordinates, offset, end, stride, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} point1 Start point.\n * @param {import(\"../../coordinate.js\").Coordinate} point2 End point.\n * @return {boolean} `true` if the segment and the extent intersect,\n * `false` otherwise.\n */\n function (point1, point2) {\n return intersectsSegment(extent, point1, point2);\n });\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineStringArray(flatCoordinates, offset, ends, stride, extent) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n if (intersectsLineString(flatCoordinates, offset, ends[i], stride, extent)) {\n return true;\n }\n offset = ends[i];\n }\n return false;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRing(flatCoordinates, offset, end, stride, extent) {\n if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[3])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[3])) {\n return true;\n }\n return false;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent) {\n if (!intersectsLinearRing(flatCoordinates, offset, ends[0], stride, extent)) {\n return false;\n }\n if (ends.length === 1) {\n return true;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsExtent(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n if (!intersectsLineString(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n return false;\n }\n }\n }\n return true;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingMultiArray(flatCoordinates, offset, endss, stride, extent) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=intersectsextent.js.map","/**\n * @module ol/geom/flat/reverse\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n */\nexport function coordinates(flatCoordinates, offset, end, stride) {\n while (offset < end - stride) {\n for (var i = 0; i < stride; ++i) {\n var tmp = flatCoordinates[offset + i];\n flatCoordinates[offset + i] = flatCoordinates[end - stride + i];\n flatCoordinates[end - stride + i] = tmp;\n }\n offset += stride;\n end -= stride;\n }\n}\n//# sourceMappingURL=reverse.js.map","/**\n * @module ol/geom/flat/orient\n */\nimport { coordinates as reverseCoordinates } from './reverse.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {boolean} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n // http://tinyurl.com/clockwise-method\n // https://github.com/OSGeo/gdal/blob/trunk/gdal/ogr/ogrlinearring.cpp\n var edge = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n edge += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n return edge > 0;\n}\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n if (i === 0) {\n if ((right && isClockwise) || (!right && !isClockwise)) {\n return false;\n }\n }\n else {\n if ((right && !isClockwise) || (!right && isClockwise)) {\n return false;\n }\n }\n offset = end;\n }\n return true;\n}\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingssAreOriented(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (!linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right)) {\n return false;\n }\n if (ends.length) {\n offset = ends[ends.length - 1];\n }\n }\n return true;\n}\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n var reverse = i === 0 ?\n (right && isClockwise) || (!right && !isClockwise) :\n (right && !isClockwise) || (!right && isClockwise);\n if (reverse) {\n reverseCoordinates(flatCoordinates, offset, end, stride);\n }\n offset = end;\n }\n return offset;\n}\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n offset = orientLinearRings(flatCoordinates, offset, endss[i], stride, opt_right);\n }\n return offset;\n}\n//# sourceMappingURL=orient.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Polygon\n */\nimport { extend } from '../array.js';\nimport { closestSquaredDistanceXY, getCenter } from '../extent.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { offset as sphereOffset } from '../sphere.js';\nimport { linearRings as linearRingsArea } from './flat/area.js';\nimport { assignClosestArrayPoint, arrayMaxSquaredDelta } from './flat/closest.js';\nimport { linearRingsContainsXY } from './flat/contains.js';\nimport { deflateCoordinatesArray } from './flat/deflate.js';\nimport { inflateCoordinatesArray } from './flat/inflate.js';\nimport { getInteriorPointOfArray } from './flat/interiorpoint.js';\nimport { intersectsLinearRingArray } from './flat/intersectsextent.js';\nimport { linearRingsAreOriented, orientLinearRings } from './flat/orient.js';\nimport { quantizeArray } from './flat/simplify.js';\nimport { modulo } from '../math.js';\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nvar Polygon = /** @class */ (function (_super) {\n __extends(Polygon, _super);\n /**\n * @param {!Array>|!Array} coordinates\n * Array of linear rings that define the polygon. The first linear ring of the\n * array defines the outer-boundary or surface of the polygon. Each subsequent\n * linear ring defines a hole in the surface of the polygon. A linear ring is\n * an array of vertices' coordinates where the first coordinate and the last are\n * equivalent. (For internal use, flat coordinates in combination with\n * `opt_layout` and `opt_ends` are also accepted.)\n * @param {GeometryLayout=} opt_layout Layout.\n * @param {Array=} opt_ends Ends (for internal use with flat coordinates).\n */\n function Polygon(coordinates, opt_layout, opt_ends) {\n var _this = _super.call(this) || this;\n /**\n * @type {Array}\n * @private\n */\n _this.ends_ = [];\n /**\n * @private\n * @type {number}\n */\n _this.flatInteriorPointRevision_ = -1;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatInteriorPoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.orientedRevision_ = -1;\n /**\n * @private\n * @type {Array}\n */\n _this.orientedFlatCoordinates_ = null;\n if (opt_layout !== undefined && opt_ends) {\n _this.setFlatCoordinates(opt_layout, /** @type {Array} */ (coordinates));\n _this.ends_ = opt_ends;\n }\n else {\n _this.setCoordinates(/** @type {Array>} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed linear ring to this polygon.\n * @param {LinearRing} linearRing Linear ring.\n * @api\n */\n Polygon.prototype.appendLinearRing = function (linearRing) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = linearRing.getFlatCoordinates().slice();\n }\n else {\n extend(this.flatCoordinates, linearRing.getFlatCoordinates());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!Polygon} Clone.\n * @override\n * @api\n */\n Polygon.prototype.clone = function () {\n return new Polygon(this.flatCoordinates.slice(), this.layout, this.ends_.slice());\n };\n /**\n * @inheritDoc\n */\n Polygon.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(arrayMaxSquaredDelta(this.flatCoordinates, 0, this.ends_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * @inheritDoc\n */\n Polygon.prototype.containsXY = function (x, y) {\n return linearRingsContainsXY(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y);\n };\n /**\n * Return the area of the polygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n Polygon.prototype.getArea = function () {\n return linearRingsArea(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride);\n };\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for polygons.\n *\n * @param {boolean=} opt_right Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>} Coordinates.\n * @override\n * @api\n */\n Polygon.prototype.getCoordinates = function (opt_right) {\n var flatCoordinates;\n if (opt_right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRings(flatCoordinates, 0, this.ends_, this.stride, opt_right);\n }\n else {\n flatCoordinates = this.flatCoordinates;\n }\n return inflateCoordinatesArray(flatCoordinates, 0, this.ends_, this.stride);\n };\n /**\n * @return {Array} Ends.\n */\n Polygon.prototype.getEnds = function () {\n return this.ends_;\n };\n /**\n * @return {Array} Interior point.\n */\n Polygon.prototype.getFlatInteriorPoint = function () {\n if (this.flatInteriorPointRevision_ != this.getRevision()) {\n var flatCenter = getCenter(this.getExtent());\n this.flatInteriorPoint_ = getInteriorPointOfArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, flatCenter, 0);\n this.flatInteriorPointRevision_ = this.getRevision();\n }\n return this.flatInteriorPoint_;\n };\n /**\n * Return an interior point of the polygon.\n * @return {Point} Interior point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n * @api\n */\n Polygon.prototype.getInteriorPoint = function () {\n return new Point(this.getFlatInteriorPoint(), GeometryLayout.XYM);\n };\n /**\n * Return the number of rings of the polygon, this includes the exterior\n * ring and any interior rings.\n *\n * @return {number} Number of rings.\n * @api\n */\n Polygon.prototype.getLinearRingCount = function () {\n return this.ends_.length;\n };\n /**\n * Return the Nth linear ring of the polygon geometry. Return `null` if the\n * given index is out of range.\n * The exterior linear ring is available at index `0` and the interior rings\n * at index `1` and beyond.\n *\n * @param {number} index Index.\n * @return {LinearRing} Linear ring.\n * @api\n */\n Polygon.prototype.getLinearRing = function (index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LinearRing(this.flatCoordinates.slice(index === 0 ? 0 : this.ends_[index - 1], this.ends_[index]), this.layout);\n };\n /**\n * Return the linear rings of the polygon.\n * @return {Array} Linear rings.\n * @api\n */\n Polygon.prototype.getLinearRings = function () {\n var layout = this.layout;\n var flatCoordinates = this.flatCoordinates;\n var ends = this.ends_;\n var linearRings = [];\n var offset = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var linearRing = new LinearRing(flatCoordinates.slice(offset, end), layout);\n linearRings.push(linearRing);\n offset = end;\n }\n return linearRings;\n };\n /**\n * @return {Array} Oriented flat coordinates.\n */\n Polygon.prototype.getOrientedFlatCoordinates = function () {\n if (this.orientedRevision_ != this.getRevision()) {\n var flatCoordinates = this.flatCoordinates;\n if (linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n }\n else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length =\n orientLinearRings(this.orientedFlatCoordinates_, 0, this.ends_, this.stride);\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n };\n /**\n * @inheritDoc\n */\n Polygon.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n var simplifiedEnds = [];\n simplifiedFlatCoordinates.length = quantizeArray(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(squaredTolerance), simplifiedFlatCoordinates, 0, simplifiedEnds);\n return new Polygon(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEnds);\n };\n /**\n * @inheritDoc\n * @api\n */\n Polygon.prototype.getType = function () {\n return GeometryType.POLYGON;\n };\n /**\n * @inheritDoc\n * @api\n */\n Polygon.prototype.intersectsExtent = function (extent) {\n return intersectsLinearRingArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, extent);\n };\n /**\n * Set the coordinates of the polygon.\n * @param {!Array>} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n * @override\n * @api\n */\n Polygon.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n var ends = deflateCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.ends_);\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n };\n return Polygon;\n}(SimpleGeometry));\nexport default Polygon;\n/**\n * Create an approximation of a circle on the surface of a sphere.\n * @param {import(\"../coordinate.js\").Coordinate} center Center (`[lon, lat]` in degrees).\n * @param {number} radius The great-circle distance from the center to\n * the polygon vertices.\n * @param {number=} opt_n Optional number of vertices for the resulting\n * polygon. Default is `32`.\n * @param {number=} opt_sphereRadius Optional radius for the sphere (defaults to\n * the Earth's mean radius using the WGS84 ellipsoid).\n * @return {Polygon} The \"circular\" polygon.\n * @api\n */\nexport function circular(center, radius, opt_n, opt_sphereRadius) {\n var n = opt_n ? opt_n : 32;\n /** @type {Array} */\n var flatCoordinates = [];\n for (var i = 0; i < n; ++i) {\n extend(flatCoordinates, sphereOffset(center, radius, 2 * Math.PI * i / n, opt_sphereRadius));\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n return new Polygon(flatCoordinates, GeometryLayout.XY, [flatCoordinates.length]);\n}\n/**\n * Create a polygon from an extent. The layout used is `XY`.\n * @param {import(\"../extent.js\").Extent} extent The extent.\n * @return {Polygon} The polygon.\n * @api\n */\nexport function fromExtent(extent) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var flatCoordinates = [minX, minY, minX, maxY, maxX, maxY, maxX, minY, minX, minY];\n return new Polygon(flatCoordinates, GeometryLayout.XY, [flatCoordinates.length]);\n}\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number=} opt_sides Number of sides of the polygon. Default is 32.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * radians. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, opt_sides, opt_angle) {\n var sides = opt_sides ? opt_sides : 32;\n var stride = circle.getStride();\n var layout = circle.getLayout();\n var center = circle.getCenter();\n var arrayLength = stride * (sides + 1);\n var flatCoordinates = new Array(arrayLength);\n for (var i = 0; i < arrayLength; i += stride) {\n flatCoordinates[i] = 0;\n flatCoordinates[i + 1] = 0;\n for (var j = 2; j < stride; j++) {\n flatCoordinates[i + j] = center[j];\n }\n }\n var ends = [flatCoordinates.length];\n var polygon = new Polygon(flatCoordinates, layout, ends);\n makeRegular(polygon, center, circle.getRadius(), opt_angle);\n return polygon;\n}\n/**\n * Modify the coordinates of a polygon to make it a regular polygon.\n * @param {Polygon} polygon Polygon geometry.\n * @param {import(\"../coordinate.js\").Coordinate} center Center of the regular polygon.\n * @param {number} radius Radius of the regular polygon.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * radians. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, opt_angle) {\n var flatCoordinates = polygon.getFlatCoordinates();\n var stride = polygon.getStride();\n var sides = flatCoordinates.length / stride - 1;\n var startAngle = opt_angle ? opt_angle : 0;\n for (var i = 0; i <= sides; ++i) {\n var offset = i * stride;\n var angle = startAngle + (modulo(i, sides) * 2 * Math.PI / sides);\n flatCoordinates[offset] = center[0] + (radius * Math.cos(angle));\n flatCoordinates[offset + 1] = center[1] + (radius * Math.sin(angle));\n }\n polygon.changed();\n}\n//# sourceMappingURL=Polygon.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/ZoomToExtent\n */\nimport EventType from '../events/EventType.js';\nimport { fromExtent as polygonFromExtent } from '../geom/Polygon.js';\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-zoom-extent'] Class name.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {string|HTMLElement} [label='E'] Text label to use for the button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Fit to extent'] Text label to use for the button tip.\n * @property {import(\"../extent.js\").Extent} [extent] The extent to zoom to. If undefined the validity\n * extent of the view projection is used.\n */\n/**\n * @classdesc\n * A button control which, when pressed, changes the map view to a specific\n * extent. To style this control use the css selector `.ol-zoom-extent`.\n *\n * @api\n */\nvar ZoomToExtent = /** @class */ (function (_super) {\n __extends(ZoomToExtent, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function ZoomToExtent(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target\n }) || this;\n /**\n * @type {?import(\"../extent.js\").Extent}\n * @protected\n */\n _this.extent = options.extent ? options.extent : null;\n var className = options.className !== undefined ? options.className : 'ol-zoom-extent';\n var label = options.label !== undefined ? options.label : 'E';\n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Fit to extent';\n var button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(typeof label === 'string' ? document.createTextNode(label) : label);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n ZoomToExtent.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleZoomToExtent();\n };\n /**\n * @protected\n */\n ZoomToExtent.prototype.handleZoomToExtent = function () {\n var map = this.getMap();\n var view = map.getView();\n var extent = !this.extent ? view.getProjection().getExtent() : this.extent;\n view.fitInternal(polygonFromExtent(extent));\n };\n return ZoomToExtent;\n}(Control));\nexport default ZoomToExtent;\n//# sourceMappingURL=ZoomToExtent.js.map","/**\n * @module ol/geom/flat/interpolate\n */\nimport { binarySearch } from '../../array.js';\nimport { lerp } from '../../math.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} fraction Fraction.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Destination.\n */\nexport function interpolatePoint(flatCoordinates, offset, end, stride, fraction, opt_dest) {\n var pointX = NaN;\n var pointY = NaN;\n var n = (end - offset) / stride;\n if (n === 1) {\n pointX = flatCoordinates[offset];\n pointY = flatCoordinates[offset + 1];\n }\n else if (n == 2) {\n pointX = (1 - fraction) * flatCoordinates[offset] +\n fraction * flatCoordinates[offset + stride];\n pointY = (1 - fraction) * flatCoordinates[offset + 1] +\n fraction * flatCoordinates[offset + stride + 1];\n }\n else if (n !== 0) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n var length_1 = 0;\n var cumulativeLengths = [0];\n for (var i = offset + stride; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n length_1 += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n cumulativeLengths.push(length_1);\n x1 = x2;\n y1 = y2;\n }\n var target = fraction * length_1;\n var index = binarySearch(cumulativeLengths, target);\n if (index < 0) {\n var t = (target - cumulativeLengths[-index - 2]) /\n (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]);\n var o = offset + (-index - 2) * stride;\n pointX = lerp(flatCoordinates[o], flatCoordinates[o + stride], t);\n pointY = lerp(flatCoordinates[o + 1], flatCoordinates[o + stride + 1], t);\n }\n else {\n pointX = flatCoordinates[offset + index * stride];\n pointY = flatCoordinates[offset + index * stride + 1];\n }\n }\n if (opt_dest) {\n opt_dest[0] = pointX;\n opt_dest[1] = pointY;\n return opt_dest;\n }\n else {\n return [pointX, pointY];\n }\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\nexport function lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, extrapolate) {\n if (end == offset) {\n return null;\n }\n var coordinate;\n if (m < flatCoordinates[offset + stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(offset, offset + stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n else if (flatCoordinates[end - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(end - stride, end);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n // FIXME use O(1) search\n if (m == flatCoordinates[offset + stride - 1]) {\n return flatCoordinates.slice(offset, offset + stride);\n }\n var lo = offset / stride;\n var hi = end / stride;\n while (lo < hi) {\n var mid = (lo + hi) >> 1;\n if (m < flatCoordinates[(mid + 1) * stride - 1]) {\n hi = mid;\n }\n else {\n lo = mid + 1;\n }\n }\n var m0 = flatCoordinates[lo * stride - 1];\n if (m == m0) {\n return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride);\n }\n var m1 = flatCoordinates[(lo + 1) * stride - 1];\n var t = (m - m0) / (m1 - m0);\n coordinate = [];\n for (var i = 0; i < stride - 1; ++i) {\n coordinate.push(lerp(flatCoordinates[(lo - 1) * stride + i], flatCoordinates[lo * stride + i], t));\n }\n coordinate.push(m);\n return coordinate;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @param {boolean} interpolate Interpolate.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\nexport function lineStringsCoordinateAtM(flatCoordinates, offset, ends, stride, m, extrapolate, interpolate) {\n if (interpolate) {\n return lineStringCoordinateAtM(flatCoordinates, offset, ends[ends.length - 1], stride, m, extrapolate);\n }\n var coordinate;\n if (m < flatCoordinates[stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(0, stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n if (flatCoordinates[flatCoordinates.length - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(flatCoordinates.length - stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n if (offset == end) {\n continue;\n }\n if (m < flatCoordinates[offset + stride - 1]) {\n return null;\n }\n else if (m <= flatCoordinates[end - 1]) {\n return lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, false);\n }\n offset = end;\n }\n return null;\n}\n//# sourceMappingURL=interpolate.js.map","/**\n * @module ol/geom/flat/length\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Length.\n */\nexport function lineStringLength(flatCoordinates, offset, end, stride) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n var length = 0;\n for (var i = offset + stride; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n x1 = x2;\n y1 = y2;\n }\n return length;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Perimeter.\n */\nexport function linearRingLength(flatCoordinates, offset, end, stride) {\n var perimeter = lineStringLength(flatCoordinates, offset, end, stride);\n var dx = flatCoordinates[end - stride] - flatCoordinates[offset];\n var dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];\n perimeter += Math.sqrt(dx * dx + dy * dy);\n return perimeter;\n}\n//# sourceMappingURL=length.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LineString\n */\nimport { extend } from '../array.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { interpolatePoint, lineStringCoordinateAtM } from './flat/interpolate.js';\nimport { intersectsLineString } from './flat/intersectsextent.js';\nimport { lineStringLength } from './flat/length.js';\nimport { forEach as forEachSegment } from './flat/segments.js';\nimport { douglasPeucker } from './flat/simplify.js';\n/**\n * @classdesc\n * Linestring geometry.\n *\n * @api\n */\nvar LineString = /** @class */ (function (_super) {\n __extends(LineString, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {GeometryLayout=} opt_layout Layout.\n */\n function LineString(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatMidpoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.flatMidpointRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(/** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed coordinate to the coordinates of the linestring.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @api\n */\n LineString.prototype.appendCoordinate = function (coordinate) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = coordinate.slice();\n }\n else {\n extend(this.flatCoordinates, coordinate);\n }\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!LineString} Clone.\n * @override\n * @api\n */\n LineString.prototype.clone = function () {\n return new LineString(this.flatCoordinates.slice(), this.layout);\n };\n /**\n * @inheritDoc\n */\n LineString.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, false, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Iterate over each segment, calling the provided callback.\n * If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n *\n * @param {function(this: S, import(\"../coordinate.js\").Coordinate, import(\"../coordinate.js\").Coordinate): T} callback Function\n * called for each segment. The function will receive two arguments, the start and end coordinates of the segment.\n * @return {T|boolean} Value.\n * @template T,S\n * @api\n */\n LineString.prototype.forEachSegment = function (callback) {\n return forEachSegment(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, callback);\n };\n /**\n * Returns the coordinate at `m` using linear interpolation, or `null` if no\n * such coordinate exists.\n *\n * `opt_extrapolate` controls extrapolation beyond the range of Ms in the\n * MultiLineString. If `opt_extrapolate` is `true` then Ms less than the first\n * M will return the first coordinate and Ms greater than the last M will\n * return the last coordinate.\n *\n * @param {number} m M.\n * @param {boolean=} opt_extrapolate Extrapolate. Default is `false`.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n LineString.prototype.getCoordinateAtM = function (m, opt_extrapolate) {\n if (this.layout != GeometryLayout.XYM &&\n this.layout != GeometryLayout.XYZM) {\n return null;\n }\n var extrapolate = opt_extrapolate !== undefined ? opt_extrapolate : false;\n return lineStringCoordinateAtM(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, m, extrapolate);\n };\n /**\n * Return the coordinates of the linestring.\n * @return {Array} Coordinates.\n * @override\n * @api\n */\n LineString.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinate at the provided fraction along the linestring.\n * The `fraction` is a number between 0 and 1, where 0 is the start of the\n * linestring and 1 is the end.\n * @param {number} fraction Fraction.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_dest Optional coordinate whose values will\n * be modified. If not provided, a new coordinate will be returned.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate of the interpolated point.\n * @api\n */\n LineString.prototype.getCoordinateAt = function (fraction, opt_dest) {\n return interpolatePoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, fraction, opt_dest);\n };\n /**\n * Return the length of the linestring on projected plane.\n * @return {number} Length (on projected plane).\n * @api\n */\n LineString.prototype.getLength = function () {\n return lineStringLength(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @return {Array} Flat midpoint.\n */\n LineString.prototype.getFlatMidpoint = function () {\n if (this.flatMidpointRevision_ != this.getRevision()) {\n this.flatMidpoint_ = this.getCoordinateAt(0.5, this.flatMidpoint_);\n this.flatMidpointRevision_ = this.getRevision();\n }\n return this.flatMidpoint_;\n };\n /**\n * @inheritDoc\n */\n LineString.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LineString(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * @inheritDoc\n * @api\n */\n LineString.prototype.getType = function () {\n return GeometryType.LINE_STRING;\n };\n /**\n * @inheritDoc\n * @api\n */\n LineString.prototype.intersectsExtent = function (extent) {\n return intersectsLineString(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * Set the coordinates of the linestring.\n * @param {!Array} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n * @override\n * @api\n */\n LineString.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LineString;\n}(SimpleGeometry));\nexport default LineString;\n//# sourceMappingURL=LineString.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Feature\n */\nimport { assert } from './asserts.js';\nimport { listen, unlistenByKey } from './events.js';\nimport EventType from './events/EventType.js';\nimport BaseObject, { getChangeEventType } from './Object.js';\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature';\n * import Polygon from 'ol/geom/Polygon';\n * import Point from 'ol/geom/Point';\n *\n * var feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon'\n * });\n *\n * // get the polygon geometry\n * var poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * var point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} Geometry\n */\nvar Feature = /** @class */ (function (_super) {\n __extends(Feature, _super);\n /**\n * @param {Geometry|Object=} opt_geometryOrProperties\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n function Feature(opt_geometryOrProperties) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number|string|undefined}\n */\n _this.id_ = undefined;\n /**\n * @type {string}\n * @private\n */\n _this.geometryName_ = 'geometry';\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n _this.style_ = null;\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n _this.styleFunction_ = undefined;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.geometryChangeKey_ = null;\n _this.addEventListener(getChangeEventType(_this.geometryName_), _this.handleGeometryChanged_);\n if (opt_geometryOrProperties) {\n if (typeof /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry === 'function') {\n var geometry = /** @type {Geometry} */ (opt_geometryOrProperties);\n _this.setGeometry(geometry);\n }\n else {\n /** @type {Object} */\n var properties = opt_geometryOrProperties;\n _this.setProperties(properties);\n }\n }\n return _this;\n }\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n Feature.prototype.clone = function () {\n var clone = new Feature(this.getProperties());\n clone.setGeometryName(this.getGeometryName());\n var geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(geometry.clone());\n }\n var style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n };\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n Feature.prototype.getGeometry = function () {\n return (\n /** @type {Geometry|undefined} */ (this.get(this.geometryName_)));\n };\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n Feature.prototype.getId = function () {\n return this.id_;\n };\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n Feature.prototype.getGeometryName = function () {\n return this.geometryName_;\n };\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike} The feature style.\n * @api\n */\n Feature.prototype.getStyle = function () {\n return this.style_;\n };\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n Feature.prototype.getStyleFunction = function () {\n return this.styleFunction_;\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChanged_ = function () {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n var geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(geometry, EventType.CHANGE, this.handleGeometryChange_, this);\n }\n this.changed();\n };\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n Feature.prototype.setGeometry = function (geometry) {\n this.set(this.geometryName_, geometry);\n };\n /**\n * Set the style for the feature. This can be a single style object, an array\n * of styles, or a function that takes a resolution and returns an array of\n * styles. If it is `null` the feature has no style (a `null` style).\n * @param {import(\"./style/Style.js\").StyleLike} style Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setStyle = function (style) {\n this.style_ = style;\n this.styleFunction_ = !style ? undefined : createStyleFunction(style);\n this.changed();\n };\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setId = function (id) {\n this.id_ = id;\n this.changed();\n };\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n Feature.prototype.setGeometryName = function (name) {\n this.removeEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n };\n return Feature;\n}(BaseObject));\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n else {\n /**\n * @type {Array}\n */\n var styles_1;\n if (Array.isArray(obj)) {\n styles_1 = obj;\n }\n else {\n assert(typeof /** @type {?} */ (obj).getZIndex === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n var style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles_1 = [style];\n }\n return function () {\n return styles_1;\n };\n }\n}\nexport default Feature;\n//# sourceMappingURL=Feature.js.map","/**\n * @module ol/ImageState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n ERROR: 3,\n EMPTY: 4\n};\n//# sourceMappingURL=ImageState.js.map","/**\n * @module ol/color\n */\nimport { assert } from './asserts.js';\nimport { clamp } from './math.js';\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n/**\n * This RegExp matches # followed by 3, 4, 6, or 8 hex digits.\n * @const\n * @type {RegExp}\n * @private\n */\nvar HEX_COLOR_RE_ = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i;\n/**\n * Regular expression for matching potential named color style strings.\n * @const\n * @type {RegExp}\n * @private\n */\nvar NAMED_COLOR_RE_ = /^([a-z]*)$|^hsla?\\(.*\\)$/i;\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n }\n else {\n return toString(color);\n }\n}\n/**\n * Return named color as an rgba string.\n * @param {string} color Named color.\n * @return {string} Rgb string.\n */\nfunction fromNamed(color) {\n var el = document.createElement('div');\n el.style.color = color;\n if (el.style.color !== '') {\n document.body.appendChild(el);\n var rgb = getComputedStyle(el).color;\n document.body.removeChild(el);\n return rgb;\n }\n else {\n return '';\n }\n}\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport var fromString = (function () {\n // We maintain a small cache of parsed strings. To provide cheap LRU-like\n // semantics, whenever the cache grows too large we simply delete an\n // arbitrary 25% of the entries.\n /**\n * @const\n * @type {number}\n */\n var MAX_CACHE_SIZE = 1024;\n /**\n * @type {Object}\n */\n var cache = {};\n /**\n * @type {number}\n */\n var cacheSize = 0;\n return (\n /**\n * @param {string} s String.\n * @return {Color} Color.\n */\n function (s) {\n var color;\n if (cache.hasOwnProperty(s)) {\n color = cache[s];\n }\n else {\n if (cacheSize >= MAX_CACHE_SIZE) {\n var i = 0;\n for (var key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n color = fromStringInternal_(s);\n cache[s] = color;\n ++cacheSize;\n }\n return color;\n });\n})();\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n }\n else {\n return fromString(color);\n }\n}\n/**\n * @param {string} s String.\n * @private\n * @return {Color} Color.\n */\nfunction fromStringInternal_(s) {\n var r, g, b, a, color;\n if (NAMED_COLOR_RE_.exec(s)) {\n s = fromNamed(s);\n }\n if (HEX_COLOR_RE_.exec(s)) { // hex\n var n = s.length - 1; // number of hex digits\n var d = // number of digits per channel\n void 0; // number of digits per channel\n if (n <= 4) {\n d = 1;\n }\n else {\n d = 2;\n }\n var hasAlpha = n === 4 || n === 8;\n r = parseInt(s.substr(1 + 0 * d, d), 16);\n g = parseInt(s.substr(1 + 1 * d, d), 16);\n b = parseInt(s.substr(1 + 2 * d, d), 16);\n if (hasAlpha) {\n a = parseInt(s.substr(1 + 3 * d, d), 16);\n }\n else {\n a = 255;\n }\n if (d == 1) {\n r = (r << 4) + r;\n g = (g << 4) + g;\n b = (b << 4) + b;\n if (hasAlpha) {\n a = (a << 4) + a;\n }\n }\n color = [r, g, b, a / 255];\n }\n else if (s.indexOf('rgba(') == 0) { // rgba()\n color = s.slice(5, -1).split(',').map(Number);\n normalize(color);\n }\n else if (s.indexOf('rgb(') == 0) { // rgb()\n color = s.slice(4, -1).split(',').map(Number);\n color.push(1);\n normalize(color);\n }\n else {\n assert(false, 14); // Invalid color\n }\n return color;\n}\n/**\n * TODO this function is only used in the test, we probably shouldn't export it\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n var r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n var g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n var b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n var a = color[3] === undefined ? 1 : color[3];\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n if (NAMED_COLOR_RE_.test(s)) {\n s = fromNamed(s);\n }\n return HEX_COLOR_RE_.test(s) || s.indexOf('rgba(') === 0 || s.indexOf('rgb(') === 0;\n}\n//# sourceMappingURL=color.js.map","/**\n * @module ol/style/IconAnchorUnits\n */\n/**\n * Icon anchor units. One of 'fraction', 'pixels'.\n * @enum {string}\n */\nexport default {\n /**\n * Anchor is a fraction\n * @api\n */\n FRACTION: 'fraction',\n /**\n * Anchor is in pixels\n * @api\n */\n PIXELS: 'pixels'\n};\n//# sourceMappingURL=IconAnchorUnits.js.map","/**\n * @module ol/style/IconImageCache\n */\nimport { asString } from '../color.js';\n/**\n * @classdesc\n * Singleton class. Available through {@link module:ol/style/IconImageCache~shared}.\n */\nvar IconImageCache = /** @class */ (function () {\n function IconImageCache() {\n /**\n * @type {!Object}\n * @private\n */\n this.cache_ = {};\n /**\n * @type {number}\n * @private\n */\n this.cacheSize_ = 0;\n /**\n * @type {number}\n * @private\n */\n this.maxCacheSize_ = 32;\n }\n /**\n * FIXME empty description for jsdoc\n */\n IconImageCache.prototype.clear = function () {\n this.cache_ = {};\n this.cacheSize_ = 0;\n };\n /**\n * @return {boolean} Can expire cache.\n */\n IconImageCache.prototype.canExpireCache = function () {\n return this.cacheSize_ > this.maxCacheSize_;\n };\n /**\n * FIXME empty description for jsdoc\n */\n IconImageCache.prototype.expire = function () {\n if (this.canExpireCache()) {\n var i = 0;\n for (var key in this.cache_) {\n var iconImage = this.cache_[key];\n if ((i++ & 3) === 0 && !iconImage.hasListener()) {\n delete this.cache_[key];\n --this.cacheSize_;\n }\n }\n }\n };\n /**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {import(\"./IconImage.js\").default} Icon image.\n */\n IconImageCache.prototype.get = function (src, crossOrigin, color) {\n var key = getKey(src, crossOrigin, color);\n return key in this.cache_ ? this.cache_[key] : null;\n };\n /**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @param {import(\"./IconImage.js\").default} iconImage Icon image.\n */\n IconImageCache.prototype.set = function (src, crossOrigin, color, iconImage) {\n var key = getKey(src, crossOrigin, color);\n this.cache_[key] = iconImage;\n ++this.cacheSize_;\n };\n /**\n * Set the cache size of the icon cache. Default is `32`. Change this value when\n * your map uses more than 32 different icon images and you are not caching icon\n * styles on the application level.\n * @param {number} maxCacheSize Cache max size.\n * @api\n */\n IconImageCache.prototype.setSize = function (maxCacheSize) {\n this.maxCacheSize_ = maxCacheSize;\n this.expire();\n };\n return IconImageCache;\n}());\n/**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {string} Cache key.\n */\nfunction getKey(src, crossOrigin, color) {\n var colorString = color ? asString(color) : 'null';\n return crossOrigin + ':' + src + ':' + colorString;\n}\nexport default IconImageCache;\n/**\n * The {@link module:ol/style/IconImageCache~IconImageCache} for\n * {@link module:ol/style/Icon~Icon} images.\n * @api\n */\nexport var shared = new IconImageCache();\n//# sourceMappingURL=IconImageCache.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/ImageBase\n */\nimport { abstract } from './util.js';\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\n/**\n * @abstract\n */\nvar ImageBase = /** @class */ (function (_super) {\n __extends(ImageBase, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./ImageState.js\").default} state State.\n */\n function ImageBase(extent, resolution, pixelRatio, state) {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {import(\"./extent.js\").Extent}\n */\n _this.extent = extent;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = pixelRatio;\n /**\n * @protected\n * @type {number|undefined}\n */\n _this.resolution = resolution;\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n _this.state = state;\n return _this;\n }\n /**\n * @protected\n */\n ImageBase.prototype.changed = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n ImageBase.prototype.getExtent = function () {\n return this.extent;\n };\n /**\n * @abstract\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n */\n ImageBase.prototype.getImage = function () {\n return abstract();\n };\n /**\n * @return {number} PixelRatio.\n */\n ImageBase.prototype.getPixelRatio = function () {\n return this.pixelRatio_;\n };\n /**\n * @return {number} Resolution.\n */\n ImageBase.prototype.getResolution = function () {\n return /** @type {number} */ (this.resolution);\n };\n /**\n * @return {import(\"./ImageState.js\").default} State.\n */\n ImageBase.prototype.getState = function () {\n return this.state;\n };\n /**\n * Load not yet loaded URI.\n * @abstract\n */\n ImageBase.prototype.load = function () {\n abstract();\n };\n return ImageBase;\n}(EventTarget));\nexport default ImageBase;\n//# sourceMappingURL=ImageBase.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Image\n */\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\nimport { listenOnce, unlistenByKey } from './events.js';\nimport EventType from './events/EventType.js';\nimport { getHeight } from './extent.js';\nimport { IMAGE_DECODE } from './has.js';\n/**\n * A function that takes an {@link module:ol/Image~Image} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~Image#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n * function(image, src) {\n * image.getImage().src = src;\n * }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(ImageWrapper, string): void} LoadFunction\n * @api\n */\nvar ImageWrapper = /** @class */ (function (_super) {\n __extends(ImageWrapper, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {LoadFunction} imageLoadFunction Image load function.\n */\n function ImageWrapper(extent, resolution, pixelRatio, src, crossOrigin, imageLoadFunction) {\n var _this = _super.call(this, extent, resolution, pixelRatio, ImageState.IDLE) || this;\n /**\n * @private\n * @type {string}\n */\n _this.src_ = src;\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}\n */\n _this.image_ = new Image();\n if (crossOrigin !== null) {\n _this.image_.crossOrigin = crossOrigin;\n }\n /**\n * @private\n * @type {?function():void}\n */\n _this.unlisten_ = null;\n /**\n * @protected\n * @type {ImageState}\n */\n _this.state = ImageState.IDLE;\n /**\n * @private\n * @type {LoadFunction}\n */\n _this.imageLoadFunction_ = imageLoadFunction;\n return _this;\n }\n /**\n * @inheritDoc\n * @api\n */\n ImageWrapper.prototype.getImage = function () {\n return this.image_;\n };\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n ImageWrapper.prototype.handleImageError_ = function () {\n this.state = ImageState.ERROR;\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Tracks successful image load.\n *\n * @private\n */\n ImageWrapper.prototype.handleImageLoad_ = function () {\n if (this.resolution === undefined) {\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n this.state = ImageState.LOADED;\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @override\n * @api\n */\n ImageWrapper.prototype.load = function () {\n if (this.state == ImageState.IDLE || this.state == ImageState.ERROR) {\n this.state = ImageState.LOADING;\n this.changed();\n this.imageLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image.\n */\n ImageWrapper.prototype.setImage = function (image) {\n this.image_ = image;\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n ImageWrapper.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return ImageWrapper;\n}(ImageBase));\n/**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n var img = /** @type {HTMLImageElement} */ (image);\n if (img.src && IMAGE_DECODE) {\n var promise = img.decode();\n var listening_1 = true;\n var unlisten = function () {\n listening_1 = false;\n };\n promise.then(function () {\n if (listening_1) {\n loadHandler();\n }\n }).catch(function (error) {\n if (listening_1) {\n // FIXME: Unconditionally call errorHandler() when this bug is fixed upstream:\n // https://bugs.webkit.org/show_bug.cgi?id=198527\n if (error.name === 'EncodingError' && error.message === 'Invalid image type.') {\n loadHandler();\n }\n else {\n errorHandler();\n }\n }\n });\n return unlisten;\n }\n var listenerKeys = [\n listenOnce(img, EventType.LOAD, loadHandler),\n listenOnce(img, EventType.ERROR, errorHandler)\n ];\n return function unlisten() {\n listenerKeys.forEach(unlistenByKey);\n };\n}\nexport default ImageWrapper;\n//# sourceMappingURL=Image.js.map","/**\n * @module ol/style/IconImage\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createCanvasContext2D } from '../dom.js';\nimport EventTarget from '../events/Target.js';\nimport EventType from '../events/EventType.js';\nimport ImageState from '../ImageState.js';\nimport { shared as iconImageCache } from './IconImageCache.js';\nimport { listenImage } from '../Image.js';\nvar IconImage = /** @class */ (function (_super) {\n __extends(IconImage, _super);\n /**\n * @param {HTMLImageElement|HTMLCanvasElement} image Image.\n * @param {string|undefined} src Src.\n * @param {import(\"../size.js\").Size} size Size.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../ImageState.js\").default} imageState Image state.\n * @param {import(\"../color.js\").Color} color Color.\n */\n function IconImage(image, src, size, crossOrigin, imageState, color) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n _this.hitDetectionImage_ = null;\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n _this.image_ = !image ? new Image() : image;\n if (crossOrigin !== null) {\n /** @type {HTMLImageElement} */ (_this.image_).crossOrigin = crossOrigin;\n }\n /**\n * @private\n * @type {HTMLCanvasElement}\n */\n _this.canvas_ = color ? document.createElement('canvas') : null;\n /**\n * @private\n * @type {import(\"../color.js\").Color}\n */\n _this.color_ = color;\n /**\n * @private\n * @type {?function():void}\n */\n _this.unlisten_ = null;\n /**\n * @private\n * @type {import(\"../ImageState.js\").default}\n */\n _this.imageState_ = imageState;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n _this.size_ = size;\n /**\n * @private\n * @type {string|undefined}\n */\n _this.src_ = src;\n /**\n * @private\n * @type {boolean|undefined}\n */\n _this.tainted_;\n return _this;\n }\n /**\n * @private\n * @param {CanvasRenderingContext2D=} context A context with the image already drawn into.\n * @return {boolean} The image canvas is tainted.\n */\n IconImage.prototype.isTainted_ = function (context) {\n if (this.tainted_ === undefined && this.imageState_ === ImageState.LOADED) {\n if (!context) {\n context = createCanvasContext2D(1, 1);\n context.drawImage(this.image_, 0, 0);\n }\n try {\n context.getImageData(0, 0, 1, 1);\n this.tainted_ = false;\n }\n catch (e) {\n this.tainted_ = true;\n }\n }\n return this.tainted_ === true;\n };\n /**\n * @private\n */\n IconImage.prototype.dispatchChangeEvent_ = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * @private\n */\n IconImage.prototype.handleImageError_ = function () {\n this.imageState_ = ImageState.ERROR;\n this.unlistenImage_();\n this.dispatchChangeEvent_();\n };\n /**\n * @private\n */\n IconImage.prototype.handleImageLoad_ = function () {\n this.imageState_ = ImageState.LOADED;\n if (this.size_) {\n this.image_.width = this.size_[0];\n this.image_.height = this.size_[1];\n }\n this.size_ = [this.image_.width, this.image_.height];\n this.unlistenImage_();\n this.replaceColor_();\n this.dispatchChangeEvent_();\n };\n /**\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLImageElement|HTMLCanvasElement} Image or Canvas element.\n */\n IconImage.prototype.getImage = function (pixelRatio) {\n return this.canvas_ ? this.canvas_ : this.image_;\n };\n /**\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n IconImage.prototype.getImageState = function () {\n return this.imageState_;\n };\n /**\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLImageElement|HTMLCanvasElement} Image element.\n */\n IconImage.prototype.getHitDetectionImage = function (pixelRatio) {\n if (!this.hitDetectionImage_) {\n if (this.isTainted_()) {\n var width = this.size_[0];\n var height = this.size_[1];\n var context = createCanvasContext2D(width, height);\n context.fillRect(0, 0, width, height);\n this.hitDetectionImage_ = context.canvas;\n }\n else {\n this.hitDetectionImage_ = this.image_;\n }\n }\n return this.hitDetectionImage_;\n };\n /**\n * @return {import(\"../size.js\").Size} Image size.\n */\n IconImage.prototype.getSize = function () {\n return this.size_;\n };\n /**\n * @return {string|undefined} Image src.\n */\n IconImage.prototype.getSrc = function () {\n return this.src_;\n };\n /**\n * Load not yet loaded URI.\n */\n IconImage.prototype.load = function () {\n if (this.imageState_ == ImageState.IDLE) {\n this.imageState_ = ImageState.LOADING;\n try {\n /** @type {HTMLImageElement} */ (this.image_).src = this.src_;\n }\n catch (e) {\n this.handleImageError_();\n }\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * @private\n */\n IconImage.prototype.replaceColor_ = function () {\n if (!this.color_) {\n return;\n }\n this.canvas_.width = this.image_.width;\n this.canvas_.height = this.image_.height;\n var ctx = this.canvas_.getContext('2d');\n ctx.drawImage(this.image_, 0, 0);\n if (this.isTainted_(ctx)) {\n // If reading from the canvas throws a SecurityError the same effect can be\n // achieved with globalCompositeOperation.\n // This could be used as the default, but it is not fully supported by all\n // browsers. E. g. Internet Explorer 11 does not support the multiply\n // operation and the resulting image shape will be completelly filled with\n // the provided color.\n // So this is only used as a fallback. It is still better than having no icon\n // at all.\n var c = this.color_;\n ctx.globalCompositeOperation = 'multiply';\n ctx.fillStyle = 'rgb(' + c[0] + ',' + c[1] + ',' + c[2] + ')';\n ctx.fillRect(0, 0, this.image_.width, this.image_.height);\n ctx.globalCompositeOperation = 'destination-in';\n ctx.drawImage(this.image_, 0, 0);\n return;\n }\n var imgData = ctx.getImageData(0, 0, this.image_.width, this.image_.height);\n var data = imgData.data;\n var r = this.color_[0] / 255.0;\n var g = this.color_[1] / 255.0;\n var b = this.color_[2] / 255.0;\n for (var i = 0, ii = data.length; i < ii; i += 4) {\n data[i] *= r;\n data[i + 1] *= g;\n data[i + 2] *= b;\n }\n ctx.putImageData(imgData, 0, 0);\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n IconImage.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return IconImage;\n}(EventTarget));\n/**\n * @param {HTMLImageElement|HTMLCanvasElement} image Image.\n * @param {string} src Src.\n * @param {import(\"../size.js\").Size} size Size.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../ImageState.js\").default} imageState Image state.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {IconImage} Icon image.\n */\nexport function get(image, src, size, crossOrigin, imageState, color) {\n var iconImage = iconImageCache.get(src, crossOrigin, color);\n if (!iconImage) {\n iconImage = new IconImage(image, src, size, crossOrigin, imageState, color);\n iconImageCache.set(src, crossOrigin, color, iconImage);\n }\n return iconImage;\n}\nexport default IconImage;\n//# sourceMappingURL=IconImage.js.map","/**\n * @module ol/style/IconOrigin\n */\n/**\n * Icon origin. One of 'bottom-left', 'bottom-right', 'top-left', 'top-right'.\n * @enum {string}\n */\nexport default {\n /**\n * Origin is at bottom left\n * @api\n */\n BOTTOM_LEFT: 'bottom-left',\n /**\n * Origin is at bottom right\n * @api\n */\n BOTTOM_RIGHT: 'bottom-right',\n /**\n * Origin is at top left\n * @api\n */\n TOP_LEFT: 'top-left',\n /**\n * Origin is at top right\n * @api\n */\n TOP_RIGHT: 'top-right'\n};\n//# sourceMappingURL=IconOrigin.js.map","/**\n * @module ol/style/Image\n */\nimport { abstract } from '../util.js';\n/**\n * @typedef {Object} Options\n * @property {number} opacity\n * @property {boolean} rotateWithView\n * @property {number} rotation\n * @property {number} scale\n * @property {Array} displacement\n */\n/**\n * @classdesc\n * A base class used for creating subclasses and not instantiated in\n * apps. Base class for {@link module:ol/style/Icon~Icon}, {@link module:ol/style/Circle~CircleStyle} and\n * {@link module:ol/style/RegularShape~RegularShape}.\n * @abstract\n * @api\n */\nvar ImageStyle = /** @class */ (function () {\n /**\n * @param {Options} options Options.\n */\n function ImageStyle(options) {\n /**\n * @private\n * @type {number}\n */\n this.opacity_ = options.opacity;\n /**\n * @private\n * @type {boolean}\n */\n this.rotateWithView_ = options.rotateWithView;\n /**\n * @private\n * @type {number}\n */\n this.rotation_ = options.rotation;\n /**\n * @private\n * @type {number}\n */\n this.scale_ = options.scale;\n /**\n * @private\n * @type {Array}\n */\n this.displacement_ = options.displacement;\n }\n /**\n * Clones the style.\n * @return {ImageStyle} The cloned style.\n * @api\n */\n ImageStyle.prototype.clone = function () {\n return new ImageStyle({\n opacity: this.getOpacity(),\n scale: this.getScale(),\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView(),\n displacement: this.getDisplacement().slice()\n });\n };\n /**\n * Get the symbolizer opacity.\n * @return {number} Opacity.\n * @api\n */\n ImageStyle.prototype.getOpacity = function () {\n return this.opacity_;\n };\n /**\n * Determine whether the symbolizer rotates with the map.\n * @return {boolean} Rotate with map.\n * @api\n */\n ImageStyle.prototype.getRotateWithView = function () {\n return this.rotateWithView_;\n };\n /**\n * Get the symoblizer rotation.\n * @return {number} Rotation.\n * @api\n */\n ImageStyle.prototype.getRotation = function () {\n return this.rotation_;\n };\n /**\n * Get the symbolizer scale.\n * @return {number} Scale.\n * @api\n */\n ImageStyle.prototype.getScale = function () {\n return this.scale_;\n };\n /**\n * Get the displacement of the shape\n * @return {Array} Shape's center displacement\n * @api\n */\n ImageStyle.prototype.getDisplacement = function () {\n return this.displacement_;\n };\n /**\n * Get the anchor point in pixels. The anchor determines the center point for the\n * symbolizer.\n * @abstract\n * @return {Array} Anchor.\n */\n ImageStyle.prototype.getAnchor = function () {\n return abstract();\n };\n /**\n * Get the image element for the symbolizer.\n * @abstract\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} Image element.\n */\n ImageStyle.prototype.getImage = function (pixelRatio) {\n return abstract();\n };\n /**\n * @abstract\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} Image element.\n */\n ImageStyle.prototype.getHitDetectionImage = function (pixelRatio) {\n return abstract();\n };\n /**\n * @abstract\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n ImageStyle.prototype.getImageState = function () {\n return abstract();\n };\n /**\n * @abstract\n * @return {import(\"../size.js\").Size} Image size.\n */\n ImageStyle.prototype.getImageSize = function () {\n return abstract();\n };\n /**\n * @abstract\n * @return {import(\"../size.js\").Size} Size of the hit-detection image.\n */\n ImageStyle.prototype.getHitDetectionImageSize = function () {\n return abstract();\n };\n /**\n * Get the origin of the symbolizer.\n * @abstract\n * @return {Array} Origin.\n */\n ImageStyle.prototype.getOrigin = function () {\n return abstract();\n };\n /**\n * Get the size of the symbolizer (in pixels).\n * @abstract\n * @return {import(\"../size.js\").Size} Size.\n */\n ImageStyle.prototype.getSize = function () {\n return abstract();\n };\n /**\n * Set the opacity.\n *\n * @param {number} opacity Opacity.\n * @api\n */\n ImageStyle.prototype.setOpacity = function (opacity) {\n this.opacity_ = opacity;\n };\n /**\n * Set whether to rotate the style with the view.\n *\n * @param {boolean} rotateWithView Rotate with map.\n * @api\n */\n ImageStyle.prototype.setRotateWithView = function (rotateWithView) {\n this.rotateWithView_ = rotateWithView;\n };\n /**\n * Set the rotation.\n *\n * @param {number} rotation Rotation.\n * @api\n */\n ImageStyle.prototype.setRotation = function (rotation) {\n this.rotation_ = rotation;\n };\n /**\n * Set the scale.\n *\n * @param {number} scale Scale.\n * @api\n */\n ImageStyle.prototype.setScale = function (scale) {\n this.scale_ = scale;\n };\n /**\n * @abstract\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n * @template T\n */\n ImageStyle.prototype.listenImageChange = function (listener) {\n abstract();\n };\n /**\n * Load not yet loaded URI.\n * @abstract\n */\n ImageStyle.prototype.load = function () {\n abstract();\n };\n /**\n * @abstract\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n * @template T\n */\n ImageStyle.prototype.unlistenImageChange = function (listener) {\n abstract();\n };\n return ImageStyle;\n}());\nexport default ImageStyle;\n//# sourceMappingURL=Image.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/style/Icon\n */\nimport { getUid } from '../util.js';\nimport ImageState from '../ImageState.js';\nimport { assert } from '../asserts.js';\nimport { asArray } from '../color.js';\nimport EventType from '../events/EventType.js';\nimport IconAnchorUnits from './IconAnchorUnits.js';\nimport { get as getIconImage } from './IconImage.js';\nimport IconOrigin from './IconOrigin.js';\nimport ImageStyle from './Image.js';\n/**\n * @typedef {Object} Options\n * @property {Array} [anchor=[0.5, 0.5]] Anchor. Default value is the icon center.\n * @property {import(\"./IconOrigin.js\").default} [anchorOrigin='top-left'] Origin of the anchor: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {import(\"./IconAnchorUnits.js\").default} [anchorXUnits='fraction'] Units in which the anchor x value is\n * specified. A value of `'fraction'` indicates the x value is a fraction of the icon. A value of `'pixels'` indicates\n * the x value in pixels.\n * @property {import(\"./IconAnchorUnits.js\").default} [anchorYUnits='fraction'] Units in which the anchor y value is\n * specified. A value of `'fraction'` indicates the y value is a fraction of the icon. A value of `'pixels'` indicates\n * the y value in pixels.\n * @property {import(\"../color.js\").Color|string} [color] Color to tint the icon. If not specified,\n * the icon will be left as is.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that you must provide a\n * `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {HTMLImageElement|HTMLCanvasElement} [img] Image object for the icon. If the `src` option is not provided then the\n * provided image must already be loaded. And in that case, it is required\n * to provide the size of the image, with the `imgSize` option.\n * @property {Array} [offset=[0, 0]] Offset, which, together with the size and the offset origin, define the\n * sub-rectangle to use from the original icon image.\n * @property {Array} [displacement=[0,0]] Displacement the icon\n * @property {import(\"./IconOrigin.js\").default} [offsetOrigin='top-left'] Origin of the offset: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {number} [opacity=1] Opacity of the icon.\n * @property {number} [scale=1] Scale.\n * @property {boolean} [rotateWithView=false] Whether to rotate the icon with the view.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {import(\"../size.js\").Size} [size] Icon size in pixel. Can be used together with `offset` to define the\n * sub-rectangle to use from the origin (sprite) icon image.\n * @property {import(\"../size.js\").Size} [imgSize] Image size in pixels. Only required if `img` is set and `src` is not, and\n * for SVG images in Internet Explorer 11. The provided `imgSize` needs to match the actual size of the image.\n * @property {string} [src] Image source URI.\n */\n/**\n * @classdesc\n * Set icon style for vector features.\n * @api\n */\nvar Icon = /** @class */ (function (_super) {\n __extends(Icon, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function Icon(opt_options) {\n var _this = this;\n var options = opt_options || {};\n /**\n * @type {number}\n */\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n /**\n * @type {number}\n */\n var rotation = options.rotation !== undefined ? options.rotation : 0;\n /**\n * @type {number}\n */\n var scale = options.scale !== undefined ? options.scale : 1;\n /**\n * @type {boolean}\n */\n var rotateWithView = options.rotateWithView !== undefined ?\n options.rotateWithView : false;\n _this = _super.call(this, {\n opacity: opacity,\n rotation: rotation,\n scale: scale,\n displacement: options.displacement !== undefined ? options.displacement : [0, 0],\n rotateWithView: rotateWithView\n }) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.anchor_ = options.anchor !== undefined ? options.anchor : [0.5, 0.5];\n /**\n * @private\n * @type {Array}\n */\n _this.normalizedAnchor_ = null;\n /**\n * @private\n * @type {import(\"./IconOrigin.js\").default}\n */\n _this.anchorOrigin_ = options.anchorOrigin !== undefined ?\n options.anchorOrigin : IconOrigin.TOP_LEFT;\n /**\n * @private\n * @type {import(\"./IconAnchorUnits.js\").default}\n */\n _this.anchorXUnits_ = options.anchorXUnits !== undefined ?\n options.anchorXUnits : IconAnchorUnits.FRACTION;\n /**\n * @private\n * @type {import(\"./IconAnchorUnits.js\").default}\n */\n _this.anchorYUnits_ = options.anchorYUnits !== undefined ?\n options.anchorYUnits : IconAnchorUnits.FRACTION;\n /**\n * @private\n * @type {?string}\n */\n _this.crossOrigin_ =\n options.crossOrigin !== undefined ? options.crossOrigin : null;\n /**\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n var image = options.img !== undefined ? options.img : null;\n /**\n * @type {import(\"../size.js\").Size}\n */\n var imgSize = options.imgSize !== undefined ? options.imgSize : null;\n /**\n * @type {string|undefined}\n */\n var src = options.src;\n assert(!(src !== undefined && image), 4); // `image` and `src` cannot be provided at the same time\n assert(!image || (image && imgSize), 5); // `imgSize` must be set when `image` is provided\n if ((src === undefined || src.length === 0) && image) {\n src = /** @type {HTMLImageElement} */ (image).src || getUid(image);\n }\n assert(src !== undefined && src.length > 0, 6); // A defined and non-empty `src` or `image` must be provided\n /**\n * @type {import(\"../ImageState.js\").default}\n */\n var imageState = options.src !== undefined ?\n ImageState.IDLE : ImageState.LOADED;\n /**\n * @private\n * @type {import(\"../color.js\").Color}\n */\n _this.color_ = options.color !== undefined ? asArray(options.color) : null;\n /**\n * @private\n * @type {import(\"./IconImage.js\").default}\n */\n _this.iconImage_ = getIconImage(image, /** @type {string} */ (src), imgSize, _this.crossOrigin_, imageState, _this.color_);\n /**\n * @private\n * @type {Array}\n */\n _this.offset_ = options.offset !== undefined ? options.offset : [0, 0];\n /**\n * @private\n * @type {import(\"./IconOrigin.js\").default}\n */\n _this.offsetOrigin_ = options.offsetOrigin !== undefined ?\n options.offsetOrigin : IconOrigin.TOP_LEFT;\n /**\n * @private\n * @type {Array}\n */\n _this.origin_ = null;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n _this.size_ = options.size !== undefined ? options.size : null;\n return _this;\n }\n /**\n * Clones the style. The underlying Image/HTMLCanvasElement is not cloned.\n * @return {Icon} The cloned style.\n * @api\n */\n Icon.prototype.clone = function () {\n return new Icon({\n anchor: this.anchor_.slice(),\n anchorOrigin: this.anchorOrigin_,\n anchorXUnits: this.anchorXUnits_,\n anchorYUnits: this.anchorYUnits_,\n crossOrigin: this.crossOrigin_,\n color: (this.color_ && this.color_.slice) ? this.color_.slice() : this.color_ || undefined,\n src: this.getSrc(),\n offset: this.offset_.slice(),\n offsetOrigin: this.offsetOrigin_,\n size: this.size_ !== null ? this.size_.slice() : undefined,\n opacity: this.getOpacity(),\n scale: this.getScale(),\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView()\n });\n };\n /**\n * @inheritDoc\n * @api\n */\n Icon.prototype.getAnchor = function () {\n if (this.normalizedAnchor_) {\n return this.normalizedAnchor_;\n }\n var anchor = this.anchor_;\n var size = this.getSize();\n if (this.anchorXUnits_ == IconAnchorUnits.FRACTION ||\n this.anchorYUnits_ == IconAnchorUnits.FRACTION) {\n if (!size) {\n return null;\n }\n anchor = this.anchor_.slice();\n if (this.anchorXUnits_ == IconAnchorUnits.FRACTION) {\n anchor[0] *= size[0];\n }\n if (this.anchorYUnits_ == IconAnchorUnits.FRACTION) {\n anchor[1] *= size[1];\n }\n }\n if (this.anchorOrigin_ != IconOrigin.TOP_LEFT) {\n if (!size) {\n return null;\n }\n if (anchor === this.anchor_) {\n anchor = this.anchor_.slice();\n }\n if (this.anchorOrigin_ == IconOrigin.TOP_RIGHT ||\n this.anchorOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n anchor[0] = -anchor[0] + size[0];\n }\n if (this.anchorOrigin_ == IconOrigin.BOTTOM_LEFT ||\n this.anchorOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n anchor[1] = -anchor[1] + size[1];\n }\n }\n this.normalizedAnchor_ = anchor;\n return this.normalizedAnchor_;\n };\n /**\n * Set the anchor point. The anchor determines the center point for the\n * symbolizer.\n *\n * @param {Array} anchor Anchor.\n * @api\n */\n Icon.prototype.setAnchor = function (anchor) {\n this.anchor_ = anchor;\n this.normalizedAnchor_ = null;\n };\n /**\n * Get the icon color.\n * @return {import(\"../color.js\").Color} Color.\n * @api\n */\n Icon.prototype.getColor = function () {\n return this.color_;\n };\n /**\n * Get the image icon.\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLImageElement|HTMLCanvasElement} Image or Canvas element.\n * @override\n * @api\n */\n Icon.prototype.getImage = function (pixelRatio) {\n return this.iconImage_.getImage(pixelRatio);\n };\n /**\n * @override\n */\n Icon.prototype.getImageSize = function () {\n return this.iconImage_.getSize();\n };\n /**\n * @override\n */\n Icon.prototype.getHitDetectionImageSize = function () {\n return this.getImageSize();\n };\n /**\n * @override\n */\n Icon.prototype.getImageState = function () {\n return this.iconImage_.getImageState();\n };\n /**\n * @override\n */\n Icon.prototype.getHitDetectionImage = function (pixelRatio) {\n return this.iconImage_.getHitDetectionImage(pixelRatio);\n };\n /**\n * @inheritDoc\n * @api\n */\n Icon.prototype.getOrigin = function () {\n if (this.origin_) {\n return this.origin_;\n }\n var offset = this.offset_;\n var displacement = this.getDisplacement();\n if (this.offsetOrigin_ != IconOrigin.TOP_LEFT) {\n var size = this.getSize();\n var iconImageSize = this.iconImage_.getSize();\n if (!size || !iconImageSize) {\n return null;\n }\n offset = offset.slice();\n if (this.offsetOrigin_ == IconOrigin.TOP_RIGHT ||\n this.offsetOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n offset[0] = iconImageSize[0] - size[0] - offset[0];\n }\n if (this.offsetOrigin_ == IconOrigin.BOTTOM_LEFT ||\n this.offsetOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n offset[1] = iconImageSize[1] - size[1] - offset[1];\n }\n }\n offset[0] += displacement[0];\n offset[1] += displacement[1];\n this.origin_ = offset;\n return this.origin_;\n };\n /**\n * Get the image URL.\n * @return {string|undefined} Image src.\n * @api\n */\n Icon.prototype.getSrc = function () {\n return this.iconImage_.getSrc();\n };\n /**\n * @inheritDoc\n * @api\n */\n Icon.prototype.getSize = function () {\n return !this.size_ ? this.iconImage_.getSize() : this.size_;\n };\n /**\n * @override\n */\n Icon.prototype.listenImageChange = function (listener) {\n this.iconImage_.addEventListener(EventType.CHANGE, listener);\n };\n /**\n * Load not yet loaded URI.\n * When rendering a feature with an icon style, the vector renderer will\n * automatically call this method. However, you might want to call this\n * method yourself for preloading or other purposes.\n * @override\n * @api\n */\n Icon.prototype.load = function () {\n this.iconImage_.load();\n };\n /**\n * @override\n */\n Icon.prototype.unlistenImageChange = function (listener) {\n this.iconImage_.removeEventListener(EventType.CHANGE, listener);\n };\n return Icon;\n}(ImageStyle));\nexport default Icon;\n//# sourceMappingURL=Icon.js.map","/**\n * @module ol/CollectionEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove'\n};\n//# sourceMappingURL=CollectionEventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport BaseObject from './Object.js';\nimport Event from './events/Event.js';\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LENGTH: 'length'\n};\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n */\nvar CollectionEvent = /** @class */ (function (_super) {\n __extends(CollectionEvent, _super);\n /**\n * @param {CollectionEventType} type Type.\n * @param {*=} opt_element Element.\n * @param {number=} opt_index The index of the added or removed element.\n */\n function CollectionEvent(type, opt_element, opt_index) {\n var _this = _super.call(this, type) || this;\n /**\n * The element that is added to or removed from the collection.\n * @type {*}\n * @api\n */\n _this.element = opt_element;\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n _this.index = opt_index;\n return _this;\n }\n return CollectionEvent;\n}(Event));\nexport { CollectionEvent };\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nvar Collection = /** @class */ (function (_super) {\n __extends(Collection, _super);\n /**\n * @param {Array=} opt_array Array.\n * @param {Options=} opt_options Collection options.\n */\n function Collection(opt_array, opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options || {};\n /**\n * @private\n * @type {boolean}\n */\n _this.unique_ = !!options.unique;\n /**\n * @private\n * @type {!Array}\n */\n _this.array_ = opt_array ? opt_array : [];\n if (_this.unique_) {\n for (var i = 0, ii = _this.array_.length; i < ii; ++i) {\n _this.assertUnique_(_this.array_[i], i);\n }\n }\n _this.updateLength_();\n return _this;\n }\n /**\n * Remove all elements from the collection.\n * @api\n */\n Collection.prototype.clear = function () {\n while (this.getLength() > 0) {\n this.pop();\n }\n };\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n Collection.prototype.extend = function (arr) {\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n };\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n Collection.prototype.forEach = function (f) {\n var array = this.array_;\n for (var i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n };\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n Collection.prototype.getArray = function () {\n return this.array_;\n };\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n Collection.prototype.item = function (index) {\n return this.array_[index];\n };\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n Collection.prototype.getLength = function () {\n return this.get(Property.LENGTH);\n };\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.insertAt = function (index, elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n };\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n Collection.prototype.pop = function () {\n return this.removeAt(this.getLength() - 1);\n };\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n Collection.prototype.push = function (elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n var n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n };\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n Collection.prototype.remove = function (elem) {\n var arr = this.array_;\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n };\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n Collection.prototype.removeAt = function (index) {\n var prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n return prev;\n };\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.setAt = function (index, elem) {\n var n = this.getLength();\n if (index < n) {\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n var prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n }\n else {\n for (var j = n; j < index; ++j) {\n this.insertAt(j, undefined);\n }\n this.insertAt(index, elem);\n }\n };\n /**\n * @private\n */\n Collection.prototype.updateLength_ = function () {\n this.set(Property.LENGTH, this.array_.length);\n };\n /**\n * @private\n * @param {T} elem Element.\n * @param {number=} opt_except Optional index to ignore.\n */\n Collection.prototype.assertUnique_ = function (elem, opt_except) {\n for (var i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== opt_except) {\n throw new AssertionError(58);\n }\n }\n };\n return Collection;\n}(BaseObject));\nexport default Collection;\n//# sourceMappingURL=Collection.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map event.\n */\nvar MapEvent = /** @class */ (function (_super) {\n __extends(MapEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapEvent(type, map, opt_frameState) {\n var _this = _super.call(this, type) || this;\n /**\n * The map where the event occurred.\n * @type {import(\"./PluggableMap.js\").default}\n * @api\n */\n _this.map = map;\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./PluggableMap.js\").FrameState}\n * @api\n */\n _this.frameState = opt_frameState !== undefined ? opt_frameState : null;\n return _this;\n }\n return MapEvent;\n}(Event));\nexport default MapEvent;\n//# sourceMappingURL=MapEvent.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map browser event.\n */\nvar MapBrowserEvent = /** @class */ (function (_super) {\n __extends(MapBrowserEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {Event} browserEvent Browser event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapBrowserEvent(type, map, browserEvent, opt_dragging, opt_frameState) {\n var _this = _super.call(this, type, map, opt_frameState) || this;\n /**\n * The original browser event.\n * @const\n * @type {Event}\n * @api\n */\n _this.originalEvent = browserEvent;\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {?import(\"./pixel.js\").Pixel}\n */\n _this.pixel_ = null;\n /**\n * The coordinate in the user projection corresponding to the original browser event.\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n _this.coordinate_ = null;\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n _this.dragging = opt_dragging !== undefined ? opt_dragging : false;\n return _this;\n }\n Object.defineProperty(MapBrowserEvent.prototype, \"pixel\", {\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get: function () {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n },\n set: function (pixel) {\n this.pixel_ = pixel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MapBrowserEvent.prototype, \"coordinate\", {\n /**\n * The coordinate corresponding to the original browser event. This will be in the user\n * projection if one is set. Otherwise it will be in the view projection.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n get: function () {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n },\n set: function (coordinate) {\n this.coordinate_ = coordinate;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @override\n * @api\n */\n MapBrowserEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n this.originalEvent.preventDefault();\n };\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @override\n * @api\n */\n MapBrowserEvent.prototype.stopPropagation = function () {\n _super.prototype.stopPropagation.call(this);\n this.originalEvent.stopPropagation();\n };\n return MapBrowserEvent;\n}(MapEvent));\nexport default MapBrowserEvent;\n//# sourceMappingURL=MapBrowserEvent.js.map","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel'\n};\n//# sourceMappingURL=MapBrowserEventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapBrowserPointerEvent\n */\nimport MapBrowserEvent from './MapBrowserEvent.js';\nvar MapBrowserPointerEvent = /** @class */ (function (_super) {\n __extends(MapBrowserPointerEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {PointerEvent} pointerEvent Pointer event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapBrowserPointerEvent(type, map, pointerEvent, opt_dragging, opt_frameState) {\n var _this = _super.call(this, type, map, pointerEvent, opt_dragging, opt_frameState) || this;\n /**\n * @const\n * @type {PointerEvent}\n */\n _this.pointerEvent = pointerEvent;\n return _this;\n }\n return MapBrowserPointerEvent;\n}(MapBrowserEvent));\nexport default MapBrowserPointerEvent;\n//# sourceMappingURL=MapBrowserPointerEvent.js.map","/**\n * @module ol/pointer/EventType\n */\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel'\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/MapBrowserEventHandler\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport 'elm-pep';\nimport { DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS } from './has.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapBrowserPointerEvent from './MapBrowserPointerEvent.js';\nimport { listen, unlistenByKey } from './events.js';\nimport EventTarget from './events/Target.js';\nimport PointerEventType from './pointer/EventType.js';\nimport EventType from './events/EventType.js';\nvar MapBrowserEventHandler = /** @class */ (function (_super) {\n __extends(MapBrowserEventHandler, _super);\n /**\n * @param {import(\"./PluggableMap.js\").default} map The map with the viewport to listen to events on.\n * @param {number=} moveTolerance The minimal distance the pointer must travel to trigger a move.\n */\n function MapBrowserEventHandler(map, moveTolerance) {\n var _this = _super.call(this, map) || this;\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./PluggableMap.js\").default}\n * @private\n */\n _this.map_ = map;\n /**\n * @type {any}\n * @private\n */\n _this.clickTimeoutId_;\n /**\n * @type {boolean}\n * @private\n */\n _this.dragging_ = false;\n /**\n * @type {!Array}\n * @private\n */\n _this.dragListenerKeys_ = [];\n /**\n * @type {number}\n * @private\n */\n _this.moveTolerance_ = moveTolerance ?\n moveTolerance * DEVICE_PIXEL_RATIO : DEVICE_PIXEL_RATIO;\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent}\n * @private\n */\n _this.down_ = null;\n var element = _this.map_.getViewport();\n /**\n * @type {number}\n * @private\n */\n _this.activePointers_ = 0;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedTouches_ = {};\n _this.element_ = element;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.pointerdownListenerKey_ = listen(element, PointerEventType.POINTERDOWN, _this.handlePointerDown_, _this);\n /**\n * @type {PointerEvent}\n * @private\n */\n _this.originalPointerMoveEvent_;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.relayedListenerKey_ = listen(element, PointerEventType.POINTERMOVE, _this.relayEvent_, _this);\n /**\n * @private\n */\n _this.boundHandleTouchMove_ = _this.handleTouchMove_.bind(_this);\n _this.element_.addEventListener(EventType.TOUCHMOVE, _this.boundHandleTouchMove_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n return _this;\n }\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.emulateClick_ = function (pointerEvent) {\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.CLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserPointerEvent(MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }\n else {\n // click\n this.clickTimeoutId_ = setTimeout(function () {\n this.clickTimeoutId_ = undefined;\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.SINGLECLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }.bind(this), 250);\n }\n };\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.updateActivePointers_ = function (pointerEvent) {\n var event = pointerEvent;\n if (event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL) {\n delete this.trackedTouches_[event.pointerId];\n }\n else if (event.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedTouches_[event.pointerId] = true;\n }\n this.activePointers_ = Object.keys(this.trackedTouches_).length;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerUp_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERUP, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.stopPropagation() or event.preventDefault().\n if (!newEvent.propagationStopped && !this.dragging_ && this.isMouseActionButton_(pointerEvent)) {\n this.emulateClick_(this.down_);\n }\n if (this.activePointers_ === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n MapBrowserEventHandler.prototype.isMouseActionButton_ = function (pointerEvent) {\n return pointerEvent.button === 0;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerDown_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n this.down_ = pointerEvent;\n if (this.dragListenerKeys_.length === 0) {\n this.dragListenerKeys_.push(listen(document, MapBrowserEventType.POINTERMOVE, this.handlePointerMove_, this), listen(document, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this), \n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(this.element_, MapBrowserEventType.POINTERCANCEL, this.handlePointerUp_, this));\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerMove_ = function (pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.dragging_ = true;\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent, this.dragging_);\n this.dispatchEvent(newEvent);\n }\n };\n /**\n * Wrap and relay a pointer event. Note that this requires that the type\n * string for the MapBrowserPointerEvent matches the PointerEvent type.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.relayEvent_ = function (pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n var dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserPointerEvent(pointerEvent.type, this.map_, pointerEvent, dragging));\n };\n /**\n * Flexible handling of a `touch-action: none` css equivalent: because calling\n * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n * when an interaction (currently `DragPan` handles the event.\n * @param {TouchEvent} event Event.\n * @private\n */\n MapBrowserEventHandler.prototype.handleTouchMove_ = function (event) {\n // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n // may not be initialized yet when we get here on a platform without native pointer events.\n if (!this.originalPointerMoveEvent_ || this.originalPointerMoveEvent_.defaultPrevented) {\n event.preventDefault();\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n MapBrowserEventHandler.prototype.isMoving_ = function (pointerEvent) {\n return this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) > this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_;\n };\n /**\n * @inheritDoc\n */\n MapBrowserEventHandler.prototype.disposeInternal = function () {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(EventType.TOUCHMOVE, this.boundHandleTouchMove_);\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.element_ = null;\n _super.prototype.disposeInternal.call(this);\n };\n return MapBrowserEventHandler;\n}(EventTarget));\nexport default MapBrowserEventHandler;\n//# sourceMappingURL=MapBrowserEventHandler.js.map","/**\n * @module ol/MapProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view'\n};\n//# sourceMappingURL=MapProperty.js.map","/**\n * @module ol/render/EventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered before a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#prerender\n * @api\n */\n PRERENDER: 'prerender',\n /**\n * Triggered after a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered before layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#precompose\n * @api\n */\n PRECOMPOSE: 'precompose',\n /**\n * Triggered after all layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#postcompose\n * @api\n */\n POSTCOMPOSE: 'postcompose',\n /**\n * Triggered when rendering is complete, i.e. all sources and tiles have\n * finished loading for the current viewport, and all tiles are faded in.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#rendercomplete\n * @api\n */\n RENDERCOMPLETE: 'rendercomplete'\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/TileState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4\n};\n//# sourceMappingURL=TileState.js.map","/**\n * @module ol/structs/PriorityQueue\n */\nimport { assert } from '../asserts.js';\nimport { clear } from '../obj.js';\n/**\n * @type {number}\n */\nexport var DROP = Infinity;\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See http://closure-library.googlecode.com/svn/docs/closure_goog_structs_heap.js.source.html\n * and http://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nvar PriorityQueue = /** @class */ (function () {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n function PriorityQueue(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.clear = function () {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n };\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n PriorityQueue.prototype.dequeue = function () {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n }\n else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n var elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n };\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n PriorityQueue.prototype.enqueue = function (element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n var priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n };\n /**\n * @return {number} Count.\n */\n PriorityQueue.prototype.getCount = function () {\n return this.elements_.length;\n };\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n PriorityQueue.prototype.getLeftChildIndex_ = function (index) {\n return index * 2 + 1;\n };\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n PriorityQueue.prototype.getRightChildIndex_ = function (index) {\n return index * 2 + 2;\n };\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n PriorityQueue.prototype.getParentIndex_ = function (index) {\n return (index - 1) >> 1;\n };\n /**\n * Make this a heap. O(N).\n * @private\n */\n PriorityQueue.prototype.heapify_ = function () {\n var i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n };\n /**\n * @return {boolean} Is empty.\n */\n PriorityQueue.prototype.isEmpty = function () {\n return this.elements_.length === 0;\n };\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n PriorityQueue.prototype.isKeyQueued = function (key) {\n return key in this.queuedElements_;\n };\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n PriorityQueue.prototype.isQueued = function (element) {\n return this.isKeyQueued(this.keyFunction_(element));\n };\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n PriorityQueue.prototype.siftUp_ = function (index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var count = elements.length;\n var element = elements[index];\n var priority = priorities[index];\n var startIndex = index;\n while (index < (count >> 1)) {\n var lIndex = this.getLeftChildIndex_(index);\n var rIndex = this.getRightChildIndex_(index);\n var smallerChildIndex = rIndex < count &&\n priorities[rIndex] < priorities[lIndex] ?\n rIndex : lIndex;\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n };\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n PriorityQueue.prototype.siftDown_ = function (startIndex, index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[index];\n var priority = priorities[index];\n while (index > startIndex) {\n var parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n }\n else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n };\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.reprioritize = function () {\n var priorityFunction = this.priorityFunction_;\n var elements = this.elements_;\n var priorities = this.priorities_;\n var index = 0;\n var n = elements.length;\n var element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n }\n else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n };\n return PriorityQueue;\n}());\nexport default PriorityQueue;\n//# sourceMappingURL=PriorityQueue.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/TileQueue\n */\nimport TileState from './TileState.js';\nimport EventType from './events/EventType.js';\nimport PriorityQueue, { DROP } from './structs/PriorityQueue.js';\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\nvar TileQueue = /** @class */ (function (_super) {\n __extends(TileQueue, _super);\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n function TileQueue(tilePriorityFunction, tileChangeCallback) {\n var _this = _super.call(this, \n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function (element) {\n return tilePriorityFunction.apply(null, element);\n }, \n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function (element) {\n return ( /** @type {import(\"./Tile.js\").default} */(element[0]).getKey());\n }) || this;\n /** @private */\n _this.boundHandleTileChange_ = _this.handleTileChange.bind(_this);\n /**\n * @private\n * @type {function(): ?}\n */\n _this.tileChangeCallback_ = tileChangeCallback;\n /**\n * @private\n * @type {number}\n */\n _this.tilesLoading_ = 0;\n /**\n * @private\n * @type {!Object}\n */\n _this.tilesLoadingKeys_ = {};\n return _this;\n }\n /**\n * @inheritDoc\n */\n TileQueue.prototype.enqueue = function (element) {\n var added = _super.prototype.enqueue.call(this, element);\n if (added) {\n var tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n };\n /**\n * @return {number} Number of tiles loading.\n */\n TileQueue.prototype.getTilesLoading = function () {\n return this.tilesLoading_;\n };\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n TileQueue.prototype.handleTileChange = function (event) {\n var tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n var state = tile.getState();\n if (tile.hifi && state === TileState.LOADED || state === TileState.ERROR || state === TileState.EMPTY) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n var tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n };\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n TileQueue.prototype.loadMoreTiles = function (maxTotalLoading, maxNewLoads) {\n var newLoads = 0;\n var state, tile, tileKey;\n while (this.tilesLoading_ < maxTotalLoading && newLoads < maxNewLoads &&\n this.getCount() > 0) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n };\n return TileQueue;\n}(PriorityQueue));\nexport default TileQueue;\n/**\n * @param {import('./PluggableMap.js').FrameState} frameState Frame state.\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\nexport function getTilePriority(frameState, tile, tileSourceKey, tileCenter, tileResolution) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n var center = frameState.viewState.center;\n var deltaX = tileCenter[0] - center[0];\n var deltaY = tileCenter[1] - center[1];\n return 65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution;\n}\n//# sourceMappingURL=TileQueue.js.map","/**\n * @module ol/centerconstraint\n */\nimport { clamp } from './math.js';\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, opt_isMoving) {\n if (center) {\n var viewWidth = onlyCenter ? 0 : size[0] * resolution;\n var viewHeight = onlyCenter ? 0 : size[1] * resolution;\n var minX = extent[0] + viewWidth / 2;\n var maxX = extent[2] - viewWidth / 2;\n var minY = extent[1] + viewHeight / 2;\n var maxY = extent[3] - viewHeight / 2;\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n var x = clamp(center[0], minX, maxX);\n var y = clamp(center[1], minY, maxY);\n var ratio = 30 * resolution;\n // during an interaction, allow some overscroll\n if (opt_isMoving && smooth) {\n x += -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y += -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n return [x, y];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate=} center Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n//# sourceMappingURL=centerconstraint.js.map","/**\n * @module ol/resolutionconstraint\n */\nimport { linearFindNearest } from './array.js';\nimport { getHeight, getWidth } from './extent.js';\nimport { clamp } from './math.js';\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n/**\n * Returns a modified resolution taking into account the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent=} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(resolution, maxExtent, viewportSize, showFullExtent) {\n var xResolution = getWidth(maxExtent) / viewportSize[0];\n var yResolution = getHeight(maxExtent) / viewportSize[1];\n if (showFullExtent) {\n return Math.min(resolution, Math.max(xResolution, yResolution));\n }\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n var result = Math.min(resolution, maxResolution);\n var ratio = 50;\n result *= Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio + 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /= Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) / ratio + 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(resolutions, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var maxResolution = resolutions[0];\n var minResolution = resolutions[resolutions.length - 1];\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent) :\n maxResolution;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var capped = Math.min(cappedMaxRes, resolution);\n var z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number=} opt_minResolution Minimum resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(power, maxResolution, opt_minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent) :\n maxResolution;\n var minResolution = opt_minResolution !== undefined ? opt_minResolution : 0;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var tolerance = 1e-9;\n var minZoomLevel = Math.ceil(Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance);\n var offset = -direction * (0.5 - tolerance) + 0.5;\n var capped = Math.min(cappedMaxRes, resolution);\n var cappedZoomLevel = Math.floor(Math.log(maxResolution / capped) / Math.log(power) + offset);\n var zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n var newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(maxResolution, minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent) :\n maxResolution;\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth || !opt_isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=resolutionconstraint.js.map","/**\n * @module ol/rotationconstraint\n */\nimport { toRadians } from './math.js';\n/**\n * @typedef {function((number|undefined), boolean=): (number|undefined)} Type\n */\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function disable(rotation) {\n if (rotation !== undefined) {\n return 0;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function none(rotation) {\n if (rotation !== undefined) {\n return rotation;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number} n N.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToN(n) {\n var theta = 2 * Math.PI / n;\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n rotation = Math.floor(rotation / theta + 0.5) * theta;\n return rotation;\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number=} opt_tolerance Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(opt_tolerance) {\n var tolerance = opt_tolerance || toRadians(5);\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n if (Math.abs(rotation) <= tolerance) {\n return 0;\n }\n else {\n return rotation;\n }\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=rotationconstraint.js.map","/**\n * @module ol/ViewHint\n */\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1\n};\n//# sourceMappingURL=ViewHint.js.map","/**\n * @module ol/ViewProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation'\n};\n//# sourceMappingURL=ViewProperty.js.map","/**\n * @module ol/coordinate\n */\nimport { modulo } from './math.js';\nimport { padNumber } from './string.js';\nimport { getWidth } from './extent.js';\n/**\n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n var r = circle.getRadius();\n var center = circle.getCenter();\n var x0 = center[0];\n var y0 = center[1];\n var x1 = coordinate[0];\n var y1 = coordinate[1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n var d = Math.sqrt(dx * dx + dy * dy);\n var x = x0 + r * dx / d;\n var y = y0 + r * dy / d;\n return [x, y];\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n var x0 = coordinate[0];\n var y0 = coordinate[1];\n var start = segment[0];\n var end = segment[1];\n var x1 = start[0];\n var y1 = start[1];\n var x2 = end[0];\n var y2 = end[1];\n var dx = x2 - x1;\n var dy = y2 - y1;\n var along = (dx === 0 && dy === 0) ? 0 :\n ((dx * (x0 - x1)) + (dy * (y0 - y1))) / ((dx * dx + dy * dy) || 0);\n var x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n }\n else if (along >= 1) {\n x = x2;\n y = y2;\n }\n else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY();\n * var out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY(2);\n * var out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(opt_fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, opt_fractionDigits);\n });\n}\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, opt_fractionDigits) {\n var normalizedDegrees = modulo(degrees + 180, 360) - 180;\n var x = Math.abs(3600 * normalizedDegrees);\n var dflPrecision = opt_fractionDigits || 0;\n var precision = Math.pow(10, dflPrecision);\n var deg = Math.floor(x / 3600);\n var min = Math.floor((x - deg * 3600) / 60);\n var sec = x - (deg * 3600) - (min * 60);\n sec = Math.ceil(sec * precision) / precision;\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n return deg + '\\u00b0 ' + padNumber(min, 2) + '\\u2032 ' +\n padNumber(sec, 2, dflPrecision) + '\\u2033' +\n (normalizedDegrees == 0 ? '' : ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0));\n}\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, opt_fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(opt_fractionDigits))\n .replace('{y}', coordinate[1].toFixed(opt_fractionDigits));\n }\n else {\n return '';\n }\n}\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n var equals = true;\n for (var i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n var cosAngle = Math.cos(angle);\n var sinAngle = Math.sin(angle);\n var x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n var dx = coord1[0] - coord2[0];\n var dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, opt_fractionDigits) {\n if (coordinate) {\n return degreesToStringHDMS('NS', coordinate[1], opt_fractionDigits) + ' ' +\n degreesToStringHDMS('EW', coordinate[0], opt_fractionDigits);\n }\n else {\n return '';\n }\n}\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, opt_fractionDigits) {\n return format(coordinate, '{x}, {y}', opt_fractionDigits);\n}\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n var projectionExtent = projection.getExtent();\n if (projection.canWrapX() && (coordinate[0] < projectionExtent[0] || coordinate[0] >= projectionExtent[2])) {\n var worldWidth = getWidth(projectionExtent);\n var worldsAway = Math.floor((coordinate[0] - projectionExtent[0]) / worldWidth);\n coordinate[0] -= (worldsAway * worldWidth);\n }\n return coordinate;\n}\n//# sourceMappingURL=coordinate.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/View\n */\nimport { DEFAULT_TILE_SIZE } from './tilegrid/common.js';\nimport { VOID } from './functions.js';\nimport { createExtent, none as centerNone } from './centerconstraint.js';\nimport BaseObject from './Object.js';\nimport { createSnapToResolutions, createSnapToPower } from './resolutionconstraint.js';\nimport { createSnapToZero, createSnapToN, none as rotationNone, disable } from './rotationconstraint.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport { linearFindNearest } from './array.js';\nimport { assert } from './asserts.js';\nimport { add as addCoordinate, rotate as rotateCoordinate, equals as coordinatesEqual } from './coordinate.js';\nimport { inAndOut } from './easing.js';\nimport { getForViewAndSize, getCenter, getHeight, getWidth, isEmpty } from './extent.js';\nimport GeometryType from './geom/GeometryType.js';\nimport { fromExtent as polygonFromExtent } from './geom/Polygon.js';\nimport { clamp, modulo } from './math.js';\nimport { assign } from './obj.js';\nimport { createProjection, METERS_PER_UNIT, toUserCoordinate, toUserExtent, fromUserCoordinate, fromUserExtent, getUserProjection } from './proj.js';\nimport Units from './proj/Units.js';\nimport { equals } from './coordinate.js';\nimport { easeOut } from './easing.js';\nimport { createMinMaxResolution } from './resolutionconstraint.js';\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter]\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter]\n * @property {number} [sourceResolution]\n * @property {number} [targetResolution]\n * @property {number} [sourceRotation]\n * @property {number} [targetRotation]\n * @property {import(\"./coordinate.js\").Coordinate} [anchor]\n * @property {number} start\n * @property {number} duration\n * @property {boolean} complete\n * @property {function(number):number} easing\n * @property {function(boolean)} callback\n */\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center\n * @property {import(\"./resolutionconstraint.js\").Type} resolution\n * @property {import(\"./rotationconstraint.js\").Type} rotation\n */\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to fit\n * the extent into. Default is the current size of the first map in the DOM that\n * uses this view, or `[100, 100]` if no such map is found.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,\n * get the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean)} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `extent`.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint. It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge. If `true` the map\n * may show multiple worlds at low zoom levels. Only used if the `projection` is\n * global. Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {boolean} [showFullExtent=false] Allow the view to be zoomed out to\n * show the full configured extent. By default, when a view is configured with an\n * extent, users will not be able to zoom out so the viewport exceeds the extent in\n * either dimension. This means the full extent may not be visible if the viewport\n * is taller or wider than the aspect ratio of the configured extent. If\n * showFullExtent is true, the user will be able to zoom out so that the viewport\n * exceeds the height or width of the configured extent, but not both, allowing the\n * full extent to be shown.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array} [resolutions] Resolutions to determine the\n * resolution constraint. If set the `maxResolution`, `minResolution`,\n * `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\n */\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remain fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center\n * @property {import(\"./proj/Projection.js\").default} projection\n * @property {number} resolution\n * @property {number} rotation\n * @property {number} zoom\n */\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nvar DEFAULT_MIN_ZOOM = 0;\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * A View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Spherical Mercator (EPSG:3857).\n *\n * ### The view states\n *\n * A View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `opt_anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n */\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n /**\n * @param {ViewOptions=} opt_options View options.\n */\n function View(opt_options) {\n var _this = _super.call(this) || this;\n var options = assign({}, opt_options);\n /**\n * @private\n * @type {Array}\n */\n _this.hints_ = [0, 0];\n /**\n * @private\n * @type {Array>}\n */\n _this.animations_ = [];\n /**\n * @private\n * @type {number|undefined}\n */\n _this.updateAnimationKey_;\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n _this.projection_ = createProjection(options.projection, 'EPSG:3857');\n /**\n * @private\n * @type {import(\"./size.js\").Size}\n */\n _this.viewportSize_ = [100, 100];\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.targetCenter_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetResolution_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetRotation_;\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.cancelAnchor_ = undefined;\n if (options.center) {\n options.center = fromUserCoordinate(options.center, _this.projection_);\n }\n if (options.extent) {\n options.extent = fromUserExtent(options.extent, _this.projection_);\n }\n _this.applyOptions_(options);\n return _this;\n }\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n View.prototype.applyOptions_ = function (options) {\n /**\n * @type {Object}\n */\n var properties = {};\n var resolutionConstraintInfo = createResolutionConstraint(options);\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n var centerConstraint = createCenterConstraint(options);\n var resolutionConstraint = resolutionConstraintInfo.constraint;\n var rotationConstraint = createRotationConstraint(options);\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint\n };\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(options.center !== undefined ? options.center : null);\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n }\n else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n this.setProperties(properties);\n /**\n * @private\n * @type {ViewOptions}\n */\n this.options_ = options;\n };\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n View.prototype.getUpdatedOptions_ = function (newOptions) {\n var options = assign({}, this.options_);\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n }\n else {\n options.zoom = this.getZoom();\n }\n // preserve center\n options.center = this.getCenterInternal();\n // preserve rotation\n options.rotation = this.getRotation();\n return assign({}, options, newOptions);\n };\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation\n * options. Multiple animations can be run in series by passing multiple\n * options objects. To run multiple animations in parallel, call the method\n * multiple times. An optional callback can be provided as a final\n * argument. The callback will be called with a boolean indicating whether\n * the animation completed without being cancelled.\n * @api\n */\n View.prototype.animate = function (var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n var options = arguments[i];\n if (options.center) {\n options = assign({}, options);\n options.center = fromUserCoordinate(options.center, this.getProjection());\n }\n if (options.anchor) {\n options = assign({}, options);\n options.anchor = fromUserCoordinate(options.anchor, this.getProjection());\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n };\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n View.prototype.animateInternal = function (var_args) {\n var animationCount = arguments.length;\n var callback;\n if (animationCount > 1 && typeof arguments[animationCount - 1] === 'function') {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n if (!this.isDef()) {\n // if view properties are not yet set, shortcut to the final state\n var state = arguments[animationCount - 1];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n var start = Date.now();\n var center = this.targetCenter_.slice();\n var resolution = this.targetResolution_;\n var rotation = this.targetRotation_;\n var series = [];\n for (var i = 0; i < animationCount; ++i) {\n var options = /** @type {AnimationOptions} */ (arguments[i]);\n var animation = {\n start: start,\n complete: false,\n anchor: options.anchor,\n duration: options.duration !== undefined ? options.duration : 1000,\n easing: options.easing || inAndOut,\n callback: callback\n };\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n }\n else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n var delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n }\n else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n };\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n View.prototype.getAnimating = function () {\n return this.hints_[ViewHint.ANIMATING] > 0;\n };\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n View.prototype.getInteracting = function () {\n return this.hints_[ViewHint.INTERACTING] > 0;\n };\n /**\n * Cancel any ongoing animations.\n * @api\n */\n View.prototype.cancelAnimations = function () {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n var anchor;\n for (var i = 0, ii = this.animations_.length; i < ii; ++i) {\n var series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n if (!anchor) {\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (!animation.complete) {\n anchor = animation.anchor;\n break;\n }\n }\n }\n }\n this.animations_.length = 0;\n this.cancelAnchor_ = anchor;\n };\n /**\n * Update all animations.\n */\n View.prototype.updateAnimations_ = function () {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n var now = Date.now();\n var more = false;\n for (var i = this.animations_.length - 1; i >= 0; --i) {\n var series = this.animations_[i];\n var seriesComplete = true;\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (animation.complete) {\n continue;\n }\n var elapsed = now - animation.start;\n var fraction = animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n }\n else {\n seriesComplete = false;\n }\n var progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n var x0 = animation.sourceCenter[0];\n var y0 = animation.sourceCenter[1];\n var x1 = animation.targetCenter[0];\n var y1 = animation.targetCenter[1];\n var x = x0 + progress * (x1 - x0);\n var y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n var resolution = progress === 1 ?\n animation.targetResolution :\n animation.sourceResolution + progress * (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n var size = this.getViewportSize_(this.getRotation());\n var constrainedResolution = this.constraints_.resolution(resolution, 0, size, true);\n this.targetCenter_ = this.calculateCenterZoom(constrainedResolution, animation.anchor);\n }\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (animation.sourceRotation !== undefined && animation.targetRotation !== undefined) {\n var rotation = progress === 1 ?\n modulo(animation.targetRotation + Math.PI, 2 * Math.PI) - Math.PI :\n animation.sourceRotation + progress * (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n var constrainedRotation = this.constraints_.rotation(rotation, true);\n this.targetCenter_ = this.calculateCenterRotate(constrainedRotation, animation.anchor);\n }\n this.targetRotation_ = rotation;\n }\n this.applyTargetState_(true);\n more = true;\n if (!animation.complete) {\n break;\n }\n }\n if (seriesComplete) {\n this.animations_[i] = null;\n this.setHint(ViewHint.ANIMATING, -1);\n var callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_.bind(this));\n }\n };\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n View.prototype.calculateCenterRotate = function (rotation, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n if (currentCenter !== undefined) {\n center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n rotateCoordinate(center, rotation - this.getRotation());\n addCoordinate(center, anchor);\n }\n return center;\n };\n /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n View.prototype.calculateCenterZoom = function (resolution, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n var currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n var x = anchor[0] - resolution * (anchor[0] - currentCenter[0]) / currentResolution;\n var y = anchor[1] - resolution * (anchor[1] - currentCenter[1]) / currentResolution;\n center = [x, y];\n }\n return center;\n };\n /**\n * Returns the current viewport size.\n * @private\n * @param {number=} opt_rotation Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n View.prototype.getViewportSize_ = function (opt_rotation) {\n var size = this.viewportSize_;\n if (opt_rotation) {\n var w = size[0];\n var h = size[1];\n return [\n Math.abs(w * Math.cos(opt_rotation)) + Math.abs(h * Math.sin(opt_rotation)),\n Math.abs(w * Math.sin(opt_rotation)) + Math.abs(h * Math.cos(opt_rotation))\n ];\n }\n else {\n return size;\n }\n };\n /**\n * Stores the viewport size on the view. The viewport size is not read every time from the DOM\n * to avoid performance hit and layout reflow.\n * This should be done on map size change.\n * @param {import(\"./size.js\").Size=} opt_size Viewport size; if undefined, [100, 100] is assumed\n */\n View.prototype.setViewportSize = function (opt_size) {\n this.viewportSize_ = Array.isArray(opt_size) ? opt_size.slice() : [100, 100];\n this.resolveConstraints(0);\n };\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n View.prototype.getCenter = function () {\n var center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n };\n /**\n * Get the view center without transforming to user projection.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n */\n View.prototype.getCenterInternal = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(ViewProperty.CENTER));\n };\n /**\n * @return {Constraints} Constraints.\n */\n View.prototype.getConstraints = function () {\n return this.constraints_;\n };\n /**\n * @return {boolean} Resolution constraint is set\n */\n View.prototype.getConstrainResolution = function () {\n return this.options_.constrainResolution;\n };\n /**\n * @param {Array=} opt_hints Destination array.\n * @return {Array} Hint.\n */\n View.prototype.getHints = function (opt_hints) {\n if (opt_hints !== undefined) {\n opt_hints[0] = this.hints_[0];\n opt_hints[1] = this.hints_[1];\n return opt_hints;\n }\n else {\n return this.hints_.slice();\n }\n };\n /**\n * Calculate the extent for the current view state and the passed size.\n * The size is the pixel dimensions of the box into which the calculated extent\n * should fit. In most cases you want to get the extent of the entire map,\n * that is `map.getSize()`.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size\n * of the map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n View.prototype.calculateExtent = function (opt_size) {\n var extent = this.calculateExtentInternal(opt_size);\n return toUserExtent(extent, this.getProjection());\n };\n /**\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size of the\n * first map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n View.prototype.calculateExtentInternal = function (opt_size) {\n var size = opt_size || this.getViewportSize_();\n var center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n assert(center, 1); // The view center is not defined\n var resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n var rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n return getForViewAndSize(center, resolution, rotation, size);\n };\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n View.prototype.getMaxResolution = function () {\n return this.maxResolution_;\n };\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n View.prototype.getMinResolution = function () {\n return this.minResolution_;\n };\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n View.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.minResolution_));\n };\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n View.prototype.setMaxZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ maxZoom: zoom }));\n };\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n View.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.maxResolution_));\n };\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n View.prototype.setMinZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ minZoom: zoom }));\n };\n /**\n * Set whether the view shoud allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n View.prototype.setConstrainResolution = function (enabled) {\n this.applyOptions_(this.getUpdatedOptions_({ constrainResolution: enabled }));\n };\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n View.prototype.getProjection = function () {\n return this.projection_;\n };\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.getResolution = function () {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n };\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n View.prototype.getResolutions = function () {\n return this.resolutions_;\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n View.prototype.getResolutionForExtent = function (extent, opt_size) {\n return this.getResolutionForExtentInternal(fromUserExtent(extent, this.getProjection()), opt_size);\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n View.prototype.getResolutionForExtentInternal = function (extent, opt_size) {\n var size = opt_size || this.getViewportSize_();\n var xResolution = getWidth(extent) / size[0];\n var yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n };\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Resolution for value function.\n */\n View.prototype.getResolutionForValueFunction = function (opt_power) {\n var power = opt_power || 2;\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function (value) {\n var resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n });\n };\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.getRotation = function () {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n };\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Value for resolution function.\n */\n View.prototype.getValueForResolutionFunction = function (opt_power) {\n var logPower = Math.log(opt_power || 2);\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / logPower;\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n var value = (Math.log(maxResolution / resolution) / logPower) / max;\n return value;\n });\n };\n /**\n * @return {State} View state.\n */\n View.prototype.getState = function () {\n var center = /** @type {import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n var projection = this.getProjection();\n var resolution = /** @type {number} */ (this.getResolution());\n var rotation = this.getRotation();\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n rotation: rotation,\n zoom: this.getZoom()\n };\n };\n /**\n * Get the current zoom level. This method may return non-integer zoom levels\n * if the view does not constrain the resolution, or if an interaction or\n * animation is underway.\n * @return {number|undefined} Zoom.\n * @api\n */\n View.prototype.getZoom = function () {\n var zoom;\n var resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n };\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n View.prototype.getZoomForResolution = function (resolution) {\n var offset = this.minZoom_ || 0;\n var max, zoomFactor;\n if (this.resolutions_) {\n var nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n }\n else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n }\n else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n };\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n View.prototype.getResolutionForZoom = function (zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n var baseLevel = clamp(Math.floor(zoom), 0, this.resolutions_.length - 2);\n var zoomFactor = this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return this.resolutions_[baseLevel] / Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1));\n }\n else {\n return this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_);\n }\n };\n /**\n * Fit the given geometry or extent based on the given map size and border.\n * The size is pixel dimensions of the box to fit the extent into.\n * In most cases you will want to use the map size, that is `map.getSize()`.\n * Takes care of the map angle.\n * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n * extent to fit the view to.\n * @param {FitOptions=} opt_options Options.\n * @api\n */\n View.prototype.fit = function (geometryOrExtent, opt_options) {\n var options = assign({ size: this.getViewportSize_() }, opt_options || {});\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n var geometry;\n assert(Array.isArray(geometryOrExtent) || typeof /** @type {?} */ (geometryOrExtent).getSimplifiedGeometry === 'function', 24); // Invalid extent or geometry provided as `geometry`\n if (Array.isArray(geometryOrExtent)) {\n assert(!isEmpty(geometryOrExtent), 25); // Cannot fit empty extent provided as `geometry`\n var extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n }\n else if (geometryOrExtent.getType() === GeometryType.CIRCLE) {\n var extent = fromUserExtent(geometryOrExtent.getExtent(), this.getProjection());\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n }\n else {\n var userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometryOrExtent.clone().transform(userProjection, this.getProjection()));\n }\n else {\n geometry = geometryOrExtent;\n }\n }\n this.fitInternal(geometry, options);\n };\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions=} opt_options Options.\n */\n View.prototype.fitInternal = function (geometry, opt_options) {\n var options = opt_options || {};\n var size = options.size;\n if (!size) {\n size = this.getViewportSize_();\n }\n var padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n var nearest = options.nearest !== undefined ? options.nearest : false;\n var minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n }\n else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n }\n else {\n minResolution = 0;\n }\n var coords = geometry.getFlatCoordinates();\n // calculate rotated extent\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var minRotX = +Infinity;\n var minRotY = +Infinity;\n var maxRotX = -Infinity;\n var maxRotY = -Infinity;\n var stride = geometry.getStride();\n for (var i = 0, ii = coords.length; i < ii; i += stride) {\n var rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n var rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n // calculate resolution\n var resolution = this.getResolutionForExtentInternal([minRotX, minRotY, maxRotX, maxRotY], [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);\n resolution = isNaN(resolution) ? minResolution :\n Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n // calculate center\n sinAngle = -sinAngle; // go back to original rotation\n var centerRotX = (minRotX + maxRotX) / 2;\n var centerRotY = (minRotY + maxRotY) / 2;\n centerRotX += (padding[1] - padding[3]) / 2 * resolution;\n centerRotY += (padding[0] - padding[2]) / 2 * resolution;\n var centerX = centerRotX * cosAngle - centerRotY * sinAngle;\n var centerY = centerRotY * cosAngle + centerRotX * sinAngle;\n var center = [centerX, centerY];\n var callback = options.callback ? options.callback : VOID;\n if (options.duration !== undefined) {\n this.animateInternal({\n resolution: resolution,\n center: this.getConstrainedCenter(center, resolution),\n duration: options.duration,\n easing: options.easing\n }, callback);\n }\n else {\n this.targetResolution_ = resolution;\n this.targetCenter_ = center;\n this.applyTargetState_(false, true);\n animationCallback(callback, true);\n }\n };\n /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n View.prototype.centerOn = function (coordinate, size, position) {\n this.centerOnInternal(fromUserCoordinate(coordinate, this.getProjection()), size, position);\n };\n /**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n */\n View.prototype.centerOnInternal = function (coordinate, size, position) {\n // calculate rotated position\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n var resolution = this.getResolution();\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n var centerX = rotX * cosAngle - rotY * sinAngle;\n var centerY = rotY * cosAngle + rotX * sinAngle;\n this.setCenterInternal([centerX, centerY]);\n };\n /**\n * @return {boolean} Is defined.\n */\n View.prototype.isDef = function () {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n * @api\n */\n View.prototype.adjustCenter = function (deltaCoordinates) {\n var center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([center[0] + deltaCoordinates[0], center[1] + deltaCoordinates[1]]);\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n */\n View.prototype.adjustCenterInternal = function (deltaCoordinates) {\n var center = this.targetCenter_;\n this.setCenterInternal([center[0] + deltaCoordinates[0], center[1] + deltaCoordinates[1]]);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustResolution = function (ratio, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.adjustResolutionInternal = function (ratio, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var size = this.getViewportSize_(this.getRotation());\n var newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, opt_anchor);\n }\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n };\n /**\n * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom level.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustZoom = function (delta, opt_anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), opt_anchor);\n };\n /**\n * Adds a value to the view rotation, optionally using an anchor. Any rotation\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n * @api\n */\n View.prototype.adjustRotation = function (delta, opt_anchor) {\n if (opt_anchor) {\n opt_anchor = fromUserCoordinate(opt_anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, opt_anchor);\n };\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n */\n View.prototype.adjustRotationInternal = function (delta, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var newRotation = this.constraints_.rotation(this.targetRotation_ + delta, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, opt_anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n };\n /**\n * Set the center of the current view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n View.prototype.setCenter = function (center) {\n this.setCenterInternal(fromUserCoordinate(center, this.getProjection()));\n };\n /**\n * Set the center using the view projection (not the user projection).\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n */\n View.prototype.setCenterInternal = function (center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n };\n /**\n * @param {ViewHint} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n View.prototype.setHint = function (hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n };\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.setResolution = function (resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n };\n /**\n * Set the rotation for this view. Any rotation constraint will apply.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.setRotation = function (rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n };\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n View.prototype.setZoom = function (zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n };\n /**\n * Recompute rotation/resolution/center based on target values.\n * Note: we have to compute rotation first, then resolution and center considering that\n * parameters can influence one another in case a view extent constraint is present.\n * @param {boolean=} opt_doNotCancelAnims Do not cancel animations.\n * @param {boolean=} opt_forceMoving Apply constraints as if the view is moving.\n * @private\n */\n View.prototype.applyTargetState_ = function (opt_doNotCancelAnims, opt_forceMoving) {\n var isMoving = this.getAnimating() || this.getInteracting() || opt_forceMoving;\n // compute rotation\n var newRotation = this.constraints_.rotation(this.targetRotation_, isMoving);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, 0, size, isMoving);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, isMoving);\n if (this.get(ViewProperty.ROTATION) !== newRotation) {\n this.set(ViewProperty.ROTATION, newRotation);\n }\n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n this.set(ViewProperty.RESOLUTION, newResolution);\n }\n if (!this.get(ViewProperty.CENTER) || !equals(this.get(ViewProperty.CENTER), newCenter)) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n if (this.getAnimating() && !opt_doNotCancelAnims) {\n this.cancelAnimations();\n }\n this.cancelAnchor_ = undefined;\n };\n /**\n * If any constraints need to be applied, an animation will be triggered.\n * This is typically done on interaction end.\n * Note: calling this with a duration of 0 will apply the constrained values straight away,\n * without animation.\n * @param {number=} opt_duration The animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.resolveConstraints = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var duration = opt_duration !== undefined ? opt_duration : 200;\n var direction = opt_resolutionDirection || 0;\n var newRotation = this.constraints_.rotation(this.targetRotation_);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, direction, size);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size);\n if (duration === 0 && !this.cancelAnchor_) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\n var anchor = opt_anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n this.cancelAnchor_ = undefined;\n if (this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)) {\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n this.animateInternal({\n rotation: newRotation,\n center: newCenter,\n resolution: newResolution,\n duration: duration,\n easing: easeOut,\n anchor: anchor\n });\n }\n };\n /**\n * Notify the View that an interaction has started.\n * The view state will be resolved to a stable one if needed\n * (depending on its constraints).\n * @api\n */\n View.prototype.beginInteraction = function () {\n this.resolveConstraints(0);\n this.setHint(ViewHint.INTERACTING, 1);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.endInteraction = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.endInteractionInternal(opt_duration, opt_resolutionDirection, anchor);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.endInteractionInternal = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(opt_duration, opt_resolutionDirection, opt_anchor);\n };\n /**\n * Get a valid position for the view center according to the current constraints.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n * @param {number=} opt_targetResolution Target resolution. If not supplied, the current one will be used.\n * This is useful to guess a valid center position at a different zoom level.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n */\n View.prototype.getConstrainedCenter = function (targetCenter, opt_targetResolution) {\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.center(targetCenter, opt_targetResolution || this.getResolution(), size);\n };\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid zoom level.\n */\n View.prototype.getConstrainedZoom = function (targetZoom, opt_direction) {\n var targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(this.getConstrainedResolution(targetRes, opt_direction));\n };\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid resolution.\n */\n View.prototype.getConstrainedResolution = function (targetResolution, opt_direction) {\n var direction = opt_direction || 0;\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.resolution(targetResolution, direction, size);\n };\n return View;\n}(BaseObject));\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function () {\n callback(returnValue);\n }, 0);\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n var smooth = options.smoothExtentConstraint !== undefined ? options.smoothExtentConstraint : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n var projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n var extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n return centerNone;\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n var resolutionConstraint;\n var maxResolution;\n var minResolution;\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n var defaultMaxZoom = 28;\n var defaultZoomFactor = 2;\n var minZoom = options.minZoom !== undefined ?\n options.minZoom : DEFAULT_MIN_ZOOM;\n var maxZoom = options.maxZoom !== undefined ?\n options.maxZoom : defaultMaxZoom;\n var zoomFactor = options.zoomFactor !== undefined ?\n options.zoomFactor : defaultZoomFactor;\n var multiWorld = options.multiWorld !== undefined ?\n options.multiWorld : false;\n var smooth = options.smoothResolutionConstraint !== undefined ? options.smoothResolutionConstraint : true;\n var showFullExtent = options.showFullExtent !== undefined ? options.showFullExtent : false;\n var projection = createProjection(options.projection, 'EPSG:3857');\n var projExtent = projection.getExtent();\n var constrainOnlyCenter = options.constrainOnlyCenter;\n var extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n if (options.resolutions !== undefined) {\n var resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution = resolutions[maxZoom] !== undefined ?\n resolutions[maxZoom] : resolutions[resolutions.length - 1];\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(resolutions, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n else {\n // calculate the default min and max resolution\n var size = !projExtent ?\n // use an extent that can fit the whole world if need be\n 360 * METERS_PER_UNIT[Units.DEGREES] /\n projection.getMetersPerUnit() :\n Math.max(getWidth(projExtent), getHeight(projExtent));\n var defaultMaxResolution = size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n var defaultMinResolution = defaultMaxResolution / Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n }\n else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n }\n else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n }\n else {\n minResolution = defaultMinResolution;\n }\n }\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom = minZoom + Math.floor(Math.log(maxResolution / minResolution) / Math.log(zoomFactor));\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(zoomFactor, maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n return { constraint: resolutionConstraint, maxResolution: maxResolution,\n minResolution: minResolution, minZoom: minZoom, zoomFactor: zoomFactor };\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n var enableRotation = options.enableRotation !== undefined ?\n options.enableRotation : true;\n if (enableRotation) {\n var constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n else if (constrainRotation === false) {\n return rotationNone;\n }\n else if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n else {\n return rotationNone;\n }\n }\n else {\n return disable;\n }\n}\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n if (animation.sourceCenter && animation.targetCenter) {\n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n return false;\n }\n }\n if (animation.sourceResolution !== animation.targetResolution) {\n return false;\n }\n if (animation.sourceRotation !== animation.targetRotation) {\n return false;\n }\n return true;\n}\nexport default View;\n//# sourceMappingURL=View.js.map","/**\n * @module ol/tilegrid/common\n */\n/**\n * Default maximum zoom for default tile grids.\n * @type {number}\n */\nexport var DEFAULT_MAX_ZOOM = 42;\n/**\n * Default tile size.\n * @type {number}\n */\nexport var DEFAULT_TILE_SIZE = 256;\n//# sourceMappingURL=common.js.map","/**\n * @module ol/layer/Property\n */\n/**\n * @enum {string}\n */\nexport default {\n OPACITY: 'opacity',\n VISIBLE: 'visible',\n EXTENT: 'extent',\n Z_INDEX: 'zIndex',\n MAX_RESOLUTION: 'maxResolution',\n MIN_RESOLUTION: 'minResolution',\n MAX_ZOOM: 'maxZoom',\n MIN_ZOOM: 'minZoom',\n SOURCE: 'source'\n};\n//# sourceMappingURL=Property.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Base\n */\nimport { abstract } from '../util.js';\nimport BaseObject from '../Object.js';\nimport LayerProperty from './Property.js';\nimport { clamp } from '../math.js';\nimport { assign } from '../obj.js';\nimport { assert } from '../asserts.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Note that with {@link module:ol/layer/Base} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object} property on the layer object, so\n * is observable, and has get/set accessors.\n *\n * @api\n */\nvar BaseLayer = /** @class */ (function (_super) {\n __extends(BaseLayer, _super);\n /**\n * @param {Options} options Layer options.\n */\n function BaseLayer(options) {\n var _this = _super.call(this) || this;\n /**\n * @type {Object}\n */\n var properties = assign({}, options);\n properties[LayerProperty.OPACITY] =\n options.opacity !== undefined ? options.opacity : 1;\n assert(typeof properties[LayerProperty.OPACITY] === 'number', 64); // Layer opacity must be a number\n properties[LayerProperty.VISIBLE] =\n options.visible !== undefined ? options.visible : true;\n properties[LayerProperty.Z_INDEX] = options.zIndex;\n properties[LayerProperty.MAX_RESOLUTION] =\n options.maxResolution !== undefined ? options.maxResolution : Infinity;\n properties[LayerProperty.MIN_RESOLUTION] =\n options.minResolution !== undefined ? options.minResolution : 0;\n properties[LayerProperty.MIN_ZOOM] =\n options.minZoom !== undefined ? options.minZoom : -Infinity;\n properties[LayerProperty.MAX_ZOOM] =\n options.maxZoom !== undefined ? options.maxZoom : Infinity;\n /**\n * @type {string}\n * @private\n */\n _this.className_ = properties.className !== undefined ? options.className : 'ol-layer';\n delete properties.className;\n _this.setProperties(properties);\n /**\n * @type {import(\"./Layer.js\").State}\n * @private\n */\n _this.state_ = null;\n return _this;\n }\n /**\n * @return {string} CSS class name.\n */\n BaseLayer.prototype.getClassName = function () {\n return this.className_;\n };\n /**\n * This method is not meant to be called by layers or layer renderers because the state\n * is incorrect if the layer is included in a layer group.\n *\n * @param {boolean=} opt_managed Layer is managed.\n * @return {import(\"./Layer.js\").State} Layer state.\n */\n BaseLayer.prototype.getLayerState = function (opt_managed) {\n /** @type {import(\"./Layer.js\").State} */\n var state = this.state_ || /** @type {?} */ ({\n layer: this,\n managed: opt_managed === undefined ? true : opt_managed\n });\n var zIndex = this.getZIndex();\n state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);\n state.sourceState = this.getSourceState();\n state.visible = this.getVisible();\n state.extent = this.getExtent();\n state.zIndex = zIndex !== undefined ? zIndex : (state.managed === false ? Infinity : 0);\n state.maxResolution = this.getMaxResolution();\n state.minResolution = Math.max(this.getMinResolution(), 0);\n state.minZoom = this.getMinZoom();\n state.maxZoom = this.getMaxZoom();\n this.state_ = state;\n return state;\n };\n /**\n * @abstract\n * @param {Array=} opt_array Array of layers (to be\n * modified in place).\n * @return {Array} Array of layers.\n */\n BaseLayer.prototype.getLayersArray = function (opt_array) {\n return abstract();\n };\n /**\n * @abstract\n * @param {Array=} opt_states Optional list of layer\n * states (to be modified in place).\n * @return {Array} List of layer states.\n */\n BaseLayer.prototype.getLayerStatesArray = function (opt_states) {\n return abstract();\n };\n /**\n * Return the {@link module:ol/extent~Extent extent} of the layer or `undefined` if it\n * will be visible regardless of extent.\n * @return {import(\"../extent.js\").Extent|undefined} The layer extent.\n * @observable\n * @api\n */\n BaseLayer.prototype.getExtent = function () {\n return (\n /** @type {import(\"../extent.js\").Extent|undefined} */ (this.get(LayerProperty.EXTENT)));\n };\n /**\n * Return the maximum resolution of the layer.\n * @return {number} The maximum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMaxResolution = function () {\n return /** @type {number} */ (this.get(LayerProperty.MAX_RESOLUTION));\n };\n /**\n * Return the minimum resolution of the layer.\n * @return {number} The minimum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMinResolution = function () {\n return /** @type {number} */ (this.get(LayerProperty.MIN_RESOLUTION));\n };\n /**\n * Return the minimum zoom level of the layer.\n * @return {number} The minimum zoom level of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.get(LayerProperty.MIN_ZOOM));\n };\n /**\n * Return the maximum zoom level of the layer.\n * @return {number} The maximum zoom level of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.get(LayerProperty.MAX_ZOOM));\n };\n /**\n * Return the opacity of the layer (between 0 and 1).\n * @return {number} The opacity of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getOpacity = function () {\n return /** @type {number} */ (this.get(LayerProperty.OPACITY));\n };\n /**\n * @abstract\n * @return {import(\"../source/State.js\").default} Source state.\n */\n BaseLayer.prototype.getSourceState = function () {\n return abstract();\n };\n /**\n * Return the visibility of the layer (`true` or `false`).\n * @return {boolean} The visibility of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getVisible = function () {\n return /** @type {boolean} */ (this.get(LayerProperty.VISIBLE));\n };\n /**\n * Return the Z-index of the layer, which is used to order layers before\n * rendering. The default Z-index is 0.\n * @return {number} The Z-index of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getZIndex = function () {\n return /** @type {number} */ (this.get(LayerProperty.Z_INDEX));\n };\n /**\n * Set the extent at which the layer is visible. If `undefined`, the layer\n * will be visible at all extents.\n * @param {import(\"../extent.js\").Extent|undefined} extent The extent of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setExtent = function (extent) {\n this.set(LayerProperty.EXTENT, extent);\n };\n /**\n * Set the maximum resolution at which the layer is visible.\n * @param {number} maxResolution The maximum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMaxResolution = function (maxResolution) {\n this.set(LayerProperty.MAX_RESOLUTION, maxResolution);\n };\n /**\n * Set the minimum resolution at which the layer is visible.\n * @param {number} minResolution The minimum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMinResolution = function (minResolution) {\n this.set(LayerProperty.MIN_RESOLUTION, minResolution);\n };\n /**\n * Set the maximum zoom (exclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} maxZoom The maximum zoom of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMaxZoom = function (maxZoom) {\n this.set(LayerProperty.MAX_ZOOM, maxZoom);\n };\n /**\n * Set the minimum zoom (inclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} minZoom The minimum zoom of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMinZoom = function (minZoom) {\n this.set(LayerProperty.MIN_ZOOM, minZoom);\n };\n /**\n * Set the opacity of the layer, allowed values range from 0 to 1.\n * @param {number} opacity The opacity of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setOpacity = function (opacity) {\n assert(typeof opacity === 'number', 64); // Layer opacity must be a number\n this.set(LayerProperty.OPACITY, opacity);\n };\n /**\n * Set the visibility of the layer (`true` or `false`).\n * @param {boolean} visible The visibility of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setVisible = function (visible) {\n this.set(LayerProperty.VISIBLE, visible);\n };\n /**\n * Set Z-index of the layer, which is used to order layers before rendering.\n * The default Z-index is 0.\n * @param {number} zindex The z-index of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setZIndex = function (zindex) {\n this.set(LayerProperty.Z_INDEX, zindex);\n };\n /**\n * @inheritDoc\n */\n BaseLayer.prototype.disposeInternal = function () {\n if (this.state_) {\n this.state_.layer = null;\n this.state_ = null;\n }\n _super.prototype.disposeInternal.call(this);\n };\n return BaseLayer;\n}(BaseObject));\nexport default BaseLayer;\n//# sourceMappingURL=Base.js.map","/**\n * @module ol/source/State\n */\n/**\n * @enum {string}\n * State of the source, one of 'undefined', 'loading', 'ready' or 'error'.\n */\nexport default {\n UNDEFINED: 'undefined',\n LOADING: 'loading',\n READY: 'ready',\n ERROR: 'error'\n};\n//# sourceMappingURL=State.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Group\n */\nimport { getUid } from '../util.js';\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport { getChangeEventType } from '../Object.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport { assert } from '../asserts.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport EventType from '../events/EventType.js';\nimport { getIntersection } from '../extent.js';\nimport BaseLayer from './Base.js';\nimport { assign, clear } from '../obj.js';\nimport SourceState from '../source/State.js';\n/**\n * @typedef {Object} Options\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {Array|import(\"../Collection.js\").default} [layers] Child layers.\n */\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LAYERS: 'layers'\n};\n/**\n * @classdesc\n * A {@link module:ol/Collection~Collection} of layers that are handled together.\n *\n * A generic `change` event is triggered when the group/Collection changes.\n *\n * @api\n */\nvar LayerGroup = /** @class */ (function (_super) {\n __extends(LayerGroup, _super);\n /**\n * @param {Options=} opt_options Layer options.\n */\n function LayerGroup(opt_options) {\n var _this = this;\n var options = opt_options || {};\n var baseOptions = /** @type {Options} */ (assign({}, options));\n delete baseOptions.layers;\n var layers = options.layers;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.layersListenerKeys_ = [];\n /**\n * @private\n * @type {Object>}\n */\n _this.listenerKeys_ = {};\n _this.addEventListener(getChangeEventType(Property.LAYERS), _this.handleLayersChanged_);\n if (layers) {\n if (Array.isArray(layers)) {\n layers = new Collection(layers.slice(), { unique: true });\n }\n else {\n assert(typeof /** @type {?} */ (layers).getArray === 'function', 43); // Expected `layers` to be an array or a `Collection`\n }\n }\n else {\n layers = new Collection(undefined, { unique: true });\n }\n _this.setLayers(layers);\n return _this;\n }\n /**\n * @private\n */\n LayerGroup.prototype.handleLayerChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n LayerGroup.prototype.handleLayersChanged_ = function () {\n this.layersListenerKeys_.forEach(unlistenByKey);\n this.layersListenerKeys_.length = 0;\n var layers = this.getLayers();\n this.layersListenerKeys_.push(listen(layers, CollectionEventType.ADD, this.handleLayersAdd_, this), listen(layers, CollectionEventType.REMOVE, this.handleLayersRemove_, this));\n for (var id in this.listenerKeys_) {\n this.listenerKeys_[id].forEach(unlistenByKey);\n }\n clear(this.listenerKeys_);\n var layersArray = layers.getArray();\n for (var i = 0, ii = layersArray.length; i < ii; i++) {\n var layer = layersArray[i];\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)\n ];\n }\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersAdd_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)\n ];\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersRemove_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n var key = getUid(layer);\n this.listenerKeys_[key].forEach(unlistenByKey);\n delete this.listenerKeys_[key];\n this.changed();\n };\n /**\n * Returns the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @return {!import(\"../Collection.js\").default} Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.getLayers = function () {\n return (\n /** @type {!import(\"../Collection.js\").default} */ (this.get(Property.LAYERS)));\n };\n /**\n * Set the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @param {!import(\"../Collection.js\").default} layers Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.setLayers = function (layers) {\n this.set(Property.LAYERS, layers);\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getLayersArray = function (opt_array) {\n var array = opt_array !== undefined ? opt_array : [];\n this.getLayers().forEach(function (layer) {\n layer.getLayersArray(array);\n });\n return array;\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states !== undefined ? opt_states : [];\n var pos = states.length;\n this.getLayers().forEach(function (layer) {\n layer.getLayerStatesArray(states);\n });\n var ownLayerState = this.getLayerState();\n for (var i = pos, ii = states.length; i < ii; i++) {\n var layerState = states[i];\n layerState.opacity *= ownLayerState.opacity;\n layerState.visible = layerState.visible && ownLayerState.visible;\n layerState.maxResolution = Math.min(layerState.maxResolution, ownLayerState.maxResolution);\n layerState.minResolution = Math.max(layerState.minResolution, ownLayerState.minResolution);\n layerState.minZoom = Math.max(layerState.minZoom, ownLayerState.minZoom);\n layerState.maxZoom = Math.min(layerState.maxZoom, ownLayerState.maxZoom);\n if (ownLayerState.extent !== undefined) {\n if (layerState.extent !== undefined) {\n layerState.extent = getIntersection(layerState.extent, ownLayerState.extent);\n }\n else {\n layerState.extent = ownLayerState.extent;\n }\n }\n }\n return states;\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getSourceState = function () {\n return SourceState.READY;\n };\n return LayerGroup;\n}(BaseLayer));\nexport default LayerGroup;\n//# sourceMappingURL=Group.js.map","/**\n * @module ol/size\n */\n/**\n * An array of numbers representing a size: `[width, height]`.\n * @typedef {Array} Size\n * @api\n */\n/**\n * Returns a buffered size.\n * @param {Size} size Size.\n * @param {number} num The amount by which to buffer.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The buffered size.\n */\nexport function buffer(size, num, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = size[0] + 2 * num;\n opt_size[1] = size[1] + 2 * num;\n return opt_size;\n}\n/**\n * Determines if a size has a positive area.\n * @param {Size} size The size to test.\n * @return {boolean} The size has a positive area.\n */\nexport function hasArea(size) {\n return size[0] > 0 && size[1] > 0;\n}\n/**\n * Returns a size scaled by a ratio. The result will be an array of integers.\n * @param {Size} size Size.\n * @param {number} ratio Ratio.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The scaled size.\n */\nexport function scale(size, ratio, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = (size[0] * ratio + 0.5) | 0;\n opt_size[1] = (size[1] * ratio + 0.5) | 0;\n return opt_size;\n}\n/**\n * Returns an `Size` array for the passed in number (meaning: square) or\n * `Size` array.\n * (meaning: non-square),\n * @param {number|Size} size Width and height.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} Size.\n * @api\n */\nexport function toSize(size, opt_size) {\n if (Array.isArray(size)) {\n return size;\n }\n else {\n if (opt_size === undefined) {\n opt_size = [size, size];\n }\n else {\n opt_size[0] = size;\n opt_size[1] = size;\n }\n return opt_size;\n }\n}\n//# sourceMappingURL=size.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/PluggableMap\n */\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport RenderEventType from './render/EventType.js';\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport TileQueue, { getTilePriority } from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport { assert } from './asserts.js';\nimport { removeNode } from './dom.js';\nimport { listen, unlistenByKey } from './events.js';\nimport EventType from './events/EventType.js';\nimport { clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty } from './extent.js';\nimport { TRUE } from './functions.js';\nimport { DEVICE_PIXEL_RATIO, IMAGE_DECODE, PASSIVE_EVENT_LISTENERS } from './has.js';\nimport LayerGroup from './layer/Group.js';\nimport { hasArea } from './size.js';\nimport { create as createTransform, apply as applyTransform } from './transform.js';\nimport { toUserCoordinate, fromUserCoordinate } from './proj.js';\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform\n * @property {null|import(\"./extent.js\").Extent} extent\n * @property {Array} declutterItems\n * @property {number} index\n * @property {Array} layerStatesArray\n * @property {number} layerIndex\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform\n * @property {Array} postRenderFunctions\n * @property {import(\"./size.js\").Size} size\n * @property {TileQueue} tileQueue\n * @property {!Object>} usedTiles\n * @property {Array} viewHints\n * @property {!Object>} wantedTiles\n */\n/**\n * @typedef {Object} DeclutterItems\n * @property {Array<*>} items Declutter items of an executor.\n * @property {number} opacity Layer opacity.\n */\n/**\n * @typedef {function(PluggableMap, ?FrameState): any} PostRenderFunction\n */\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls]\n * @property {Collection} [interactions]\n * @property {HTMLElement|Document} keyboardEventTarget\n * @property {Collection} overlays\n * @property {Object} values\n */\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control~defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction~defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered.\n * @property {View} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n/**\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nvar PluggableMap = /** @class */ (function (_super) {\n __extends(PluggableMap, _super);\n /**\n * @param {MapOptions} options Map options.\n */\n function PluggableMap(options) {\n var _this = _super.call(this) || this;\n var optionsInternal = createOptionsInternal(options);\n /** @private */\n _this.boundHandleBrowserEvent_ = _this.handleBrowserEvent.bind(_this);\n /**\n * @type {number}\n * @private\n */\n _this.maxTilesLoading_ = options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = options.pixelRatio !== undefined ?\n options.pixelRatio : DEVICE_PIXEL_RATIO;\n /**\n * @private\n * @type {*}\n */\n _this.postRenderTimeoutHandle_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.animationDelayKey_;\n /**\n * @private\n */\n _this.animationDelay_ = function () {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }.bind(_this);\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.coordinateToPixelTransform_ = createTransform();\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.pixelToCoordinateTransform_ = createTransform();\n /**\n * @private\n * @type {number}\n */\n _this.frameIndex_ = 0;\n /**\n * @private\n * @type {?FrameState}\n */\n _this.frameState_ = null;\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n _this.previousExtent_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewPropertyListenerKey_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewChangeListenerKey_ = null;\n /**\n * @private\n * @type {?Array}\n */\n _this.layerGroupPropertyListenerKeys_ = null;\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.viewport_ = document.createElement('div');\n _this.viewport_.className = 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n _this.viewport_.style.position = 'relative';\n _this.viewport_.style.overflow = 'hidden';\n _this.viewport_.style.width = '100%';\n _this.viewport_.style.height = '100%';\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainer_ = document.createElement('div');\n _this.overlayContainer_.style.position = 'absolute';\n _this.overlayContainer_.style.zIndex = '0';\n _this.overlayContainer_.style.width = '100%';\n _this.overlayContainer_.style.height = '100%';\n _this.overlayContainer_.className = 'ol-overlaycontainer';\n _this.viewport_.appendChild(_this.overlayContainer_);\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainerStopEvent_ = document.createElement('div');\n _this.overlayContainerStopEvent_.style.position = 'absolute';\n _this.overlayContainerStopEvent_.style.zIndex = '0';\n _this.overlayContainerStopEvent_.style.width = '100%';\n _this.overlayContainerStopEvent_.style.height = '100%';\n _this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n _this.viewport_.appendChild(_this.overlayContainerStopEvent_);\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n _this.mapBrowserEventHandler_ = new MapBrowserEventHandler(_this, options.moveTolerance);\n var handleMapBrowserEvent = _this.handleMapBrowserEvent.bind(_this);\n for (var key in MapBrowserEventType) {\n _this.mapBrowserEventHandler_.addEventListener(MapBrowserEventType[key], handleMapBrowserEvent);\n }\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n _this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n /**\n * @private\n * @type {?Array}\n */\n _this.keyHandlerKeys_ = null;\n var handleBrowserEvent = _this.handleBrowserEvent.bind(_this);\n _this.viewport_.addEventListener(EventType.CONTEXTMENU, handleBrowserEvent, false);\n _this.viewport_.addEventListener(EventType.WHEEL, handleBrowserEvent, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n /**\n * @type {Collection}\n * @protected\n */\n _this.controls = optionsInternal.controls || new Collection();\n /**\n * @type {Collection}\n * @protected\n */\n _this.interactions = optionsInternal.interactions || new Collection();\n /**\n * @type {Collection}\n * @private\n */\n _this.overlays_ = optionsInternal.overlays;\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n _this.overlayIdIndex_ = {};\n /**\n * @type {import(\"./renderer/Map.js\").default}\n * @private\n */\n _this.renderer_ = null;\n /**\n * @type {undefined|function(Event): void}\n * @private\n */\n _this.handleResize_;\n /**\n * @private\n * @type {!Array}\n */\n _this.postRenderFunctions_ = [];\n /**\n * @private\n * @type {TileQueue}\n */\n _this.tileQueue_ = new TileQueue(_this.getTilePriority.bind(_this), _this.handleTileChange_.bind(_this));\n _this.addEventListener(getChangeEventType(MapProperty.LAYERGROUP), _this.handleLayerGroupChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.VIEW), _this.handleViewChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.SIZE), _this.handleSizeChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.TARGET), _this.handleTargetChanged_);\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n _this.setProperties(optionsInternal.values);\n _this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n * @this {PluggableMap}\n */\n function (control) {\n control.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n * @this {PluggableMap}\n */\n function (interaction) {\n interaction.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.overlays_.forEach(_this.addOverlayInternal_.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n this.addOverlayInternal_(/** @type {import(\"./Overlay.js\").default} */ (event.element));\n }.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n var overlay = /** @type {import(\"./Overlay.js\").default} */ (event.element);\n var id = overlay.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }.bind(_this));\n return _this;\n }\n /**\n * @abstract\n * @return {import(\"./renderer/Map.js\").default} The map renderer\n */\n PluggableMap.prototype.createRenderer = function () {\n throw new Error('Use a map type that has a createRenderer method');\n };\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n PluggableMap.prototype.addControl = function (control) {\n this.getControls().push(control);\n };\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteraction()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n PluggableMap.prototype.addInteraction = function (interaction) {\n this.getInteractions().push(interaction);\n };\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n PluggableMap.prototype.addLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n };\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n PluggableMap.prototype.addOverlay = function (overlay) {\n this.getOverlays().push(overlay);\n };\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n PluggableMap.prototype.addOverlayInternal_ = function (overlay) {\n var id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n };\n /**\n *\n * @inheritDoc\n */\n PluggableMap.prototype.disposeInternal = function () {\n this.mapBrowserEventHandler_.dispose();\n this.viewport_.removeEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_);\n this.viewport_.removeEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n this.setTarget(null);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `opt_options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./Feature.js\").FeatureLike,\n * import(\"./layer/Layer.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature feature} or\n * {@link module:ol/render/Feature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachFeatureAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n var layerFilter = opt_options.layerFilter !== undefined ?\n opt_options.layerFilter : TRUE;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, callback, null, layerFilter, null);\n };\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n PluggableMap.prototype.getFeaturesAtPixel = function (pixel, opt_options) {\n var features = [];\n this.forEachFeatureAtPixel(pixel, function (feature) {\n features.push(feature);\n }, opt_options);\n return features;\n };\n /**\n * Detect layers that have a color value at a pixel on the viewport, and\n * execute a callback with each matching layer. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n *\n * Note: this may give false positives unless the map layers have had different `className`\n * properties assigned to them.\n *\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback\n * Layer callback. This callback will receive two arguments: first is the\n * {@link module:ol/layer/Layer layer}, second argument is an array representing\n * [R, G, B, A] pixel values (0 - 255) and will be `null` for layer types\n * that do not currently support this argument. To stop detection, callback\n * functions can return a truthy value.\n * @param {AtPixelOptions=} opt_options Configuration options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachLayerAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var options = opt_options || {};\n var hitTolerance = options.hitTolerance !== undefined ?\n options.hitTolerance * this.frameState_.pixelRatio : 0;\n var layerFilter = options.layerFilter || TRUE;\n return this.renderer_.forEachLayerAtPixel(pixel, this.frameState_, hitTolerance, callback, layerFilter);\n };\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n PluggableMap.prototype.hasFeatureAtPixel = function (pixel, opt_options) {\n if (!this.frameState_) {\n return false;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, layerFilter, null);\n };\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {Event} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n PluggableMap.prototype.getEventCoordinate = function (event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n };\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {Event} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n PluggableMap.prototype.getEventCoordinateInternal = function (event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n };\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {Event|TouchEvent} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n PluggableMap.prototype.getEventPixel = function (event) {\n var viewportPosition = this.viewport_.getBoundingClientRect();\n var eventPosition = 'changedTouches' in event ?\n /** @type {TouchEvent} */ (event).changedTouches[0] :\n /** @type {MouseEvent} */ (event);\n return [\n eventPosition.clientX - viewportPosition.left,\n eventPosition.clientY - viewportPosition.top\n ];\n };\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.getTarget = function () {\n return /** @type {HTMLElement|string|undefined} */ (this.get(MapProperty.TARGET));\n };\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n PluggableMap.prototype.getTargetElement = function () {\n var target = this.getTarget();\n if (target !== undefined) {\n return typeof target === 'string' ? document.getElementById(target) : target;\n }\n else {\n return null;\n }\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n PluggableMap.prototype.getCoordinateFromPixel = function (pixel) {\n return toUserCoordinate(this.getCoordinateFromPixelInternal(pixel), this.getView().getProjection());\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n PluggableMap.prototype.getCoordinateFromPixelInternal = function (pixel) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n }\n };\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n PluggableMap.prototype.getControls = function () {\n return this.controls;\n };\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n PluggableMap.prototype.getOverlays = function () {\n return this.overlays_;\n };\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n PluggableMap.prototype.getOverlayById = function (id) {\n var overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n };\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n PluggableMap.prototype.getInteractions = function () {\n return this.interactions;\n };\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getLayerGroup = function () {\n return (\n /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP)));\n };\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n PluggableMap.prototype.getLayers = function () {\n var layers = this.getLayerGroup().getLayers();\n return layers;\n };\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n PluggableMap.prototype.getLoading = function () {\n var layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layer = layerStatesArray[i].layer;\n var source = /** @type {import(\"./layer/Layer.js\").default} */ (layer).getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n PluggableMap.prototype.getPixelFromCoordinate = function (coordinate) {\n var viewCoordinate = fromUserCoordinate(coordinate, this.getView().getProjection());\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n PluggableMap.prototype.getPixelFromCoordinateInternal = function (coordinate) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.coordinateToPixelTransform, coordinate.slice(0, 2));\n }\n };\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default} Renderer\n */\n PluggableMap.prototype.getRenderer = function () {\n return this.renderer_;\n };\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.getSize = function () {\n return (\n /** @type {import(\"./size.js\").Size|undefined} */ (this.get(MapProperty.SIZE)));\n };\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getView = function () {\n return (\n /** @type {View} */ (this.get(MapProperty.VIEW)));\n };\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n PluggableMap.prototype.getViewport = function () {\n return this.viewport_;\n };\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n PluggableMap.prototype.getOverlayContainer = function () {\n return this.overlayContainer_;\n };\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n PluggableMap.prototype.getOverlayContainerStopEvent = function () {\n return this.overlayContainerStopEvent_;\n };\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n PluggableMap.prototype.getTilePriority = function (tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(this.frameState_, tile, tileSourceKey, tileCenter, tileResolution);\n };\n /**\n * @param {Event} browserEvent Browser event.\n * @param {string=} opt_type Type.\n */\n PluggableMap.prototype.handleBrowserEvent = function (browserEvent, opt_type) {\n var type = opt_type || browserEvent.type;\n var mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n };\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n PluggableMap.prototype.handleMapBrowserEvent = function (mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n var target = /** @type {Node} */ (mapBrowserEvent.originalEvent.target);\n if (!mapBrowserEvent.dragging) {\n if (this.overlayContainerStopEvent_.contains(target) || !(document.body.contains(target) || this.viewport_.getRootNode && this.viewport_.getRootNode().contains(target))) {\n // Abort if the event target is a child of the container that doesn't allow\n // event propagation or is no longer in the page. It's possible for the target to no longer\n // be in the page if it has been removed in an event listener, this might happen in a Control\n // that recreates it's content based on user interaction either manually or via a render\n // in something like https://reactjs.org/\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n var interactionsArray = this.getInteractions().getArray();\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n for (var i = interactionsArray.length - 1; i >= 0; i--) {\n var interaction = interactionsArray[i];\n if (!interaction.getActive()) {\n continue;\n }\n var cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont) {\n break;\n }\n }\n }\n };\n /**\n * @protected\n */\n PluggableMap.prototype.handlePostRender = function () {\n var frameState = this.frameState_;\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n var tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n var maxTotalLoading = this.maxTilesLoading_;\n var maxNewLoads = maxTotalLoading;\n if (frameState) {\n var hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n var lowOnFrameBudget = !IMAGE_DECODE && Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n if (frameState && this.hasListener(RenderEventType.RENDERCOMPLETE) && !frameState.animate &&\n !this.tileQueue_.getTilesLoading() && !this.getLoading()) {\n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);\n }\n var postRenderFunctions = this.postRenderFunctions_;\n for (var i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleSizeChanged_ = function () {\n if (this.getView()) {\n this.getView().resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTargetChanged_ = function () {\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n var targetElement;\n if (this.getTarget()) {\n targetElement = this.getTargetElement();\n }\n if (this.keyHandlerKeys_) {\n for (var i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.keyHandlerKeys_[i]);\n }\n this.keyHandlerKeys_ = null;\n }\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n removeNode(this.viewport_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n }\n else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n var keyboardEventTarget = !this.keyboardEventTarget_ ?\n targetElement : this.keyboardEventTarget_;\n this.keyHandlerKeys_ = [\n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),\n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this)\n ];\n if (!this.handleResize_) {\n this.handleResize_ = this.updateSize.bind(this);\n window.addEventListener(EventType.RESIZE, this.handleResize_, false);\n }\n }\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTileChange_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewPropertyChanged_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewChanged_ = function () {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n var view = this.getView();\n if (view) {\n this.updateViewportSize_();\n this.viewPropertyListenerKey_ = listen(view, ObjectEventType.PROPERTYCHANGE, this.handleViewPropertyChanged_, this);\n this.viewChangeListenerKey_ = listen(view, EventType.CHANGE, this.handleViewPropertyChanged_, this);\n view.resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleLayerGroupChanged_ = function () {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n var layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this)\n ];\n }\n this.render();\n };\n /**\n * @return {boolean} Is rendered.\n */\n PluggableMap.prototype.isRendered = function () {\n return !!this.frameState_;\n };\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n PluggableMap.prototype.renderSync = function () {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n };\n /**\n * Redraws all text after new fonts have loaded\n */\n PluggableMap.prototype.redrawText = function () {\n var layerStates = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStates.length; i < ii; ++i) {\n var layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n };\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n PluggableMap.prototype.render = function () {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n };\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n PluggableMap.prototype.removeControl = function (control) {\n return this.getControls().remove(control);\n };\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n PluggableMap.prototype.removeInteraction = function (interaction) {\n return this.getInteractions().remove(interaction);\n };\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n PluggableMap.prototype.removeLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n };\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n PluggableMap.prototype.removeOverlay = function (overlay) {\n return this.getOverlays().remove(overlay);\n };\n /**\n * @param {number} time Time.\n * @private\n */\n PluggableMap.prototype.renderFrame_ = function (time) {\n var size = this.getSize();\n var view = this.getView();\n var previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n var frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n var viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);\n var viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterItems: previousFrameState ? previousFrameState.declutterItems : [],\n extent: getForViewAndSize(viewState.center, viewState.resolution, viewState.rotation, size),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {}\n };\n }\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions);\n if (previousFrameState) {\n var moveStart = !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equals(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVESTART, this, previousFrameState));\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n var idle = this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equals(frameState.extent, this.previousExtent_);\n if (idle) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVEEND, this, frameState));\n clone(frameState.extent, this.previousExtent_);\n }\n }\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n this.postRenderTimeoutHandle_ = setTimeout(this.handlePostRender.bind(this), 0);\n };\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setLayerGroup = function (layerGroup) {\n this.set(MapProperty.LAYERGROUP, layerGroup);\n };\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.setSize = function (size) {\n this.set(MapProperty.SIZE, size);\n };\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string|undefined} target The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.setTarget = function (target) {\n this.set(MapProperty.TARGET, target);\n };\n /**\n * Set the view for this map.\n * @param {View} view The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setView = function (view) {\n this.set(MapProperty.VIEW, view);\n };\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n PluggableMap.prototype.updateSize = function () {\n var targetElement = this.getTargetElement();\n if (!targetElement) {\n this.setSize(undefined);\n }\n else {\n var computedStyle = getComputedStyle(targetElement);\n this.setSize([\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']),\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth'])\n ]);\n }\n this.updateViewportSize_();\n };\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n PluggableMap.prototype.updateViewportSize_ = function () {\n var view = this.getView();\n if (view) {\n var size = undefined;\n var computedStyle = getComputedStyle(this.viewport_);\n if (computedStyle.width && computedStyle.height) {\n size = [\n parseInt(computedStyle.width, 10),\n parseInt(computedStyle.height, 10)\n ];\n }\n view.setViewportSize(size);\n }\n };\n return PluggableMap;\n}(BaseObject));\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n var keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget = typeof options.keyboardEventTarget === 'string' ?\n document.getElementById(options.keyboardEventTarget) :\n options.keyboardEventTarget;\n }\n /**\n * @type {Object}\n */\n var values = {};\n var layerGroup = options.layers && typeof /** @type {?} */ (options.layers).getLayers === 'function' ?\n /** @type {LayerGroup} */ (options.layers) : new LayerGroup({ layers: /** @type {Collection} */ (options.layers) });\n values[MapProperty.LAYERGROUP] = layerGroup;\n values[MapProperty.TARGET] = options.target;\n values[MapProperty.VIEW] = options.view !== undefined ?\n options.view : new View();\n var controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.controls).getArray === 'function', 47); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = /** @type {Collection} */ (options.controls);\n }\n }\n var interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.interactions).getArray === 'function', 48); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n var overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.overlays).getArray === 'function', 49); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n }\n else {\n overlays = new Collection();\n }\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values\n };\n}\nexport default PluggableMap;\n//# sourceMappingURL=PluggableMap.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Layer\n */\nimport { listen, unlistenByKey } from '../events.js';\nimport EventType from '../events/EventType.js';\nimport { getChangeEventType } from '../Object.js';\nimport BaseLayer from './Base.js';\nimport LayerProperty from './Property.js';\nimport { assign } from '../obj.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\nimport { assert } from '../asserts.js';\n/**\n * @typedef {function(import(\"../PluggableMap.js\").FrameState):HTMLElement} RenderFunction\n */\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {import(\"../source/Source.js\").default} [source] Source for this layer. If not provided to the constructor,\n * the source can be set by calling {@link module:ol/layer/Layer#setSource layer.setSource(source)} after\n * construction.\n * @property {import(\"../PluggableMap.js\").default} [map] Map.\n * @property {RenderFunction} [render] Render function. Takes the frame state as input and is expected to return an\n * HTML element. Will overwrite the default rendering for the layer.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./Base.js\").default} layer\n * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point.\n * @property {SourceState} sourceState\n * @property {boolean} visible\n * @property {boolean} managed\n * @property {import(\"../extent.js\").Extent} [extent]\n * @property {number} zIndex\n * @property {number} maxResolution\n * @property {number} minResolution\n * @property {number} minZoom\n * @property {number} maxZoom\n */\n/**\n * @classdesc\n * Base class from which all layer types are derived. This should only be instantiated\n * in the case where a custom layer is be added to the map with a custom `render` function.\n * Such a function can be specified in the `options` object, and is expected to return an HTML element.\n *\n * A visual representation of raster or vector map data.\n * Layers group together those properties that pertain to how the data is to be\n * displayed, irrespective of the source of that data.\n *\n * Layers are usually added to a map with {@link module:ol/Map#addLayer}. Components\n * like {@link module:ol/interaction/Select~Select} use unmanaged layers\n * internally. These unmanaged layers are associated with the map using\n * {@link module:ol/layer/Layer~Layer#setMap} instead.\n *\n * A generic `change` event is fired when the state of the source changes.\n *\n * Please note that for performance reasons several layers might get rendered to\n * the same HTML element, which will cause {@link module:ol/Map~Map#forEachLayerAtPixel} to\n * give false positives. To avoid this, apply different `className` properties to the\n * layers at creation time.\n *\n * @fires import(\"../render/Event.js\").RenderEvent#prerender\n * @fires import(\"../render/Event.js\").RenderEvent#postrender\n *\n * @template {import(\"../source/Source.js\").default} SourceType\n * @api\n */\nvar Layer = /** @class */ (function (_super) {\n __extends(Layer, _super);\n /**\n * @param {Options} options Layer options.\n */\n function Layer(options) {\n var _this = this;\n var baseOptions = assign({}, options);\n delete baseOptions.source;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.mapPrecomposeKey_ = null;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.mapRenderKey_ = null;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.sourceChangeKey_ = null;\n /**\n * @private\n * @type {import(\"../renderer/Layer.js\").default}\n */\n _this.renderer_ = null;\n // Overwrite default render method with a custom one\n if (options.render) {\n _this.render = options.render;\n }\n if (options.map) {\n _this.setMap(options.map);\n }\n _this.addEventListener(getChangeEventType(LayerProperty.SOURCE), _this.handleSourcePropertyChange_);\n var source = options.source ? /** @type {SourceType} */ (options.source) : null;\n _this.setSource(source);\n return _this;\n }\n /**\n * @inheritDoc\n */\n Layer.prototype.getLayersArray = function (opt_array) {\n var array = opt_array ? opt_array : [];\n array.push(this);\n return array;\n };\n /**\n * @inheritDoc\n */\n Layer.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states ? opt_states : [];\n states.push(this.getLayerState());\n return states;\n };\n /**\n * Get the layer source.\n * @return {SourceType} The layer source (or `null` if not yet set).\n * @observable\n * @api\n */\n Layer.prototype.getSource = function () {\n return /** @type {SourceType} */ (this.get(LayerProperty.SOURCE)) || null;\n };\n /**\n * @inheritDoc\n */\n Layer.prototype.getSourceState = function () {\n var source = this.getSource();\n return !source ? SourceState.UNDEFINED : source.getState();\n };\n /**\n * @private\n */\n Layer.prototype.handleSourceChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Layer.prototype.handleSourcePropertyChange_ = function () {\n if (this.sourceChangeKey_) {\n unlistenByKey(this.sourceChangeKey_);\n this.sourceChangeKey_ = null;\n }\n var source = this.getSource();\n if (source) {\n this.sourceChangeKey_ = listen(source, EventType.CHANGE, this.handleSourceChange_, this);\n }\n this.changed();\n };\n /**\n * @param {import(\"../pixel\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with\n * an array of features.\n */\n Layer.prototype.getFeatures = function (pixel) {\n return this.renderer_.getFeatures(pixel);\n };\n /**\n * In charge to manage the rendering of the layer. One layer type is\n * bounded with one layer renderer.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target which the renderer may (but need not) use\n * for rendering its content.\n * @return {HTMLElement} The rendered element.\n */\n Layer.prototype.render = function (frameState, target) {\n var layerRenderer = this.getRenderer();\n if (layerRenderer.prepareFrame(frameState)) {\n return layerRenderer.renderFrame(frameState, target);\n }\n };\n /**\n * Sets the layer to be rendered on top of other layers on a map. The map will\n * not manage this layer in its layers collection, and the callback in\n * {@link module:ol/Map#forEachLayerAtPixel} will receive `null` as layer. This\n * is useful for temporary layers. To remove an unmanaged layer from the map,\n * use `#setMap(null)`.\n *\n * To add the layer to a map and have it managed by the map, use\n * {@link module:ol/Map#addLayer} instead.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Layer.prototype.setMap = function (map) {\n if (this.mapPrecomposeKey_) {\n unlistenByKey(this.mapPrecomposeKey_);\n this.mapPrecomposeKey_ = null;\n }\n if (!map) {\n this.changed();\n }\n if (this.mapRenderKey_) {\n unlistenByKey(this.mapRenderKey_);\n this.mapRenderKey_ = null;\n }\n if (map) {\n this.mapPrecomposeKey_ = listen(map, RenderEventType.PRECOMPOSE, function (evt) {\n var renderEvent = /** @type {import(\"../render/Event.js\").default} */ (evt);\n var layerStatesArray = renderEvent.frameState.layerStatesArray;\n var layerState = this.getLayerState(false);\n // A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both.\n assert(!layerStatesArray.some(function (arrayLayerState) {\n return arrayLayerState.layer === layerState.layer;\n }), 67);\n layerStatesArray.push(layerState);\n }, this);\n this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);\n this.changed();\n }\n };\n /**\n * Set the layer source.\n * @param {SourceType} source The layer source.\n * @observable\n * @api\n */\n Layer.prototype.setSource = function (source) {\n this.set(LayerProperty.SOURCE, source);\n };\n /**\n * Get the renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} The layer renderer.\n */\n Layer.prototype.getRenderer = function () {\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n return this.renderer_;\n };\n /**\n * @return {boolean} The layer has a renderer.\n */\n Layer.prototype.hasRenderer = function () {\n return !!this.renderer_;\n };\n /**\n * Create a renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} A layer renderer.\n * @protected\n */\n Layer.prototype.createRenderer = function () {\n return null;\n };\n /**\n * @inheritDoc\n */\n Layer.prototype.disposeInternal = function () {\n this.setSource(null);\n _super.prototype.disposeInternal.call(this);\n };\n return Layer;\n}(BaseLayer));\n/**\n * Return `true` if the layer is visible and if the provided view state\n * has resolution and zoom levels that are in range of the layer's min/max.\n * @param {State} layerState Layer state.\n * @param {import(\"../View.js\").State} viewState View state.\n * @return {boolean} The layer is visible at the given view state.\n */\nexport function inView(layerState, viewState) {\n if (!layerState.visible) {\n return false;\n }\n var resolution = viewState.resolution;\n if (resolution < layerState.minResolution || resolution >= layerState.maxResolution) {\n return false;\n }\n var zoom = viewState.zoom;\n return zoom > layerState.minZoom && zoom <= layerState.maxZoom;\n}\nexport default Layer;\n//# sourceMappingURL=Layer.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Attribution\n */\nimport { equals } from '../array.js';\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_COLLAPSED } from '../css.js';\nimport { removeChildren, replaceNode } from '../dom.js';\nimport EventType from '../events/EventType.js';\nimport { inView } from '../layer/Layer.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [collapseLabel='»'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nvar Attribution = /** @class */ (function (_super) {\n __extends(Attribution, _super);\n /**\n * @param {Options=} opt_options Attribution options.\n */\n function Attribution(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.ulElement_ = document.createElement('ul');\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsed_ = options.collapsed !== undefined ? options.collapsed : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.overrideCollapsible_ = options.collapsible !== undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsible_ = options.collapsible !== undefined ?\n options.collapsible : true;\n if (!_this.collapsible_) {\n _this.collapsed_ = false;\n }\n var className = options.className !== undefined ? options.className : 'ol-attribution';\n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u00BB';\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.collapseLabel_ = document.createElement('span');\n _this.collapseLabel_.textContent = collapseLabel;\n }\n else {\n _this.collapseLabel_ = collapseLabel;\n }\n var label = options.label !== undefined ? options.label : 'i';\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.label_ = document.createElement('span');\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n }\n var activeLabel = (_this.collapsible_ && !_this.collapsed_) ?\n _this.collapseLabel_ : _this.label_;\n var button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL +\n (_this.collapsed_ && _this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (_this.collapsible_ ? '' : ' ol-uncollapsible');\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(_this.ulElement_);\n element.appendChild(button);\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n _this.renderedAttributions_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n Attribution.prototype.collectSourceAttributions_ = function (frameState) {\n /**\n * Used to determine if an attribution already exists.\n * @type {!Object}\n */\n var lookup = {};\n /**\n * A list of visible attributions.\n * @type {Array}\n */\n var visibleAttributions = [];\n var layerStatesArray = frameState.layerStatesArray;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n if (!inView(layerState, frameState.viewState)) {\n continue;\n }\n var source = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer).getSource();\n if (!source) {\n continue;\n }\n var attributionGetter = source.getAttributions();\n if (!attributionGetter) {\n continue;\n }\n var attributions = attributionGetter(frameState);\n if (!attributions) {\n continue;\n }\n if (!this.overrideCollapsible_ && source.getAttributionsCollapsible() === false) {\n this.setCollapsible(false);\n }\n if (Array.isArray(attributions)) {\n for (var j = 0, jj = attributions.length; j < jj; ++j) {\n if (!(attributions[j] in lookup)) {\n visibleAttributions.push(attributions[j]);\n lookup[attributions[j]] = true;\n }\n }\n }\n else {\n if (!(attributions in lookup)) {\n visibleAttributions.push(attributions);\n lookup[attributions] = true;\n }\n }\n }\n return visibleAttributions;\n };\n /**\n * @private\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n Attribution.prototype.updateElement_ = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var attributions = this.collectSourceAttributions_(frameState);\n var visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n removeChildren(this.ulElement_);\n // append the attributions\n for (var i = 0, ii = attributions.length; i < ii; ++i) {\n var element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n this.renderedAttributions_ = attributions;\n };\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Attribution.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleToggle_();\n };\n /**\n * @private\n */\n Attribution.prototype.handleToggle_ = function () {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n }\n else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n };\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.getCollapsible = function () {\n return this.collapsible_;\n };\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.setCollapsible = function (collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (!collapsible && this.collapsed_) {\n this.handleToggle_();\n }\n };\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.setCollapsed = function (collapsed) {\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n };\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.getCollapsed = function () {\n return this.collapsed_;\n };\n return Attribution;\n}(Control));\n/**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Attribution}\n */\nexport function render(mapEvent) {\n this.updateElement_(mapEvent.frameState);\n}\nexport default Attribution;\n//# sourceMappingURL=Attribution.js.map","/**\n * @module ol/Kinetic\n */\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nvar Kinetic = /** @class */ (function () {\n /**\n * @param {number} decay Rate of decay (must be negative).\n * @param {number} minVelocity Minimum velocity (pixels/millisecond).\n * @param {number} delay Delay to consider to calculate the kinetic\n * initial values (milliseconds).\n */\n function Kinetic(decay, minVelocity, delay) {\n /**\n * @private\n * @type {number}\n */\n this.decay_ = decay;\n /**\n * @private\n * @type {number}\n */\n this.minVelocity_ = minVelocity;\n /**\n * @private\n * @type {number}\n */\n this.delay_ = delay;\n /**\n * @private\n * @type {Array}\n */\n this.points_ = [];\n /**\n * @private\n * @type {number}\n */\n this.angle_ = 0;\n /**\n * @private\n * @type {number}\n */\n this.initialVelocity_ = 0;\n }\n /**\n * FIXME empty description for jsdoc\n */\n Kinetic.prototype.begin = function () {\n this.points_.length = 0;\n this.angle_ = 0;\n this.initialVelocity_ = 0;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n */\n Kinetic.prototype.update = function (x, y) {\n this.points_.push(x, y, Date.now());\n };\n /**\n * @return {boolean} Whether we should do kinetic animation.\n */\n Kinetic.prototype.end = function () {\n if (this.points_.length < 6) {\n // at least 2 points are required (i.e. there must be at least 6 elements\n // in the array)\n return false;\n }\n var delay = Date.now() - this.delay_;\n var lastIndex = this.points_.length - 3;\n if (this.points_[lastIndex + 2] < delay) {\n // the last tracked point is too old, which means that the user stopped\n // panning before releasing the map\n return false;\n }\n // get the first point which still falls into the delay time\n var firstIndex = lastIndex - 3;\n while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n firstIndex -= 3;\n }\n var duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2];\n // we don't want a duration of 0 (divide by zero)\n // we also make sure the user panned for a duration of at least one frame\n // (1/60s) to compute sane displacement values\n if (duration < 1000 / 60) {\n return false;\n }\n var dx = this.points_[lastIndex] - this.points_[firstIndex];\n var dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];\n this.angle_ = Math.atan2(dy, dx);\n this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;\n return this.initialVelocity_ > this.minVelocity_;\n };\n /**\n * @return {number} Total distance travelled (pixels).\n */\n Kinetic.prototype.getDistance = function () {\n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n };\n /**\n * @return {number} Angle of the kinetic panning animation (radians).\n */\n Kinetic.prototype.getAngle = function () {\n return this.angle_;\n };\n return Kinetic;\n}());\nexport default Kinetic;\n//# sourceMappingURL=Kinetic.js.map","/**\n * @module ol/interaction/Property\n */\n/**\n * @enum {string}\n */\nexport default {\n ACTIVE: 'active'\n};\n//# sourceMappingURL=Property.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Interaction\n */\nimport BaseObject from '../Object.js';\nimport { easeOut, linear } from '../easing.js';\nimport InteractionProperty from './Property.js';\n/**\n * Object literal with config options for interactions.\n * @typedef {Object} InteractionOptions\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} handleEvent\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. If the function returns a falsy value, propagation of\n * the event to other interactions in the map's interactions chain will be\n * prevented (this includes functions with no explicit return). The interactions\n * are traversed in reverse order of the interactions collection of the map.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * User actions that change the state of the map. Some are similar to controls,\n * but are not associated with a DOM element.\n * For example, {@link module:ol/interaction/KeyboardZoom~KeyboardZoom} is\n * functionally the same as {@link module:ol/control/Zoom~Zoom}, but triggered\n * by a keyboard event not a button element event.\n * Although interactions do not have a DOM element, some of them do render\n * vectors and so are visible on the screen.\n * @api\n */\nvar Interaction = /** @class */ (function (_super) {\n __extends(Interaction, _super);\n /**\n * @param {InteractionOptions} options Options.\n */\n function Interaction(options) {\n var _this = _super.call(this) || this;\n if (options.handleEvent) {\n _this.handleEvent = options.handleEvent;\n }\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n _this.setActive(true);\n return _this;\n }\n /**\n * Return whether the interaction is currently active.\n * @return {boolean} `true` if the interaction is active, `false` otherwise.\n * @observable\n * @api\n */\n Interaction.prototype.getActive = function () {\n return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));\n };\n /**\n * Get the map associated with this interaction.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Interaction.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event}.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n Interaction.prototype.handleEvent = function (mapBrowserEvent) {\n return true;\n };\n /**\n * Activate or deactivate the interaction.\n * @param {boolean} active Active.\n * @observable\n * @api\n */\n Interaction.prototype.setActive = function (active) {\n this.set(InteractionProperty.ACTIVE, active);\n };\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n Interaction.prototype.setMap = function (map) {\n this.map_ = map;\n };\n return Interaction;\n}(BaseObject));\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number=} opt_duration Duration.\n */\nexport function pan(view, delta, opt_duration) {\n var currentCenter = view.getCenterInternal();\n if (currentCenter) {\n var center = [currentCenter[0] + delta[0], currentCenter[1] + delta[1]];\n view.animateInternal({\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: linear,\n center: view.getConstrainedCenter(center)\n });\n }\n}\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number} delta Delta from previous zoom level.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor Anchor coordinate in the user projection.\n * @param {number=} opt_duration Duration.\n */\nexport function zoomByDelta(view, delta, opt_anchor, opt_duration) {\n var currentZoom = view.getZoom();\n if (currentZoom === undefined) {\n return;\n }\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n var newResolution = view.getResolutionForZoom(newZoom);\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n resolution: newResolution,\n anchor: opt_anchor,\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: easeOut\n });\n}\nexport default Interaction;\n//# sourceMappingURL=Interaction.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport Interaction, { zoomByDelta } from './Interaction.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [delta=1] The zoom delta applied on each double click.\n */\n/**\n * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nvar DoubleClickZoom = /** @class */ (function (_super) {\n __extends(DoubleClickZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DoubleClickZoom(opt_options) {\n var _this = _super.call(this, {\n handleEvent: handleEvent\n }) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {number}\n */\n _this.delta_ = options.delta ? options.delta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n return DoubleClickZoom;\n}(Interaction));\n/**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} (if it was a\n * doubleclick) and eventually zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @this {DoubleClickZoom}\n */\nfunction handleEvent(mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n var browserEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n var map = mapBrowserEvent.map;\n var anchor = mapBrowserEvent.coordinate;\n var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n var view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n mapBrowserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n}\nexport default DoubleClickZoom;\n//# sourceMappingURL=DoubleClickZoom.js.map","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport { assert } from '../asserts.js';\nimport { TRUE, FALSE } from '../functions.js';\nimport { WEBKIT, MAC } from '../has.js';\n/**\n * A function that takes an {@link module:ol/MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport var altKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport var altShiftKeysOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `
`.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport var focus = function (event) {\n return event.target.getTargetElement() === document.activeElement;\n};\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport var always = TRUE;\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport var click = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport var mouseActionButton = function (mapBrowserEvent) {\n var originalEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n return originalEvent.button == 0 &&\n !(WEBKIT && MAC && originalEvent.ctrlKey);\n};\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport var never = FALSE;\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport var pointerMove = function (mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\n};\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport var singleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport var doubleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport var noModifierKeys = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport var platformModifierKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return !originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey;\n};\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport var shiftKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n/**\n * Return `true` if the target element is not editable, i.e. not a ``-,\n * `\n

\n
\n \n \n \n
\n \n \n
\n ")}},{key:"onPositionDelete",value:function(){var t=this;Ie.isConfirmed(de._("positiondelwarn",this.positionIndex+1,Mt.htmlEncode(this.position.trackname)))&&this.position.delete().then((function(){var e,n=t.state.currentTrack;t.state.currentTrack=null,Yt()(e=n.positions).call(e,t.positionIndex,1),n.recalculatePositions(),t.state.currentTrack=n,t.dialog.destroy()})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"updateImage",value:function(){var t=a.a.resolve();return this.model.image!==this.position.image&&(t=null===this.model.image?this.position.imageDelete():this.position.imageAdd(this.fileEl.files[0])),t}},{key:"onPositionUpdate",value:function(){var t,e=this;kt()(t=this.model.comment).call(t),this.validate()&&(this.position.comment=this.model.comment,this.updateImage().then((function(){return e.position.save()})).then((function(){lt.forceUpdate(e.state,"currentTrack"),e.dialog.destroy()})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})))}},{key:"onCancel",value:function(){this.dialog.destroy()}},{key:"validate",value:function(){return!(this.model.comment===this.position.comment&&this.model.image===this.position.image)}}]),n}(be);function We(t){var e=function(){if("undefined"==typeof Reflect||!D.a)return!1;if(D.a.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(D()(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=H()(t);if(e){var i=H()(this).constructor;n=D()(r,arguments,i)}else n=r.apply(this,arguments);return B()(this,n)}}var Je=function(t){R()(n,t);var e=We(n);function n(t){var r;return c()(this,n),(r=e.call(this,{markerOver:null,markerSelect:null,onMenuToggle:null,speedVisible:!1,altitudeVisible:!1})).state=t,r.mapElement=document.querySelector("#map-canvas"),r.speedEl=r.getBoundElement("speedVisible"),r.altitudeEl=r.getBoundElement("altitudeVisible"),r.styleEl=r.getBoundElement("trackColor"),r.savedBounds=null,r.api=null,r}return h()(n,[{key:"init",value:function(){return this.bindAll(),this.setObservers(),this}},{key:"loadMapAPI",value:function(t){var e=this,n=this.api;if(this.api=null,n){try{this.savedBounds=n.getBounds()}catch(t){this.savedBounds=null}n.cleanup()}(n=this.getApi(t)).init().then((function(){e.api=n,e.onReady()})).catch((function(e){var n=de._("apifailure",t);e&&e.message&&(n+=" (".concat(e.message,")")),_e.error(n,e),he.mapApi="gmaps"===t?"openlayers":"gmaps"}))}},{key:"getApi",value:function(t){return"gmaps"===t?new He(this):new Xe(this)}},{key:"onReady",value:function(){if(this.state.currentTrack){var t=!0;this.savedBounds&&(this.api.zoomToBounds(this.savedBounds),t=!1),this.displayTrack(this.state.currentTrack,t)}}},{key:"setObservers",value:function(){var t=this;he.onChanged("mapApi",(function(e){t.loadMapAPI(e),t.toggleStyleOptions(),t.toggleStyleMenu()})),this.state.onChanged("currentTrack",(function(e){t.api&&(t.api.clearMap(),e&&(lt.observe(e,"positions",(function(){t.displayTrack(e,!1),t.api.zoomToExtent()})),t.displayTrack(e,!0)),t.toggleStyleOptions())})),this.state.onChanged("history",(function(){var e=t.state.history;t.api&&e&&!e.trackId&&(e.mapApi?he.mapApi=e.mapApi:(e.mapParams?t.api.updateState(e.mapParams):t.api.zoomToExtent(),t.state.history=null))})),this.model.onMenuToggle=function(){return t.onMapResize()},this.onChanged("speedVisible",(function(e){e&&(t.model.altitudeVisible=!1),t.setTrackStyle()})),this.onChanged("altitudeVisible",(function(e){e&&(t.model.speedVisible=!1),t.setTrackStyle()}))}},{key:"displayTrack",value:function(t,e){var n=this;this.state.jobStart(),e&&this.state.history&&this.state.history.mapParams&&(this.api.updateState(this.state.history.mapParams),e=!1),this.state.history=null,this.setTrackStyle(),this.api.displayTrack(t,e).finally((function(){return n.state.jobStop()}))}},{key:"onMapResize",value:function(){this.api&&this.api.updateSize()}},{key:"toggleStyleOptions",value:function(){var t=this.state.currentTrack;this.speedEl.disabled=!t||!t.hasSpeeds||t.length<=1,this.altitudeEl.disabled=!t||!t.hasAltitudes||t.length<=1}},{key:"toggleStyleMenu",value:function(){"openlayers"===he.mapApi?this.styleEl.style.display="block":this.styleEl.style.display="none"}},{key:"setTrackStyle",value:function(){var t=this.state.currentTrack;this.api&&t&&(this.model.speedVisible&&t.hasSpeeds?this.setSpeedStyle():this.model.altitudeVisible&&t.hasAltitudes?this.setAltitudeStyle():this.api.setTrackDefaultStyle())}},{key:"setSpeedStyle",value:function(){var t=this.state.currentTrack,e={minValue:0,maxValue:t.maxSpeed,minColor:[0,255,0],maxColor:[255,0,0]};this.api.setTrackGradientStyle(t,"speed",e)}},{key:"setAltitudeStyle",value:function(){var t=this.state.currentTrack,e={minValue:t.minAltitude,maxValue:t.maxAltitude,minColor:[0,255,0],maxColor:[255,0,0]};this.api.setTrackGradientStyle(t,"altitude",e)}},{key:"getPopupElement",value:function(t){var e,n,r,o,a,s,l,u,c,f,h,d,p,v,m,y,g,b,x,w,k,S,E,A,L,M,O,P,_,C,T,I,j,D=this,U=this.state.currentTrack.positions[t],z=this.state.currentTrack.length,N=this.state.currentTrack.user,R=pe.user&&(pe.isAdmin||pe.user.id===N.id),V="–––",B="–––";if(U.timestamp>0){var F,H=Mt.getTimeString(new Date(1e3*U.timestamp));V=H.date,B=i()(F="".concat(H.time,'')).call(F,H.zone,"")}var q,G="";if("gps"===U.provider)G=i()(q=' '.concat(de._(');else if("network"===U.provider){var X;G=i()(X=' '.concat(de._(')}var Y="";R&&(Y=''.concat(de._("editposition"),""));var Z,W,J,$,Q,K,tt,et,nt,rt="";this.state.showLatest||(rt=i()(Z=i()(W=i()(J=i()($=i()(Q=i()(K=i()(tt=i()(et=i()(nt='
\n '.concat(de._(
\n ')).call(nt,de._( ')).call(tt,de.getLocaleDuration(U.totalSeconds),'
\n ')).call(K,de._( ')).call($,de.getLocaleSpeed(U.totalSpeed,!0),'
\n ')).call(J,de._( ')).call(Z,de.getLocaleDistanceMajor(U.totalMeters,!0),"
\n
"));var it=i()(e=i()(n=i()(r=i()(o=i()(a=i()(s=i()(l=i()(u=i()(c=i()(f=i()(h=i()(d=i()(p=i()(v=i()(m=i()(y=i()(g=i()(b=i()(x=i()(w=i()(k=i()(S=i()(E='
\n
'.concat(de._( ')).call(S,Mt.htmlEncode(U.username),'
\n
')).call(k,de._( ')).call(x,Mt.htmlEncode(U.trackname),'
\n
\n
\n ')).call(b,U.hasComment()?'
'.concat(Mt.htmlEncode(U.comment).replace(/\n/,"
"),"
"):"","\n ")).call(g,U.hasImage()?'
image
'):"",'\n
\n ')).call(y,de._( ')).call(v,V,'
\n ')).call(p,de._( ')).call(h,B,"
\n ")).call(f,null!==U.speed?i()(A=i()(L=''.concat(de._(')).call(A,de.getLocaleSpeed(U.speed,!0),"
"):"","\n ")).call(c,null!==U.altitude?i()(M=i()(O=''.concat(de._(')).call(M,de.getLocaleAltitude(U.altitude,!0),"
"):"","\n ")).call(u,null!==U.accuracy?i()(P=i()(_=i()(C=''.concat(de._(')).call(_,de.getLocaleAccuracy(U.accuracy,!0))).call(P,G,"
"):"","\n ")).call(l,null!==U.bearing?i()(T=i()(I=i()(j=''.concat(de._(')).call(T,U.bearing,"°
"):"",'\n ')).call(s,de._(')).call(o,de.getLocaleCoordinates(U),"
\n
")).call(r,rt,'
\n
')).call(n,de._("pointof",t+1,z),"
")).call(e,Y,"
"),ot=document.createElement("div");(ot.setAttribute("id","popup"),ot.innerHTML=it,U.hasImage())&&(ot.querySelector("#pimage img").onclick=function(){var t=new Ie('image'));t.element.querySelector("#modal-close").onclick=function(){return t.destroy()},t.element.classList.add("image"),t.show()});R&&(ot.querySelector("#editposition").onclick=function(){new Ze(D.state,t).init()});return ot}}],[{key:"getMarkerPath",value:function(t){return t?"M15,34.911c0,0,0.359-3.922,1.807-8.588c0.414-1.337,1.011-2.587,2.495-4.159c1.152-1.223,3.073-2.393,3.909-4.447c1.681-6.306-3.676-9.258-8.211-9.258c-4.536,0-9.893,2.952-8.211,9.258c0.836,2.055,2.756,3.225,3.91,4.447c1.484,1.572,2.08,2.822,2.495,4.159C14.64,30.989,15,34.911,15,34.911z M18,15.922c0,1.705-1.342,3.087-2.999,3.087c-1.657,0-3-1.382-3-3.087c0-1.704,1.343-3.086,3-3.086C16.658,12.836,18,14.218,18,15.922z":"M14.999,34.911c0,0,0.232-1.275,1.162-4.848c0.268-1.023,0.652-1.98,1.605-3.184c0.742-0.937,1.975-1.832,2.514-3.404c1.082-4.828-2.363-7.088-5.281-7.088c-2.915,0-6.361,2.26-5.278,7.088c0.538,1.572,1.771,2.468,2.514,3.404c0.953,1.203,1.337,2.16,1.604,3.184C14.77,33.635,14.999,34.911,14.999,34.911z"}},{key:"getMarkerExtra",value:function(t){var e,n=t?"M26.074,13.517":"M23.328,20.715",r=t?"M28.232,10.942":"M25.486,18.141";return i()(e='\n ')}},{key:"getSvgSrc",value:function(t,e,r){var o,a,s=i()(o=i()(a='\n ')).call(o,r?n.getMarkerExtra(e):"","");return"data:image/svg+xml,".concat(encodeURIComponent(s))}}]),n}(be),$e=n(170),Qe=n.n($e);function Ke(t){var e=function(){if("undefined"==typeof Reflect||!D.a)return!1;if(D.a.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(D()(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=H()(t);if(e){var i=H()(this).constructor;n=D()(r,arguments,i)}else n=r.apply(this,arguments);return B()(this,n)}}var tn=function(t){R()(n,t);var e=Ke(n);function n(t){var r;return c()(this,n),(r=e.call(this,{onTrackDelete:null,onTrackUpdate:null,onCancel:null,trackname:""})).track=t.state.currentTrack,r.trackVM=t,r.model.onTrackDelete=function(){return r.onTrackDelete()},r.model.onTrackUpdate=function(){return r.onTrackUpdate()},r.model.onCancel=function(){return r.onCancel()},r}return h()(n,[{key:"init",value:function(){var t=this.getHtml();this.dialog=new Ie(t),this.dialog.show(),this.bindAll(this.dialog.element)}},{key:"getHtml",value:function(){var t,e,n,r,o,a;return i()(t=i()(e=i()(n=i()(r=i()(o=i()(a='\n
")).call(a,de._("editingtrack","".concat(Mt.htmlEncode(this.track.name),"")),'
\n
\n
\n \n \n
\n \n \n
\n
")}},{key:"onTrackDelete",value:function(){var t=this;Ie.isConfirmed(de._("trackdelwarn",Mt.htmlEncode(this.track.name)))&&this.track.delete().then((function(){t.trackVM.onTrackDeleted(),t.dialog.destroy()})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onTrackUpdate",value:function(){var t=this;this.validate()&&(this.track.setName(this.model.trackname),this.track.saveMeta().then((function(){return t.dialog.destroy()})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})))}},{key:"onCancel",value:function(){this.dialog.destroy()}},{key:"validate",value:function(){return this.model.trackname!==this.track.name&&(!!this.model.trackname||(_e.error(de._("allrequired")),!1))}}]),n}(be);function en(t){var e=function(){if("undefined"==typeof Reflect||!D.a)return!1;if(D.a.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(D()(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=H()(t);if(e){var i=H()(this).constructor;n=D()(r,arguments,i)}else n=r.apply(this,arguments);return B()(this,n)}}var nn=function(t){R()(n,t);var e=en(n);function n(t){var r;c()(this,n),(r=e.call(this,{trackList:[],currentTrackId:"",showLatest:!1,autoReload:!1,inputFile:!1,summary:!1,onReload:null,onExportGpx:null,onExportKml:null,onImportGpx:null,onTrackEdit:null})).setClickHandlers();var i=document.querySelector("#track");return r.importEl=document.querySelector("#input-file"),r.editEl=r.getBoundElement("onTrackEdit"),r.select=new ft(i),r.state=t,r.timerId=0,r}return h()(n,[{key:"init",value:function(){return this.setObservers(),this.bindAll(),this}},{key:"setObservers",value:function(){var t=this;this.onChanged("trackList",(function(e){t.select.setOptions(e)})),this.onChanged("currentTrackId",(function(e){t.onTrackSelect(e)})),this.onChanged("inputFile",(function(e){e&&t.onImport()})),this.onChanged("autoReload",(function(e){t.autoReload(e)})),this.onChanged("showLatest",(function(e){t.state.showLatest=e,t.onReload(!0)})),this.state.onChanged("currentUser",(function(e){e?(t.loadTrackList(),pe.user&&(pe.isAdmin||pe.user.id===e.id)&&n.setMenuVisible(t.editEl,!0)):(t.model.currentTrackId="",t.model.trackList=[],n.setMenuVisible(t.editEl,!1))})),this.state.onChanged("currentTrack",(function(e){t.renderSummary(),e&<.observe(e,"positions",(function(){t.renderSummary()}))})),this.state.onChanged("showAllUsers",(function(e){e&&t.loadAllUsersPosition()})),he.onChanged("interval",(function(){t.timerId&&(t.stopAutoReload(),t.startAutoReload())})),this.state.onChanged("history",(function(e){e&&!e.userId&&e.trackId&&(t.model.currentTrackId=e.trackId.toString())}))}},{key:"setClickHandlers",value:function(){var t=this;this.model.onReload=function(){return t.onReload()};var e=function(e){return function(){t.state.currentTrack&&t.state.currentTrack.export(e)}};this.model.onExportGpx=e("gpx"),this.model.onExportKml=e("kml"),this.model.onImportGpx=function(){return t.importEl.click()},this.model.onTrackEdit=function(){return t.showDialog()}}},{key:"onReload",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.state.showLatest?this.state.showAllUsers?this.loadAllUsersPosition():this.state.currentUser&&this.onUserLastPosition():this.state.currentTrack instanceof Ut?this.onTrackUpdate(t):this.state.currentTrack instanceof Tt?this.state.currentTrack=null:this.state.currentUser&&this.loadTrackList()}},{key:"onImport",value:function(){var t=this,e=this.importEl.parentElement,n=e.elements.MAX_FILE_SIZE.value;this.importEl.files&&1===this.importEl.files.length&&this.importEl.files[0].size>n?_e.error(de._("isizefailure",n)):pe.isAuthenticated?(this.state.jobStart(),Ut.import(e,pe.user).then((function(e){e.length&&(e.length>1&&_e.toast(de._("imultiple",e.length)),t.model.trackList=i()(e).call(e,t.model.trackList),t.model.currentTrackId=e[0].listValue)})).catch((function(t){var e;return _e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})).finally((function(){t.model.inputFile="",t.state.jobStop()}))):_e.error(de._("notauthorized"))}},{key:"onTrackSelect",value:function(t){var e,n=this,r=Y()(e=this.model.trackList).call(e,(function(e){return e.listValue===t}));r?r.isEqualTo(this.state.currentTrack)||(this.state.jobStart(),r.fetchPositions().then((function(){var t;i()(t="currentTrack id: ".concat(r.id,", loaded ")).call(t,r.length," positions"),n.state.currentTrack=r,n.model.showLatest&&(n.model.showLatest=!1)})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})).finally((function(){return n.state.jobStop()}))):this.state.currentTrack=null}},{key:"onTrackUpdate",value:function(t){t&&this.state.currentTrack.clear(),this.state.currentTrack.fetchPositions().catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onUserLastPosition",value:function(){var t=this;this.state.currentUser.fetchLastPosition().then((function(e){var n;e&&(Y()(n=t.model.trackList).call(n,(function(t){return t.listValue===e.listValue}))||t.model.trackList.unshift(e),t.state.currentTrack=e,t.model.currentTrackId=e.listValue)})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"loadAllUsersPosition",value:function(){var t=this;this.state.jobStart(),Tt.fetchLatest().then((function(e){e&&(t.model.trackList=[],t.model.currentTrackId="",t.state.currentTrack=e)})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})).finally((function(){return t.state.jobStop()}))}},{key:"loadTrackList",value:function(){var t=this;this.state.jobStart(),Ut.fetchList(this.state.currentUser).then((function(e){t.model.trackList=e,e.length?t.state.showLatest?t.onUserLastPosition():t.state.history?t.model.currentTrackId=t.state.history.trackId.toString():t.model.currentTrackId=e[0].listValue:t.model.currentTrackId=""})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})).finally((function(){return t.state.jobStop()}))}},{key:"showDialog",value:function(){new tn(this).init()}},{key:"onTrackDeleted",value:function(){var t,e,n=Wt()(t=this.model.trackList).call(t,this.state.currentTrack);(this.state.currentTrack=null,-1!==n)&&(Yt()(e=this.model.trackList).call(e,n,1),this.model.trackList.length?(n>=this.model.trackList.length&&(n=this.model.trackList.length-1),this.model.currentTrackId=this.model.trackList[n].listValue):this.model.currentTrackId="")}},{key:"autoReload",value:function(t){t?this.startAutoReload():this.stopAutoReload()}},{key:"startAutoReload",value:function(){var t=this;this.timerId=Qe()((function(){return t.onReload()}),1e3*he.interval)}},{key:"stopAutoReload",value:function(){clearInterval(this.timerId),this.timerId=0}},{key:"renderSummary",value:function(){var t=this.state.currentTrack;if(t&&t.hasPositions){var e=t.positions[t.length-1];if(this.state.showLatest){var n,r,o,a=new Date,s=new Date(1e3*e.timestamp),l=Mt.getTimeString(s),u=s.toDateString()!==a.toDateString()?"".concat(l.date,"
"):"",c=i()(n="".concat(l.time,'')).call(n,l.zone,"");this.model.summary=i()(r=i()(o='\n \n ")).call(o,u,"\n ")).call(r,c)}else{var f,h,d,p,v,m,y,g,b=i()(f=i()(h=i()(d=i()(p=i()(v=i()(m='\n \n
')).call(m,de._( ')).call(p,de.getLocaleDistanceMajor(e.totalMeters,!0),'
\n
')).call(d,de._( ')).call(f,de.getLocaleDuration(e.totalSeconds),"
");if(t.hasSpeeds)b+=i()(y=i()(g='
'.concat(de._( ')).call(y,de.getLocaleSpeed(t.maxSpeed,!0),"
");if(t.hasAltitudes){var x,w,k,S="".concat(de.getLocaleAltitude(t.maxAltitude,!0));if(t.minAltitude!==t.maxAltitude)S=i()(k="".concat(de.getLocaleAltitude(t.minAltitude),"–")).call(k,S);b+=i()(x=i()(w='
'.concat(de._( ')).call(x,S,"
")}this.model.summary=b}}else this.model.summary=""}}],[{key:"setMenuVisible",value:function(t,e){t&&(e?t.classList.remove("menu-hidden"):t.classList.add("menu-hidden"))}}]),n}(be),rn=n(171),on=n.n(rn);function an(t){var e=function(){if("undefined"==typeof Reflect||!D.a)return!1;if(D.a.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(D()(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=H()(t);if(e){var i=H()(this).constructor;n=D()(r,arguments,i)}else n=r.apply(this,arguments);return B()(this,n)}}var sn=function(t){R()(n,t);var e=an(n);function n(t,r){var i;return c()(this,n),(i=e.call(this,{onUserDelete:null,onUserUpdate:null,onPassChange:null,onUserAdd:null,onCancel:null,passVisibility:!1,login:null,password:null,password2:null,oldPassword:null,admin:!1})).user=t.state.currentUser,i.type=r,i.userVM=t,i.model.onUserDelete=function(){return i.onUserDelete()},i.model.onUserUpdate=function(){return i.onUserUpdate()},i.model.onPassChange=function(){return i.onPassChange()},i.model.onUserAdd=function(){return i.onUserAdd()},i.model.onCancel=function(){return i.onCancel()},i}return h()(n,[{key:"init",value:function(){var t=this.getHtml();this.dialog=new Ie(t),this.dialog.show(),this.bindAll(this.dialog.element);var e=this.getBoundElement("passInput");e&&this.onChanged("passVisibility",(function(){"none"===e.style.display?e.style.display="block":e.style.display="none"}))}},{key:"onUserDelete",value:function(){var t=this;Ie.isConfirmed(de._("userdelwarn",Mt.htmlEncode(this.user.login)))&&this.user.delete().then((function(){t.userVM.onUserDeleted(),t.dialog.destroy()})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onUserUpdate",value:function(){var t=this;if(this.validate()){var e=this.model.passVisibility?this.model.password:null;this.user.modify(this.model.admin,e).then((function(){return t.dialog.destroy()})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}}},{key:"onPassChange",value:function(){var t=this;this.model.passVisibility=!0,this.validate()&&pe.user.setPassword(this.model.password,this.model.oldPassword).then((function(){return t.dialog.destroy()})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onUserAdd",value:function(){var t=this;this.model.passVisibility=!0,this.validate()&&Vt.add(this.model.login,this.model.password,this.model.admin).then((function(e){t.userVM.onUserAdded(e),t.dialog.destroy()})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)}))}},{key:"onCancel",value:function(){this.dialog.destroy()}},{key:"validate",value:function(){if("add"===this.type){if(!this.model.login)return _e.error(de._("allrequired")),!1}else if("pass"===this.type&&!this.model.oldPassword)return _e.error(de._("allrequired")),!1;if(this.model.passVisibility){if(!this.model.password||!this.model.password2)return _e.error(de._("allrequired")),!1;if(this.model.password!==this.model.password2)return _e.error(de._("passnotmatch")),!1;if(!he.validPassStrength(this.model.password))return _e.error(de.getLocalePassRules()),!1}return!0}},{key:"getHtml",value:function(){var t,e,n,r,o,a,s,l,u,c,f,h,d,p,v,m,y,g,b,x,w,k,S,E,A="",L="";switch(this.type){case"add":S="onUserAdd",L=i()(t="\n '),E=i()(e=i()(n=i()(r=i()(o="\n \n \n \n \n ');break;case"edit":S="onUserUpdate",A=i()(a='\n
")).call(a,de._("editinguser","".concat(Mt.htmlEncode(this.user.login),"")),'
\n
'),E=i()(s=i()(l=i()(u=i()(c=i()(f=i()(h="\n
\n
\n \n \n \n \n
\n \n ");break;case"pass":S="onPassChange",E=i()(d=i()(p=i()(v=i()(m=i()(y="\n \n \n \n \n ');break;default:throw new Error("Unknown dialog type: ".concat(this.type))}return i()(g=i()(b=i()(x=i()(w=i()(k="".concat(A,'\n
\n ')).call(k,L,"\n ")).call(w,E,'\n
\n \n \n
\n
")}}]),n}(be);function ln(t){var e=function(){if("undefined"==typeof Reflect||!D.a)return!1;if(D.a.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(D()(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=H()(t);if(e){var i=H()(this).constructor;n=D()(r,arguments,i)}else n=r.apply(this,arguments);return B()(this,n)}}var un=function(t){R()(n,t);var e=ln(n);function n(t){var r;c()(this,n),(r=e.call(this,{userList:[],currentUserId:"0",onUserEdit:null,onUserAdd:null,onPasswordChange:null})).setClickHandlers();var i=document.querySelector("#user");return r.editEl=r.getBoundElement("onUserEdit"),r.select=new ft(i,de._("suser"),"- ".concat(de._("allusers")," -")),r.state=t,r}return h()(n,[{key:"setClickHandlers",value:function(){var t=this;this.model.onUserEdit=function(){return t.showDialog("edit")},this.model.onUserAdd=function(){return t.showDialog("add")},this.model.onPasswordChange=function(){return t.showDialog("pass")}}},{key:"init",value:function(){var t=this;return this.setObservers(this.state),this.bindAll(),Vt.fetchList().then((function(e){if(t.model.userList=e,e.length){var n=e[0].listValue;if(t.state.history)n=t.state.history.userId.toString();else if(pe.isAuthenticated){var r,i=Y()(r=t.model.userList).call(r,(function(t){return t.listValue===pe.user.listValue}));i&&(n=i.listValue)}t.model.currentUserId=n}})).catch((function(t){var e;_e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t.message),t)})),this}},{key:"setObservers",value:function(t){var e=this;this.onChanged("userList",(function(t){e.select.setOptions(t)})),this.onChanged("currentUserId",(function(t){var r;e.state.showAllUsers=t===ft.allValue,e.state.currentUser=Y()(r=e.model.userList).call(r,(function(e){return e.listValue===t}))||null,n.setMenuVisible(e.editEl,null!==e.state.currentUser&&!e.state.currentUser.isEqualTo(pe.user))})),t.onChanged("showLatest",(function(t){t?e.select.showAllOption():e.select.hideAllOption()})),t.onChanged("history",(function(t){t&&t.userId&&(e.model.currentUserId=t.userId.toString())}))}},{key:"showDialog",value:function(t){new sn(this,t).init()}},{key:"onUserAdded",value:function(t){var e;this.model.userList.push(t),on()(e=this.model.userList).call(e,(function(t,e){return t.login>e.login?1:-1}))}},{key:"onUserDeleted",value:function(){var t,e,n=Wt()(t=this.model.userList).call(t,this.state.currentUser);(this.state.currentUser=null,-1!==n)&&(Yt()(e=this.model.userList).call(e,n,1),this.model.userList.length?(n>=this.model.userList.length&&(n=this.model.userList.length-1),this.model.currentUserId=this.model.userList[n].listValue):this.model.currentUserId="0")}}],[{key:"setMenuVisible",value:function(t,e){t&&(e?t.classList.remove("menu-hidden"):t.classList.add("menu-hidden"))}}]),n}(be),cn=n(172),fn=n.n(cn),hn=function(){function t(e){c()(this,t),this.state=e,this.skipPush=!1}return h()(t,[{key:"init",value:function(){var t=this;return this.state.onChanged("mapParams",(function(){return t.pushState()})),window.addEventListener("popstate",(function(e){if(null!==e.state){var n=t.state.currentTrack,r=t.state.currentUser,i={title:e.state.title,userId:r&&r.id===e.state.userId?null:e.state.userId,trackId:n&&n.id===e.state.trackId?null:e.state.trackId,mapApi:he.mapApi===e.state.mapApi?null:e.state.mapApi,mapParams:e.state.mapParams};t.onPop(i),t.skipPush=!0}})),this}},{key:"onPop",value:function(t){var e,n,r;(t&&i()(e=i()(n="".concat(t.trackId,"/")).call(n,t.mapApi,"/")).call(e,t.mapParams),this.state.history=t,t)&&(document.title=i()(r="".concat(de._("title")," ")).call(r,t.title))}},{key:"pushState",value:function(){if(this.skipPush)this.skipPush=!1;else if(null!==this.state.currentUser&&null!==this.state.currentTrack){var e=this.getState(),n=window.history.state;if(!n||!Mt.isDeepEqual(n,e)){var r,o,a=t.getHash(e);i()(r="pushState: ".concat(a," => ")).call(r,e),window.history.pushState(e,e.title,a),document.title=i()(o="".concat(de._("title")," ")).call(o,e.title)}}}},{key:"getState",value:function(){return{title:this.state.currentTrack.name,userId:this.state.currentUser.id,trackId:this.state.currentTrack.id,mapApi:he.mapApi,mapParams:this.state.mapParams}}}],[{key:"parseHash",value:function(){return t.parse(window.location.hash)}},{key:"parse",value:function(t){var e=t.replace("#","").split("/");fn()(e).call(e);var n=Et()(e.pop());if(!isNaN(n)){var r="openlayers";"g"===e.pop()&&(r="gmaps");var o=null;return e.length>=4&&((o={}).center=[xt()(e.pop()),xt()(e.pop())],o.zoom=xt()(e.pop()),o.rotation=xt()(e.pop())),Ut.getMeta(n).then((function(t){var e=t.userId;return{title:t.name,userId:e,trackId:n,mapApi:r,mapParams:o}})).catch((function(t){var e;return i()(e="Ignoring unknown track ".concat(n," ")).call(e,t),null}))}return a.a.resolve(null)}},{key:"getHash",value:function(t){var e,n,r,o=i()(e="#".concat(t.trackId,"/")).call(e,t.mapApi.charAt(0));t.mapParams&&(o+=i()(n="/".concat(t.mapParams.center[0],"/")).call(n,t.mapParams.center[1]),o+=i()(r="/".concat(t.mapParams.zoom,"/")).call(r,t.mapParams.rotation));return o}}]),t}(),dn=function(){function t(e){c()(this,t),this.spinner=null,this.state=e}return h()(t,[{key:"init",value:function(){var t=this;this.state.onChanged("activeJobs",(function(e){e>0?t.spinner||(t.spinner=_e.spinner()):t.spinner&&(t.spinner.destroy(),t.spinner=null)}))}}]),t}(),pn=function(){function t(){c()(this,t),this.currentTrack=null,this.currentUser=null,this.showLatest=!1,this.showAllUsers=!1,this.activeJobs=0,this.mapParams=null,this.history=null}return h()(t,[{key:"jobStart",value:function(){this.activeJobs++}},{key:"jobStop",value:function(){this.activeJobs--}},{key:"onChanged",value:function(t,e){lt.observe(this,t,e)}}]),t}(),vn=ce.waitForDom(),mn=fe.initialize(),yn=hn.parseHash();a.a.all([vn,mn,yn]).then((function(t){var e,n,r,i,o,a,s,l,u,c;e=t[2],n=new pn,r=new hn(n),i=new dn(n),o=new Fe(n),a=new un(n),s=new nn(n),l=new Je(n),u=new Se(n),c=new Re(n),r.init().onPop(e),i.init(),o.init(),a.init(),s.init(),l.init().loadMapAPI(he.mapApi),u.init(),c.init(),l.onChanged("markerOver",(function(t){null!==t?u.onPointOver(t):u.onPointOut()})),l.onChanged("markerSelect",(function(t){null!==t?u.onPointSelect(t):u.onPointUnselect()})),u.onChanged("pointSelected",(function(t){null!==t&&l.api.animateMarker(t)}))})).catch((function(t){var e;return _e.error(i()(e="".concat(de._("actionfailure"),"\n")).call(e,t))}))}]); +!function(t){function e(e){for(var n,i,o=e[0],a=e[1],s=0,u=[];sv;v++)if((y=f?x(i(b=t[v])[0],b[1]):x(t[v]))&&y instanceof c)return y;return new c(!1)}d=p.call(t)}for(g=d.next;!(b=g.call(d)).done;)if("object"==r(y=u(d,x,b.value,f))&&y&&y instanceof c)return y;return new c(!1)}).stop=function(t){return new c(!0,t)}},function(t,e,n){t.exports=n(193)},function(t,e,n){t.exports=n(194)},function(t,e,n){t.exports=n(213)},function(t,e,n){var r=n(10),i=n(28),o=n(99),a=n(32).f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});i(e,t)||a(e,t,{value:o.f(t)})}},function(t,e){function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports=function(t){return"object"===n(t)?null!==t:"function"==typeof t}},function(t,e,n){var r=n(14);t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,e,n){var r=n(19);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(10);t.exports=function(t){return r[t+"Prototype"]}},function(t,e,n){var r=n(10),i=n(16),o=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?o(r[t])||o(i[t]):r[t]&&r[t][e]||i[t]&&i[t][e]}},function(t,e,n){t.exports=n(188)},function(t,e,n){var r=n(26),i=n(108),o=n(11),a=n(69),s=Object.defineProperty;e.f=r?s:function(t,e,n){if(o(t),e=a(e,!0),o(n),i)try{return s(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){t.exports=n(327)},function(t,e,n){t.exports=n(269)},function(t,e,n){t.exports=n(310)},function(t,e,n){var r=n(26),i=n(32),o=n(49);t.exports=r?function(t,e,n){return i.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(68);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(15),i=n(98);t.exports=r?i:function(t){return Map.prototype.entries.call(t)}},function(t,e,n){var r=n(222),i=n(100);function o(e){return t.exports=o="function"==typeof i&&"symbol"==typeof r?function(t){return typeof t}:function(t){return t&&"function"==typeof i&&t.constructor===i&&t!==i.prototype?"symbol":typeof t},o(e)}t.exports=o},function(t,e,n){t.exports=n(263)},function(t,e,n){var r=n(85),i=n(68);t.exports=function(t){return r(i(t))}},function(t,e,n){var r=n(26),i=n(14),o=n(28),a=Object.defineProperty,s={},l=function(t){throw t};t.exports=function(t,e){if(o(s,t))return s[t];e||(e={});var n=[][t],u=!!o(e,"ACCESSORS")&&e.ACCESSORS,c=o(e,0)?e[0]:l,f=o(e,1)?e[1]:void 0;return s[t]=!!n&&!i((function(){if(u&&!r)return!0;var t={length:-1};u?a(t,1,{enumerable:!0,get:l}):t[1]=1,n.call(t,c,f)}))}},function(t,e,n){var r=n(70),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){"use strict";var r=n(178).charAt,i=n(45),o=n(92),a="String Iterator",s=i.set,l=i.getterFor(a);o(String,"String",(function(t){s(this,{type:a,string:String(t),index:0})}),(function(){var t,e=l(this),n=e.string,i=e.index;return i>=n.length?{value:void 0,done:!0}:(t=r(n,i),e.index+=t.length,{value:t,done:!1})}))},function(t,e,n){var r,i,o,a=n(179),s=n(16),l=n(25),u=n(36),c=n(28),f=n(74),h=n(61),d=s.WeakMap;if(a){var p=new d,v=p.get,m=p.has,y=p.set;r=function(t,e){return y.call(p,t,e),e},i=function(t){return v.call(p,t)||{}},o=function(t){return m.call(p,t)}}else{var g=f("state");h[g]=!0,r=function(t,e){return u(t,g,e),e},i=function(t){return c(t,g)?t[g]:{}},o=function(t){return c(t,g)}}t.exports={set:r,get:i,has:o,enforce:function(t){return o(t)?i(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!l(e)||(n=i(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},function(t,e,n){var r=n(95),i=n(32).f,o=n(36),a=n(28),s=n(181),l=n(17)("toStringTag");t.exports=function(t,e,n,u){if(t){var c=n?t:t.prototype;a(c,l)||i(c,l,{configurable:!0,value:e}),u&&!r&&o(c,"toString",s)}}},function(t,e,n){n(120);var r=n(183),i=n(16),o=n(55),a=n(36),s=n(51),l=n(17)("toStringTag");for(var u in r){var c=i[u],f=c&&c.prototype;f&&o(f)!==l&&a(f,l,u),s[u]=s.Array}},function(t,e,n){t.exports=n(301)},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r,i=n(11),o=n(180),a=n(94),s=n(61),l=n(119),u=n(86),c=n(74),f=c("IE_PROTO"),h=function(){},d=function(t){return"