@signalk/freeboard-sk 2.13.1 → 2.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/package.json +1 -1
  3. package/plugin/index.js +2 -2
  4. package/public/{852.e15741f1d2b68244.js → 852.6ba8f6c9e69be550.js} +1 -1
  5. package/public/assets/help/img/anchor_watch.png +0 -0
  6. package/public/assets/help/img/anchor_watch_2.png +0 -0
  7. package/public/assets/help/img/anchor_watch_3.png +0 -0
  8. package/public/assets/help/index.html +74 -26
  9. package/public/assets/img/atons/basestation.svg +59 -0
  10. package/public/assets/img/atons/real-aton.svg +78 -0
  11. package/public/assets/img/atons/real-danger.svg +144 -0
  12. package/public/assets/img/atons/real-east.svg +67 -0
  13. package/public/assets/img/atons/real-north.svg +67 -0
  14. package/public/assets/img/atons/real-port.svg +85 -0
  15. package/public/assets/img/atons/real-safe.svg +76 -0
  16. package/public/assets/img/atons/real-south.svg +67 -0
  17. package/public/assets/img/atons/real-special.svg +59 -0
  18. package/public/assets/img/atons/real-starboard.svg +73 -0
  19. package/public/assets/img/atons/real-west.svg +67 -0
  20. package/public/assets/img/atons/virtual-aton.svg +81 -0
  21. package/public/assets/img/atons/virtual-danger.svg +166 -0
  22. package/public/assets/img/atons/virtual-east.svg +70 -0
  23. package/public/assets/img/atons/virtual-north.svg +73 -0
  24. package/public/assets/img/atons/virtual-port.svg +85 -0
  25. package/public/assets/img/atons/virtual-safe.svg +87 -0
  26. package/public/assets/img/atons/virtual-south.svg +70 -0
  27. package/public/assets/img/atons/virtual-special.svg +65 -0
  28. package/public/assets/img/atons/virtual-starboard.svg +79 -0
  29. package/public/assets/img/atons/virtual-west.svg +70 -0
  30. package/public/index.html +2 -2
  31. package/public/main.9fed24056d8db0f4.js +1 -0
  32. package/public/{runtime.de5013e09a888d20.js → runtime.9282c2200de04537.js} +1 -1
  33. package/public/{styles.aa8e03875149efa4.css → styles.808b2890d6fe539d.css} +1 -1
  34. package/public/assets/img/aton.png +0 -0
  35. package/public/assets/img/aton_basestation.png +0 -0
  36. package/public/main.cfa032b5b0d70c12.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # CHANGELOG: Freeboard
2
2
 
3
+ ### v2.13.2
4
+
5
+ - **Added**: Data loading progress indicator. (#240)
6
+ - **Added**: Ability to edit waypoint coordinates in details dialog. (#238)
7
+ - **Added**: Additional operating modes for anchor watch. (#248)
8
+ - **Change**: Main menu style / layout. (#243)
9
+ - **Change**: CSS style of links in note descriptions. (#245)
10
+ - **Change**: Track list layout. (#251)
11
+ - **Fixed**: Read-only flag not respected by Region Details dialog and formatting. (#244, #258)
12
+ - **Fixed**: "Navigate To" not correctly determining pointer location on IOS devices. (#241)
13
+ - **Fixed**: Heading up setting sometimes not applied at startup. (#254)
14
+ - **Fixed**: Regions not being fetched after initial app load. (#256)
15
+ - **Fixed**: Route point drag / drop re-ordering.
16
+
3
17
  ### v2.13.1
4
18
 
5
19
  - **Change**: `Load GPX` and `Load GeoJSON` menu options have been combined as `Import` option in the Resource Layers menu.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signalk/freeboard-sk",
3
- "version": "2.13.1",
3
+ "version": "2.13.2",
4
4
  "description": "Openlayers chart plotter implementation for Signal K",
5
5
  "keywords": [
6
6
  "signalk-webapp",
package/plugin/index.js CHANGED
@@ -42,8 +42,8 @@ const CONFIG_SCHEMA = {
42
42
  },
43
43
  pypilot: {
44
44
  type: 'object',
45
- title: 'PyPilot.',
46
- description: 'PyPilot host connection settings.',
45
+ title: 'PyPilot (deprecated).',
46
+ description: 'Please use pypilot-autopilot-provider plugin instead.',
47
47
  properties: {
48
48
  enable: {
49
49
  type: 'boolean',
@@ -1 +1 @@
1
- (()=>{"use strict";var eD={2222:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(7029)),o=l(n(3100)),i=l(n(5705)),s=l(n(942)),a=n(7636);function l(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,p,h){var g=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6371e3,m=(0,r.default)(f),y=(0,o.default)(f),v=p/g,b=(0,i.default)(h),_=(0,i.default)(m),R=(0,i.default)(y),U=Math.asin(Math.sin(_)*Math.cos(v)+Math.cos(_)*Math.sin(v)*Math.cos(b)),G=R+Math.atan2(Math.sin(b)*Math.sin(v)*Math.cos(_),Math.cos(v)-Math.sin(_)*Math.sin(U)),te=(0,s.default)(G);return(te<a.MINLON||te>a.MAXLON)&&(G=(G+3*Math.PI)%(2*Math.PI)-Math.PI,te=(0,s.default)(G)),{latitude:(0,s.default)(U),longitude:te}}},7636:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.areaConversion=t.timeConversion=t.distanceConversion=t.altitudeKeys=t.latitudeKeys=t.longitudeKeys=t.MAXLON=t.MINLON=t.MAXLAT=t.MINLAT=t.earthRadius=t.sexagesimalPattern=void 0,t.sexagesimalPattern=/^([0-9]{1,3})\xb0\s*([0-9]{1,3}(?:\.(?:[0-9]{1,}))?)['\u2032]\s*(([0-9]{1,3}(\.([0-9]{1,}))?)["\u2033]\s*)?([NEOSW]?)$/,t.earthRadius=6378137,t.MINLAT=-90,t.MAXLAT=90,t.MINLON=-180,t.MAXLON=180,t.longitudeKeys=["lng","lon","longitude",0],t.latitudeKeys=["lat","latitude",1],t.altitudeKeys=["alt","altitude","elevation","elev",2],t.distanceConversion={m:1,km:.001,cm:100,mm:1e3,mi:1/1609.344,sm:1/1852.216,ft:100/30.48,in:100/2.54,yd:1/.9144},t.timeConversion={m:60,h:3600,d:86400};var p={m2:1,km2:1e-6,ha:1e-4,a:.01,ft2:10.763911,yd2:1.19599,in2:1550.0031};t.areaConversion=p,p.sqm=p.m2,p.sqkm=p.km2,p.sqft=p.ft2,p.sqyd=p.yd2,p.sqin=p.in2},179:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var u=r.areaConversion[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"m"];if(u)return a*u;throw new Error("Invalid unit used for area conversion.")}},917:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var u=r.distanceConversion[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"m"];if(u)return a*u;throw new Error("Invalid unit used for distance conversion.")}},1167:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){switch(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kmh"){case"kmh":return a*r.timeConversion.h*r.distanceConversion.km;case"mph":return a*r.timeConversion.h*r.distanceConversion.mi;default:return a}}},8948:(e,t)=>{function n(d,f){return function a(d){if(Array.isArray(d))return d}(d)||function s(d,f){if(!(typeof Symbol>"u")&&Symbol.iterator in Object(d)){var p=[],h=!0,g=!1,m=void 0;try{for(var v,y=d[Symbol.iterator]();!(h=(v=y.next()).done)&&(p.push(v.value),!f||p.length!==f);h=!0);}catch(b){g=!0,m=b}finally{try{!h&&null!=y.return&&y.return()}finally{if(g)throw m}}return p}}(d,f)||function o(d,f){if(d){if("string"==typeof d)return i(d,f);var p=Object.prototype.toString.call(d).slice(8,-1);if("Object"===p&&d.constructor&&(p=d.constructor.name),"Map"===p||"Set"===p)return Array.from(d);if("Arguments"===p||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(p))return i(d,f)}}(d,f)||function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(d,f){(null==f||f>d.length)&&(f=d.length);for(var p=0,h=new Array(f);p<f;p++)h[p]=d[p];return h}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(f){var h=n(f.toString().split("."),2),m=h[1],y=Math.abs(Number(h[0])),v=60*+("0."+(m||0)),b=v.toString().split("."),_=Math.floor(v),R=function(f){var h=Math.pow(10,arguments.length>1&&void 0!==arguments[1]?arguments[1]:4);return Math.round(f*h)/h}(60*+("0."+(b[1]||0))).toString(),G=n(R.split("."),2),te=G[0],J=G[1],De=void 0===J?"0":J;return y+"\xb0 "+_.toString().padStart(2,"0")+"' "+te.padStart(2,"0")+"."+De.padEnd(1,"0")+'"'}},1118:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(2447));t.default=function(l,u){return(0,r.default)(l,u)[0]}},1691:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(5705)),o=a(n(7029)),i=a(n(3100)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d){var f=0;if(d.length>2){for(var p,h,g,m=0;m<d.length;m++){m===d.length-2?(p=d.length-2,h=d.length-1,g=0):m===d.length-1?(p=d.length-1,h=0,g=1):(p=m,h=m+1,g=m+2);var y=(0,i.default)(d[p]),v=(0,o.default)(d[h]),b=(0,i.default)(d[g]);f+=((0,r.default)(b)-(0,r.default)(y))*Math.sin((0,r.default)(v))}f=f*s.earthRadius*s.earthRadius/2}return Math.abs(f)}},9144:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=i(n(7029)),o=i(n(3100));function i(l){return l&&l.__esModule?l:{default:l}}t.default=function(u){if(!1===Array.isArray(u)||0===u.length)throw new Error("No points were given.");return u.reduce(function(c,d){var f=(0,r.default)(d),p=(0,o.default)(d);return{maxLat:Math.max(f,c.maxLat),minLat:Math.min(f,c.minLat),maxLng:Math.max(p,c.maxLng),minLng:Math.min(p,c.minLng)}},{maxLat:-1/0,minLat:1/0,maxLng:-1/0,minLng:1/0})}},190:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(7029)),o=l(n(3100)),i=l(n(5705)),s=l(n(942)),a=n(7636);function l(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,p){var J,De,h=(0,r.default)(f),g=(0,o.default)(f),m=(0,i.default)(h),y=(0,i.default)(g),v=p/a.earthRadius,b=m-v,_=m+v,R=(0,i.default)(a.MAXLAT),U=(0,i.default)(a.MINLAT),G=(0,i.default)(a.MAXLON),te=(0,i.default)(a.MINLON);if(b>U&&_<R){var Dn=Math.asin(Math.sin(v)/Math.cos(m));(J=y-Dn)<te&&(J+=2*Math.PI),(De=y+Dn)>G&&(De-=2*Math.PI)}else b=Math.max(b,U),_=Math.min(_,R),J=te,De=G;return[{latitude:(0,s.default)(b),longitude:(0,s.default)(J)},{latitude:(0,s.default)(_),longitude:(0,s.default)(De)}]}},5524:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=a(n(942));function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d){if(!1===Array.isArray(d)||0===d.length)return!1;var f=d.length,p=d.reduce(function(y,v){var b=(0,i.default)((0,r.default)(v)),_=(0,i.default)((0,o.default)(v));return{X:y.X+Math.cos(b)*Math.cos(_),Y:y.Y+Math.cos(b)*Math.sin(_),Z:y.Z+Math.sin(b)}},{X:0,Y:0,Z:0}),h=p.X/f,g=p.Y/f,m=p.Z/f;return{longitude:(0,s.default)(Math.atan2(g,h)),latitude:(0,s.default)(Math.atan2(m,Math.sqrt(h*h+g*g)))}}},7088:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(9144));t.default=function(l){var u=(0,r.default)(l),d=u.minLng+(u.maxLng-u.minLng)/2;return{latitude:parseFloat((u.minLat+(u.maxLat-u.minLat)/2).toFixed(6)),longitude:parseFloat(d.toFixed(6))}}},9952:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(939));t.default=function(l,u){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default,d="function"==typeof c?c(l,u):(0,r.default)(l,u);if(isNaN(d))throw new Error("Could not calculate bearing for given points. Check your bearing function");switch(Math.round(d/22.5)){case 1:return"NNE";case 2:return"NE";case 3:return"ENE";case 4:return"E";case 5:return"ESE";case 6:return"SE";case 7:return"SSE";case 8:return"S";case 9:return"SSW";case 10:return"SW";case 11:return"WSW";case 12:return"W";case 13:return"WNW";case 14:return"NW";case 15:return"NNW";default:return"N"}}},8744:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i,s){return s.reduce(function(a,l){if(typeof i>"u"||null===i)throw new Error("'".concat(i,"' is no valid coordinate."));return Object.prototype.hasOwnProperty.call(i,l)&&typeof l<"u"&&typeof a>"u"?(a=l,l):a},void 0)}},4695:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636),o=function i(d){return d&&d.__esModule?d:{default:d}}(n(8744));function s(d,f){var p=Object.keys(d);if(Object.getOwnPropertySymbols){var h=Object.getOwnPropertySymbols(d);f&&(h=h.filter(function(g){return Object.getOwnPropertyDescriptor(d,g).enumerable})),p.push.apply(p,h)}return p}function l(d,f,p){return f in d?Object.defineProperty(d,f,{value:p,enumerable:!0,configurable:!0,writable:!0}):d[f]=p,d}t.default=function(f){var p=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{longitude:r.longitudeKeys,latitude:r.latitudeKeys,altitude:r.altitudeKeys},h=(0,o.default)(f,p.longitude),g=(0,o.default)(f,p.latitude),m=(0,o.default)(f,p.altitude);return function a(d){for(var f=1;f<arguments.length;f++){var p=null!=arguments[f]?arguments[f]:{};f%2?s(Object(p),!0).forEach(function(h){l(d,h,p[h])}):Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(p)):s(Object(p)).forEach(function(h){Object.defineProperty(d,h,Object.getOwnPropertyDescriptor(p,h))})}return d}({latitude:g,longitude:h},m?{altitude:m}:{})}},8674:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(7029)),o=l(n(3100)),i=l(n(5705)),s=l(n(6522)),a=n(7636);function l(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,p){var h=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;h=typeof h<"u"&&!isNaN(h)?h:1;var g=(0,r.default)(f),m=(0,o.default)(f),y=(0,r.default)(p),v=(0,o.default)(p),b=Math.acos((0,s.default)(Math.sin((0,i.default)(y))*Math.sin((0,i.default)(g))+Math.cos((0,i.default)(y))*Math.cos((0,i.default)(g))*Math.cos((0,i.default)(m)-(0,i.default)(v))))*a.earthRadius;return Math.round(b/h)*h}},7504:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=i(n(8674)),o=i(n(6522));function i(l){return l&&l.__esModule?l:{default:l}}t.default=function(u,c,d){var f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,p=(0,r.default)(c,u,f),h=(0,r.default)(u,d,f),g=(0,r.default)(c,d,f),m=Math.acos((0,o.default)((p*p+g*g-h*h)/(2*p*g))),y=Math.acos((0,o.default)((h*h+g*g-p*p)/(2*h*g)));return m>Math.PI/2?p:y>Math.PI/2?h:Math.sin(m)*p}},884:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=a(n(942));function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d,f){var p=(0,r.default)(f),h=(0,o.default)(f),g=(0,r.default)(d),m=(0,o.default)(d);return((0,s.default)(Math.atan2(Math.sin((0,i.default)(h)-(0,i.default)(m))*Math.cos((0,i.default)(p)),Math.cos((0,i.default)(g))*Math.sin((0,i.default)(p))-Math.sin((0,i.default)(g))*Math.cos((0,i.default)(p))*Math.cos((0,i.default)(h)-(0,i.default)(m))))+360)%360}},7029:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636),o=s(n(8744)),i=s(n(5101));function s(u){return u&&u.__esModule?u:{default:u}}t.default=function(c,d){var f=(0,o.default)(c,r.latitudeKeys);if(!(typeof f>"u"||null===f)){var p=c[f];return!0===d?p:(0,i.default)(p)}}},3100:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636),o=s(n(8744)),i=s(n(5101));function s(u){return u&&u.__esModule?u:{default:u}}t.default=function(c,d){var f=(0,o.default)(c,r.longitudeKeys);if(!(typeof f>"u"||null===f)){var p=c[f];return!0===d?p:(0,i.default)(p)}}},5378:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(l){return l&&l.__esModule?l:{default:l}}(n(8674));function i(l){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(c){return typeof c}:function(c){return c&&"function"==typeof Symbol&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c})(l)}t.default=function(u){var c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.default;return u.reduce(function(d,f){return"object"===i(d)&&null!==d.last&&(d.distance+=c(f,d.last)),d.last=f,d},{last:null,distance:0}).distance}},2671:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d,f){var p=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;p=typeof p<"u"&&!isNaN(p)?p:1;var R,U,G,te,J,De,sa,h=(0,r.default)(d),g=(0,o.default)(d),m=(0,r.default)(f),y=(0,o.default)(f),v=6356752.314245,b=1/298.257223563,_=(0,i.default)(y-g),Dn=Math.atan((1-b)*Math.tan((0,i.default)(parseFloat(h)))),ia=Math.atan((1-b)*Math.tan((0,i.default)(parseFloat(m)))),Er=Math.sin(Dn),_r=Math.cos(Dn),Cr=Math.sin(ia),Wt=Math.cos(ia),bn=_,aa=100;do{var Jo=Math.sin(bn),Xo=Math.cos(bn);if(0===(De=Math.sqrt(Wt*Jo*(Wt*Jo)+(_r*Cr-Er*Wt*Xo)*(_r*Cr-Er*Wt*Xo))))return 0;R=Er*Cr+_r*Wt*Xo,U=Math.atan2(De,R),J=R-2*Er*Cr/(te=1-(G=_r*Wt*Jo/De)*G),isNaN(J)&&(J=0);var ei=b/16*te*(4+b*(4-3*te));sa=bn,bn=_+(1-ei)*b*G*(U+ei*De*(J+ei*R*(2*J*J-1)))}while(Math.abs(bn-sa)>1e-12&&--aa>0);if(0===aa)return NaN;var It=te*(s.earthRadius*s.earthRadius-v*v)/(v*v),ti=It/1024*(256+It*(It*(74-47*It)-128));return Math.round(v*(1+It/16384*(4096+It*(It*(320-175*It)-768)))*(U-ti*De*(J+ti/4*(R*(2*J*J-1)-ti/6*J*(4*De*De-3)*(4*J*J-3))))/p)*p}},939:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=a(n(942));function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d,f){var p=(0,i.default)((0,o.default)(f))-(0,i.default)((0,o.default)(d)),h=Math.log(Math.tan((0,i.default)((0,r.default)(f))/2+Math.PI/4)/Math.tan((0,i.default)((0,r.default)(d))/2+Math.PI/4));return Math.abs(p)>Math.PI&&(p=p>0?-1*(2*Math.PI-p):2*Math.PI+p),((0,s.default)(Math.atan2(p,h))+360)%360}},2845:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return/^(NNE|NE|NNW|N)$/.test(i)?"N":/^(ENE|E|ESE|SE)$/.test(i)?"E":/^(SSE|S|SSW|SW)$/.test(i)?"S":/^(WSW|W|WNW|NW)$/.test(i)?"W":void 0}},8950:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default)(l,u)/(Number(u.time)-Number(l.time))*1e3}},2541:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r={computeDestinationPoint:!0,convertArea:!0,convertDistance:!0,convertSpeed:!0,decimalToSexagesimal:!0,findNearest:!0,getAreaOfPolygon:!0,getBounds:!0,getBoundsOfDistance:!0,getCenter:!0,getCenterOfBounds:!0,getCompassDirection:!0,getCoordinateKey:!0,getCoordinateKeys:!0,getDistance:!0,getDistanceFromLine:!0,getGreatCircleBearing:!0,getLatitude:!0,getLongitude:!0,getPathLength:!0,getPreciseDistance:!0,getRhumbLineBearing:!0,getRoughCompassDirection:!0,getSpeed:!0,isDecimal:!0,isPointInLine:!0,isPointInPolygon:!0,isPointNearLine:!0,isPointWithinRadius:!0,isSexagesimal:!0,isValidCoordinate:!0,isValidLatitude:!0,isValidLongitude:!0,orderByDistance:!0,sexagesimalToDecimal:!0,toDecimal:!0,toRad:!0,toDeg:!0,wktToPolygon:!0};Object.defineProperty(t,"computeDestinationPoint",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"convertArea",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"convertDistance",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"convertSpeed",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"decimalToSexagesimal",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"findNearest",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"getAreaOfPolygon",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(t,"getBounds",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(t,"getBoundsOfDistance",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(t,"getCenter",{enumerable:!0,get:function(){return p.default}}),Object.defineProperty(t,"getCenterOfBounds",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(t,"getCompassDirection",{enumerable:!0,get:function(){return g.default}}),Object.defineProperty(t,"getCoordinateKey",{enumerable:!0,get:function(){return m.default}}),Object.defineProperty(t,"getCoordinateKeys",{enumerable:!0,get:function(){return y.default}}),Object.defineProperty(t,"getDistance",{enumerable:!0,get:function(){return v.default}}),Object.defineProperty(t,"getDistanceFromLine",{enumerable:!0,get:function(){return b.default}}),Object.defineProperty(t,"getGreatCircleBearing",{enumerable:!0,get:function(){return _.default}}),Object.defineProperty(t,"getLatitude",{enumerable:!0,get:function(){return R.default}}),Object.defineProperty(t,"getLongitude",{enumerable:!0,get:function(){return U.default}}),Object.defineProperty(t,"getPathLength",{enumerable:!0,get:function(){return G.default}}),Object.defineProperty(t,"getPreciseDistance",{enumerable:!0,get:function(){return te.default}}),Object.defineProperty(t,"getRhumbLineBearing",{enumerable:!0,get:function(){return J.default}}),Object.defineProperty(t,"getRoughCompassDirection",{enumerable:!0,get:function(){return De.default}}),Object.defineProperty(t,"getSpeed",{enumerable:!0,get:function(){return Dn.default}}),Object.defineProperty(t,"isDecimal",{enumerable:!0,get:function(){return ia.default}}),Object.defineProperty(t,"isPointInLine",{enumerable:!0,get:function(){return Er.default}}),Object.defineProperty(t,"isPointInPolygon",{enumerable:!0,get:function(){return _r.default}}),Object.defineProperty(t,"isPointNearLine",{enumerable:!0,get:function(){return Cr.default}}),Object.defineProperty(t,"isPointWithinRadius",{enumerable:!0,get:function(){return Wt.default}}),Object.defineProperty(t,"isSexagesimal",{enumerable:!0,get:function(){return bn.default}}),Object.defineProperty(t,"isValidCoordinate",{enumerable:!0,get:function(){return sa.default}}),Object.defineProperty(t,"isValidLatitude",{enumerable:!0,get:function(){return aa.default}}),Object.defineProperty(t,"isValidLongitude",{enumerable:!0,get:function(){return Jo.default}}),Object.defineProperty(t,"orderByDistance",{enumerable:!0,get:function(){return Xo.default}}),Object.defineProperty(t,"sexagesimalToDecimal",{enumerable:!0,get:function(){return ei.default}}),Object.defineProperty(t,"toDecimal",{enumerable:!0,get:function(){return It.default}}),Object.defineProperty(t,"toRad",{enumerable:!0,get:function(){return nd.default}}),Object.defineProperty(t,"toDeg",{enumerable:!0,get:function(){return ti.default}}),Object.defineProperty(t,"wktToPolygon",{enumerable:!0,get:function(){return rd.default}});var o=V(n(2222)),i=V(n(179)),s=V(n(917)),a=V(n(1167)),l=V(n(8948)),u=V(n(1118)),c=V(n(1691)),d=V(n(9144)),f=V(n(190)),p=V(n(5524)),h=V(n(7088)),g=V(n(9952)),m=V(n(8744)),y=V(n(4695)),v=V(n(8674)),b=V(n(7504)),_=V(n(884)),R=V(n(7029)),U=V(n(3100)),G=V(n(5378)),te=V(n(2671)),J=V(n(939)),De=V(n(2845)),Dn=V(n(8950)),ia=V(n(3026)),Er=V(n(4194)),_r=V(n(3536)),Cr=V(n(2787)),Wt=V(n(202)),bn=V(n(4902)),sa=V(n(7637)),aa=V(n(6563)),Jo=V(n(266)),Xo=V(n(2447)),ei=V(n(1532)),It=V(n(5101)),nd=V(n(5705)),ti=V(n(942)),rd=V(n(354)),la=n(7636);function V(S){return S&&S.__esModule?S:{default:S}}Object.keys(la).forEach(function(S){"default"===S||"__esModule"===S||Object.prototype.hasOwnProperty.call(r,S)||Object.defineProperty(t,S,{enumerable:!0,get:function(){return la[S]}})})},3026:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){var s=i.toString().trim();return!isNaN(parseFloat(s))&&parseFloat(s)===Number(s)}},4194:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u,c){return(0,r.default)(u,l)+(0,r.default)(l,c)===(0,r.default)(u,c)}},3536:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=i(n(7029)),o=i(n(3100));function i(l){return l&&l.__esModule?l:{default:l}}t.default=function(u,c){for(var d=!1,f=c.length,p=-1,h=f-1;++p<f;h=p)((0,o.default)(c[p])<=(0,o.default)(u)&&(0,o.default)(u)<(0,o.default)(c[h])||(0,o.default)(c[h])<=(0,o.default)(u)&&(0,o.default)(u)<(0,o.default)(c[p]))&&(0,r.default)(u)<((0,r.default)(c[h])-(0,r.default)(c[p]))*((0,o.default)(u)-(0,o.default)(c[p]))/((0,o.default)(c[h])-(0,o.default)(c[p]))+(0,r.default)(c[p])&&(d=!d);return d}},2787:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(7504));t.default=function(l,u,c,d){return(0,r.default)(l,u,c)<d}},202:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u,c){return(0,r.default)(l,u,.01)<c}},4902:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){return r.sexagesimalPattern.test(a.toString().trim())}},7637:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=s(n(4695)),o=s(n(6563)),i=s(n(266));function s(u){return u&&u.__esModule?u:{default:u}}t.default=function(c){var d=(0,r.default)(c),f=d.latitude,p=d.longitude;if(Array.isArray(c)&&c.length>=2)return(0,i.default)(c[0])&&(0,o.default)(c[1]);if(typeof f>"u"||typeof p>"u")return!1;var h=c[p],g=c[f];return!(typeof g>"u"||typeof h>"u"||!1===(0,o.default)(g)||!1===(0,i.default)(h))}},6563:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(3026)),o=a(n(4902)),i=a(n(1532)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function c(d){return(0,r.default)(d)?!(parseFloat(d)>s.MAXLAT||d<s.MINLAT):!!(0,o.default)(d)&&c((0,i.default)(d))}},266:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(3026)),o=a(n(4902)),i=a(n(1532)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function c(d){return(0,r.default)(d)?!(parseFloat(d)>s.MAXLON||d<s.MINLON):!!(0,o.default)(d)&&c((0,i.default)(d))}},2447:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default;return c="function"==typeof c?c:r.default,u.slice().sort(function(d,f){return c(l,d)-c(l,f)})}},6522:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return i>1?1:i<-1?-1:i}},1532:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var l=new RegExp(r.sexagesimalPattern).exec(a.toString().trim());if(typeof l>"u"||null===l)throw new Error("Given value is not in sexagesimal format");var u=Number(l[2])/60||0,c=Number(l[4])/3600||0,d=parseFloat(l[1])+u+c;return["S","W"].includes(l[7])?-d:d}},5101:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(3026)),o=l(n(4902)),i=l(n(1532)),s=l(n(7637)),a=l(n(4695));function l(h){return h&&h.__esModule?h:{default:h}}function u(h,g){var m=Object.keys(h);if(Object.getOwnPropertySymbols){var y=Object.getOwnPropertySymbols(h);g&&(y=y.filter(function(v){return Object.getOwnPropertyDescriptor(h,v).enumerable})),m.push.apply(m,y)}return m}function c(h){for(var g=1;g<arguments.length;g++){var m=null!=arguments[g]?arguments[g]:{};g%2?u(Object(m),!0).forEach(function(y){d(h,y,m[y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(h,Object.getOwnPropertyDescriptors(m)):u(Object(m)).forEach(function(y){Object.defineProperty(h,y,Object.getOwnPropertyDescriptor(m,y))})}return h}function d(h,g,m){return g in h?Object.defineProperty(h,g,{value:m,enumerable:!0,configurable:!0,writable:!0}):h[g]=m,h}t.default=function h(g){if((0,r.default)(g))return Number(g);if((0,o.default)(g))return(0,i.default)(g);if((0,s.default)(g)){var m=(0,a.default)(g);return Array.isArray(g)?g.map(function(y,v){return[0,1].includes(v)?h(y):y}):c(c(c({},g),m.latitude&&d({},m.latitude,h(g[m.latitude]))),m.longitude&&d({},m.longitude,h(g[m.longitude])))}return Array.isArray(g)?g.map(function(y){return(0,s.default)(y)?h(y):y}):g}},942:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return 180*i/Math.PI}},5705:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return i*Math.PI/180}},354:(e,t)=>{function i(c,d){(null==d||d>c.length)&&(d=c.length);for(var f=0,p=new Array(d);f<d;f++)p[f]=c[f];return p}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(d){if(!d.startsWith("POLYGON"))throw new Error("Invalid wkt.");return d.slice(d.indexOf("(")+2,d.indexOf(")")).split(", ").map(function(h){var m=function n(c,d){return function a(c){if(Array.isArray(c))return c}(c)||function s(c,d){if(!(typeof Symbol>"u")&&Symbol.iterator in Object(c)){var f=[],p=!0,h=!1,g=void 0;try{for(var y,m=c[Symbol.iterator]();!(p=(y=m.next()).done)&&(f.push(y.value),!d||f.length!==d);p=!0);}catch(v){h=!0,g=v}finally{try{!p&&null!=m.return&&m.return()}finally{if(h)throw g}}return f}}(c,d)||function o(c,d){if(c){if("string"==typeof c)return i(c,d);var f=Object.prototype.toString.call(c).slice(8,-1);if("Object"===f&&c.constructor&&(f=c.constructor.name),"Map"===f||"Set"===f)return Array.from(c);if("Arguments"===f||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(f))return i(c,d)}}(c,d)||function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(h.split(" "),2),v=m[1];return{longitude:parseFloat(m[0]),latitude:parseFloat(v)}})}},6729:(e,t)=>{function n(u,c){return u*u+c*c}function r(u,c){return n(u[0]-c[0],u[1]-c[1])}function o(u,c,d){var f=c[0],p=c[1],h=d[0]-f,g=d[1]-p;if(0!==h||0!==g){var m=((u[0]-f)*h+(u[1]-p)*g)/n(h,g);m>1?(f=d[0],p=d[1]):m>0&&(f+=h*m,p+=g*m)}return n(u[0]-f,u[1]-p)}function s(u,c,d,f,p){for(var g,h=f,m=c+1;m<d;m++){var y=o(u[m],u[c],u[d]);y>h&&(g=m,h=y)}h>f&&(g-c>1&&s(u,c,g,f,p),p.push(u[g]),d-g>1&&s(u,g,d,f,p))}function a(u,c){var d=u.length-1,f=[u[0]];return s(u,0,d,c,f),f.push(u[d]),f}t.__esModule=!0,t.SimplifyAP=function l(u,c,d){if(void 0===c&&(c=1),void 0===d&&(d=!1),u.length<=2)return u;var f=c*c;return a(u=d?u:function i(u,c){for(var f,d=u[0],p=[d],h=1,g=u.length;h<g;h++)r(f=u[h],d)>c&&(p.push(f),d=f);return d!==f&&p.push(f),p}(u,f),f)}},6380:(e,t,n)=>{var o=n(6729);t.p$=o.SimplifyAP,n(5551),n(6413)},5551:(e,t)=>{function n(u,c){return u*u+c*c}function r(u,c){return n(u.longitude-c.longitude,u.latitude-c.latitude)}function o(u,c,d){var f=c.longitude,p=c.latitude,h=d.longitude-f,g=d.latitude-p;if(0!==h||0!==g){var m=((u.longitude-f)*h+(u.latitude-p)*g)/n(h,g);m>1?(f=d.longitude,p=d.latitude):m>0&&(f+=h*m,p+=g*m)}return n(u.longitude-f,u.latitude-p)}function s(u,c,d,f,p){for(var g,h=f,m=c+1;m<d;m++){var y=o(u[m],u[c],u[d]);y>h&&(g=m,h=y)}h>f&&(g-c>1&&s(u,c,g,f,p),p.push(u[g]),d-g>1&&s(u,g,d,f,p))}function a(u,c){var d=u.length-1,f=[u[0]];return s(u,0,d,c,f),f.push(u[d]),f}t.__esModule=!0,t.SimplifyLL=function l(u,c,d){if(void 0===c&&(c=1),void 0===d&&(d=!1),u.length<=2)return u;var f=c*c;return a(u=d?u:function i(u,c){for(var f,d=u[0],p=[d],h=1,g=u.length;h<g;h++)r(f=u[h],d)>c&&(p.push(f),d=f);return d!==f&&p.push(f),p}(u,f),f)}},6413:(e,t)=>{function n(u,c){return u*u+c*c}function r(u,c){return n(u.x-c.x,u.y-c.y)}function o(u,c,d){var f=c.x,p=c.y,h=d.x-f,g=d.y-p;if(0!==h||0!==g){var m=((u.x-f)*h+(u.y-p)*g)/n(h,g);m>1?(f=d.x,p=d.y):m>0&&(f+=h*m,p+=g*m)}return n(u.x-f,u.y-p)}function s(u,c,d,f,p){for(var g,h=f,m=c+1;m<d;m++){var y=o(u[m],u[c],u[d]);y>h&&(g=m,h=y)}h>f&&(g-c>1&&s(u,c,g,f,p),p.push(u[g]),d-g>1&&s(u,g,d,f,p))}function a(u,c){var d=u.length-1,f=[u[0]];return s(u,0,d,c,f),f.push(u[d]),f}t.__esModule=!0,t.Simplify=function l(u,c,d){if(void 0===c&&(c=1),void 0===d&&(d=!1),u.length<=2)return u;var f=c*c;return a(u=d?u:function i(u,c){for(var f,d=u[0],p=[d],h=1,g=u.length;h<g;h++)r(f=u[h],d)>c&&(p.push(f),d=f);return d!==f&&p.push(f),p}(u,f),f)}}},od={};function ua(e){var t=od[e];if(void 0!==t)return t.exports;var n=od[e]={exports:{}};return eD[e](n,n.exports,ua),n.exports}function ca(e){return"function"==typeof e}let da=!1;const Je={Promise:void 0,set useDeprecatedSynchronousErrorHandling(e){if(e){const t=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+t.stack)}else da&&console.log("RxJS: Back to a better error behavior. Thank you. <3");da=e},get useDeprecatedSynchronousErrorHandling(){return da}};function Tr(e){setTimeout(()=>{throw e},0)}const ni={closed:!0,next(e){},error(e){if(Je.useDeprecatedSynchronousErrorHandling)throw e;Tr(e)},complete(){}},tD=Array.isArray||(e=>e&&"number"==typeof e.length),ri=(()=>{function e(t){return Error.call(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((n,r)=>`${r+1}) ${n.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=t,this}return e.prototype=Object.create(Error.prototype),e})();class be{constructor(t){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,t&&(this._ctorUnsubscribe=!0,this._unsubscribe=t)}unsubscribe(){let t;if(this.closed)return;let{_parentOrParents:n,_ctorUnsubscribe:r,_unsubscribe:o,_subscriptions:i}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof be)n.remove(this);else if(null!==n)for(let s=0;s<n.length;++s)n[s].remove(this);if(ca(o)){r&&(this._unsubscribe=void 0);try{o.call(this)}catch(s){t=s instanceof ri?id(s.errors):[s]}}if(tD(i)){let s=-1,a=i.length;for(;++s<a;){const l=i[s];if(null!==(e=l)&&"object"==typeof e)try{l.unsubscribe()}catch(u){t=t||[],u instanceof ri?t=t.concat(id(u.errors)):t.push(u)}}}var e;if(t)throw new ri(t)}add(t){let n=t;if(!t)return be.EMPTY;switch(typeof t){case"function":n=new be(t);case"object":if(n===this||n.closed||"function"!=typeof n.unsubscribe)return n;if(this.closed)return n.unsubscribe(),n;if(!(n instanceof be)){const i=n;n=new be,n._subscriptions=[i]}break;default:throw new Error("unrecognized teardown "+t+" added to Subscription.")}let{_parentOrParents:r}=n;if(null===r)n._parentOrParents=this;else if(r instanceof be){if(r===this)return n;n._parentOrParents=[r,this]}else{if(-1!==r.indexOf(this))return n;r.push(this)}const o=this._subscriptions;return null===o?this._subscriptions=[n]:o.push(n),n}remove(t){const n=this._subscriptions;if(n){const r=n.indexOf(t);-1!==r&&n.splice(r,1)}}}var e;function id(e){return e.reduce((t,n)=>t.concat(n instanceof ri?n.errors:n),[])}be.EMPTY=((e=new be).closed=!0,e);const oi="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random();class at extends be{constructor(t,n,r){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=ni;break;case 1:if(!t){this.destination=ni;break}if("object"==typeof t){t instanceof at?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new sd(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new sd(this,t,n,r)}}[oi](){return this}static create(t,n,r){const o=new at(t,n,r);return o.syncErrorThrowable=!1,o}next(t){this.isStopped||this._next(t)}error(t){this.isStopped||(this.isStopped=!0,this._error(t))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(t){this.destination.next(t)}_error(t){this.destination.error(t),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:t}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=t,this}}class sd extends at{constructor(t,n,r,o){super(),this._parentSubscriber=t;let i,s=this;ca(n)?i=n:n&&(i=n.next,r=n.error,o=n.complete,n!==ni&&(s=Object.create(n),ca(s.unsubscribe)&&this.add(s.unsubscribe.bind(s)),s.unsubscribe=this.unsubscribe.bind(this))),this._context=s,this._next=i,this._error=r,this._complete=o}next(t){if(!this.isStopped&&this._next){const{_parentSubscriber:n}=this;Je.useDeprecatedSynchronousErrorHandling&&n.syncErrorThrowable?this.__tryOrSetError(n,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}}error(t){if(!this.isStopped){const{_parentSubscriber:n}=this,{useDeprecatedSynchronousErrorHandling:r}=Je;if(this._error)r&&n.syncErrorThrowable?(this.__tryOrSetError(n,this._error,t),this.unsubscribe()):(this.__tryOrUnsub(this._error,t),this.unsubscribe());else if(n.syncErrorThrowable)r?(n.syncErrorValue=t,n.syncErrorThrown=!0):Tr(t),this.unsubscribe();else{if(this.unsubscribe(),r)throw t;Tr(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const n=()=>this._complete.call(this._context);Je.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(t,n){try{t.call(this._context,n)}catch(r){if(this.unsubscribe(),Je.useDeprecatedSynchronousErrorHandling)throw r;Tr(r)}}__tryOrSetError(t,n,r){if(!Je.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{n.call(this._context,r)}catch(o){return Je.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=o,t.syncErrorThrown=!0,!0):(Tr(o),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}const iD="function"==typeof Symbol&&Symbol.observable||"@@observable";function sD(e){return e}let ld=(()=>{class e{constructor(n){this._isScalar=!1,n&&(this._subscribe=n)}lift(n){const r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,o){const{operator:i}=this,s=function oD(e,t,n){if(e){if(e instanceof at)return e;if(e[oi])return e[oi]()}return e||t||n?new at(e,t,n):new at(ni)}(n,r,o);if(s.add(i?i.call(s,this.source):this.source||Je.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),Je.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s}_trySubscribe(n){try{return this._subscribe(n)}catch(r){Je.useDeprecatedSynchronousErrorHandling&&(n.syncErrorThrown=!0,n.syncErrorValue=r),function rD(e){for(;e;){const{closed:t,destination:n,isStopped:r}=e;if(t||r)return!1;e=n&&n instanceof at?n:null}return!0}(n)?n.error(r):console.warn(r)}}forEach(n,r){return new(r=ud(r))((o,i)=>{let s;s=this.subscribe(a=>{try{n(a)}catch(l){i(l),s&&s.unsubscribe()}},i,o)})}_subscribe(n){const{source:r}=this;return r&&r.subscribe(n)}[iD](){return this}pipe(...n){return 0===n.length?this:function ad(e){return 0===e.length?sD:1===e.length?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}(n)(this)}toPromise(n){return new(n=ud(n))((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function ud(e){if(e||(e=Je.Promise||Promise),!e)throw new Error("no Promise impl found");return e}const wn=(()=>{function e(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return e.prototype=Object.create(Error.prototype),e})();class aD extends be{constructor(t,n){super(),this.subject=t,this.subscriber=n,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const t=this.subject,n=t.observers;if(this.subject=null,!n||0===n.length||t.isStopped||t.closed)return;const r=n.indexOf(this.subscriber);-1!==r&&n.splice(r,1)}}class lD extends at{constructor(t){super(t),this.destination=t}}let $e=(()=>{class e extends ld{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[oi](){return new lD(this)}lift(n){const r=new cd(this,this);return r.operator=n,r}next(n){if(this.closed)throw new wn;if(!this.isStopped){const{observers:r}=this,o=r.length,i=r.slice();for(let s=0;s<o;s++)i[s].next(n)}}error(n){if(this.closed)throw new wn;this.hasError=!0,this.thrownError=n,this.isStopped=!0;const{observers:r}=this,o=r.length,i=r.slice();for(let s=0;s<o;s++)i[s].error(n);this.observers.length=0}complete(){if(this.closed)throw new wn;this.isStopped=!0;const{observers:n}=this,r=n.length,o=n.slice();for(let i=0;i<r;i++)o[i].complete();this.observers.length=0}unsubscribe(){this.isStopped=!0,this.closed=!0,this.observers=null}_trySubscribe(n){if(this.closed)throw new wn;return super._trySubscribe(n)}_subscribe(n){if(this.closed)throw new wn;return this.hasError?(n.error(this.thrownError),be.EMPTY):this.isStopped?(n.complete(),be.EMPTY):(this.observers.push(n),new aD(this,n))}asObservable(){const n=new ld;return n.source=this,n}}return e.create=(t,n)=>new cd(t,n),e})();class cd extends $e{constructor(t,n){super(),this.destination=t,this.source=n}next(t){const{destination:n}=this;n&&n.next&&n.next(t)}error(t){const{destination:n}=this;n&&n.error&&this.destination.error(t)}complete(){const{destination:t}=this;t&&t.complete&&this.destination.complete()}_subscribe(t){const{source:n}=this;return n?this.source.subscribe(t):be.EMPTY}}let ce=null;function H(e){const t=ce;return ce=e,t}class vD extends $e{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){const n=super._subscribe(t);return n&&!n.closed&&t.next(this._value),n}getValue(){if(this.hasError)throw this.thrownError;if(this.closed)throw new wn;return this._value}next(t){super.next(this._value=t)}}class w extends Error{constructor(t,n){super(function Mn(e,t){return`NG0${Math.abs(e)}${t?": "+t:""}`}(t,n)),this.code=t}}function z(e){for(let t in e)if(e[t]===z)return t;throw Error("Could not find renamed property on target object.")}function Ie(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(Ie).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const t=e.toString();if(null==t)return""+t;const n=t.indexOf("\n");return-1===n?t:t.substring(0,n)}globalThis;const wD=z({__forward_ref__:z});function ya(e){return e.__forward_ref__=ya,e.toString=function(){return Ie(this())},e}function N(e){return function ci(e){return"function"==typeof e&&e.hasOwnProperty(wD)&&e.__forward_ref__===ya}(e)?e():e}function Q(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function di(e){return Nd(e,pi)||Nd(e,Sd)}function Nd(e,t){return e.hasOwnProperty(t)?e[t]:null}function fi(e){return e&&(e.hasOwnProperty(Da)||e.hasOwnProperty(TD))?e[Da]:null}const pi=z({\u0275prov:z}),Da=z({\u0275inj:z}),Sd=z({ngInjectableDef:z}),TD=z({ngInjectorDef:z});class L{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=Q({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function _a(e){return e&&!!e.\u0275providers}const xr=z({\u0275cmp:z}),bt=z({\u0275fac:z}),Pd=z({__NG_ENV_ID__:z});var $=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}($||{});let Sa;function Ad(){return Sa}function Le(e){const t=Sa;return Sa=e,t}function kd(e,t,n){const r=di(e);return r&&"root"==r.providedIn?void 0===r.value?r.value=r.factory():r.value:n&$.Optional?null:void 0!==t?t:void function Na(e,t){throw new w(-201,!1)}()}const Pr={},xa="__NG_DI_FLAG__",hi="ngTempTokenPath",AD=/\n/gm,Rd="__source";let Nn;function kt(e){const t=Nn;return Nn=e,t}function LD(e,t=$.Default){if(void 0===Nn)throw new w(-203,!1);return null===Nn?kd(e,void 0,t):Nn.get(e,t&$.Optional?null:void 0,t)}function Ne(e,t=$.Default){return(Ad()||LD)(N(e),t)}function E(e,t=$.Default){return Ne(e,gi(t))}function gi(e){return typeof e>"u"||"number"==typeof e?e:(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Oa(e){const t=[];for(let n=0;n<e.length;n++){const r=N(e[n]);if(Array.isArray(r)){if(0===r.length)throw new w(900,!1);let o,i=$.Default;for(let s=0;s<r.length;s++){const a=r[s],l=jD(a);"number"==typeof l?-1===l?o=a.token:i|=l:o=a}t.push(Ne(o,i))}else t.push(Ne(r))}return t}function jD(e){return e[xa]}function qt(e,t){return e.hasOwnProperty(bt)?e[bt]:null}function Sn(e,t){e.forEach(n=>Array.isArray(n)?Sn(n,t):t(n))}const B=[],wt=new L(""),Hd=new L("",-1),La=new L("");class yi{get(t,n=Pr){if(n===Pr){const r=new Error(`NullInjectorError: No provider for ${Ie(t)}!`);throw r.name="NullInjectorError",r}return n}}function ub(...e){return{\u0275providers:Va(0,e),\u0275fromNgModule:!0}}function Va(e,...t){const n=[],r=new Set;let o;const i=s=>{n.push(s)};return Sn(t,s=>{const a=s;wi(a,i,[],r)&&(o||=[],o.push(a))}),void 0!==o&&Yd(o,i),n}function Yd(e,t){for(let n=0;n<e.length;n++){const{ngModule:r,providers:o}=e[n];Ha(o,i=>{t(i,r)})}}function wi(e,t,n,r){if(!(e=N(e)))return!1;let o=null,i=fi(e);const s=!i&&function F(e){return e[xr]||null}(e);if(i||s){if(s&&!s.standalone)return!1;o=e}else{const l=e.ngModule;if(i=fi(l),!i)return!1;o=l}const a=r.has(o);if(s){if(a)return!1;if(r.add(o),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const u of l)wi(u,t,n,r)}}else{if(!i)return!1;{if(null!=i.imports&&!a){let u;r.add(o);try{Sn(i.imports,c=>{wi(c,t,n,r)&&(u||=[],u.push(c))})}finally{}void 0!==u&&Yd(u,t)}if(!a){const u=qt(o)||(()=>new o);t({provide:o,useFactory:u,deps:B},o),t({provide:La,useValue:o,multi:!0},o),t({provide:wt,useValue:()=>Ne(o),multi:!0},o)}const l=i.providers;if(null!=l&&!a){const u=e;Ha(l,c=>{t(c,u)})}}}return o!==e&&void 0!==e.providers}function Ha(e,t){for(let n of e)_a(n)&&(n=n.\u0275providers),Array.isArray(n)?Ha(n,t):t(n)}const cb=z({provide:String,useValue:z});function $a(e){return null!==e&&"object"==typeof e&&cb in e}function Qt(e){return"function"==typeof e}const ef=new L(""),Mi={},fb={};let Ua;function Ei(){return void 0===Ua&&(Ua=new yi),Ua}class et{}class On extends et{get destroyed(){return this._destroyed}constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,Wa(t,s=>this.processProvider(s)),this.records.set(Hd,Pn(void 0,this)),o.has("environment")&&this.records.set(et,Pn(void 0,this));const i=this.records.get(ef);null!=i&&"string"==typeof i.value&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(La,B,$.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;const t=H(null);try{for(const r of this._ngOnDestroyHooks)r.ngOnDestroy();const n=this._onDestroyHooks;this._onDestroyHooks=[];for(const r of n)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),H(t)}}onDestroy(t){return this.assertNotDestroyed(),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){this.assertNotDestroyed();const n=kt(this),r=Le(void 0);try{return t()}finally{kt(n),Le(r)}}get(t,n=Pr,r=$.Default){if(this.assertNotDestroyed(),t.hasOwnProperty(Pd))return t[Pd](this);r=gi(r);const i=kt(this),s=Le(void 0);try{if(!(r&$.SkipSelf)){let l=this.records.get(t);if(void 0===l){const u=function vb(e){return"function"==typeof e||"object"==typeof e&&e instanceof L}(t)&&di(t);l=u&&this.injectableDefInScope(u)?Pn(Ba(t),Mi):null,this.records.set(t,l)}if(null!=l)return this.hydrate(t,l)}return(r&$.Self?Ei():this.parent).get(t,n=r&$.Optional&&n===Pr?null:n)}catch(a){if("NullInjectorError"===a.name){if((a[hi]=a[hi]||[]).unshift(Ie(t)),i)throw a;return function FD(e,t,n,r){const o=e[hi];throw t[Rd]&&o.unshift(t[Rd]),e.message=function VD(e,t,n,r=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let o=Ie(t);if(Array.isArray(t))o=t.map(Ie).join(" -> ");else if("object"==typeof t){let i=[];for(let s in t)if(t.hasOwnProperty(s)){let a=t[s];i.push(s+":"+("string"==typeof a?JSON.stringify(a):Ie(a)))}o=`{${i.join(", ")}}`}return`${n}${r?"("+r+")":""}[${o}]: ${e.replace(AD,"\n ")}`}("\n"+e.message,o,n,r),e.ngTokenPath=o,e[hi]=null,e}(a,t,"R3InjectorError",this.source)}throw a}finally{Le(s),kt(i)}}resolveInjectorInitializers(){const t=H(null),n=kt(this),r=Le(void 0);try{const i=this.get(wt,B,$.Self);for(const s of i)s()}finally{kt(n),Le(r),H(t)}}toString(){const t=[],n=this.records;for(const r of n.keys())t.push(Ie(r));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new w(205,!1)}processProvider(t){let n=Qt(t=N(t))?t:N(t&&t.provide);const r=function hb(e){return $a(e)?Pn(void 0,e.useValue):Pn(function tf(e,t,n){let r;if(Qt(e)){const o=N(e);return qt(o)||Ba(o)}if($a(e))r=()=>N(e.useValue);else if(function Xd(e){return!(!e||!e.useFactory)}(e))r=()=>e.useFactory(...Oa(e.deps||[]));else if(function Jd(e){return!(!e||!e.useExisting)}(e))r=()=>Ne(N(e.useExisting));else{const o=N(e&&(e.useClass||e.provide));if(!function gb(e){return!!e.deps}(e))return qt(o)||Ba(o);r=()=>new o(...Oa(e.deps))}return r}(e),Mi)}(t);if(!Qt(t)&&!0===t.multi){let o=this.records.get(n);o||(o=Pn(void 0,Mi,!0),o.factory=()=>Oa(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n){const r=H(null);try{return n.value===Mi&&(n.value=fb,n.value=n.factory()),"object"==typeof n.value&&n.value&&function mb(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{H(r)}}injectableDefInScope(t){if(!t.providedIn)return!1;const n=N(t.providedIn);return"string"==typeof n?"any"===n||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){const n=this._onDestroyHooks.indexOf(t);-1!==n&&this._onDestroyHooks.splice(n,1)}}function Ba(e){const t=di(e),n=null!==t?t.factory:qt(e);if(null!==n)return n;if(e instanceof L)throw new w(204,!1);if(e instanceof Function)return function pb(e){if(e.length>0)throw new w(204,!1);const n=function CD(e){return e&&(e[pi]||e[Sd])||null}(e);return null!==n?()=>n.factory(e):()=>new e}(e);throw new w(204,!1)}function Pn(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Wa(e,t){for(const n of e)Array.isArray(n)?Wa(n,t):n&&_a(n)?Wa(n.\u0275providers,t):t(n)}const C=2;const O={lFrame:Pf(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function Z(){let e=function Mf(){return O.lFrame.currentTNode}();for(;null!==e&&64===e.type;)e=e.parent;return e}function Pf(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}function ep(e,t=null,n=null,r){const o=function tp(e,t=null,n=null,r,o=new Set){const i=[n||B,ub(e)];return r=r||("object"==typeof e?void 0:Ie(e)),new On(i,t||Ei(),r||null,o)}(e,t,n,r);return o.resolveInjectorInitializers(),o}class Pe{static{this.THROW_IF_NOT_FOUND=Pr}static{this.NULL=new yi}static create(t,n){if(Array.isArray(t))return ep({name:""},n,t,"");{const r=t.name??"";return ep({name:r},t.parent,t.providers,r)}}static{this.\u0275prov=Q({token:Pe,providedIn:"any",factory:()=>Ne(Hd)})}static{this.__NG_ELEMENT_ID__=-1}}new L("").__NG_ELEMENT_ID__=e=>{const t=Z();if(null===t)throw new w(204,!1);if(2&t.type)return t.value;if(e&$.Optional)return null;throw new w(204,!1)};function Dl(e){return e.ngOriginalError}const rp=!0;let qr=(()=>{class e{static{this.__NG_ELEMENT_ID__=Tw}static{this.__NG_ENV_ID__=n=>n}}return e})();class Cw extends qr{constructor(t){super(),this._lView=t}onDestroy(t){return function Pi(e,t){if(!(256&~e[C]))throw new w(911,!1);null===e[21]&&(e[21]=[]),e[21].push(t)}(this._lView,t),()=>function tl(e,t){if(null===e[21])return;const n=e[21].indexOf(t);-1!==n&&e[21].splice(n,1)}(this._lView,t)}}function Tw(){return new Cw(function I(){return O.lFrame.lView}())}let Un=(()=>{class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new vD(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);const n=this.taskId++;return this.pendingTasks.add(n),n}remove(n){this.pendingTasks.delete(n),0===this.pendingTasks.size&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static{this.\u0275prov=Q({token:e,providedIn:"root",factory:()=>new e})}}return e})();const Tt=class Nw extends $e{constructor(t=!1){super(),this.destroyRef=void 0,this.pendingTasks=void 0,this.__isAsync=t,function nf(){return void 0!==Ad()||null!=function RD(){return Nn}()}()&&(this.destroyRef=E(qr,{optional:!0})??void 0,this.pendingTasks=E(Un,{optional:!0})??void 0)}emit(t){const n=H(null);try{super.next(t)}finally{H(n)}}subscribe(t,n,r){let o=t,i=n||(()=>null),s=r;if(t&&"object"==typeof t){const l=t;o=l.next?.bind(l),i=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(i=this.wrapInTimeout(i),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));const a=super.subscribe({next:o,error:i,complete:s});return t instanceof be&&t.add(a),a}wrapInTimeout(t){return n=>{const r=this.pendingTasks?.add();setTimeout(()=>{t(n),void 0!==r&&this.pendingTasks?.remove(r)})}}};function Bi(...e){}const bl="isAngularZone",Wi=bl+"_ID";let Sw=0;class ne{constructor(t){this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new Tt(!1),this.onMicrotaskEmpty=new Tt(!1),this.onStable=new Tt(!1),this.onError=new Tt(!1);const{enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:o=!1,scheduleInRootZone:i=rp}=t;if(typeof Zone>"u")throw new w(908,!1);Zone.assertZonePatched();const s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!o&&r,s.shouldCoalesceRunChangeDetection=o,s.callbackScheduled=!1,s.scheduleInRootZone=i,function Pw(e){const t=()=>{!function Ow(e){function t(){!function op(e){let t,n;function r(){e=Bi;try{void 0!==n&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(n),void 0!==t&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),"function"==typeof requestAnimationFrame&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}(()=>{e.callbackScheduled=!1,Ml(e),e.isCheckStableRunning=!0,wl(e),e.isCheckStableRunning=!1})}e.isCheckStableRunning||e.callbackScheduled||(e.callbackScheduled=!0,e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Ml(e))}(e)},n=Sw++;e._inner=e._inner.fork({name:"angular",properties:{[bl]:!0,[Wi]:n,[Wi+n]:!0},onInvokeTask:(r,o,i,s,a,l)=>{if(function Aw(e){return lp(e,"__ignore_ng_zone__")}(l))return r.invokeTask(i,s,a,l);try{return sp(e),r.invokeTask(i,s,a,l)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===s.type||e.shouldCoalesceRunChangeDetection)&&t(),ap(e)}},onInvoke:(r,o,i,s,a,l,u)=>{try{return sp(e),r.invoke(i,s,a,l,u)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!function kw(e){return lp(e,"__scheduler_tick__")}(l)&&t(),ap(e)}},onHasTask:(r,o,i,s)=>{r.hasTask(i,s),o===i&&("microTask"==s.change?(e._hasPendingMicrotasks=s.microTask,Ml(e),wl(e)):"macroTask"==s.change&&(e.hasPendingMacrotasks=s.macroTask))},onHandleError:(r,o,i,s)=>(r.handleError(i,s),e.runOutsideAngular(()=>e.onError.emit(s)),!1)})}(s)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get(bl)}static assertInAngularZone(){if(!ne.isInAngularZone())throw new w(909,!1)}static assertNotInAngularZone(){if(ne.isInAngularZone())throw new w(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){const i=this._inner,s=i.scheduleEventTask("NgZoneEvent: "+o,t,xw,Bi,Bi);try{return i.runTask(s,n,r)}finally{i.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}}const xw={};function wl(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Ml(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&!0===e.callbackScheduled)}function sp(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function ap(e){e._nesting--,wl(e)}function lp(e,t){return!(!Array.isArray(e)||1!==e.length)&&!0===e[0]?.data?.[t]}class jt{constructor(){this._console=console}handleError(t){const n=this._findOriginalError(t);this._console.error("ERROR",t),n&&this._console.error("ORIGINAL ERROR",n)}_findOriginalError(t){let n=t&&Dl(t);for(;n&&Dl(n);)n=Dl(n);return n||null}}class er{}class J_{resolveComponentFactory(t){throw function Y_(e){const t=Error(`No component factory found for ${Ie(e)}.`);return t.ngComponent=e,t}(t)}}class Ds{static{this.NULL=new J_}}var ir=function(e){return e[e.EarlyRead=0]="EarlyRead",e[e.Write=1]="Write",e[e.MixedReadWrite=2]="MixedReadWrite",e[e.Read=3]="Read",e}(ir||{});class No{constructor(){this.ngZone=E(ne),this.scheduler=E(er),this.errorHandler=E(jt,{optional:!0}),this.sequences=new Set,this.deferredRegistrations=new Set,this.executing=!1}static{this.PHASES=[ir.EarlyRead,ir.Write,ir.MixedReadWrite,ir.Read]}execute(){this.executing=!0;for(const t of No.PHASES)for(const n of this.sequences)if(!n.erroredOrDestroyed&&n.hooks[t])try{n.pipelinedValue=this.ngZone.runOutsideAngular(()=>n.hooks[t](n.pipelinedValue))}catch(r){n.erroredOrDestroyed=!0,this.errorHandler?.handleError(r)}this.executing=!1;for(const t of this.sequences)t.afterRun(),t.once&&(this.sequences.delete(t),t.destroy());for(const t of this.deferredRegistrations)this.sequences.add(t);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear()}register(t){this.executing?this.deferredRegistrations.add(t):(this.sequences.add(t),this.scheduler.notify(6))}unregister(t){this.executing&&this.sequences.has(t)?(t.erroredOrDestroyed=!0,t.pipelinedValue=void 0,t.once=!0):(this.sequences.delete(t),this.deferredRegistrations.delete(t))}static{this.\u0275prov=Q({token:No,providedIn:"root",factory:()=>new No})}}class VO{constructor(){this.limitUI04=this.maxFromBits(4),this.limitUI06=this.maxFromBits(6),this.limitUI08=this.maxFromBits(8),this.limitUI12=this.maxFromBits(12),this.limitUI14=this.maxFromBits(14),this.limitUI16=this.maxFromBits(16),this.limitUI32=this.maxFromBits(32),this.limitUI40=this.maxFromBits(40),this.limitUI48=this.maxFromBits(48),this.create()}toString(){return this.hex}toURN(){return"urn:uuid:"+this.hex}toSignalK(){return`urn:mrn:signalk:uuid:${this.hex}`}toBytes(){let t=this.hex.split("-"),n=[],r=0;for(let o=0;o<t.length;o++)for(let i=0;i<t[o].length;i+=2)n[r++]=parseInt(t[o].substr(i,2),16);return n}maxFromBits(t){return Math.pow(2,t)}getRandomInt(t,n){return Math.floor(Math.random()*(n-t+1))+t}randomUI04(){return this.getRandomInt(0,this.limitUI04-1)}randomUI06(){return this.getRandomInt(0,this.limitUI06-1)}randomUI08(){return this.getRandomInt(0,this.limitUI08-1)}randomUI12(){return this.getRandomInt(0,this.limitUI12-1)}randomUI14(){return this.getRandomInt(0,this.limitUI14-1)}randomUI16(){return this.getRandomInt(0,this.limitUI16-1)}randomUI32(){return this.getRandomInt(0,this.limitUI32-1)}randomUI40(){return(0|Math.random()*(1<<30))+(0|1024*Math.random())*(1<<30)}randomUI48(){return(0|Math.random()*(1<<30))+(0|Math.random()*(1<<18))*(1<<30)}create(){this.fromParts(this.randomUI32(),this.randomUI16(),16384|this.randomUI12(),128|this.randomUI06(),this.randomUI08(),this.randomUI48())}paddedString(t,n,r=null){r=r||"0";let o=n-(t=String(t)).length;for(;o>0;o>>>=1,r+=r)1&o&&(t=r+t);return t}fromParts(t,n,r,o,i,s){return this.version=r>>12&15,this.hex=this.paddedString(t.toString(16),8)+"-"+this.paddedString(n.toString(16),4)+"-"+this.paddedString(r.toString(16),4)+"-"+this.paddedString(o.toString(16),2)+this.paddedString(i.toString(16),2)+"-"+this.paddedString(s.toString(16),12),this}}class ta{static updates(){return{context:null,updates:[]}}static subscribe(){return{context:null,subscribe:[]}}static unsubscribe(){return{context:null,unsubscribe:[]}}static request(){return{requestId:(new VO).toString()}}}let $O=(()=>{class e{constructor(){this._filter="",this._wsTimeout=2e4,this._token="",this._playbackMode=!1,this.version=1,this.endpoint="",this.selfId="",this._source=null,this._connect=new $e,this.onConnect=this._connect.asObservable(),this._close=new $e,this.onClose=this._close.asObservable(),this._error=new $e,this.onError=this._error.asObservable(),this._message=new $e,this.onMessage=this._message.asObservable()}set source(n){this._source||(this._source={}),this._source.label=n}set authToken(n){this._token=n}get connectionTimeout(){return this._wsTimeout}set connectionTimeout(n){this._wsTimeout=n<3e3?3e3:n>6e4?6e4:n}get isOpen(){return!(!this.ws||1==this.ws.readyState||3==this.ws.readyState)}get filter(){return this._filter}set filter(n){this._filter=n&&-1!=n.indexOf("self")?this.selfId?this.selfId:"":n}get playbackMode(){return this._playbackMode}close(){this.ws&&(this.ws.close(),this.ws=null)}open(n,r,o){if(!(n=n||this.endpoint))return;let i=-1==n.indexOf("?")?"?":"&";r&&(n+=`${i}subscribe=${r}`),(this._token||o)&&(n+=`${r?"&":"?"}token=${this._token||o}`),this.close(),this.ws=new WebSocket(n),setTimeout(()=>{this.ws&&1!=this.ws.readyState&&3!=this.ws.readyState&&(console.warn(`Connection watchdog expired (${this._wsTimeout/1e3} sec): ${this.ws.readyState}... aborting connection...`),this.close())},this._wsTimeout),this.ws.onopen=s=>{this._connect.next(s)},this.ws.onclose=s=>{this._close.next(s)},this.ws.onerror=s=>{this._error.next(s)},this.ws.onmessage=s=>{this.parseOnMessage(s)}}parseOnMessage(n){let r;if("string"==typeof n.data)try{r=JSON.parse(n.data)}catch{return}this.isHello(r)?(this.selfId=r.self,this._playbackMode=typeof r.startTime<"u",this._message.next(r)):this.isResponse(r)?(typeof r.login<"u"&&typeof r.login.token<"u"&&(this._token=r.login.token),this._message.next(r)):this._filter&&this.isDelta(r)?r.context==this._filter&&this._message.next(r):this._message.next(r)}sendRequest(n){if("object"!=typeof n)return"";let r=ta.request();return typeof n.login>"u"&&this._token&&(r.token=this._token),Object.keys(n).forEach(i=>{r[i]=n[i]}),this.send(r),r.requestId}put(n,r,o){return this.sendRequest({context:"self"==n?"vessels.self":n,put:{path:r,value:o}})}login(n,r){return this.sendRequest({login:{username:n,password:r}})}send(n){this.ws&&("object"==typeof n&&(n=JSON.stringify(n)),this.ws.send(n))}sendUpdate(n="self",r,o){let i=ta.updates();this._token&&(i.token=this._token),i.context="self"==n?"vessels.self":n,this._token&&(i.token=this._token);let s=[];"string"==typeof r&&s.push({path:r,value:o}),"object"==typeof r&&Array.isArray(r)&&(s=r);let a={timestamp:(new Date).toISOString(),values:s};this._source&&(a.source=this._source),i.updates.push(a),this.send(i)}subscribe(n="*",r="*",o){let i=ta.subscribe();if(this._token&&(i.token=this._token),i.context="self"==n?"vessels.self":n,this._token&&(i.token=this._token),"object"==typeof r&&Array.isArray(r)&&(i.subscribe=r),"string"==typeof r){let s={};s.path=r,o&&"object"==typeof o&&(o.period&&(s.period=o.period),o.minPeriod&&(s.minPeriod=o.period),o.format&&("delta"==o.format||"full"==o.format)&&(s.format=o.format),o.policy&&("instant"==o.policy||"ideal"==o.policy||"fixed"==o.policy)&&(s.policy=o.policy)),i.subscribe.push(s)}this.send(i)}unsubscribe(n="*",r="*"){let o=ta.unsubscribe();this._token&&(o.token=this._token),o.context="self"==n?"vessels.self":n,this._token&&(o.token=this._token),"object"==typeof r&&Array.isArray(r)&&(o.unsubscribe=r),"string"==typeof r&&o.unsubscribe.push({path:r}),this.send(o)}raiseAlarm(n="*",r,o){let i;i="string"==typeof r&&-1==r.indexOf("notifications.")?`notifications.${r}`:r,this.put(n,i,o.value)}clearAlarm(n="*",r){let o=-1==r.indexOf("notifications.")?`notifications.${r}`:r;this.put(n,o,null)}isSelf(n){return n.context==this.selfId}isDelta(n){return typeof n.context<"u"}isHello(n){return typeof n.version<"u"&&typeof n.self<"u"}isResponse(n){return typeof n.requestId<"u"}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=Q({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();class BO{constructor(t,n,r,o){this._method=[],this._message="",this._message=typeof t<"u"?t:"",this._state=typeof n<"u"?n:jI.alarm,r&&this._method.push(Zc.visual),o&&this._method.push(Zc.sound)}get value(){return{message:this._message,state:this._state,method:this._method}}}var jI=function(e){return e.normal="normal",e.alert="alert",e.warn="warn",e.alarm="alarm",e.emergency="emergency",e}(jI||{}),Zc=function(e){return e.visual="visual",e.sound="sound",e}(Zc||{});class GO{constructor(){this.obsList=[],this.stream=new $O,this._connect=new $e,this.onConnect=this._connect.asObservable(),this._close=new $e,this.onClose=this._close.asObservable(),this._error=new $e,this.onError=this._error.asObservable(),this._message=new $e,this.onMessage=this._message.asObservable()}get endpoint(){return this.stream.endpoint}set endpoint(t){this.stream.endpoint=t}get selfId(){return this.stream.selfId}set selfId(t){this.stream.selfId=t}get _source(){return this.stream._source}set _source(t){this.stream._source=t}set source(t){this.stream.source=t}set authToken(t){this.stream.authToken=t}get connectionTimeout(){return this.stream.connectionTimeout}set connectionTimeout(t){this.stream.connectionTimeout=t}get isOpen(){return this.stream.isOpen}get filter(){return this.stream.filter}set filter(t){this.stream.filter=t}get playbackMode(){return this.stream.playbackMode}open(t,n="none",r){this.obsList.push(this.stream.onConnect.subscribe(o=>this._connect.next(o))),this.obsList.push(this.stream.onClose.subscribe(o=>this._close.next(o))),this.obsList.push(this.stream.onError.subscribe(o=>this._error.next(o))),this.obsList.push(this.stream.onMessage.subscribe(o=>this._message.next(o))),this.stream.open(t,n,r)}close(){this.stream.close(),this.obsList.forEach(t=>t.unsubscribe()),this.obsList=[]}sendRequest(t){return this.stream.sendRequest(t)}put(t,n,r){return this.stream.put(t,n,r)}login(t,n){return this.stream.login(t,n)}send(t){this.stream.send(t)}sendUpdate(t="self",n,r){this.stream.sendUpdate(t,n,r)}subscribe(t="*",n="*",r){this.stream.subscribe(t,n,r)}unsubscribe(t="*",n="*"){this.stream.unsubscribe(t,n)}raiseAlarm(t="*",n,r){this.stream.raiseAlarm(t,n,r)}clearAlarm(t="*",n){this.stream.clearAlarm(t,n)}isSelf(t){return this.stream.isSelf(t)}isDelta(t){return this.stream.isDelta(t)}isHello(t){return this.stream.isHello(t)}isResponse(t){return this.stream.isResponse(t)}}class na{id;name;mmsi;position=[0,0];state;type={id:-1,name:""};properties={};lastUpdated=new Date;callsignVhf;callsignHf;orientation=0}class FI extends na{heading;headingTrue=null;headingMagnetic=null;cog;cogTrue=null;cogMagnetic=null;sog;registrations={};type={id:-1,name:""};wind={direction:null,mwd:null,twd:null,tws:null,speedTrue:null,sog:null,awa:null,aws:null};buddy=!1;closestApproach=null;mode="day";anchor={maxRadius:null,radius:null,position:null};resourceUpdates=[];autopilot={};track=[];courseApi={arrivalCircle:0,activeRoute:{},nextPoint:{},previousPoint:{}};performance={beatAngle:null,gybeAngle:null};racing;vectors={cog:[]}}class VI extends na{constructor(){super()}}class qO extends na{constructor(){super()}}class zO extends na{sog=0;track=[];constructor(){super()}}class ZO extends VI{twd;tws;temperature;constructor(){super()}}class Qc{static celciusToKelvin(t=0){return t+273.15}static kelvinToCelcius(t=0){return t-273.15}static kelvinToFarenheit(t=0){return 1.8*t-459.67}static degreesToRadians(t=0){return t*Math.PI/180}static radiansToDegrees(t=0){return 180*t/Math.PI}static angleToDirection(t,n){const r=2*Math.PI;if(n||(n=0),t||(t=0),isNaN(n)||isNaN(t))return null;const o=n+t;return o>r?o-r:o<0?r+o:o}static directionToAngle(t,n){const r=2*Math.PI;if(n||(n=0),t||(t=0),isNaN(n)||isNaN(t))return null;const o=n-t;let i;if(o>0)i=o>Math.PI?r-o:0-o;else if(o<0){const s=Math.abs(o);i=s>Math.PI?s-r:s}else i=o;return i}static knotsToKm(t){return 1.852*t}static nauticalMilesToKm(t){return 1.852*t}static knotsToMSec(t){return.51444325460445*t}static kmToKnots(t){return.539957*t}static kmToNauticalMiles(t){return.539957*t}static kmToMiles(t){return.621371*t}static metersToFeet(t){return 3.28084*t}static msecToKnots(t){return 1.94384*t}static msecToKmh(t){return 3.6*t}static msecToMph(t){return 2.23694*t}static nauticalMilesToMiles(t){return 1.15078*t}static milesToKm(t){return 1.60934*t}static milesToNauticalMiles(t){return.868976*t}static rpmToHertz(t){return t/60}}var vn=ua(2541);class yt{static destCoordinate(t,n,r){const o=(0,vn.computeDestinationPoint)(t,r,Qc.radiansToDegrees(n));return[o.longitude,o.latitude]}static distanceTo(t,n){return(0,vn.getDistance)(t,n)}static routeLength(t){return(0,vn.getPathLength)(t)}static routeLegs(t,n){if(t.length<2)return[];const r=[];r.push(n?{bearing:(0,vn.getGreatCircleBearing)(n,t[0]),distance:yt.distanceTo(n,t[0])}:{bearing:0,distance:0});for(let o=1;o<t.length;++o){const i={bearing:(0,vn.getGreatCircleBearing)(t[o-1],t[o]),distance:yt.distanceTo(t[o-1],t[o])};r.push(i)}return r}static centreOfPolygon(t){const n=(0,vn.getCenter)(t);return[n.longitude,n.latitude]}static inDLCrossingZone(t,n=170){return Math.abs(t[0])>=n}static inBounds(t,n){return(0,vn.isPointInPolygon)(t,[[n[0],n[1]],[n[0],n[3]],[n[2],n[3]],[n[2],n[1]],[n[0],n[1]]])}static calcMapifiedExtent(t,n){const o=111111*Math.cos(Qc.degreesToRadians(t[1])),i=[0,0,0,0];return i[1]=t[1]+(0-Math.abs(n))/111111,i[3]=t[1]+Math.abs(n)/111111,i[0]=t[0]+(0-Math.abs(n))/o,i[2]=t[0]+Math.abs(n)/o,i}static normaliseCoords(t){if(!Array.isArray(t))return[0,0];if("number"==typeof t[0]){if(t[0]>180)for(;t[0]>180;)t[0]=t[0]-360;else if(t[0]<-180)for(;t[0]<-180;)t[0]=360+t[0];return t}return Array.isArray(t[0])?(t.forEach(n=>this.normaliseCoords(n)),t):void 0}}class QO{action;playback=!1;result=null;type;self=null;timestamp;constructor(t){this.action="notification",this.type=t}}class HI{action;playback=!1;result=null;timestamp;self=null;constructor(){this.action="update"}}class KO extends HI{constructor(){super(),this.action="trail"}}var YO=ua(6380);const JO=["environment.wind.speedTrue","environment.wind.speedOverGround","environment.wind.angleTrueGround","environment.wind.angleTrueWater","environment.wind.directionTrue","environment.wind.directionMagnetic","navigation.courseOverGroundTrue","navigation.courseOverGroundMagnetic","navigation.headingTrue","navigation.headingMagnetic"];let k,ve,$I;const Go=[];let Jc,ra=[],Yc=!1,Xc=!1;const ue={signalk:{},aisState:[]};let Re,WI,UI=[0,0,0,0],BI=60,qo=0,yn={},In=500,Ot=!1;const Pt={maxAge:54e4,staleAge:36e4,lastTick:(new Date).valueOf(),maxTrack:20};let ed={cogLine:10,aisCogLine:10};const zo={trailDuration:24,trailResolution:{lastHour:"5s",next23:"10s",beyond24:"1m"}};let Zo,Qo="freeboard-sk";function GI(){Re={updated:{},stale:{},expired:{}}}function oa({action:e,msg:t}){switch(e){case"onConnect":postMessage({action:"open",playback:Ot,result:t.target.readyState});break;case"onClose":zI(!1);break;case"onError":postMessage({action:"error",playback:Ot,result:"Connection error!"});break;case"onMessage":!function oP(e){ve.isHello(e)?(postMessage({action:"hello",result:e,self:e.self,playback:Ot}),In&&KI()):ve.isDelta(e)?(Yc=!0,e.updates.forEach(t=>{t.values&&(Zo=t.$source,t.values.forEach(n=>{if(WI=t.timestamp,e.context)switch(e.context.split(".")[0]){case"shore":case"atons":ue?.signalk.atons&&function aP(e,t){let n=!1;if(-1!==e.indexOf("shore.basestations")&&(n=!0),!k.atons.has(e)){const o=new VI;o.id=e,o.position=null,n&&(o.type.id=-1,o.type.name="Basestation"),k.atons.set(e,o)}const r=k.atons.get(e);""===t.path?(typeof t.value.name<"u"&&(r.name=t.value.name),typeof t.value.mmsi<"u"&&(r.mmsi=t.value.mmsi),typeof t.value.atonType<"u"&&(r.type=t.value.atonType)):"atonType"===t.path?r.type=t.value:"navigation.position"===t.path?(r.position=[t.value.longitude,t.value.latitude],r.positionReceived=!0):r.properties[t.path]=t.value}(e.context,n),Yo(e.context,k.atons,ue?.signalk.atons);break;case"sar":ue?.signalk.sar&&function lP(e,t){if(!k.sar.has(e)){const r=new qO;r.id=e,r.position=null,r.type.id=-1,r.type.name="SaR Beacon",k.sar.set(e,r)}const n=k.sar.get(e);""===t.path?(typeof t.value.name<"u"&&(n.name=t.value.name),typeof t.value.mmsi<"u"&&(n.mmsi=t.value.mmsi),typeof t.value.communication<"u"&&(n.callsignVhf=t.value.communication.callsignVhf??"",n.callsignHf=t.value.communication.callsignHf??"")):"communication.callsignVhf"===t.path?n.callsignVhf=t.value:"communication.callsignHf"===t.path?n.callsignHf=t.value:"navigation.position"===t.path&&t.value&&(n.position=yt.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0)}(e.context,n),Yo(e.context,k.sar,ue?.signalk.sar);break;case"aircraft":ue?.signalk.aircraft&&function cP(e,t){if(!k.aircraft.has(e)){const r=new zO;r.id=e,r.position=null,k.aircraft.set(e,r)}const n=k.aircraft.get(e);""===t.path?(typeof t.value.name<"u"&&(n.name=t.value.name),typeof t.value.mmsi<"u"&&(n.mmsi=t.value.mmsi),typeof t.value.communication<"u"&&(n.callsignVhf=t.value.communication.callsignVhf??"",n.callsignHf=t.value.communication.callsignHf??"")):"communication.callsignVhf"===t.path?n.callsignVhf=t.value:"communication.callsignHf"===t.path?n.callsignHf=t.value:"navigation.position"===t.path&&t.value?(n.position=yt.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0,td(n)):"navigation.courseOverGroundTrue"===t.path?n.orientation=t.value:"navigation.speedOverGround"===t.path&&(n.sog=t.value)}(e.context,n),Yo(e.context,k.aircraft,ue?.signalk.aircraft);break;case"meteo":ue?.signalk.meteo&&(function uP(e,t){if(!k.meteo.has(e)){const r=new ZO;r.id=e,r.position=null,r.type.id=-1,r.type.name="Weather Station",k.meteo.set(e,r)}const n=k.meteo.get(e);if(""===t.path){if(typeof t.value.name<"u"&&(n.name=t.value.name),typeof t.value.mmsi<"u"){const r=e.split(":").slice(-2);n.mmsi=2===r.length?`${r[0]}:${r[1]}`:t.value.mmsi}typeof t.value.communication<"u"&&(n.callsignVhf=t.value.communication.callsignVhf??"",n.callsignHf=t.value.communication.callsignHf??"")}else"communication.callsignVhf"===t.path?n.callsignVhf=t.value:"communication.callsignHf"===t.path?n.callsignHf=t.value:"environment.outside.temperature"===t.path?n.temperature=t.value:"environment.wind.directionTrue"===t.path?n.twd=t.value:"environment.wind.averageSpeed"===t.path?n.tws=t.value:"navigation.position"===t.path&&t.value&&(n.position=yt.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0)}(e.context,n),XI(n)),Yo(e.context,k.meteo,ue?.signalk.meteo);break;case"vessels":if(ve.isSelf(e))k.self.id||(k.self.id=e.context),JI(k.self,n,!0),XI(n);else{if(ue?.signalk.vessels){const r=function iP(e){if(!k.aisTargets.has(e)){const t=new FI;t.id=e,t.position=null,k.aisTargets.set(e,t)}return k.aisTargets.get(e)}(e.context);JI(r,n)}Yo(e.context,k.aisTargets,ue?.signalk.vessels,ue?.aisState)}}}))}),QI()):ve.isResponse(e)&&postMessage({action:"response",result:e})}(t)}}function qI(e={}){e.interval&&"number"==typeof e.interval&&(In=e.interval,YI(),KI(),BI=1/(In/1e3)*60),Ot=!!e.playback,e.selections&&(typeof e.selections.preferredPaths<"u"&&(yn=e.selections.preferredPaths),e.selections.aisMaxAge&&"number"==typeof e.selections.aisMaxAge&&(Pt.maxAge=e.selections.aisMaxAge),e.selections.aisStaleAge&&"number"==typeof e.selections.aisStaleAge&&(Pt.staleAge=e.selections.aisStaleAge),"number"==typeof e.selections.signalk.maxRadius&&(ue.signalk=e.selections.signalk),typeof e.selections.aisState<"u"&&Array.isArray(e.selections.aisState)&&(ue.aisState=e.selections.aisState),ed=e.selections.vessel)}function zI(e=!1){YI(),Go.forEach(t=>t.unsubscribe()),ve&&e&&ve.close(),ve=null,postMessage({action:"close",result:e,playback:Ot})}function Ko(e){return new Promise((t,n)=>{fetch(`${e}`).then(r=>{r.json().then(o=>t(o)).catch(o=>n(o))}).catch(r=>{n(r)})})}function ZI(){Ko(Jc+"/tracks"+(ue&&ue.signalk&&ue.signalk.maxRadius?`?radius=${ue.signalk.maxRadius}`:"?radius=10000")).then(t=>{Xc=!0,Object.entries(t).forEach(n=>{if(k.aisTargets.has(n[0])){const r=k.aisTargets.get(n[0]);r.track=n[1].coordinates,td(r)}})}).catch(()=>{Xc=!1})}function Yo(e,t,n=!0,r=[]){if(n){let o=t.get(e);o&&r.includes(o?.state)&&(Re.expired[e]=!0,o=null),o&&ue.signalk.maxRadius?o.positionReceived&&yt.inBounds(o.position,UI)?Re.updated[e]=!0:(t.delete(e),Re.expired[e]=!0):Re.updated[e]=!0}else 0!==t.size&&(t.forEach((o,i)=>{Re.expired[i]=!0}),t.clear())}function QI(e=!1){if(!In||e){const t=new HI;t.playback=Ot,k.aisStatus.updated=Object.keys(Re.updated),k.aisStatus.stale=Object.keys(Re.stale),k.aisStatus.expired=Object.keys(Re.expired),t.result=k,t.timestamp=Ot?WI:k.self.lastUpdated.toISOString(),postMessage(t),GI(),k.self.resourceUpdates=[],0===qo&&(function sP(){const e=(new Date).valueOf();k.aisTargets.forEach((t,n)=>{t.lastUpdated.valueOf()<e-Pt.maxAge?(Re.expired[n]=!0,k.aisTargets.delete(n)):t.lastUpdated.valueOf()<e-Pt.staleAge&&(Re.stale[n]=!0)}),k.aircraft.forEach((t,n)=>{t.lastUpdated.valueOf()<e-Pt.maxAge?(Re.expired[n]=!0,k.aircraft.delete(n)):t.lastUpdated.valueOf()<e-Pt.staleAge&&(Re.stale[n]=!0)}),k.sar.forEach((t,n)=>{t.lastUpdated.valueOf()<e-Pt.maxAge?(Re.expired[n]=!0,k.sar.delete(n)):t.lastUpdated.valueOf()<e-Pt.staleAge&&(Re.stale[n]=!0)})}(),k.self.positionReceived&&ue?.signalk.maxRadius&&(UI=yt.calcMapifiedExtent(k.self.position,ue.signalk.maxRadius),qo++)),qo=qo>=BI?0:qo+1}}function KI(){In&&"number"==typeof In&&ra.push(setInterval(()=>{Yc&&(QI(!0),Yc=!1)},In)),ra.push(setInterval(()=>{Xc&&ZI()},6e4))}function YI(){ra.forEach(e=>clearInterval(e)),ra=[]}function JI(e,t,n=!1){if(e.lastUpdated=new Date,n){const o=-1!==t.path.indexOf("course")?t.path.split(".").slice(0,2).join("."):t.path;-1!==JO.indexOf(o)&&(k.paths[o]=null),t.path.includes("navigation.racing")&&(e.properties[t.path]=t.value)}if(""===t.path)typeof t.value.name<"u"&&(e.name=t.value.name),typeof t.value.mmsi<"u"&&(e.mmsi=t.value.mmsi),typeof t.value.registrations<"u"&&(e.registrations=t.value.registrations),typeof t.value.buddy<"u"&&(e.buddy=t.value.buddy),typeof t.value.communication<"u"&&(e.callsignVhf=t.value.communication.callsignVhf??"",e.callsignHf=t.value.communication.callsignHf??"");else if("communication.callsignVhf"===t.path)e.callsignVhf=t.value;else if("communication.callsignHf"===t.path)e.callsignHf=t.value;else if("performance.beatAngle"===t.path)e.performance.beatAngle=t.value;else if("performance.gybeAngle"===t.path)e.performance.gybeAngle=t.value;else if("design.aisShipType"===t.path)e.type=t.value;else if("navigation.position"===t.path&&t.value){if(typeof t.value.latitude>"u"||typeof t.value.longitude>"u")return;e.position=yt.normaliseCoords([t.value.longitude,t.value.latitude]),e.positionReceived=!0,n||td(e)}else"navigation.state"===t.path?e.state=t.value:"navigation.speedOverGround"===t.path?e.sog=t.value:"environment.wind.angleApparent"===t.path?e.wind.awa=t.value:"environment.wind.speedApparent"===t.path?e.wind.aws=t.value:"environment.wind.speedTrue"===t.path?e.wind.speedTrue=t.value:"environment.wind.speedOverGround"===t.path?e.wind.sog=t.value:"environment.wind.directionTrue"===t.path?e.wind.twd=t.value:"environment.wind.directionMagnetic"===t.path?e.wind.mwd=t.value:"environment.mode"===t.path?e.mode=t.value:-1!==t.path.indexOf("navigation.course.")?-1!==t.path.indexOf("navigation.course.calcValues")?-1===t.path.indexOf("navigation.course.calcValues.previousPoint")&&(e[`course.${t.path.split(".").slice(-1)[0]}`]=t.value):-1!==t.path.indexOf("navigation.course.activeRoute")?e.courseApi.activeRoute=t.value:-1!==t.path.indexOf("navigation.course.nextPoint")?e.courseApi.nextPoint=t.value:-1!==t.path.indexOf("navigation.course.previousPoint")?e.courseApi.previousPoint=t.value:"navigation.course.arrivalCircle"===t.path&&(e.courseApi.arrivalCircle=t.value):-1!==t.path.indexOf("navigation.closestApproach")?e.closestApproach=t.value:"navigation.anchor.position"===t.path?e.anchor.position=t.value:"navigation.anchor.maxRadius"===t.path?e.anchor.maxRadius=t.value:"navigation.anchor.currentRadius"===t.path?e.anchor.radius=t.value:-1!==t.path.indexOf("resources.")?e.resourceUpdates.push(t):"steering.autopilot.state"===t.path&&Zo===Qo?e.autopilot.state=t.value:"steering.autopilot.mode"===t.path&&Zo===Qo?e.autopilot.mode=t.value:"steering.autopilot.target"===t.path&&Zo===Qo?e.autopilot.target=t.value:"steering.autopilot.engaged"===t.path&&Zo===Qo?e.autopilot.enabled=t.value:"steering.autopilot.defaultPilot"===t.path?(e.autopilot.default=t.value,Qo=t.value):"navigation.courseOverGroundTrue"===t.path?e.cogTrue=t.value:"navigation.courseOverGroundMagnetic"===t.path?e.cogMagnetic=t.value:"navigation.headingTrue"===t.path?e.headingTrue=t.value:"navigation.headingMagnetic"===t.path&&(e.headingMagnetic=t.value);typeof yn.heading<"u"&&t.path===yn.heading&&(e.orientation=t.value),typeof yn.tws<"u"&&t.path===yn.tws&&(e.wind.tws=t.value),typeof yn.twd<"u"&&t.path===yn.twd&&(e.wind.direction="environment.wind.angleTrueGround"===t.path||"environment.wind.angleTrueWater"===t.path?Qc.angleToDirection(t.value,e.orientation??0):t.value);const r=e.cogTrue??e.cogMagnetic??void 0;typeof r<"u"&&e.position&&(e.vectors.cog=[e.position,yt.destCoordinate(e.position,r,(e.sog??0)*(60*(n?ed.cogLine:ed.aisCogLine)))])}function XI(e,t){const n={path:e.path,value:e.value,context:t||null};let r;const o=e.path.split(".");if(("notifications.environment.depth.belowTransducer"===e.path||"notifications.environment.depth.belowSurface"===e.path||"notifications.environment.depth.belowKeel"===e.path)&&(r=o[2]),"notifications.navigation.anchor"===e.path&&(r=o[2]),-1!==["mob","sinking","fire","piracy","flooding","collision","grounding","listing","adrift","abandon"].indexOf(o[o.length-1])&&(r=o[o.length-1]),-1!==e.path.indexOf("notifications.navigation.closestApproach")&&(r=o[2],n.context=o[3]),-1!==e.path.indexOf("notifications.buddy")&&(r=o[1],n.context=o[2]),-1!==e.path.indexOf("notifications.navigation.course.arrivalCircleEntered")&&(r=o[3]),-1!==e.path.indexOf("notifications.navigation.course.perpendicularPassed")&&(r=o[3]),-1!==e.path.indexOf("notifications.meteo.warning")&&(r=o[1]),r){const i=new QO(r);i.playback=Ot,i.result=n,postMessage(i)}}function td(e){if(e.track&&0===e.track.length)e.track.push([e.position]);else{const n=e.track[e.track.length-1][e.track[e.track.length-1].length-1];n[0]!==e.position[0]&&n[1]!==e.position[1]&&e.track[e.track.length-1].push(e.position)}e.track[e.track.length-1]=e.track[e.track.length-1].slice(0-Pt.maxTrack)}addEventListener("message",({data:e})=>{!function eP(e){if(e.cmd)switch(e.cmd){case"open":qI(e.options),function nP(e){if(ve)return;if(!e.url)return void postMessage({action:"error",result:"Valid options not provided!"});const t=e.url.split("/");if(t.pop(),t.push("api"),t[0]="wss:"===t[0]?"https:":"http:",Jc=t.join("/"),function XO(){k={self:new FI,aisTargets:new Map,aisStatus:{updated:[],stale:[],expired:[]},paths:{},atons:new Map,aircraft:new Map,sar:new Map,meteo:new Map},k.self.positionReceived=!1,GI()}(),ve=new GO,Go.push(ve.onConnect.subscribe(n=>oa({action:"onConnect",msg:n}))),Go.push(ve.onClose.subscribe(n=>oa({action:"onClose",msg:n}))),Go.push(ve.onError.subscribe(n=>oa({action:"onError",msg:n}))),Go.push(ve.onMessage.subscribe(n=>oa({action:"onMessage",msg:n}))),ve.authToken=$I,e.playback){const n=e.playbackOptions.startTime?`?startTime=${e.playbackOptions.startTime}`:null;let r=e.playbackOptions.playbackRate?`playbackRate=${e.playbackOptions.playbackRate}`:null;r=r?n?"&"+r:"?"+r:null,ve.open(`${e.url}${n||""}${r||""}`,e.playbackOptions.subscribe,e.token)}else ve.open(e.url,e.subscribe,e.token),ZI()}(e.options);break;case"close":zI(!0);break;case"subscribe":ve.subscribe(e.options.context,e.options.path);break;case"settings":qI(e.options);break;case"alarm":!function rP(e){const t=-1===e.type.indexOf("notifications.")?`notifications.${e.type}`:e.type;e.raise?ve.raiseAlarm("self",t,new BO(e.message,e.state,!0,!0)):ve.clearAlarm("self",t)}(e.options);break;case"vessel":if(e.options){let t;t="self"===e.options.context?k.self:k.aisTargets.get(e.options.context),t&&e.options.name&&(t.name=e.options.name)}break;case"auth":e.options&&typeof e.options.token<"u"&&($I=e.options.token);break;case"trail":e.options&&(zo.trailDuration=e.options.trailDuration??24,e.options.trailResolution&&(zo.trailResolution.lastHour=e.options.trailResolution.lastHour??"5s",zo.trailResolution.next23=e.options.trailResolution.next23??"1m",zo.trailResolution.beyond24=e.options.trailResolution.beyond24??"5m")),function tP(e){const t=Jc+"/self/track?",n=[];e.trailDuration>24&&(n.push(Ko(`${t}timespan=${e.trailDuration-24}h&resolution=${e.trailResolution.beyond24}&timespanOffset=24`)),n.push(Ko(`${t}timespan=23h&resolution=${e.trailResolution.next23}&timespanOffset=1`))),e.trailDuration>1&&e.trailDuration<25&&n.push(Ko(`${t}timespan=${e.trailDuration-1}h&resolution=${e.trailResolution.next23}&timespanOffset=1`)),n.push(Ko(`${t}timespan=1h&resolution=${e.trailResolution.lastHour}`));let i=[];const s=new KO;s.playback=Ot,Promise.all(n).then(a=>{let l=0;const u=n.length-1;a.forEach(d=>{if(d.type&&"MultiLineString"===d.type&&d.coordinates&&Array.isArray(d.coordinates))if(l!==u){let f=[];for(d.coordinates.forEach(p=>{f=f.concat(p)}),f=(0,YO.p$)(f,5e-4,true);f.length>60;){const p=f.slice(0,60);i.push(p),f=f.slice(59),f[0]=[f[0][0]+5e-9,f[0][1]+5e-9]}0!==f.length&&i.push(f)}else i=i.concat(d.coordinates);l++}),s.result=i,postMessage(s)}).catch(()=>{s.result=null,postMessage(s)})}(zo)}}(e)})})();
1
+ (()=>{"use strict";var eD={2222:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(7029)),o=l(n(3100)),i=l(n(5705)),s=l(n(942)),a=n(7636);function l(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,p,h){var g=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6371e3,m=(0,r.default)(f),y=(0,o.default)(f),v=p/g,b=(0,i.default)(h),_=(0,i.default)(m),R=(0,i.default)(y),U=Math.asin(Math.sin(_)*Math.cos(v)+Math.cos(_)*Math.sin(v)*Math.cos(b)),G=R+Math.atan2(Math.sin(b)*Math.sin(v)*Math.cos(_),Math.cos(v)-Math.sin(_)*Math.sin(U)),te=(0,s.default)(G);return(te<a.MINLON||te>a.MAXLON)&&(G=(G+3*Math.PI)%(2*Math.PI)-Math.PI,te=(0,s.default)(G)),{latitude:(0,s.default)(U),longitude:te}}},7636:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.areaConversion=t.timeConversion=t.distanceConversion=t.altitudeKeys=t.latitudeKeys=t.longitudeKeys=t.MAXLON=t.MINLON=t.MAXLAT=t.MINLAT=t.earthRadius=t.sexagesimalPattern=void 0,t.sexagesimalPattern=/^([0-9]{1,3})\xb0\s*([0-9]{1,3}(?:\.(?:[0-9]{1,}))?)['\u2032]\s*(([0-9]{1,3}(\.([0-9]{1,}))?)["\u2033]\s*)?([NEOSW]?)$/,t.earthRadius=6378137,t.MINLAT=-90,t.MAXLAT=90,t.MINLON=-180,t.MAXLON=180,t.longitudeKeys=["lng","lon","longitude",0],t.latitudeKeys=["lat","latitude",1],t.altitudeKeys=["alt","altitude","elevation","elev",2],t.distanceConversion={m:1,km:.001,cm:100,mm:1e3,mi:1/1609.344,sm:1/1852.216,ft:100/30.48,in:100/2.54,yd:1/.9144},t.timeConversion={m:60,h:3600,d:86400};var p={m2:1,km2:1e-6,ha:1e-4,a:.01,ft2:10.763911,yd2:1.19599,in2:1550.0031};t.areaConversion=p,p.sqm=p.m2,p.sqkm=p.km2,p.sqft=p.ft2,p.sqyd=p.yd2,p.sqin=p.in2},179:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var u=r.areaConversion[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"m"];if(u)return a*u;throw new Error("Invalid unit used for area conversion.")}},917:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var u=r.distanceConversion[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"m"];if(u)return a*u;throw new Error("Invalid unit used for distance conversion.")}},1167:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){switch(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kmh"){case"kmh":return a*r.timeConversion.h*r.distanceConversion.km;case"mph":return a*r.timeConversion.h*r.distanceConversion.mi;default:return a}}},8948:(e,t)=>{function n(d,f){return function a(d){if(Array.isArray(d))return d}(d)||function s(d,f){if(!(typeof Symbol>"u")&&Symbol.iterator in Object(d)){var p=[],h=!0,g=!1,m=void 0;try{for(var v,y=d[Symbol.iterator]();!(h=(v=y.next()).done)&&(p.push(v.value),!f||p.length!==f);h=!0);}catch(b){g=!0,m=b}finally{try{!h&&null!=y.return&&y.return()}finally{if(g)throw m}}return p}}(d,f)||function o(d,f){if(d){if("string"==typeof d)return i(d,f);var p=Object.prototype.toString.call(d).slice(8,-1);if("Object"===p&&d.constructor&&(p=d.constructor.name),"Map"===p||"Set"===p)return Array.from(d);if("Arguments"===p||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(p))return i(d,f)}}(d,f)||function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(d,f){(null==f||f>d.length)&&(f=d.length);for(var p=0,h=new Array(f);p<f;p++)h[p]=d[p];return h}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(f){var h=n(f.toString().split("."),2),m=h[1],y=Math.abs(Number(h[0])),v=60*+("0."+(m||0)),b=v.toString().split("."),_=Math.floor(v),R=function(f){var h=Math.pow(10,arguments.length>1&&void 0!==arguments[1]?arguments[1]:4);return Math.round(f*h)/h}(60*+("0."+(b[1]||0))).toString(),G=n(R.split("."),2),te=G[0],J=G[1],De=void 0===J?"0":J;return y+"\xb0 "+_.toString().padStart(2,"0")+"' "+te.padStart(2,"0")+"."+De.padEnd(1,"0")+'"'}},1118:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(2447));t.default=function(l,u){return(0,r.default)(l,u)[0]}},1691:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(5705)),o=a(n(7029)),i=a(n(3100)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d){var f=0;if(d.length>2){for(var p,h,g,m=0;m<d.length;m++){m===d.length-2?(p=d.length-2,h=d.length-1,g=0):m===d.length-1?(p=d.length-1,h=0,g=1):(p=m,h=m+1,g=m+2);var y=(0,i.default)(d[p]),v=(0,o.default)(d[h]),b=(0,i.default)(d[g]);f+=((0,r.default)(b)-(0,r.default)(y))*Math.sin((0,r.default)(v))}f=f*s.earthRadius*s.earthRadius/2}return Math.abs(f)}},9144:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=i(n(7029)),o=i(n(3100));function i(l){return l&&l.__esModule?l:{default:l}}t.default=function(u){if(!1===Array.isArray(u)||0===u.length)throw new Error("No points were given.");return u.reduce(function(c,d){var f=(0,r.default)(d),p=(0,o.default)(d);return{maxLat:Math.max(f,c.maxLat),minLat:Math.min(f,c.minLat),maxLng:Math.max(p,c.maxLng),minLng:Math.min(p,c.minLng)}},{maxLat:-1/0,minLat:1/0,maxLng:-1/0,minLng:1/0})}},190:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(7029)),o=l(n(3100)),i=l(n(5705)),s=l(n(942)),a=n(7636);function l(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,p){var J,De,h=(0,r.default)(f),g=(0,o.default)(f),m=(0,i.default)(h),y=(0,i.default)(g),v=p/a.earthRadius,b=m-v,_=m+v,R=(0,i.default)(a.MAXLAT),U=(0,i.default)(a.MINLAT),G=(0,i.default)(a.MAXLON),te=(0,i.default)(a.MINLON);if(b>U&&_<R){var Dn=Math.asin(Math.sin(v)/Math.cos(m));(J=y-Dn)<te&&(J+=2*Math.PI),(De=y+Dn)>G&&(De-=2*Math.PI)}else b=Math.max(b,U),_=Math.min(_,R),J=te,De=G;return[{latitude:(0,s.default)(b),longitude:(0,s.default)(J)},{latitude:(0,s.default)(_),longitude:(0,s.default)(De)}]}},5524:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=a(n(942));function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d){if(!1===Array.isArray(d)||0===d.length)return!1;var f=d.length,p=d.reduce(function(y,v){var b=(0,i.default)((0,r.default)(v)),_=(0,i.default)((0,o.default)(v));return{X:y.X+Math.cos(b)*Math.cos(_),Y:y.Y+Math.cos(b)*Math.sin(_),Z:y.Z+Math.sin(b)}},{X:0,Y:0,Z:0}),h=p.X/f,g=p.Y/f,m=p.Z/f;return{longitude:(0,s.default)(Math.atan2(g,h)),latitude:(0,s.default)(Math.atan2(m,Math.sqrt(h*h+g*g)))}}},7088:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(9144));t.default=function(l){var u=(0,r.default)(l),d=u.minLng+(u.maxLng-u.minLng)/2;return{latitude:parseFloat((u.minLat+(u.maxLat-u.minLat)/2).toFixed(6)),longitude:parseFloat(d.toFixed(6))}}},9952:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(939));t.default=function(l,u){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default,d="function"==typeof c?c(l,u):(0,r.default)(l,u);if(isNaN(d))throw new Error("Could not calculate bearing for given points. Check your bearing function");switch(Math.round(d/22.5)){case 1:return"NNE";case 2:return"NE";case 3:return"ENE";case 4:return"E";case 5:return"ESE";case 6:return"SE";case 7:return"SSE";case 8:return"S";case 9:return"SSW";case 10:return"SW";case 11:return"WSW";case 12:return"W";case 13:return"WNW";case 14:return"NW";case 15:return"NNW";default:return"N"}}},8744:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i,s){return s.reduce(function(a,l){if(typeof i>"u"||null===i)throw new Error("'".concat(i,"' is no valid coordinate."));return Object.prototype.hasOwnProperty.call(i,l)&&typeof l<"u"&&typeof a>"u"?(a=l,l):a},void 0)}},4695:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636),o=function i(d){return d&&d.__esModule?d:{default:d}}(n(8744));function s(d,f){var p=Object.keys(d);if(Object.getOwnPropertySymbols){var h=Object.getOwnPropertySymbols(d);f&&(h=h.filter(function(g){return Object.getOwnPropertyDescriptor(d,g).enumerable})),p.push.apply(p,h)}return p}function l(d,f,p){return f in d?Object.defineProperty(d,f,{value:p,enumerable:!0,configurable:!0,writable:!0}):d[f]=p,d}t.default=function(f){var p=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{longitude:r.longitudeKeys,latitude:r.latitudeKeys,altitude:r.altitudeKeys},h=(0,o.default)(f,p.longitude),g=(0,o.default)(f,p.latitude),m=(0,o.default)(f,p.altitude);return function a(d){for(var f=1;f<arguments.length;f++){var p=null!=arguments[f]?arguments[f]:{};f%2?s(Object(p),!0).forEach(function(h){l(d,h,p[h])}):Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(p)):s(Object(p)).forEach(function(h){Object.defineProperty(d,h,Object.getOwnPropertyDescriptor(p,h))})}return d}({latitude:g,longitude:h},m?{altitude:m}:{})}},8674:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(7029)),o=l(n(3100)),i=l(n(5705)),s=l(n(6522)),a=n(7636);function l(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,p){var h=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;h=typeof h<"u"&&!isNaN(h)?h:1;var g=(0,r.default)(f),m=(0,o.default)(f),y=(0,r.default)(p),v=(0,o.default)(p),b=Math.acos((0,s.default)(Math.sin((0,i.default)(y))*Math.sin((0,i.default)(g))+Math.cos((0,i.default)(y))*Math.cos((0,i.default)(g))*Math.cos((0,i.default)(m)-(0,i.default)(v))))*a.earthRadius;return Math.round(b/h)*h}},7504:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=i(n(8674)),o=i(n(6522));function i(l){return l&&l.__esModule?l:{default:l}}t.default=function(u,c,d){var f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,p=(0,r.default)(c,u,f),h=(0,r.default)(u,d,f),g=(0,r.default)(c,d,f),m=Math.acos((0,o.default)((p*p+g*g-h*h)/(2*p*g))),y=Math.acos((0,o.default)((h*h+g*g-p*p)/(2*h*g)));return m>Math.PI/2?p:y>Math.PI/2?h:Math.sin(m)*p}},884:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=a(n(942));function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d,f){var p=(0,r.default)(f),h=(0,o.default)(f),g=(0,r.default)(d),m=(0,o.default)(d);return((0,s.default)(Math.atan2(Math.sin((0,i.default)(h)-(0,i.default)(m))*Math.cos((0,i.default)(p)),Math.cos((0,i.default)(g))*Math.sin((0,i.default)(p))-Math.sin((0,i.default)(g))*Math.cos((0,i.default)(p))*Math.cos((0,i.default)(h)-(0,i.default)(m))))+360)%360}},7029:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636),o=s(n(8744)),i=s(n(5101));function s(u){return u&&u.__esModule?u:{default:u}}t.default=function(c,d){var f=(0,o.default)(c,r.latitudeKeys);if(!(typeof f>"u"||null===f)){var p=c[f];return!0===d?p:(0,i.default)(p)}}},3100:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636),o=s(n(8744)),i=s(n(5101));function s(u){return u&&u.__esModule?u:{default:u}}t.default=function(c,d){var f=(0,o.default)(c,r.longitudeKeys);if(!(typeof f>"u"||null===f)){var p=c[f];return!0===d?p:(0,i.default)(p)}}},5378:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(l){return l&&l.__esModule?l:{default:l}}(n(8674));function i(l){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(c){return typeof c}:function(c){return c&&"function"==typeof Symbol&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c})(l)}t.default=function(u){var c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.default;return u.reduce(function(d,f){return"object"===i(d)&&null!==d.last&&(d.distance+=c(f,d.last)),d.last=f,d},{last:null,distance:0}).distance}},2671:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d,f){var p=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;p=typeof p<"u"&&!isNaN(p)?p:1;var R,U,G,te,J,De,sa,h=(0,r.default)(d),g=(0,o.default)(d),m=(0,r.default)(f),y=(0,o.default)(f),v=6356752.314245,b=1/298.257223563,_=(0,i.default)(y-g),Dn=Math.atan((1-b)*Math.tan((0,i.default)(parseFloat(h)))),ia=Math.atan((1-b)*Math.tan((0,i.default)(parseFloat(m)))),Er=Math.sin(Dn),_r=Math.cos(Dn),Cr=Math.sin(ia),Wt=Math.cos(ia),bn=_,aa=100;do{var Jo=Math.sin(bn),Xo=Math.cos(bn);if(0===(De=Math.sqrt(Wt*Jo*(Wt*Jo)+(_r*Cr-Er*Wt*Xo)*(_r*Cr-Er*Wt*Xo))))return 0;R=Er*Cr+_r*Wt*Xo,U=Math.atan2(De,R),J=R-2*Er*Cr/(te=1-(G=_r*Wt*Jo/De)*G),isNaN(J)&&(J=0);var ei=b/16*te*(4+b*(4-3*te));sa=bn,bn=_+(1-ei)*b*G*(U+ei*De*(J+ei*R*(2*J*J-1)))}while(Math.abs(bn-sa)>1e-12&&--aa>0);if(0===aa)return NaN;var It=te*(s.earthRadius*s.earthRadius-v*v)/(v*v),ti=It/1024*(256+It*(It*(74-47*It)-128));return Math.round(v*(1+It/16384*(4096+It*(It*(320-175*It)-768)))*(U-ti*De*(J+ti/4*(R*(2*J*J-1)-ti/6*J*(4*De*De-3)*(4*J*J-3))))/p)*p}},939:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=a(n(942));function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d,f){var p=(0,i.default)((0,o.default)(f))-(0,i.default)((0,o.default)(d)),h=Math.log(Math.tan((0,i.default)((0,r.default)(f))/2+Math.PI/4)/Math.tan((0,i.default)((0,r.default)(d))/2+Math.PI/4));return Math.abs(p)>Math.PI&&(p=p>0?-1*(2*Math.PI-p):2*Math.PI+p),((0,s.default)(Math.atan2(p,h))+360)%360}},2845:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return/^(NNE|NE|NNW|N)$/.test(i)?"N":/^(ENE|E|ESE|SE)$/.test(i)?"E":/^(SSE|S|SSW|SW)$/.test(i)?"S":/^(WSW|W|WNW|NW)$/.test(i)?"W":void 0}},8950:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default)(l,u)/(Number(u.time)-Number(l.time))*1e3}},2541:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r={computeDestinationPoint:!0,convertArea:!0,convertDistance:!0,convertSpeed:!0,decimalToSexagesimal:!0,findNearest:!0,getAreaOfPolygon:!0,getBounds:!0,getBoundsOfDistance:!0,getCenter:!0,getCenterOfBounds:!0,getCompassDirection:!0,getCoordinateKey:!0,getCoordinateKeys:!0,getDistance:!0,getDistanceFromLine:!0,getGreatCircleBearing:!0,getLatitude:!0,getLongitude:!0,getPathLength:!0,getPreciseDistance:!0,getRhumbLineBearing:!0,getRoughCompassDirection:!0,getSpeed:!0,isDecimal:!0,isPointInLine:!0,isPointInPolygon:!0,isPointNearLine:!0,isPointWithinRadius:!0,isSexagesimal:!0,isValidCoordinate:!0,isValidLatitude:!0,isValidLongitude:!0,orderByDistance:!0,sexagesimalToDecimal:!0,toDecimal:!0,toRad:!0,toDeg:!0,wktToPolygon:!0};Object.defineProperty(t,"computeDestinationPoint",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"convertArea",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"convertDistance",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"convertSpeed",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"decimalToSexagesimal",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"findNearest",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"getAreaOfPolygon",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(t,"getBounds",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(t,"getBoundsOfDistance",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(t,"getCenter",{enumerable:!0,get:function(){return p.default}}),Object.defineProperty(t,"getCenterOfBounds",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(t,"getCompassDirection",{enumerable:!0,get:function(){return g.default}}),Object.defineProperty(t,"getCoordinateKey",{enumerable:!0,get:function(){return m.default}}),Object.defineProperty(t,"getCoordinateKeys",{enumerable:!0,get:function(){return y.default}}),Object.defineProperty(t,"getDistance",{enumerable:!0,get:function(){return v.default}}),Object.defineProperty(t,"getDistanceFromLine",{enumerable:!0,get:function(){return b.default}}),Object.defineProperty(t,"getGreatCircleBearing",{enumerable:!0,get:function(){return _.default}}),Object.defineProperty(t,"getLatitude",{enumerable:!0,get:function(){return R.default}}),Object.defineProperty(t,"getLongitude",{enumerable:!0,get:function(){return U.default}}),Object.defineProperty(t,"getPathLength",{enumerable:!0,get:function(){return G.default}}),Object.defineProperty(t,"getPreciseDistance",{enumerable:!0,get:function(){return te.default}}),Object.defineProperty(t,"getRhumbLineBearing",{enumerable:!0,get:function(){return J.default}}),Object.defineProperty(t,"getRoughCompassDirection",{enumerable:!0,get:function(){return De.default}}),Object.defineProperty(t,"getSpeed",{enumerable:!0,get:function(){return Dn.default}}),Object.defineProperty(t,"isDecimal",{enumerable:!0,get:function(){return ia.default}}),Object.defineProperty(t,"isPointInLine",{enumerable:!0,get:function(){return Er.default}}),Object.defineProperty(t,"isPointInPolygon",{enumerable:!0,get:function(){return _r.default}}),Object.defineProperty(t,"isPointNearLine",{enumerable:!0,get:function(){return Cr.default}}),Object.defineProperty(t,"isPointWithinRadius",{enumerable:!0,get:function(){return Wt.default}}),Object.defineProperty(t,"isSexagesimal",{enumerable:!0,get:function(){return bn.default}}),Object.defineProperty(t,"isValidCoordinate",{enumerable:!0,get:function(){return sa.default}}),Object.defineProperty(t,"isValidLatitude",{enumerable:!0,get:function(){return aa.default}}),Object.defineProperty(t,"isValidLongitude",{enumerable:!0,get:function(){return Jo.default}}),Object.defineProperty(t,"orderByDistance",{enumerable:!0,get:function(){return Xo.default}}),Object.defineProperty(t,"sexagesimalToDecimal",{enumerable:!0,get:function(){return ei.default}}),Object.defineProperty(t,"toDecimal",{enumerable:!0,get:function(){return It.default}}),Object.defineProperty(t,"toRad",{enumerable:!0,get:function(){return nd.default}}),Object.defineProperty(t,"toDeg",{enumerable:!0,get:function(){return ti.default}}),Object.defineProperty(t,"wktToPolygon",{enumerable:!0,get:function(){return rd.default}});var o=V(n(2222)),i=V(n(179)),s=V(n(917)),a=V(n(1167)),l=V(n(8948)),u=V(n(1118)),c=V(n(1691)),d=V(n(9144)),f=V(n(190)),p=V(n(5524)),h=V(n(7088)),g=V(n(9952)),m=V(n(8744)),y=V(n(4695)),v=V(n(8674)),b=V(n(7504)),_=V(n(884)),R=V(n(7029)),U=V(n(3100)),G=V(n(5378)),te=V(n(2671)),J=V(n(939)),De=V(n(2845)),Dn=V(n(8950)),ia=V(n(3026)),Er=V(n(4194)),_r=V(n(3536)),Cr=V(n(2787)),Wt=V(n(202)),bn=V(n(4902)),sa=V(n(7637)),aa=V(n(6563)),Jo=V(n(266)),Xo=V(n(2447)),ei=V(n(1532)),It=V(n(5101)),nd=V(n(5705)),ti=V(n(942)),rd=V(n(354)),la=n(7636);function V(S){return S&&S.__esModule?S:{default:S}}Object.keys(la).forEach(function(S){"default"===S||"__esModule"===S||Object.prototype.hasOwnProperty.call(r,S)||Object.defineProperty(t,S,{enumerable:!0,get:function(){return la[S]}})})},3026:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){var s=i.toString().trim();return!isNaN(parseFloat(s))&&parseFloat(s)===Number(s)}},4194:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u,c){return(0,r.default)(u,l)+(0,r.default)(l,c)===(0,r.default)(u,c)}},3536:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=i(n(7029)),o=i(n(3100));function i(l){return l&&l.__esModule?l:{default:l}}t.default=function(u,c){for(var d=!1,f=c.length,p=-1,h=f-1;++p<f;h=p)((0,o.default)(c[p])<=(0,o.default)(u)&&(0,o.default)(u)<(0,o.default)(c[h])||(0,o.default)(c[h])<=(0,o.default)(u)&&(0,o.default)(u)<(0,o.default)(c[p]))&&(0,r.default)(u)<((0,r.default)(c[h])-(0,r.default)(c[p]))*((0,o.default)(u)-(0,o.default)(c[p]))/((0,o.default)(c[h])-(0,o.default)(c[p]))+(0,r.default)(c[p])&&(d=!d);return d}},2787:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(7504));t.default=function(l,u,c,d){return(0,r.default)(l,u,c)<d}},202:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u,c){return(0,r.default)(l,u,.01)<c}},4902:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){return r.sexagesimalPattern.test(a.toString().trim())}},7637:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=s(n(4695)),o=s(n(6563)),i=s(n(266));function s(u){return u&&u.__esModule?u:{default:u}}t.default=function(c){var d=(0,r.default)(c),f=d.latitude,p=d.longitude;if(Array.isArray(c)&&c.length>=2)return(0,i.default)(c[0])&&(0,o.default)(c[1]);if(typeof f>"u"||typeof p>"u")return!1;var h=c[p],g=c[f];return!(typeof g>"u"||typeof h>"u"||!1===(0,o.default)(g)||!1===(0,i.default)(h))}},6563:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(3026)),o=a(n(4902)),i=a(n(1532)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function c(d){return(0,r.default)(d)?!(parseFloat(d)>s.MAXLAT||d<s.MINLAT):!!(0,o.default)(d)&&c((0,i.default)(d))}},266:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(3026)),o=a(n(4902)),i=a(n(1532)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function c(d){return(0,r.default)(d)?!(parseFloat(d)>s.MAXLON||d<s.MINLON):!!(0,o.default)(d)&&c((0,i.default)(d))}},2447:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default;return c="function"==typeof c?c:r.default,u.slice().sort(function(d,f){return c(l,d)-c(l,f)})}},6522:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return i>1?1:i<-1?-1:i}},1532:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var l=new RegExp(r.sexagesimalPattern).exec(a.toString().trim());if(typeof l>"u"||null===l)throw new Error("Given value is not in sexagesimal format");var u=Number(l[2])/60||0,c=Number(l[4])/3600||0,d=parseFloat(l[1])+u+c;return["S","W"].includes(l[7])?-d:d}},5101:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(3026)),o=l(n(4902)),i=l(n(1532)),s=l(n(7637)),a=l(n(4695));function l(h){return h&&h.__esModule?h:{default:h}}function u(h,g){var m=Object.keys(h);if(Object.getOwnPropertySymbols){var y=Object.getOwnPropertySymbols(h);g&&(y=y.filter(function(v){return Object.getOwnPropertyDescriptor(h,v).enumerable})),m.push.apply(m,y)}return m}function c(h){for(var g=1;g<arguments.length;g++){var m=null!=arguments[g]?arguments[g]:{};g%2?u(Object(m),!0).forEach(function(y){d(h,y,m[y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(h,Object.getOwnPropertyDescriptors(m)):u(Object(m)).forEach(function(y){Object.defineProperty(h,y,Object.getOwnPropertyDescriptor(m,y))})}return h}function d(h,g,m){return g in h?Object.defineProperty(h,g,{value:m,enumerable:!0,configurable:!0,writable:!0}):h[g]=m,h}t.default=function h(g){if((0,r.default)(g))return Number(g);if((0,o.default)(g))return(0,i.default)(g);if((0,s.default)(g)){var m=(0,a.default)(g);return Array.isArray(g)?g.map(function(y,v){return[0,1].includes(v)?h(y):y}):c(c(c({},g),m.latitude&&d({},m.latitude,h(g[m.latitude]))),m.longitude&&d({},m.longitude,h(g[m.longitude])))}return Array.isArray(g)?g.map(function(y){return(0,s.default)(y)?h(y):y}):g}},942:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return 180*i/Math.PI}},5705:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return i*Math.PI/180}},354:(e,t)=>{function i(c,d){(null==d||d>c.length)&&(d=c.length);for(var f=0,p=new Array(d);f<d;f++)p[f]=c[f];return p}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(d){if(!d.startsWith("POLYGON"))throw new Error("Invalid wkt.");return d.slice(d.indexOf("(")+2,d.indexOf(")")).split(", ").map(function(h){var m=function n(c,d){return function a(c){if(Array.isArray(c))return c}(c)||function s(c,d){if(!(typeof Symbol>"u")&&Symbol.iterator in Object(c)){var f=[],p=!0,h=!1,g=void 0;try{for(var y,m=c[Symbol.iterator]();!(p=(y=m.next()).done)&&(f.push(y.value),!d||f.length!==d);p=!0);}catch(v){h=!0,g=v}finally{try{!p&&null!=m.return&&m.return()}finally{if(h)throw g}}return f}}(c,d)||function o(c,d){if(c){if("string"==typeof c)return i(c,d);var f=Object.prototype.toString.call(c).slice(8,-1);if("Object"===f&&c.constructor&&(f=c.constructor.name),"Map"===f||"Set"===f)return Array.from(c);if("Arguments"===f||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(f))return i(c,d)}}(c,d)||function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(h.split(" "),2),v=m[1];return{longitude:parseFloat(m[0]),latitude:parseFloat(v)}})}},6729:(e,t)=>{function n(u,c){return u*u+c*c}function r(u,c){return n(u[0]-c[0],u[1]-c[1])}function o(u,c,d){var f=c[0],p=c[1],h=d[0]-f,g=d[1]-p;if(0!==h||0!==g){var m=((u[0]-f)*h+(u[1]-p)*g)/n(h,g);m>1?(f=d[0],p=d[1]):m>0&&(f+=h*m,p+=g*m)}return n(u[0]-f,u[1]-p)}function s(u,c,d,f,p){for(var g,h=f,m=c+1;m<d;m++){var y=o(u[m],u[c],u[d]);y>h&&(g=m,h=y)}h>f&&(g-c>1&&s(u,c,g,f,p),p.push(u[g]),d-g>1&&s(u,g,d,f,p))}function a(u,c){var d=u.length-1,f=[u[0]];return s(u,0,d,c,f),f.push(u[d]),f}t.__esModule=!0,t.SimplifyAP=function l(u,c,d){if(void 0===c&&(c=1),void 0===d&&(d=!1),u.length<=2)return u;var f=c*c;return a(u=d?u:function i(u,c){for(var f,d=u[0],p=[d],h=1,g=u.length;h<g;h++)r(f=u[h],d)>c&&(p.push(f),d=f);return d!==f&&p.push(f),p}(u,f),f)}},6380:(e,t,n)=>{var o=n(6729);t.p$=o.SimplifyAP,n(5551),n(6413)},5551:(e,t)=>{function n(u,c){return u*u+c*c}function r(u,c){return n(u.longitude-c.longitude,u.latitude-c.latitude)}function o(u,c,d){var f=c.longitude,p=c.latitude,h=d.longitude-f,g=d.latitude-p;if(0!==h||0!==g){var m=((u.longitude-f)*h+(u.latitude-p)*g)/n(h,g);m>1?(f=d.longitude,p=d.latitude):m>0&&(f+=h*m,p+=g*m)}return n(u.longitude-f,u.latitude-p)}function s(u,c,d,f,p){for(var g,h=f,m=c+1;m<d;m++){var y=o(u[m],u[c],u[d]);y>h&&(g=m,h=y)}h>f&&(g-c>1&&s(u,c,g,f,p),p.push(u[g]),d-g>1&&s(u,g,d,f,p))}function a(u,c){var d=u.length-1,f=[u[0]];return s(u,0,d,c,f),f.push(u[d]),f}t.__esModule=!0,t.SimplifyLL=function l(u,c,d){if(void 0===c&&(c=1),void 0===d&&(d=!1),u.length<=2)return u;var f=c*c;return a(u=d?u:function i(u,c){for(var f,d=u[0],p=[d],h=1,g=u.length;h<g;h++)r(f=u[h],d)>c&&(p.push(f),d=f);return d!==f&&p.push(f),p}(u,f),f)}},6413:(e,t)=>{function n(u,c){return u*u+c*c}function r(u,c){return n(u.x-c.x,u.y-c.y)}function o(u,c,d){var f=c.x,p=c.y,h=d.x-f,g=d.y-p;if(0!==h||0!==g){var m=((u.x-f)*h+(u.y-p)*g)/n(h,g);m>1?(f=d.x,p=d.y):m>0&&(f+=h*m,p+=g*m)}return n(u.x-f,u.y-p)}function s(u,c,d,f,p){for(var g,h=f,m=c+1;m<d;m++){var y=o(u[m],u[c],u[d]);y>h&&(g=m,h=y)}h>f&&(g-c>1&&s(u,c,g,f,p),p.push(u[g]),d-g>1&&s(u,g,d,f,p))}function a(u,c){var d=u.length-1,f=[u[0]];return s(u,0,d,c,f),f.push(u[d]),f}t.__esModule=!0,t.Simplify=function l(u,c,d){if(void 0===c&&(c=1),void 0===d&&(d=!1),u.length<=2)return u;var f=c*c;return a(u=d?u:function i(u,c){for(var f,d=u[0],p=[d],h=1,g=u.length;h<g;h++)r(f=u[h],d)>c&&(p.push(f),d=f);return d!==f&&p.push(f),p}(u,f),f)}}},od={};function ua(e){var t=od[e];if(void 0!==t)return t.exports;var n=od[e]={exports:{}};return eD[e](n,n.exports,ua),n.exports}function ca(e){return"function"==typeof e}let da=!1;const Je={Promise:void 0,set useDeprecatedSynchronousErrorHandling(e){if(e){const t=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+t.stack)}else da&&console.log("RxJS: Back to a better error behavior. Thank you. <3");da=e},get useDeprecatedSynchronousErrorHandling(){return da}};function Tr(e){setTimeout(()=>{throw e},0)}const ni={closed:!0,next(e){},error(e){if(Je.useDeprecatedSynchronousErrorHandling)throw e;Tr(e)},complete(){}},tD=Array.isArray||(e=>e&&"number"==typeof e.length),ri=(()=>{function e(t){return Error.call(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((n,r)=>`${r+1}) ${n.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=t,this}return e.prototype=Object.create(Error.prototype),e})();class be{constructor(t){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,t&&(this._ctorUnsubscribe=!0,this._unsubscribe=t)}unsubscribe(){let t;if(this.closed)return;let{_parentOrParents:n,_ctorUnsubscribe:r,_unsubscribe:o,_subscriptions:i}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof be)n.remove(this);else if(null!==n)for(let s=0;s<n.length;++s)n[s].remove(this);if(ca(o)){r&&(this._unsubscribe=void 0);try{o.call(this)}catch(s){t=s instanceof ri?id(s.errors):[s]}}if(tD(i)){let s=-1,a=i.length;for(;++s<a;){const l=i[s];if(null!==(e=l)&&"object"==typeof e)try{l.unsubscribe()}catch(u){t=t||[],u instanceof ri?t=t.concat(id(u.errors)):t.push(u)}}}var e;if(t)throw new ri(t)}add(t){let n=t;if(!t)return be.EMPTY;switch(typeof t){case"function":n=new be(t);case"object":if(n===this||n.closed||"function"!=typeof n.unsubscribe)return n;if(this.closed)return n.unsubscribe(),n;if(!(n instanceof be)){const i=n;n=new be,n._subscriptions=[i]}break;default:throw new Error("unrecognized teardown "+t+" added to Subscription.")}let{_parentOrParents:r}=n;if(null===r)n._parentOrParents=this;else if(r instanceof be){if(r===this)return n;n._parentOrParents=[r,this]}else{if(-1!==r.indexOf(this))return n;r.push(this)}const o=this._subscriptions;return null===o?this._subscriptions=[n]:o.push(n),n}remove(t){const n=this._subscriptions;if(n){const r=n.indexOf(t);-1!==r&&n.splice(r,1)}}}var e;function id(e){return e.reduce((t,n)=>t.concat(n instanceof ri?n.errors:n),[])}be.EMPTY=((e=new be).closed=!0,e);const oi="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random();class at extends be{constructor(t,n,r){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=ni;break;case 1:if(!t){this.destination=ni;break}if("object"==typeof t){t instanceof at?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new sd(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new sd(this,t,n,r)}}[oi](){return this}static create(t,n,r){const o=new at(t,n,r);return o.syncErrorThrowable=!1,o}next(t){this.isStopped||this._next(t)}error(t){this.isStopped||(this.isStopped=!0,this._error(t))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(t){this.destination.next(t)}_error(t){this.destination.error(t),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:t}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=t,this}}class sd extends at{constructor(t,n,r,o){super(),this._parentSubscriber=t;let i,s=this;ca(n)?i=n:n&&(i=n.next,r=n.error,o=n.complete,n!==ni&&(s=Object.create(n),ca(s.unsubscribe)&&this.add(s.unsubscribe.bind(s)),s.unsubscribe=this.unsubscribe.bind(this))),this._context=s,this._next=i,this._error=r,this._complete=o}next(t){if(!this.isStopped&&this._next){const{_parentSubscriber:n}=this;Je.useDeprecatedSynchronousErrorHandling&&n.syncErrorThrowable?this.__tryOrSetError(n,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}}error(t){if(!this.isStopped){const{_parentSubscriber:n}=this,{useDeprecatedSynchronousErrorHandling:r}=Je;if(this._error)r&&n.syncErrorThrowable?(this.__tryOrSetError(n,this._error,t),this.unsubscribe()):(this.__tryOrUnsub(this._error,t),this.unsubscribe());else if(n.syncErrorThrowable)r?(n.syncErrorValue=t,n.syncErrorThrown=!0):Tr(t),this.unsubscribe();else{if(this.unsubscribe(),r)throw t;Tr(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const n=()=>this._complete.call(this._context);Je.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(t,n){try{t.call(this._context,n)}catch(r){if(this.unsubscribe(),Je.useDeprecatedSynchronousErrorHandling)throw r;Tr(r)}}__tryOrSetError(t,n,r){if(!Je.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{n.call(this._context,r)}catch(o){return Je.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=o,t.syncErrorThrown=!0,!0):(Tr(o),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}const iD="function"==typeof Symbol&&Symbol.observable||"@@observable";function sD(e){return e}let ld=(()=>{class e{constructor(n){this._isScalar=!1,n&&(this._subscribe=n)}lift(n){const r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,o){const{operator:i}=this,s=function oD(e,t,n){if(e){if(e instanceof at)return e;if(e[oi])return e[oi]()}return e||t||n?new at(e,t,n):new at(ni)}(n,r,o);if(s.add(i?i.call(s,this.source):this.source||Je.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),Je.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s}_trySubscribe(n){try{return this._subscribe(n)}catch(r){Je.useDeprecatedSynchronousErrorHandling&&(n.syncErrorThrown=!0,n.syncErrorValue=r),function rD(e){for(;e;){const{closed:t,destination:n,isStopped:r}=e;if(t||r)return!1;e=n&&n instanceof at?n:null}return!0}(n)?n.error(r):console.warn(r)}}forEach(n,r){return new(r=ud(r))((o,i)=>{let s;s=this.subscribe(a=>{try{n(a)}catch(l){i(l),s&&s.unsubscribe()}},i,o)})}_subscribe(n){const{source:r}=this;return r&&r.subscribe(n)}[iD](){return this}pipe(...n){return 0===n.length?this:function ad(e){return 0===e.length?sD:1===e.length?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}(n)(this)}toPromise(n){return new(n=ud(n))((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function ud(e){if(e||(e=Je.Promise||Promise),!e)throw new Error("no Promise impl found");return e}const wn=(()=>{function e(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return e.prototype=Object.create(Error.prototype),e})();class aD extends be{constructor(t,n){super(),this.subject=t,this.subscriber=n,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const t=this.subject,n=t.observers;if(this.subject=null,!n||0===n.length||t.isStopped||t.closed)return;const r=n.indexOf(this.subscriber);-1!==r&&n.splice(r,1)}}class lD extends at{constructor(t){super(t),this.destination=t}}let $e=(()=>{class e extends ld{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[oi](){return new lD(this)}lift(n){const r=new cd(this,this);return r.operator=n,r}next(n){if(this.closed)throw new wn;if(!this.isStopped){const{observers:r}=this,o=r.length,i=r.slice();for(let s=0;s<o;s++)i[s].next(n)}}error(n){if(this.closed)throw new wn;this.hasError=!0,this.thrownError=n,this.isStopped=!0;const{observers:r}=this,o=r.length,i=r.slice();for(let s=0;s<o;s++)i[s].error(n);this.observers.length=0}complete(){if(this.closed)throw new wn;this.isStopped=!0;const{observers:n}=this,r=n.length,o=n.slice();for(let i=0;i<r;i++)o[i].complete();this.observers.length=0}unsubscribe(){this.isStopped=!0,this.closed=!0,this.observers=null}_trySubscribe(n){if(this.closed)throw new wn;return super._trySubscribe(n)}_subscribe(n){if(this.closed)throw new wn;return this.hasError?(n.error(this.thrownError),be.EMPTY):this.isStopped?(n.complete(),be.EMPTY):(this.observers.push(n),new aD(this,n))}asObservable(){const n=new ld;return n.source=this,n}}return e.create=(t,n)=>new cd(t,n),e})();class cd extends $e{constructor(t,n){super(),this.destination=t,this.source=n}next(t){const{destination:n}=this;n&&n.next&&n.next(t)}error(t){const{destination:n}=this;n&&n.error&&this.destination.error(t)}complete(){const{destination:t}=this;t&&t.complete&&this.destination.complete()}_subscribe(t){const{source:n}=this;return n?this.source.subscribe(t):be.EMPTY}}let ce=null;function H(e){const t=ce;return ce=e,t}class vD extends $e{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){const n=super._subscribe(t);return n&&!n.closed&&t.next(this._value),n}getValue(){if(this.hasError)throw this.thrownError;if(this.closed)throw new wn;return this._value}next(t){super.next(this._value=t)}}class w extends Error{constructor(t,n){super(function Mn(e,t){return`NG0${Math.abs(e)}${t?": "+t:""}`}(t,n)),this.code=t}}function z(e){for(let t in e)if(e[t]===z)return t;throw Error("Could not find renamed property on target object.")}function Ie(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(Ie).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const t=e.toString();if(null==t)return""+t;const n=t.indexOf("\n");return-1===n?t:t.substring(0,n)}globalThis;const wD=z({__forward_ref__:z});function ya(e){return e.__forward_ref__=ya,e.toString=function(){return Ie(this())},e}function N(e){return function ci(e){return"function"==typeof e&&e.hasOwnProperty(wD)&&e.__forward_ref__===ya}(e)?e():e}function Q(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function di(e){return Nd(e,pi)||Nd(e,Sd)}function Nd(e,t){return e.hasOwnProperty(t)?e[t]:null}function fi(e){return e&&(e.hasOwnProperty(Da)||e.hasOwnProperty(TD))?e[Da]:null}const pi=z({\u0275prov:z}),Da=z({\u0275inj:z}),Sd=z({ngInjectableDef:z}),TD=z({ngInjectorDef:z});class L{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=Q({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function _a(e){return e&&!!e.\u0275providers}const xr=z({\u0275cmp:z}),bt=z({\u0275fac:z}),Pd=z({__NG_ENV_ID__:z});var $=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}($||{});let Sa;function Ad(){return Sa}function Le(e){const t=Sa;return Sa=e,t}function kd(e,t,n){const r=di(e);return r&&"root"==r.providedIn?void 0===r.value?r.value=r.factory():r.value:n&$.Optional?null:void 0!==t?t:void function Na(e,t){throw new w(-201,!1)}()}const Pr={},xa="__NG_DI_FLAG__",hi="ngTempTokenPath",AD=/\n/gm,Rd="__source";let Nn;function kt(e){const t=Nn;return Nn=e,t}function LD(e,t=$.Default){if(void 0===Nn)throw new w(-203,!1);return null===Nn?kd(e,void 0,t):Nn.get(e,t&$.Optional?null:void 0,t)}function Ne(e,t=$.Default){return(Ad()||LD)(N(e),t)}function E(e,t=$.Default){return Ne(e,gi(t))}function gi(e){return typeof e>"u"||"number"==typeof e?e:(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Oa(e){const t=[];for(let n=0;n<e.length;n++){const r=N(e[n]);if(Array.isArray(r)){if(0===r.length)throw new w(900,!1);let o,i=$.Default;for(let s=0;s<r.length;s++){const a=r[s],l=jD(a);"number"==typeof l?-1===l?o=a.token:i|=l:o=a}t.push(Ne(o,i))}else t.push(Ne(r))}return t}function jD(e){return e[xa]}function qt(e,t){return e.hasOwnProperty(bt)?e[bt]:null}function Sn(e,t){e.forEach(n=>Array.isArray(n)?Sn(n,t):t(n))}const B=[],wt=new L(""),Hd=new L("",-1),La=new L("");class yi{get(t,n=Pr){if(n===Pr){const r=new Error(`NullInjectorError: No provider for ${Ie(t)}!`);throw r.name="NullInjectorError",r}return n}}function ub(...e){return{\u0275providers:Va(0,e),\u0275fromNgModule:!0}}function Va(e,...t){const n=[],r=new Set;let o;const i=s=>{n.push(s)};return Sn(t,s=>{const a=s;wi(a,i,[],r)&&(o||=[],o.push(a))}),void 0!==o&&Yd(o,i),n}function Yd(e,t){for(let n=0;n<e.length;n++){const{ngModule:r,providers:o}=e[n];Ha(o,i=>{t(i,r)})}}function wi(e,t,n,r){if(!(e=N(e)))return!1;let o=null,i=fi(e);const s=!i&&function F(e){return e[xr]||null}(e);if(i||s){if(s&&!s.standalone)return!1;o=e}else{const l=e.ngModule;if(i=fi(l),!i)return!1;o=l}const a=r.has(o);if(s){if(a)return!1;if(r.add(o),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const u of l)wi(u,t,n,r)}}else{if(!i)return!1;{if(null!=i.imports&&!a){let u;r.add(o);try{Sn(i.imports,c=>{wi(c,t,n,r)&&(u||=[],u.push(c))})}finally{}void 0!==u&&Yd(u,t)}if(!a){const u=qt(o)||(()=>new o);t({provide:o,useFactory:u,deps:B},o),t({provide:La,useValue:o,multi:!0},o),t({provide:wt,useValue:()=>Ne(o),multi:!0},o)}const l=i.providers;if(null!=l&&!a){const u=e;Ha(l,c=>{t(c,u)})}}}return o!==e&&void 0!==e.providers}function Ha(e,t){for(let n of e)_a(n)&&(n=n.\u0275providers),Array.isArray(n)?Ha(n,t):t(n)}const cb=z({provide:String,useValue:z});function $a(e){return null!==e&&"object"==typeof e&&cb in e}function Qt(e){return"function"==typeof e}const ef=new L(""),Mi={},fb={};let Ua;function Ei(){return void 0===Ua&&(Ua=new yi),Ua}class et{}class On extends et{get destroyed(){return this._destroyed}constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,Wa(t,s=>this.processProvider(s)),this.records.set(Hd,Pn(void 0,this)),o.has("environment")&&this.records.set(et,Pn(void 0,this));const i=this.records.get(ef);null!=i&&"string"==typeof i.value&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(La,B,$.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;const t=H(null);try{for(const r of this._ngOnDestroyHooks)r.ngOnDestroy();const n=this._onDestroyHooks;this._onDestroyHooks=[];for(const r of n)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),H(t)}}onDestroy(t){return this.assertNotDestroyed(),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){this.assertNotDestroyed();const n=kt(this),r=Le(void 0);try{return t()}finally{kt(n),Le(r)}}get(t,n=Pr,r=$.Default){if(this.assertNotDestroyed(),t.hasOwnProperty(Pd))return t[Pd](this);r=gi(r);const i=kt(this),s=Le(void 0);try{if(!(r&$.SkipSelf)){let l=this.records.get(t);if(void 0===l){const u=function vb(e){return"function"==typeof e||"object"==typeof e&&e instanceof L}(t)&&di(t);l=u&&this.injectableDefInScope(u)?Pn(Ba(t),Mi):null,this.records.set(t,l)}if(null!=l)return this.hydrate(t,l)}return(r&$.Self?Ei():this.parent).get(t,n=r&$.Optional&&n===Pr?null:n)}catch(a){if("NullInjectorError"===a.name){if((a[hi]=a[hi]||[]).unshift(Ie(t)),i)throw a;return function FD(e,t,n,r){const o=e[hi];throw t[Rd]&&o.unshift(t[Rd]),e.message=function VD(e,t,n,r=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let o=Ie(t);if(Array.isArray(t))o=t.map(Ie).join(" -> ");else if("object"==typeof t){let i=[];for(let s in t)if(t.hasOwnProperty(s)){let a=t[s];i.push(s+":"+("string"==typeof a?JSON.stringify(a):Ie(a)))}o=`{${i.join(", ")}}`}return`${n}${r?"("+r+")":""}[${o}]: ${e.replace(AD,"\n ")}`}("\n"+e.message,o,n,r),e.ngTokenPath=o,e[hi]=null,e}(a,t,"R3InjectorError",this.source)}throw a}finally{Le(s),kt(i)}}resolveInjectorInitializers(){const t=H(null),n=kt(this),r=Le(void 0);try{const i=this.get(wt,B,$.Self);for(const s of i)s()}finally{kt(n),Le(r),H(t)}}toString(){const t=[],n=this.records;for(const r of n.keys())t.push(Ie(r));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new w(205,!1)}processProvider(t){let n=Qt(t=N(t))?t:N(t&&t.provide);const r=function hb(e){return $a(e)?Pn(void 0,e.useValue):Pn(function tf(e,t,n){let r;if(Qt(e)){const o=N(e);return qt(o)||Ba(o)}if($a(e))r=()=>N(e.useValue);else if(function Xd(e){return!(!e||!e.useFactory)}(e))r=()=>e.useFactory(...Oa(e.deps||[]));else if(function Jd(e){return!(!e||!e.useExisting)}(e))r=()=>Ne(N(e.useExisting));else{const o=N(e&&(e.useClass||e.provide));if(!function gb(e){return!!e.deps}(e))return qt(o)||Ba(o);r=()=>new o(...Oa(e.deps))}return r}(e),Mi)}(t);if(!Qt(t)&&!0===t.multi){let o=this.records.get(n);o||(o=Pn(void 0,Mi,!0),o.factory=()=>Oa(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n){const r=H(null);try{return n.value===Mi&&(n.value=fb,n.value=n.factory()),"object"==typeof n.value&&n.value&&function mb(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{H(r)}}injectableDefInScope(t){if(!t.providedIn)return!1;const n=N(t.providedIn);return"string"==typeof n?"any"===n||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){const n=this._onDestroyHooks.indexOf(t);-1!==n&&this._onDestroyHooks.splice(n,1)}}function Ba(e){const t=di(e),n=null!==t?t.factory:qt(e);if(null!==n)return n;if(e instanceof L)throw new w(204,!1);if(e instanceof Function)return function pb(e){if(e.length>0)throw new w(204,!1);const n=function CD(e){return e&&(e[pi]||e[Sd])||null}(e);return null!==n?()=>n.factory(e):()=>new e}(e);throw new w(204,!1)}function Pn(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Wa(e,t){for(const n of e)Array.isArray(n)?Wa(n,t):n&&_a(n)?Wa(n.\u0275providers,t):t(n)}const C=2;const O={lFrame:Pf(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function Z(){let e=function Mf(){return O.lFrame.currentTNode}();for(;null!==e&&64===e.type;)e=e.parent;return e}function Pf(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}function ep(e,t=null,n=null,r){const o=function tp(e,t=null,n=null,r,o=new Set){const i=[n||B,ub(e)];return r=r||("object"==typeof e?void 0:Ie(e)),new On(i,t||Ei(),r||null,o)}(e,t,n,r);return o.resolveInjectorInitializers(),o}class Pe{static{this.THROW_IF_NOT_FOUND=Pr}static{this.NULL=new yi}static create(t,n){if(Array.isArray(t))return ep({name:""},n,t,"");{const r=t.name??"";return ep({name:r},t.parent,t.providers,r)}}static{this.\u0275prov=Q({token:Pe,providedIn:"any",factory:()=>Ne(Hd)})}static{this.__NG_ELEMENT_ID__=-1}}new L("").__NG_ELEMENT_ID__=e=>{const t=Z();if(null===t)throw new w(204,!1);if(2&t.type)return t.value;if(e&$.Optional)return null;throw new w(204,!1)};function Dl(e){return e.ngOriginalError}const rp=!0;let qr=(()=>{class e{static{this.__NG_ELEMENT_ID__=Tw}static{this.__NG_ENV_ID__=n=>n}}return e})();class Cw extends qr{constructor(t){super(),this._lView=t}onDestroy(t){return function Pi(e,t){if(!(256&~e[C]))throw new w(911,!1);null===e[21]&&(e[21]=[]),e[21].push(t)}(this._lView,t),()=>function tl(e,t){if(null===e[21])return;const n=e[21].indexOf(t);-1!==n&&e[21].splice(n,1)}(this._lView,t)}}function Tw(){return new Cw(function I(){return O.lFrame.lView}())}let Un=(()=>{class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new vD(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);const n=this.taskId++;return this.pendingTasks.add(n),n}remove(n){this.pendingTasks.delete(n),0===this.pendingTasks.size&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static{this.\u0275prov=Q({token:e,providedIn:"root",factory:()=>new e})}}return e})();const Tt=class Nw extends $e{constructor(t=!1){super(),this.destroyRef=void 0,this.pendingTasks=void 0,this.__isAsync=t,function nf(){return void 0!==Ad()||null!=function RD(){return Nn}()}()&&(this.destroyRef=E(qr,{optional:!0})??void 0,this.pendingTasks=E(Un,{optional:!0})??void 0)}emit(t){const n=H(null);try{super.next(t)}finally{H(n)}}subscribe(t,n,r){let o=t,i=n||(()=>null),s=r;if(t&&"object"==typeof t){const l=t;o=l.next?.bind(l),i=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(i=this.wrapInTimeout(i),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));const a=super.subscribe({next:o,error:i,complete:s});return t instanceof be&&t.add(a),a}wrapInTimeout(t){return n=>{const r=this.pendingTasks?.add();setTimeout(()=>{t(n),void 0!==r&&this.pendingTasks?.remove(r)})}}};function Bi(...e){}const bl="isAngularZone",Wi=bl+"_ID";let Sw=0;class ne{constructor(t){this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new Tt(!1),this.onMicrotaskEmpty=new Tt(!1),this.onStable=new Tt(!1),this.onError=new Tt(!1);const{enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:o=!1,scheduleInRootZone:i=rp}=t;if(typeof Zone>"u")throw new w(908,!1);Zone.assertZonePatched();const s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!o&&r,s.shouldCoalesceRunChangeDetection=o,s.callbackScheduled=!1,s.scheduleInRootZone=i,function Pw(e){const t=()=>{!function Ow(e){function t(){!function op(e){let t,n;function r(){e=Bi;try{void 0!==n&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(n),void 0!==t&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),"function"==typeof requestAnimationFrame&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}(()=>{e.callbackScheduled=!1,Ml(e),e.isCheckStableRunning=!0,wl(e),e.isCheckStableRunning=!1})}e.isCheckStableRunning||e.callbackScheduled||(e.callbackScheduled=!0,e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Ml(e))}(e)},n=Sw++;e._inner=e._inner.fork({name:"angular",properties:{[bl]:!0,[Wi]:n,[Wi+n]:!0},onInvokeTask:(r,o,i,s,a,l)=>{if(function Aw(e){return lp(e,"__ignore_ng_zone__")}(l))return r.invokeTask(i,s,a,l);try{return sp(e),r.invokeTask(i,s,a,l)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===s.type||e.shouldCoalesceRunChangeDetection)&&t(),ap(e)}},onInvoke:(r,o,i,s,a,l,u)=>{try{return sp(e),r.invoke(i,s,a,l,u)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!function kw(e){return lp(e,"__scheduler_tick__")}(l)&&t(),ap(e)}},onHasTask:(r,o,i,s)=>{r.hasTask(i,s),o===i&&("microTask"==s.change?(e._hasPendingMicrotasks=s.microTask,Ml(e),wl(e)):"macroTask"==s.change&&(e.hasPendingMacrotasks=s.macroTask))},onHandleError:(r,o,i,s)=>(r.handleError(i,s),e.runOutsideAngular(()=>e.onError.emit(s)),!1)})}(s)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get(bl)}static assertInAngularZone(){if(!ne.isInAngularZone())throw new w(909,!1)}static assertNotInAngularZone(){if(ne.isInAngularZone())throw new w(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){const i=this._inner,s=i.scheduleEventTask("NgZoneEvent: "+o,t,xw,Bi,Bi);try{return i.runTask(s,n,r)}finally{i.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}}const xw={};function wl(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Ml(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&!0===e.callbackScheduled)}function sp(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function ap(e){e._nesting--,wl(e)}function lp(e,t){return!(!Array.isArray(e)||1!==e.length)&&!0===e[0]?.data?.[t]}class jt{constructor(){this._console=console}handleError(t){const n=this._findOriginalError(t);this._console.error("ERROR",t),n&&this._console.error("ORIGINAL ERROR",n)}_findOriginalError(t){let n=t&&Dl(t);for(;n&&Dl(n);)n=Dl(n);return n||null}}class er{}class J_{resolveComponentFactory(t){throw function Y_(e){const t=Error(`No component factory found for ${Ie(e)}.`);return t.ngComponent=e,t}(t)}}class Ds{static{this.NULL=new J_}}var ir=function(e){return e[e.EarlyRead=0]="EarlyRead",e[e.Write=1]="Write",e[e.MixedReadWrite=2]="MixedReadWrite",e[e.Read=3]="Read",e}(ir||{});class No{constructor(){this.ngZone=E(ne),this.scheduler=E(er),this.errorHandler=E(jt,{optional:!0}),this.sequences=new Set,this.deferredRegistrations=new Set,this.executing=!1}static{this.PHASES=[ir.EarlyRead,ir.Write,ir.MixedReadWrite,ir.Read]}execute(){this.executing=!0;for(const t of No.PHASES)for(const n of this.sequences)if(!n.erroredOrDestroyed&&n.hooks[t])try{n.pipelinedValue=this.ngZone.runOutsideAngular(()=>n.hooks[t](n.pipelinedValue))}catch(r){n.erroredOrDestroyed=!0,this.errorHandler?.handleError(r)}this.executing=!1;for(const t of this.sequences)t.afterRun(),t.once&&(this.sequences.delete(t),t.destroy());for(const t of this.deferredRegistrations)this.sequences.add(t);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear()}register(t){this.executing?this.deferredRegistrations.add(t):(this.sequences.add(t),this.scheduler.notify(6))}unregister(t){this.executing&&this.sequences.has(t)?(t.erroredOrDestroyed=!0,t.pipelinedValue=void 0,t.once=!0):(this.sequences.delete(t),this.deferredRegistrations.delete(t))}static{this.\u0275prov=Q({token:No,providedIn:"root",factory:()=>new No})}}class VO{constructor(){this.limitUI04=this.maxFromBits(4),this.limitUI06=this.maxFromBits(6),this.limitUI08=this.maxFromBits(8),this.limitUI12=this.maxFromBits(12),this.limitUI14=this.maxFromBits(14),this.limitUI16=this.maxFromBits(16),this.limitUI32=this.maxFromBits(32),this.limitUI40=this.maxFromBits(40),this.limitUI48=this.maxFromBits(48),this.create()}toString(){return this.hex}toURN(){return"urn:uuid:"+this.hex}toSignalK(){return`urn:mrn:signalk:uuid:${this.hex}`}toBytes(){let t=this.hex.split("-"),n=[],r=0;for(let o=0;o<t.length;o++)for(let i=0;i<t[o].length;i+=2)n[r++]=parseInt(t[o].substr(i,2),16);return n}maxFromBits(t){return Math.pow(2,t)}getRandomInt(t,n){return Math.floor(Math.random()*(n-t+1))+t}randomUI04(){return this.getRandomInt(0,this.limitUI04-1)}randomUI06(){return this.getRandomInt(0,this.limitUI06-1)}randomUI08(){return this.getRandomInt(0,this.limitUI08-1)}randomUI12(){return this.getRandomInt(0,this.limitUI12-1)}randomUI14(){return this.getRandomInt(0,this.limitUI14-1)}randomUI16(){return this.getRandomInt(0,this.limitUI16-1)}randomUI32(){return this.getRandomInt(0,this.limitUI32-1)}randomUI40(){return(0|Math.random()*(1<<30))+(0|1024*Math.random())*(1<<30)}randomUI48(){return(0|Math.random()*(1<<30))+(0|Math.random()*(1<<18))*(1<<30)}create(){this.fromParts(this.randomUI32(),this.randomUI16(),16384|this.randomUI12(),128|this.randomUI06(),this.randomUI08(),this.randomUI48())}paddedString(t,n,r=null){r=r||"0";let o=n-(t=String(t)).length;for(;o>0;o>>>=1,r+=r)1&o&&(t=r+t);return t}fromParts(t,n,r,o,i,s){return this.version=r>>12&15,this.hex=this.paddedString(t.toString(16),8)+"-"+this.paddedString(n.toString(16),4)+"-"+this.paddedString(r.toString(16),4)+"-"+this.paddedString(o.toString(16),2)+this.paddedString(i.toString(16),2)+"-"+this.paddedString(s.toString(16),12),this}}class ta{static updates(){return{context:null,updates:[]}}static subscribe(){return{context:null,subscribe:[]}}static unsubscribe(){return{context:null,unsubscribe:[]}}static request(){return{requestId:(new VO).toString()}}}let $O=(()=>{class e{constructor(){this._filter="",this._wsTimeout=2e4,this._token="",this._playbackMode=!1,this.version=1,this.endpoint="",this.selfId="",this._source=null,this._connect=new $e,this.onConnect=this._connect.asObservable(),this._close=new $e,this.onClose=this._close.asObservable(),this._error=new $e,this.onError=this._error.asObservable(),this._message=new $e,this.onMessage=this._message.asObservable()}set source(n){this._source||(this._source={}),this._source.label=n}set authToken(n){this._token=n}get connectionTimeout(){return this._wsTimeout}set connectionTimeout(n){this._wsTimeout=n<3e3?3e3:n>6e4?6e4:n}get isOpen(){return!(!this.ws||1==this.ws.readyState||3==this.ws.readyState)}get filter(){return this._filter}set filter(n){this._filter=n&&-1!=n.indexOf("self")?this.selfId?this.selfId:"":n}get playbackMode(){return this._playbackMode}close(){this.ws&&(this.ws.close(),this.ws=null)}open(n,r,o){if(!(n=n||this.endpoint))return;let i=-1==n.indexOf("?")?"?":"&";r&&(n+=`${i}subscribe=${r}`),(this._token||o)&&(n+=`${r?"&":"?"}token=${this._token||o}`),this.close(),this.ws=new WebSocket(n),setTimeout(()=>{this.ws&&1!=this.ws.readyState&&3!=this.ws.readyState&&(console.warn(`Connection watchdog expired (${this._wsTimeout/1e3} sec): ${this.ws.readyState}... aborting connection...`),this.close())},this._wsTimeout),this.ws.onopen=s=>{this._connect.next(s)},this.ws.onclose=s=>{this._close.next(s)},this.ws.onerror=s=>{this._error.next(s)},this.ws.onmessage=s=>{this.parseOnMessage(s)}}parseOnMessage(n){let r;if("string"==typeof n.data)try{r=JSON.parse(n.data)}catch{return}this.isHello(r)?(this.selfId=r.self,this._playbackMode=typeof r.startTime<"u",this._message.next(r)):this.isResponse(r)?(typeof r.login<"u"&&typeof r.login.token<"u"&&(this._token=r.login.token),this._message.next(r)):this._filter&&this.isDelta(r)?r.context==this._filter&&this._message.next(r):this._message.next(r)}sendRequest(n){if("object"!=typeof n)return"";let r=ta.request();return typeof n.login>"u"&&this._token&&(r.token=this._token),Object.keys(n).forEach(i=>{r[i]=n[i]}),this.send(r),r.requestId}put(n,r,o){return this.sendRequest({context:"self"==n?"vessels.self":n,put:{path:r,value:o}})}login(n,r){return this.sendRequest({login:{username:n,password:r}})}send(n){this.ws&&("object"==typeof n&&(n=JSON.stringify(n)),this.ws.send(n))}sendUpdate(n="self",r,o){let i=ta.updates();this._token&&(i.token=this._token),i.context="self"==n?"vessels.self":n,this._token&&(i.token=this._token);let s=[];"string"==typeof r&&s.push({path:r,value:o}),"object"==typeof r&&Array.isArray(r)&&(s=r);let a={timestamp:(new Date).toISOString(),values:s};this._source&&(a.source=this._source),i.updates.push(a),this.send(i)}subscribe(n="*",r="*",o){let i=ta.subscribe();if(this._token&&(i.token=this._token),i.context="self"==n?"vessels.self":n,this._token&&(i.token=this._token),"object"==typeof r&&Array.isArray(r)&&(i.subscribe=r),"string"==typeof r){let s={};s.path=r,o&&"object"==typeof o&&(o.period&&(s.period=o.period),o.minPeriod&&(s.minPeriod=o.period),o.format&&("delta"==o.format||"full"==o.format)&&(s.format=o.format),o.policy&&("instant"==o.policy||"ideal"==o.policy||"fixed"==o.policy)&&(s.policy=o.policy)),i.subscribe.push(s)}this.send(i)}unsubscribe(n="*",r="*"){let o=ta.unsubscribe();this._token&&(o.token=this._token),o.context="self"==n?"vessels.self":n,this._token&&(o.token=this._token),"object"==typeof r&&Array.isArray(r)&&(o.unsubscribe=r),"string"==typeof r&&o.unsubscribe.push({path:r}),this.send(o)}raiseAlarm(n="*",r,o){let i;i="string"==typeof r&&-1==r.indexOf("notifications.")?`notifications.${r}`:r,this.put(n,i,o.value)}clearAlarm(n="*",r){let o=-1==r.indexOf("notifications.")?`notifications.${r}`:r;this.put(n,o,null)}isSelf(n){return n.context==this.selfId}isDelta(n){return typeof n.context<"u"}isHello(n){return typeof n.version<"u"&&typeof n.self<"u"}isResponse(n){return typeof n.requestId<"u"}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=Q({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();class BO{constructor(t,n,r,o){this._method=[],this._message="",this._message=typeof t<"u"?t:"",this._state=typeof n<"u"?n:jI.alarm,r&&this._method.push(Zc.visual),o&&this._method.push(Zc.sound)}get value(){return{message:this._message,state:this._state,method:this._method}}}var jI=function(e){return e.normal="normal",e.alert="alert",e.warn="warn",e.alarm="alarm",e.emergency="emergency",e}(jI||{}),Zc=function(e){return e.visual="visual",e.sound="sound",e}(Zc||{});class GO{constructor(){this.obsList=[],this.stream=new $O,this._connect=new $e,this.onConnect=this._connect.asObservable(),this._close=new $e,this.onClose=this._close.asObservable(),this._error=new $e,this.onError=this._error.asObservable(),this._message=new $e,this.onMessage=this._message.asObservable()}get endpoint(){return this.stream.endpoint}set endpoint(t){this.stream.endpoint=t}get selfId(){return this.stream.selfId}set selfId(t){this.stream.selfId=t}get _source(){return this.stream._source}set _source(t){this.stream._source=t}set source(t){this.stream.source=t}set authToken(t){this.stream.authToken=t}get connectionTimeout(){return this.stream.connectionTimeout}set connectionTimeout(t){this.stream.connectionTimeout=t}get isOpen(){return this.stream.isOpen}get filter(){return this.stream.filter}set filter(t){this.stream.filter=t}get playbackMode(){return this.stream.playbackMode}open(t,n="none",r){this.obsList.push(this.stream.onConnect.subscribe(o=>this._connect.next(o))),this.obsList.push(this.stream.onClose.subscribe(o=>this._close.next(o))),this.obsList.push(this.stream.onError.subscribe(o=>this._error.next(o))),this.obsList.push(this.stream.onMessage.subscribe(o=>this._message.next(o))),this.stream.open(t,n,r)}close(){this.stream.close(),this.obsList.forEach(t=>t.unsubscribe()),this.obsList=[]}sendRequest(t){return this.stream.sendRequest(t)}put(t,n,r){return this.stream.put(t,n,r)}login(t,n){return this.stream.login(t,n)}send(t){this.stream.send(t)}sendUpdate(t="self",n,r){this.stream.sendUpdate(t,n,r)}subscribe(t="*",n="*",r){this.stream.subscribe(t,n,r)}unsubscribe(t="*",n="*"){this.stream.unsubscribe(t,n)}raiseAlarm(t="*",n,r){this.stream.raiseAlarm(t,n,r)}clearAlarm(t="*",n){this.stream.clearAlarm(t,n)}isSelf(t){return this.stream.isSelf(t)}isDelta(t){return this.stream.isDelta(t)}isHello(t){return this.stream.isHello(t)}isResponse(t){return this.stream.isResponse(t)}}class na{id;name;mmsi;position=[0,0];state;type={id:-1,name:""};virtual;properties={};lastUpdated=new Date;callsignVhf;callsignHf;orientation=0}class FI extends na{heading;headingTrue=null;headingMagnetic=null;cog;cogTrue=null;cogMagnetic=null;sog;registrations={};type={id:-1,name:""};wind={direction:null,mwd:null,twd:null,tws:null,speedTrue:null,sog:null,awa:null,aws:null};buddy=!1;closestApproach=null;mode="day";anchor={maxRadius:null,radius:null,position:null};resourceUpdates=[];autopilot={};track=[];courseApi={arrivalCircle:0,activeRoute:{},nextPoint:{},previousPoint:{}};performance={beatAngle:null,gybeAngle:null};racing;vectors={cog:[]}}class VI extends na{constructor(){super()}}class qO extends na{constructor(){super()}}class zO extends na{sog=0;track=[];constructor(){super()}}class ZO extends VI{twd;tws;temperature;constructor(){super()}}class Qc{static celciusToKelvin(t=0){return t+273.15}static kelvinToCelcius(t=0){return t-273.15}static kelvinToFarenheit(t=0){return 1.8*t-459.67}static degreesToRadians(t=0){return t*Math.PI/180}static radiansToDegrees(t=0){return 180*t/Math.PI}static angleToDirection(t,n){const r=2*Math.PI;if(n||(n=0),t||(t=0),isNaN(n)||isNaN(t))return null;const o=n+t;return o>r?o-r:o<0?r+o:o}static directionToAngle(t,n){const r=2*Math.PI;if(n||(n=0),t||(t=0),isNaN(n)||isNaN(t))return null;const o=n-t;let i;if(o>0)i=o>Math.PI?r-o:0-o;else if(o<0){const s=Math.abs(o);i=s>Math.PI?s-r:s}else i=o;return i}static knotsToKm(t){return 1.852*t}static nauticalMilesToKm(t){return 1.852*t}static knotsToMSec(t){return.51444325460445*t}static kmToKnots(t){return.539957*t}static kmToNauticalMiles(t){return.539957*t}static kmToMiles(t){return.621371*t}static metersToFeet(t){return 3.28084*t}static msecToKnots(t){return 1.94384*t}static msecToKmh(t){return 3.6*t}static msecToMph(t){return 2.23694*t}static nauticalMilesToMiles(t){return 1.15078*t}static milesToKm(t){return 1.60934*t}static milesToNauticalMiles(t){return.868976*t}static rpmToHertz(t){return t/60}}var vn=ua(2541);class yt{static destCoordinate(t,n,r){const o=(0,vn.computeDestinationPoint)(t,r,Qc.radiansToDegrees(n));return[o.longitude,o.latitude]}static distanceTo(t,n){return(0,vn.getDistance)(t,n)}static routeLength(t){return(0,vn.getPathLength)(t)}static routeLegs(t,n){if(t.length<2)return[];const r=[];r.push(n?{bearing:(0,vn.getGreatCircleBearing)(n,t[0]),distance:yt.distanceTo(n,t[0])}:{bearing:0,distance:0});for(let o=1;o<t.length;++o){const i={bearing:(0,vn.getGreatCircleBearing)(t[o-1],t[o]),distance:yt.distanceTo(t[o-1],t[o])};r.push(i)}return r}static centreOfPolygon(t){const n=(0,vn.getCenter)(t);return[n.longitude,n.latitude]}static inDLCrossingZone(t,n=170){return Math.abs(t[0])>=n}static inBounds(t,n){return(0,vn.isPointInPolygon)(t,[[n[0],n[1]],[n[0],n[3]],[n[2],n[3]],[n[2],n[1]],[n[0],n[1]]])}static calcMapifiedExtent(t,n){const o=111111*Math.cos(Qc.degreesToRadians(t[1])),i=[0,0,0,0];return i[1]=t[1]+(0-Math.abs(n))/111111,i[3]=t[1]+Math.abs(n)/111111,i[0]=t[0]+(0-Math.abs(n))/o,i[2]=t[0]+Math.abs(n)/o,i}static normaliseCoords(t){if(!Array.isArray(t))return[0,0];if("number"==typeof t[0]){if(t[0]>180)for(;t[0]>180;)t[0]=t[0]-360;else if(t[0]<-180)for(;t[0]<-180;)t[0]=360+t[0];return t}return Array.isArray(t[0])?(t.forEach(n=>this.normaliseCoords(n)),t):void 0}}class QO{action;playback=!1;result=null;type;self=null;timestamp;constructor(t){this.action="notification",this.type=t}}class HI{action;playback=!1;result=null;timestamp;self=null;constructor(){this.action="update"}}class KO extends HI{constructor(){super(),this.action="trail"}}var YO=ua(6380);const JO=["environment.wind.speedTrue","environment.wind.speedOverGround","environment.wind.angleTrueGround","environment.wind.angleTrueWater","environment.wind.directionTrue","environment.wind.directionMagnetic","navigation.courseOverGroundTrue","navigation.courseOverGroundMagnetic","navigation.headingTrue","navigation.headingMagnetic"];let k,ve,$I;const Go=[];let Jc,ra=[],Yc=!1,Xc=!1;const ue={signalk:{},aisState:[]};let Re,WI,UI=[0,0,0,0],BI=60,qo=0,yn={},In=500,Ot=!1;const Pt={maxAge:54e4,staleAge:36e4,lastTick:(new Date).valueOf(),maxTrack:20};let ed={cogLine:10,aisCogLine:10};const zo={trailDuration:24,trailResolution:{lastHour:"5s",next23:"10s",beyond24:"1m"}};let Zo,Qo="freeboard-sk";function GI(){Re={updated:{},stale:{},expired:{}}}function oa({action:e,msg:t}){switch(e){case"onConnect":postMessage({action:"open",playback:Ot,result:t.target.readyState});break;case"onClose":zI(!1);break;case"onError":postMessage({action:"error",playback:Ot,result:"Connection error!"});break;case"onMessage":!function oP(e){ve.isHello(e)?(postMessage({action:"hello",result:e,self:e.self,playback:Ot}),In&&KI()):ve.isDelta(e)?(Yc=!0,e.updates.forEach(t=>{t.values&&(Zo=t.$source,t.values.forEach(n=>{if(WI=t.timestamp,e.context)switch(e.context.split(".")[0]){case"shore":case"atons":ue?.signalk.atons&&function aP(e,t){let n=!1;if(-1!==e.indexOf("shore.basestations")&&(n=!0),!k.atons.has(e)){const o=new VI;o.id=e,o.position=null,n&&(o.type.id=-1,o.type.name="Basestation"),k.atons.set(e,o)}const r=k.atons.get(e);""===t.path?(typeof t.value.name<"u"&&(r.name=t.value.name),typeof t.value.mmsi<"u"&&(r.mmsi=t.value.mmsi),typeof t.value.atonType<"u"&&(r.type=t.value.atonType)):"atonType"===t.path?r.type=t.value:"virtual"===t.path?r.virtual=t.value:"navigation.position"===t.path?(r.position=[t.value.longitude,t.value.latitude],r.positionReceived=!0):r.properties[t.path]=t.value}(e.context,n),Yo(e.context,k.atons,ue?.signalk.atons);break;case"sar":ue?.signalk.sar&&function lP(e,t){if(!k.sar.has(e)){const r=new qO;r.id=e,r.position=null,r.type.id=-1,r.type.name="SaR Beacon",k.sar.set(e,r)}const n=k.sar.get(e);""===t.path?(typeof t.value.name<"u"&&(n.name=t.value.name),typeof t.value.mmsi<"u"&&(n.mmsi=t.value.mmsi),typeof t.value.communication<"u"&&(n.callsignVhf=t.value.communication.callsignVhf??"",n.callsignHf=t.value.communication.callsignHf??"")):"communication.callsignVhf"===t.path?n.callsignVhf=t.value:"communication.callsignHf"===t.path?n.callsignHf=t.value:"navigation.position"===t.path&&t.value&&(n.position=yt.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0)}(e.context,n),Yo(e.context,k.sar,ue?.signalk.sar);break;case"aircraft":ue?.signalk.aircraft&&function cP(e,t){if(!k.aircraft.has(e)){const r=new zO;r.id=e,r.position=null,k.aircraft.set(e,r)}const n=k.aircraft.get(e);""===t.path?(typeof t.value.name<"u"&&(n.name=t.value.name),typeof t.value.mmsi<"u"&&(n.mmsi=t.value.mmsi),typeof t.value.communication<"u"&&(n.callsignVhf=t.value.communication.callsignVhf??"",n.callsignHf=t.value.communication.callsignHf??"")):"communication.callsignVhf"===t.path?n.callsignVhf=t.value:"communication.callsignHf"===t.path?n.callsignHf=t.value:"navigation.position"===t.path&&t.value?(n.position=yt.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0,td(n)):"navigation.courseOverGroundTrue"===t.path?n.orientation=t.value:"navigation.speedOverGround"===t.path&&(n.sog=t.value)}(e.context,n),Yo(e.context,k.aircraft,ue?.signalk.aircraft);break;case"meteo":ue?.signalk.meteo&&(function uP(e,t){if(!k.meteo.has(e)){const r=new ZO;r.id=e,r.position=null,r.type.id=-1,r.type.name="Weather Station",k.meteo.set(e,r)}const n=k.meteo.get(e);if(""===t.path){if(typeof t.value.name<"u"&&(n.name=t.value.name),typeof t.value.mmsi<"u"){const r=e.split(":").slice(-2);n.mmsi=2===r.length?`${r[0]}:${r[1]}`:t.value.mmsi}typeof t.value.communication<"u"&&(n.callsignVhf=t.value.communication.callsignVhf??"",n.callsignHf=t.value.communication.callsignHf??"")}else"communication.callsignVhf"===t.path?n.callsignVhf=t.value:"communication.callsignHf"===t.path?n.callsignHf=t.value:"environment.outside.temperature"===t.path?n.temperature=t.value:"environment.wind.directionTrue"===t.path?n.twd=t.value:"environment.wind.averageSpeed"===t.path?n.tws=t.value:"navigation.position"===t.path&&t.value&&(n.position=yt.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0)}(e.context,n),XI(n)),Yo(e.context,k.meteo,ue?.signalk.meteo);break;case"vessels":if(ve.isSelf(e))k.self.id||(k.self.id=e.context),JI(k.self,n,!0),XI(n);else{if(ue?.signalk.vessels){const r=function iP(e){if(!k.aisTargets.has(e)){const t=new FI;t.id=e,t.position=null,k.aisTargets.set(e,t)}return k.aisTargets.get(e)}(e.context);JI(r,n)}Yo(e.context,k.aisTargets,ue?.signalk.vessels,ue?.aisState)}}}))}),QI()):ve.isResponse(e)&&postMessage({action:"response",result:e})}(t)}}function qI(e={}){e.interval&&"number"==typeof e.interval&&(In=e.interval,YI(),KI(),BI=1/(In/1e3)*60),Ot=!!e.playback,e.selections&&(typeof e.selections.preferredPaths<"u"&&(yn=e.selections.preferredPaths),e.selections.aisMaxAge&&"number"==typeof e.selections.aisMaxAge&&(Pt.maxAge=e.selections.aisMaxAge),e.selections.aisStaleAge&&"number"==typeof e.selections.aisStaleAge&&(Pt.staleAge=e.selections.aisStaleAge),"number"==typeof e.selections.signalk.maxRadius&&(ue.signalk=e.selections.signalk),typeof e.selections.aisState<"u"&&Array.isArray(e.selections.aisState)&&(ue.aisState=e.selections.aisState),ed=e.selections.vessel)}function zI(e=!1){YI(),Go.forEach(t=>t.unsubscribe()),ve&&e&&ve.close(),ve=null,postMessage({action:"close",result:e,playback:Ot})}function Ko(e){return new Promise((t,n)=>{fetch(`${e}`).then(r=>{r.json().then(o=>t(o)).catch(o=>n(o))}).catch(r=>{n(r)})})}function ZI(){Ko(Jc+"/tracks"+(ue&&ue.signalk&&ue.signalk.maxRadius?`?radius=${ue.signalk.maxRadius}`:"?radius=10000")).then(t=>{Xc=!0,Object.entries(t).forEach(n=>{if(k.aisTargets.has(n[0])){const r=k.aisTargets.get(n[0]);r.track=n[1].coordinates,td(r)}})}).catch(()=>{Xc=!1})}function Yo(e,t,n=!0,r=[]){if(n){let o=t.get(e);o&&r.includes(o?.state)&&(Re.expired[e]=!0,o=null),o&&ue.signalk.maxRadius?o.positionReceived&&yt.inBounds(o.position,UI)?Re.updated[e]=!0:(t.delete(e),Re.expired[e]=!0):Re.updated[e]=!0}else 0!==t.size&&(t.forEach((o,i)=>{Re.expired[i]=!0}),t.clear())}function QI(e=!1){if(!In||e){const t=new HI;t.playback=Ot,k.aisStatus.updated=Object.keys(Re.updated),k.aisStatus.stale=Object.keys(Re.stale),k.aisStatus.expired=Object.keys(Re.expired),t.result=k,t.timestamp=Ot?WI:k.self.lastUpdated.toISOString(),postMessage(t),GI(),k.self.resourceUpdates=[],0===qo&&(function sP(){const e=(new Date).valueOf();k.aisTargets.forEach((t,n)=>{t.lastUpdated.valueOf()<e-Pt.maxAge?(Re.expired[n]=!0,k.aisTargets.delete(n)):t.lastUpdated.valueOf()<e-Pt.staleAge&&(Re.stale[n]=!0)}),k.aircraft.forEach((t,n)=>{t.lastUpdated.valueOf()<e-Pt.maxAge?(Re.expired[n]=!0,k.aircraft.delete(n)):t.lastUpdated.valueOf()<e-Pt.staleAge&&(Re.stale[n]=!0)}),k.sar.forEach((t,n)=>{t.lastUpdated.valueOf()<e-Pt.maxAge?(Re.expired[n]=!0,k.sar.delete(n)):t.lastUpdated.valueOf()<e-Pt.staleAge&&(Re.stale[n]=!0)})}(),k.self.positionReceived&&ue?.signalk.maxRadius&&(UI=yt.calcMapifiedExtent(k.self.position,ue.signalk.maxRadius),qo++)),qo=qo>=BI?0:qo+1}}function KI(){In&&"number"==typeof In&&ra.push(setInterval(()=>{Yc&&(QI(!0),Yc=!1)},In)),ra.push(setInterval(()=>{Xc&&ZI()},6e4))}function YI(){ra.forEach(e=>clearInterval(e)),ra=[]}function JI(e,t,n=!1){if(e.lastUpdated=new Date,n){const o=-1!==t.path.indexOf("course")?t.path.split(".").slice(0,2).join("."):t.path;-1!==JO.indexOf(o)&&(k.paths[o]=null),t.path.includes("navigation.racing")&&(e.properties[t.path]=t.value)}if(""===t.path)typeof t.value.name<"u"&&(e.name=t.value.name),typeof t.value.mmsi<"u"&&(e.mmsi=t.value.mmsi),typeof t.value.registrations<"u"&&(e.registrations=t.value.registrations),typeof t.value.buddy<"u"&&(e.buddy=t.value.buddy),typeof t.value.communication<"u"&&(e.callsignVhf=t.value.communication.callsignVhf??"",e.callsignHf=t.value.communication.callsignHf??"");else if("communication.callsignVhf"===t.path)e.callsignVhf=t.value;else if("communication.callsignHf"===t.path)e.callsignHf=t.value;else if("performance.beatAngle"===t.path)e.performance.beatAngle=t.value;else if("performance.gybeAngle"===t.path)e.performance.gybeAngle=t.value;else if("design.aisShipType"===t.path)e.type=t.value;else if("navigation.position"===t.path&&t.value){if(typeof t.value.latitude>"u"||typeof t.value.longitude>"u")return;e.position=yt.normaliseCoords([t.value.longitude,t.value.latitude]),e.positionReceived=!0,n||td(e)}else"navigation.state"===t.path?e.state=t.value:"navigation.speedOverGround"===t.path?e.sog=t.value:"environment.wind.angleApparent"===t.path?e.wind.awa=t.value:"environment.wind.speedApparent"===t.path?e.wind.aws=t.value:"environment.wind.speedTrue"===t.path?e.wind.speedTrue=t.value:"environment.wind.speedOverGround"===t.path?e.wind.sog=t.value:"environment.wind.directionTrue"===t.path?e.wind.twd=t.value:"environment.wind.directionMagnetic"===t.path?e.wind.mwd=t.value:"environment.mode"===t.path?e.mode=t.value:-1!==t.path.indexOf("navigation.course.")?-1!==t.path.indexOf("navigation.course.calcValues")?-1===t.path.indexOf("navigation.course.calcValues.previousPoint")&&(e[`course.${t.path.split(".").slice(-1)[0]}`]=t.value):-1!==t.path.indexOf("navigation.course.activeRoute")?e.courseApi.activeRoute=t.value:-1!==t.path.indexOf("navigation.course.nextPoint")?e.courseApi.nextPoint=t.value:-1!==t.path.indexOf("navigation.course.previousPoint")?e.courseApi.previousPoint=t.value:"navigation.course.arrivalCircle"===t.path&&(e.courseApi.arrivalCircle=t.value):-1!==t.path.indexOf("navigation.closestApproach")?e.closestApproach=t.value:"navigation.anchor.position"===t.path?e.anchor.position=t.value:"navigation.anchor.maxRadius"===t.path?e.anchor.maxRadius=t.value:"navigation.anchor.currentRadius"===t.path?e.anchor.radius=t.value:-1!==t.path.indexOf("resources.")?e.resourceUpdates.push(t):"steering.autopilot.state"===t.path&&Zo===Qo?e.autopilot.state=t.value:"steering.autopilot.mode"===t.path&&Zo===Qo?e.autopilot.mode=t.value:"steering.autopilot.target"===t.path&&Zo===Qo?e.autopilot.target=t.value:"steering.autopilot.engaged"===t.path&&Zo===Qo?e.autopilot.enabled=t.value:"steering.autopilot.defaultPilot"===t.path?(e.autopilot.default=t.value,Qo=t.value):"navigation.courseOverGroundTrue"===t.path?e.cogTrue=t.value:"navigation.courseOverGroundMagnetic"===t.path?e.cogMagnetic=t.value:"navigation.headingTrue"===t.path?e.headingTrue=t.value:"navigation.headingMagnetic"===t.path&&(e.headingMagnetic=t.value);typeof yn.heading<"u"&&t.path===yn.heading&&(e.orientation=t.value),typeof yn.tws<"u"&&t.path===yn.tws&&(e.wind.tws=t.value),typeof yn.twd<"u"&&t.path===yn.twd&&(e.wind.direction="environment.wind.angleTrueGround"===t.path||"environment.wind.angleTrueWater"===t.path?Qc.angleToDirection(t.value,e.orientation??0):t.value);const r=e.cogTrue??e.cogMagnetic??void 0;typeof r<"u"&&e.position&&(e.vectors.cog=[e.position,yt.destCoordinate(e.position,r,(e.sog??0)*(60*(n?ed.cogLine:ed.aisCogLine)))])}function XI(e,t){const n={path:e.path,value:e.value,context:t||null};let r;const o=e.path.split(".");if(("notifications.environment.depth.belowTransducer"===e.path||"notifications.environment.depth.belowSurface"===e.path||"notifications.environment.depth.belowKeel"===e.path)&&(r=o[2]),"notifications.navigation.anchor"===e.path&&(r=o[2]),-1!==["mob","sinking","fire","piracy","flooding","collision","grounding","listing","adrift","abandon"].indexOf(o[o.length-1])&&(r=o[o.length-1]),-1!==e.path.indexOf("notifications.navigation.closestApproach")&&(r=o[2],n.context=o[3]),-1!==e.path.indexOf("notifications.buddy")&&(r=o[1],n.context=o[2]),-1!==e.path.indexOf("notifications.navigation.course.arrivalCircleEntered")&&(r=o[3]),-1!==e.path.indexOf("notifications.navigation.course.perpendicularPassed")&&(r=o[3]),-1!==e.path.indexOf("notifications.meteo.warning")&&(r=o[1]),r){const i=new QO(r);i.playback=Ot,i.result=n,postMessage(i)}}function td(e){if(e.track&&0===e.track.length)e.track.push([e.position]);else{const n=e.track[e.track.length-1][e.track[e.track.length-1].length-1];n[0]!==e.position[0]&&n[1]!==e.position[1]&&e.track[e.track.length-1].push(e.position)}e.track[e.track.length-1]=e.track[e.track.length-1].slice(0-Pt.maxTrack)}addEventListener("message",({data:e})=>{!function eP(e){if(e.cmd)switch(e.cmd){case"open":qI(e.options),function nP(e){if(ve)return;if(!e.url)return void postMessage({action:"error",result:"Valid options not provided!"});const t=e.url.split("/");if(t.pop(),t.push("api"),t[0]="wss:"===t[0]?"https:":"http:",Jc=t.join("/"),function XO(){k={self:new FI,aisTargets:new Map,aisStatus:{updated:[],stale:[],expired:[]},paths:{},atons:new Map,aircraft:new Map,sar:new Map,meteo:new Map},k.self.positionReceived=!1,GI()}(),ve=new GO,Go.push(ve.onConnect.subscribe(n=>oa({action:"onConnect",msg:n}))),Go.push(ve.onClose.subscribe(n=>oa({action:"onClose",msg:n}))),Go.push(ve.onError.subscribe(n=>oa({action:"onError",msg:n}))),Go.push(ve.onMessage.subscribe(n=>oa({action:"onMessage",msg:n}))),ve.authToken=$I,e.playback){const n=e.playbackOptions.startTime?`?startTime=${e.playbackOptions.startTime}`:null;let r=e.playbackOptions.playbackRate?`playbackRate=${e.playbackOptions.playbackRate}`:null;r=r?n?"&"+r:"?"+r:null,ve.open(`${e.url}${n||""}${r||""}`,e.playbackOptions.subscribe,e.token)}else ve.open(e.url,e.subscribe,e.token),ZI()}(e.options);break;case"close":zI(!0);break;case"subscribe":ve.subscribe(e.options.context,e.options.path);break;case"settings":qI(e.options);break;case"alarm":!function rP(e){const t=-1===e.type.indexOf("notifications.")?`notifications.${e.type}`:e.type;e.raise?ve.raiseAlarm("self",t,new BO(e.message,e.state,!0,!0)):ve.clearAlarm("self",t)}(e.options);break;case"vessel":if(e.options){let t;t="self"===e.options.context?k.self:k.aisTargets.get(e.options.context),t&&e.options.name&&(t.name=e.options.name)}break;case"auth":e.options&&typeof e.options.token<"u"&&($I=e.options.token);break;case"trail":e.options&&(zo.trailDuration=e.options.trailDuration??24,e.options.trailResolution&&(zo.trailResolution.lastHour=e.options.trailResolution.lastHour??"5s",zo.trailResolution.next23=e.options.trailResolution.next23??"1m",zo.trailResolution.beyond24=e.options.trailResolution.beyond24??"5m")),function tP(e){const t=Jc+"/self/track?",n=[];e.trailDuration>24&&(n.push(Ko(`${t}timespan=${e.trailDuration-24}h&resolution=${e.trailResolution.beyond24}&timespanOffset=24`)),n.push(Ko(`${t}timespan=23h&resolution=${e.trailResolution.next23}&timespanOffset=1`))),e.trailDuration>1&&e.trailDuration<25&&n.push(Ko(`${t}timespan=${e.trailDuration-1}h&resolution=${e.trailResolution.next23}&timespanOffset=1`)),n.push(Ko(`${t}timespan=1h&resolution=${e.trailResolution.lastHour}`));let i=[];const s=new KO;s.playback=Ot,Promise.all(n).then(a=>{let l=0;const u=n.length-1;a.forEach(d=>{if(d.type&&"MultiLineString"===d.type&&d.coordinates&&Array.isArray(d.coordinates))if(l!==u){let f=[];for(d.coordinates.forEach(p=>{f=f.concat(p)}),f=(0,YO.p$)(f,5e-4,true);f.length>60;){const p=f.slice(0,60);i.push(p),f=f.slice(59),f[0]=[f[0][0]+5e-9,f[0][1]+5e-9]}0!==f.length&&i.push(f)}else i=i.concat(d.coordinates);l++}),s.result=i,postMessage(s)}).catch(()=>{s.result=null,postMessage(s)})}(zo)}}(e)})})();
@@ -1413,53 +1413,101 @@
1413
1413
  <b>Anchor Watch</b> option from the Main menu.
1414
1414
  </div>
1415
1415
 
1416
- <div style="display: flex; flex-wrap: wrap">
1417
- <div>
1416
+ <div>
1417
+ <div style="padding-left: 15px">
1418
+ The following modes of operation are available:
1419
+ <ol>
1420
+ <li>Drop and set (calculated radius using position)</li>
1421
+ <li>Drop and set (specified radius)</li>
1422
+ <li>Manual set (calculated radius using rode length)</li>
1423
+ </ol>
1424
+ </div>
1425
+
1426
+ <div style="padding-left: 15px">
1427
+ <h5>1. Drop and set (calculated radius using position)</h5>
1418
1428
  <img
1419
1429
  src="./img/anchor_watch.png"
1420
1430
  style="max-width: 250px"
1421
1431
  alt=""
1422
1432
  />
1423
-
1433
+ <br />
1434
+ In this mode of operation, after dropping the physical anchor,
1435
+ slide the toggle to <b>Drop</b> then:
1436
+ <ol>
1437
+ <li>
1438
+ Let out the rode and when complete click <b>Set</b>. This will
1439
+ set the anchor position and the maximum radius. The server
1440
+ will commence watching the vessel position and raise an alarm
1441
+ if the vessel moves outside the maximum radius distance.
1442
+ </li>
1443
+ </ol>
1424
1444
  <img
1425
1445
  src="./img/anchor_watch_rode.png"
1426
1446
  style="max-width: 250px"
1427
1447
  alt=""
1428
1448
  />
1429
-
1449
+ </div>
1450
+ <div style="padding-left: 15px">
1451
+ <h5>2. Drop and set (specified radius)</h5>
1430
1452
  <img
1431
- src="./img/anchor_watch_adjust.png"
1453
+ src="./img/anchor_watch_2.png"
1432
1454
  style="max-width: 250px"
1433
1455
  alt=""
1434
1456
  />
1457
+ <br />
1458
+ In this mode of operation, after dropping the physical anchor:
1459
+ <ol>
1460
+ <li>Check <b>Set Radius</b>.</li>
1461
+ <li>Set the desired alarm radius (in meters).</li>
1462
+ <li>Slide the toggle to <b>Drop</b></li>
1463
+ </ol>
1464
+ </div>
1465
+ <div style="padding-left: 15px">
1466
+ <h5>3. Manual set (calculated radius using rode length)</h5>
1435
1467
  <img
1436
- src="./img/anchor_circle.png"
1468
+ src="./img/anchor_watch_3.png"
1437
1469
  style="max-width: 250px"
1438
1470
  alt=""
1439
1471
  />
1440
- </div>
1441
- <div style="padding-left: 15px">
1442
- After dropping the anchor, slide the toggle to <b>Drop</b> then:
1472
+ <br />
1473
+ In this mode of operation, after dropping the anchor, and letting
1474
+ out the rode:
1443
1475
  <ol>
1444
- <li>
1445
- Let out the rode and when complete click <b>Set</b>. This will
1446
- set the anchor position and the maximum radius. The server
1447
- will commence watching the vessel position and raise an alarm
1448
- if the vessel moves outside the maximum radius distance.
1449
- </li>
1450
- <li>
1451
- The alarm radius can be adjusted by moving the
1452
- <b>Set Radius</b> slider to the desired distance.<br />
1453
- The <b>Anchor Position</b> can be shifted by using the arrow
1454
- buttons <b>OR</b> on the map:
1455
- <ul>
1456
- <li>Click the anchor icon (to enter modify mode)</li>
1457
- <li>Drag the anchor feature to the new location.</li>
1458
- <li>Click <b>Finish</b> to exit modify mode.</li>
1459
- </ul>
1460
- </li>
1476
+ <li>Check the box next to the <b>Manual Set</b> button.</li>
1477
+ <li>Set the rode length (in meters).</li>
1478
+ <li>Click the <b>Manual Set</b> button.</li>
1461
1479
  </ol>
1462
1480
  </div>
1481
+ <div>
1482
+ Once set the anchor position and alarm radius are displayed on the
1483
+ map.
1484
+ <br />
1485
+ <img
1486
+ src="./img/anchor_circle.png"
1487
+ style="max-width: 250px"
1488
+ alt=""
1489
+ />
1490
+ </div>
1491
+ <div>
1492
+ <p>
1493
+ The alarm radius can be adjusted by moving the
1494
+ <b>Set Radius</b> slider to the desired distance.
1495
+ </p>
1496
+ <img
1497
+ src="./img/anchor_watch_adjust.png"
1498
+ style="max-width: 250px"
1499
+ alt=""
1500
+ />
1501
+ <br />
1502
+ The <b>Anchor Position</b> can be shifted by using the arrow
1503
+ buttons <b>OR</b> on the map:
1504
+ <ul>
1505
+ <li>Click the anchor icon (to enter modify mode)</li>
1506
+ <li>Drag the anchor feature to the new location.</li>
1507
+ <li>Click <b>Finish</b> to exit modify mode.</li>
1508
+ </ul>
1509
+ </div>
1510
+
1463
1511
  <div>
1464
1512
  <p>
1465
1513
  When the server calculates that the maxumum radius has been