@signalk/freeboard-sk 2.9.1 → 2.10.0

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # CHANGELOG: Freeboard
2
2
 
3
+ ### v2.10.0
4
+
5
+ - **Updated**: Scale up AIS icon sizes (#180).
6
+ - **Updated**: Scale down AtoN icon sizes (#179).
7
+ - **Added**: Option to filter out vessels without an IMO registration (#174).
8
+ - **Updated**: Compass widget in Weather Station popover (#173).
9
+ - **Updated**: Add waypoint styles to routes (#168).
10
+ - **Updated**: S57 chart styles (@wdantuma).
11
+ - **Updated**: Angular framework to v18 & Material 3
12
+
13
+
3
14
  ### v2.9.1
4
15
 
5
16
  - **Added**: Ability to filter vessels by `AIS Ship Type` (#163).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signalk/freeboard-sk",
3
- "version": "2.9.1",
3
+ "version": "2.10.0",
4
4
  "description": "Openlayers chart plotter implementation for Signal K",
5
5
  "keywords": [
6
6
  "signalk-webapp",
@@ -43,19 +43,19 @@
43
43
  "tslib": "^2.0.0"
44
44
  },
45
45
  "devDependencies": {
46
- "@angular-devkit/build-angular": "^17.3.0",
47
- "@angular/animations": "^17.3.0",
48
- "@angular/cdk": "^17.3.0",
49
- "@angular/cli": "^17.3.0",
50
- "@angular/common": "^17.3.0",
51
- "@angular/compiler": "^17.3.0",
52
- "@angular/compiler-cli": "^17.3.0",
53
- "@angular/core": "^17.3.0",
54
- "@angular/forms": "^17.3.0",
55
- "@angular/language-service": "^17.3.0",
56
- "@angular/material": "^17.3.0",
57
- "@angular/platform-browser": "^17.3.0",
58
- "@angular/platform-browser-dynamic": "^17.3.0",
46
+ "@angular-devkit/build-angular": "^18.1.0",
47
+ "@angular/animations": "^18.1.0",
48
+ "@angular/cdk": "^18.1.0",
49
+ "@angular/cli": "^18.1.0",
50
+ "@angular/common": "^18.1.0",
51
+ "@angular/compiler": "^18.1.0",
52
+ "@angular/compiler-cli": "^18.1.0",
53
+ "@angular/core": "^18.1.0",
54
+ "@angular/forms": "^18.1.0",
55
+ "@angular/language-service": "^18.1.0",
56
+ "@angular/material": "^18.1.0",
57
+ "@angular/platform-browser": "^18.1.0",
58
+ "@angular/platform-browser-dynamic": "^18.1.0",
59
59
  "@kolkov/angular-editor": "^2.1.0",
60
60
  "@types/arcgis-rest-api": "^10.4.5",
61
61
  "@types/express": "^4.17.17",
@@ -77,10 +77,10 @@
77
77
  "karma-coverage-istanbul-reporter": "~3.0.2",
78
78
  "karma-jasmine": "~4.0.0",
79
79
  "karma-jasmine-html-reporter": "^1.5.0",
80
- "ng-packagr": "^17.3.0",
80
+ "ng-packagr": "^18.1.0",
81
81
  "ngeohash": "^0.6.3",
82
82
  "ol": "^9.0.0",
83
- "ol-mapbox-style": "^12.2.1",
83
+ "ol-mapbox-style": "^12.3.3",
84
84
  "pmtiles": "^2.7.0",
85
85
  "prettier": "^2.5.1",
86
86
  "prettier-plugin-organize-attributes": "^0.0.5",
@@ -0,0 +1 @@
1
+ (()=>{"use strict";var MI={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,D=(0,i.default)(h),T=(0,i.default)(m),L=(0,i.default)(y),G=Math.asin(Math.sin(T)*Math.cos(v)+Math.cos(T)*Math.sin(v)*Math.cos(D)),q=L+Math.atan2(Math.sin(D)*Math.sin(v)*Math.cos(T),Math.cos(v)-Math.sin(T)*Math.sin(G)),re=(0,s.default)(q);return(re<a.MINLON||re>a.MAXLON)&&(q=(q+3*Math.PI)%(2*Math.PI)-Math.PI,re=(0,s.default)(q)),{latitude:(0,s.default)(G),longitude:re}}},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(D){g=!0,m=D}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)),D=v.toString().split("."),T=Math.floor(v),L=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."+(D[1]||0))).toString(),q=n(L.split("."),2),re=q[0],X=q[1],pe=void 0===X?"0":X;return y+"\xb0 "+T.toString().padStart(2,"0")+"' "+re.padStart(2,"0")+"."+pe.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]),D=(0,i.default)(d[g]);f+=((0,r.default)(D)-(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 X,pe,h=(0,r.default)(f),g=(0,o.default)(f),m=(0,i.default)(h),y=(0,i.default)(g),v=p/a.earthRadius,D=m-v,T=m+v,L=(0,i.default)(a.MAXLAT),G=(0,i.default)(a.MINLAT),q=(0,i.default)(a.MAXLON),re=(0,i.default)(a.MINLON);if(D>G&&T<L){var Mn=Math.asin(Math.sin(v)/Math.cos(m));(X=y-Mn)<re&&(X+=2*Math.PI),(pe=y+Mn)>q&&(pe-=2*Math.PI)}else D=Math.max(D,G),T=Math.min(T,L),X=re,pe=q;return[{latitude:(0,s.default)(D),longitude:(0,s.default)(X)},{latitude:(0,s.default)(T),longitude:(0,s.default)(pe)}]}},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 D=(0,i.default)((0,r.default)(v)),T=(0,i.default)((0,o.default)(v));return{X:y.X+Math.cos(D)*Math.cos(T),Y:y.Y+Math.cos(D)*Math.sin(T),Z:y.Z+Math.sin(D)}},{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),D=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(D/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 L,G,q,re,X,pe,pa,h=(0,r.default)(d),g=(0,o.default)(d),m=(0,r.default)(f),y=(0,o.default)(f),v=6356752.314245,D=1/298.257223563,T=(0,i.default)(y-g),Mn=Math.atan((1-D)*Math.tan((0,i.default)(parseFloat(h)))),fa=Math.atan((1-D)*Math.tan((0,i.default)(parseFloat(m)))),Nr=Math.sin(Mn),Sr=Math.cos(Mn),Or=Math.sin(fa),Kt=Math.cos(fa),Cn=T,ha=100;do{var ni=Math.sin(Cn),ri=Math.cos(Cn);if(0===(pe=Math.sqrt(Kt*ni*(Kt*ni)+(Sr*Or-Nr*Kt*ri)*(Sr*Or-Nr*Kt*ri))))return 0;L=Nr*Or+Sr*Kt*ri,G=Math.atan2(pe,L),X=L-2*Nr*Or/(re=1-(q=Sr*Kt*ni/pe)*q),isNaN(X)&&(X=0);var oi=D/16*re*(4+D*(4-3*re));pa=Cn,Cn=T+(1-oi)*D*q*(G+oi*pe*(X+oi*L*(2*X*X-1)))}while(Math.abs(Cn-pa)>1e-12&&--ha>0);if(0===ha)return NaN;var Ct=re*(s.earthRadius*s.earthRadius-v*v)/(v*v),ii=Ct/1024*(256+Ct*(Ct*(74-47*Ct)-128));return Math.round(v*(1+Ct/16384*(4096+Ct*(Ct*(320-175*Ct)-768)))*(G-ii*pe*(X+ii/4*(L*(2*X*X-1)-ii/6*X*(4*pe*pe-3)*(4*X*X-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 D.default}}),Object.defineProperty(t,"getGreatCircleBearing",{enumerable:!0,get:function(){return T.default}}),Object.defineProperty(t,"getLatitude",{enumerable:!0,get:function(){return L.default}}),Object.defineProperty(t,"getLongitude",{enumerable:!0,get:function(){return G.default}}),Object.defineProperty(t,"getPathLength",{enumerable:!0,get:function(){return q.default}}),Object.defineProperty(t,"getPreciseDistance",{enumerable:!0,get:function(){return re.default}}),Object.defineProperty(t,"getRhumbLineBearing",{enumerable:!0,get:function(){return X.default}}),Object.defineProperty(t,"getRoughCompassDirection",{enumerable:!0,get:function(){return pe.default}}),Object.defineProperty(t,"getSpeed",{enumerable:!0,get:function(){return Mn.default}}),Object.defineProperty(t,"isDecimal",{enumerable:!0,get:function(){return fa.default}}),Object.defineProperty(t,"isPointInLine",{enumerable:!0,get:function(){return Nr.default}}),Object.defineProperty(t,"isPointInPolygon",{enumerable:!0,get:function(){return Sr.default}}),Object.defineProperty(t,"isPointNearLine",{enumerable:!0,get:function(){return Or.default}}),Object.defineProperty(t,"isPointWithinRadius",{enumerable:!0,get:function(){return Kt.default}}),Object.defineProperty(t,"isSexagesimal",{enumerable:!0,get:function(){return Cn.default}}),Object.defineProperty(t,"isValidCoordinate",{enumerable:!0,get:function(){return pa.default}}),Object.defineProperty(t,"isValidLatitude",{enumerable:!0,get:function(){return ha.default}}),Object.defineProperty(t,"isValidLongitude",{enumerable:!0,get:function(){return ni.default}}),Object.defineProperty(t,"orderByDistance",{enumerable:!0,get:function(){return ri.default}}),Object.defineProperty(t,"sexagesimalToDecimal",{enumerable:!0,get:function(){return oi.default}}),Object.defineProperty(t,"toDecimal",{enumerable:!0,get:function(){return Ct.default}}),Object.defineProperty(t,"toRad",{enumerable:!0,get:function(){return fd.default}}),Object.defineProperty(t,"toDeg",{enumerable:!0,get:function(){return ii.default}}),Object.defineProperty(t,"wktToPolygon",{enumerable:!0,get:function(){return pd.default}});var o=H(n(2222)),i=H(n(179)),s=H(n(917)),a=H(n(1167)),l=H(n(8948)),u=H(n(1118)),c=H(n(1691)),d=H(n(9144)),f=H(n(190)),p=H(n(5524)),h=H(n(7088)),g=H(n(9952)),m=H(n(8744)),y=H(n(4695)),v=H(n(8674)),D=H(n(7504)),T=H(n(884)),L=H(n(7029)),G=H(n(3100)),q=H(n(5378)),re=H(n(2671)),X=H(n(939)),pe=H(n(2845)),Mn=H(n(8950)),fa=H(n(3026)),Nr=H(n(4194)),Sr=H(n(3536)),Or=H(n(2787)),Kt=H(n(202)),Cn=H(n(4902)),pa=H(n(7637)),ha=H(n(6563)),ni=H(n(266)),ri=H(n(2447)),oi=H(n(1532)),Ct=H(n(5101)),fd=H(n(5705)),ii=H(n(942)),pd=H(n(354)),ga=n(7636);function H(O){return O&&O.__esModule?O:{default:O}}Object.keys(ga).forEach(function(O){"default"===O||"__esModule"===O||Object.prototype.hasOwnProperty.call(r,O)||Object.defineProperty(t,O,{enumerable:!0,get:function(){return ga[O]}})})},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)}}},hd={};function ma(e){var t=hd[e];if(void 0!==t)return t.exports;var n=hd[e]={exports:{}};return MI[e](n,n.exports,ma),n.exports}function va(e){return"function"==typeof e}let ya=!1;const tt={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 ya&&console.log("RxJS: Back to a better error behavior. Thank you. <3");ya=e},get useDeprecatedSynchronousErrorHandling(){return ya}};function Ar(e){setTimeout(()=>{throw e},0)}const si={closed:!0,next(e){},error(e){if(tt.useDeprecatedSynchronousErrorHandling)throw e;Ar(e)},complete(){}},CI=Array.isArray||(e=>e&&"number"==typeof e.length),ai=(()=>{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 Ce{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 Ce)n.remove(this);else if(null!==n)for(let s=0;s<n.length;++s)n[s].remove(this);if(va(o)){r&&(this._unsubscribe=void 0);try{o.call(this)}catch(s){t=s instanceof ai?gd(s.errors):[s]}}if(CI(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 ai?t=t.concat(gd(u.errors)):t.push(u)}}}var e;if(t)throw new ai(t)}add(t){let n=t;if(!t)return Ce.EMPTY;switch(typeof t){case"function":n=new Ce(t);case"object":if(n===this||n.closed||"function"!=typeof n.unsubscribe)return n;if(this.closed)return n.unsubscribe(),n;if(!(n instanceof Ce)){const i=n;n=new Ce,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 Ce){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 gd(e){return e.reduce((t,n)=>t.concat(n instanceof ai?n.errors:n),[])}Ce.EMPTY=((e=new Ce).closed=!0,e);const li="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random();class ct extends Ce{constructor(t,n,r){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=si;break;case 1:if(!t){this.destination=si;break}if("object"==typeof t){t instanceof ct?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new md(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new md(this,t,n,r)}}[li](){return this}static create(t,n,r){const o=new ct(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 md extends ct{constructor(t,n,r,o){super(),this._parentSubscriber=t;let i,s=this;va(n)?i=n:n&&(i=n.next,r=n.error,o=n.complete,n!==si&&(s=Object.create(n),va(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;tt.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}=tt;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):Ar(t),this.unsubscribe();else{if(this.unsubscribe(),r)throw t;Ar(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const n=()=>this._complete.call(this._context);tt.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(),tt.useDeprecatedSynchronousErrorHandling)throw r;Ar(r)}}__tryOrSetError(t,n,r){if(!tt.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{n.call(this._context,r)}catch(o){return tt.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=o,t.syncErrorThrown=!0,!0):(Ar(o),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}const NI="function"==typeof Symbol&&Symbol.observable||"@@observable";function SI(e){return e}let yd=(()=>{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 TI(e,t,n){if(e){if(e instanceof ct)return e;if(e[li])return e[li]()}return e||t||n?new ct(e,t,n):new ct(si)}(n,r,o);if(s.add(i?i.call(s,this.source):this.source||tt.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),tt.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s}_trySubscribe(n){try{return this._subscribe(n)}catch(r){tt.useDeprecatedSynchronousErrorHandling&&(n.syncErrorThrown=!0,n.syncErrorValue=r),function _I(e){for(;e;){const{closed:t,destination:n,isStopped:r}=e;if(t||r)return!1;e=n&&n instanceof ct?n:null}return!0}(n)?n.error(r):console.warn(r)}}forEach(n,r){return new(r=Ed(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)}[NI](){return this}pipe(...n){return 0===n.length?this:function vd(e){return 0===e.length?SI:1===e.length?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}(n)(this)}toPromise(n){return new(n=Ed(n))((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function Ed(e){if(e||(e=tt.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 OI extends Ce{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 AI extends ct{constructor(t){super(t),this.destination=t}}let Ge=(()=>{class e extends yd{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[li](){return new AI(this)}lift(n){const r=new Id(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),Ce.EMPTY):this.isStopped?(n.complete(),Ce.EMPTY):(this.observers.push(n),new OI(this,n))}asObservable(){const n=new yd;return n.source=this,n}}return e.create=(t,n)=>new Id(t,n),e})();class Id extends Ge{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):Ce.EMPTY}}let he=null;function $(e){const t=he;return he=e,t}typeof navigator<"u"&&navigator,typeof navigator<"u"&&!/Opera/.test(navigator.userAgent)&&navigator,typeof navigator<"u"&&(/MSIE/.test(navigator.userAgent)||navigator),typeof navigator<"u"&&!/Opera|WebKit/.test(navigator.userAgent)&&navigator,typeof navigator<"u"&&navigator;class b extends Error{constructor(t,n){super(function _n(e,t){return`NG0${Math.abs(e)}${t?": "+t:""}`}(t,n)),this.code=t}}function K(e){for(let t in e)if(e[t]===K)return t;throw Error("Could not find renamed property on target object.")}function De(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(De).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 GD=K({__forward_ref__:K});function xa(e){return e.__forward_ref__=xa,e.toString=function(){return De(this())},e}function S(e){return function vi(e){return"function"==typeof e&&e.hasOwnProperty(GD)&&e.__forward_ref__===xa}(e)?e():e}function Q(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function yi(e){return Yd(e,Ii)||Yd(e,Jd)}function Yd(e,t){return e.hasOwnProperty(t)?e[t]:null}function Ei(e){return e&&(e.hasOwnProperty(Pa)||e.hasOwnProperty(QD))?e[Pa]:null}const Ii=K({\u0275prov:K}),Pa=K({\u0275inj:K}),Jd=K({ngInjectableDef:K}),QD=K({ngInjectorDef:K});class k{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 Fa(e){return e&&!!e.\u0275providers}const kr=K({\u0275cmp:K}),_t=K({\u0275fac:K}),tf=K({__NG_ENV_ID__:K});var U=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}(U||{});let Ba;function Fe(e){const t=Ba;return Ba=e,t}function rf(e,t,n){const r=yi(e);return r&&"root"==r.providedIn?void 0===r.value?r.value=r.factory():r.value:n&U.Optional?null:void 0!==t?t:void function Ua(e,t){throw new b(-201,!1)}()}const Vr={},Wa="__NG_DI_FLAG__",Di="ngTempTokenPath",nb=/\n/gm,of="__source";let An;function Ft(e){const t=An;return An=e,t}function ib(e,t=U.Default){if(void 0===An)throw new b(-203,!1);return null===An?rf(e,void 0,t):An.get(e,t&U.Optional?null:void 0,t)}function Ae(e,t=U.Default){return(function nf(){return Ba}()||ib)(S(e),t)}function Ga(e){const t=[];for(let n=0;n<e.length;n++){const r=S(e[n]);if(Array.isArray(r)){if(0===r.length)throw new b(900,!1);let o,i=U.Default;for(let s=0;s<r.length;s++){const a=r[s],l=sb(a);"number"==typeof l?-1===l?o=a.token:i|=l:o=a}t.push(Ae(o,i))}else t.push(Ae(r))}return t}function sb(e){return e[Wa]}function Yt(e,t){return e.hasOwnProperty(_t)?e[_t]:null}function xn(e,t){e.forEach(n=>Array.isArray(n)?xn(n,t):t(n))}const B=[],ft=new k(""),cf=new k("",-1),Qa=new k("");class wi{get(t,n=Vr){if(n===Vr){const r=new Error(`NullInjectorError: No provider for ${De(t)}!`);throw r.name="NullInjectorError",r}return n}}function xb(...e){return{\u0275providers:Xa(0,e),\u0275fromNgModule:!0}}function Xa(e,...t){const n=[],r=new Set;let o;const i=s=>{n.push(s)};return xn(t,s=>{const a=s;Si(a,i,[],r)&&(o||=[],o.push(a))}),void 0!==o&&Df(o,i),n}function Df(e,t){for(let n=0;n<e.length;n++){const{ngModule:r,providers:o}=e[n];el(o,i=>{t(i,r)})}}function Si(e,t,n,r){if(!(e=S(e)))return!1;let o=null,i=Ei(e);const s=!i&&function F(e){return e[kr]||null}(e);if(i||s){if(s&&!s.standalone)return!1;o=e}else{const l=e.ngModule;if(i=Ei(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)Si(u,t,n,r)}}else{if(!i)return!1;{if(null!=i.imports&&!a){let u;r.add(o);try{xn(i.imports,c=>{Si(c,t,n,r)&&(u||=[],u.push(c))})}finally{}void 0!==u&&Df(u,t)}if(!a){const u=Yt(o)||(()=>new o);t({provide:o,useFactory:u,deps:B},o),t({provide:Qa,useValue:o,multi:!0},o),t({provide:ft,useValue:()=>Ae(o),multi:!0},o)}const l=i.providers;if(null!=l&&!a){const u=e;el(l,c=>{t(c,u)})}}}return o!==e&&void 0!==e.providers}function el(e,t){for(let n of e)Fa(n)&&(n=n.\u0275providers),Array.isArray(n)?el(n,t):t(n)}const Rb=K({provide:String,useValue:K});function tl(e){return null!==e&&"object"==typeof e&&Rb in e}function en(e){return"function"==typeof e}const Cf=new k(""),Oi={},kb={};let nl;function Ai(){return void 0===nl&&(nl=new wi),nl}class rt{}class Pn extends rt{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,ol(t,s=>this.processProvider(s)),this.records.set(cf,kn(void 0,this)),o.has("environment")&&this.records.set(rt,kn(void 0,this));const i=this.records.get(Cf);null!=i&&"string"==typeof i.value&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(Qa,B,U.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;const t=$(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(),$(t)}}onDestroy(t){return this.assertNotDestroyed(),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){this.assertNotDestroyed();const n=Ft(this),r=Fe(void 0);try{return t()}finally{Ft(n),Fe(r)}}get(t,n=Vr,r=U.Default){if(this.assertNotDestroyed(),t.hasOwnProperty(tf))return t[tf](this);r=function bi(e){return typeof e>"u"||"number"==typeof e?e:(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}(r);const i=Ft(this),s=Fe(void 0);try{if(!(r&U.SkipSelf)){let l=this.records.get(t);if(void 0===l){const u=function Hb(e){return"function"==typeof e||"object"==typeof e&&e instanceof k}(t)&&yi(t);l=u&&this.injectableDefInScope(u)?kn(rl(t),Oi):null,this.records.set(t,l)}if(null!=l)return this.hydrate(t,l)}return(r&U.Self?Ai():this.parent).get(t,n=r&U.Optional&&n===Vr?null:n)}catch(a){if("NullInjectorError"===a.name){if((a[Di]=a[Di]||[]).unshift(De(t)),i)throw a;return function ab(e,t,n,r){const o=e[Di];throw t[of]&&o.unshift(t[of]),e.message=function lb(e,t,n,r=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let o=De(t);if(Array.isArray(t))o=t.map(De).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):De(a)))}o=`{${i.join(", ")}}`}return`${n}${r?"("+r+")":""}[${o}]: ${e.replace(nb,"\n ")}`}("\n"+e.message,o,n,r),e.ngTokenPath=o,e[Di]=null,e}(a,t,"R3InjectorError",this.source)}throw a}finally{Fe(s),Ft(i)}}resolveInjectorInitializers(){const t=$(null),n=Ft(this),r=Fe(void 0);try{const i=this.get(ft,B,U.Self);for(const s of i)s()}finally{Ft(n),Fe(r),$(t)}}toString(){const t=[],n=this.records;for(const r of n.keys())t.push(De(r));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new b(205,!1)}processProvider(t){let n=en(t=S(t))?t:S(t&&t.provide);const r=function Vb(e){return tl(e)?kn(void 0,e.useValue):kn(function wf(e,t,n){let r;if(en(e)){const o=S(e);return Yt(o)||rl(o)}if(tl(e))r=()=>S(e.useValue);else if(function Mf(e){return!(!e||!e.useFactory)}(e))r=()=>e.useFactory(...Ga(e.deps||[]));else if(function bf(e){return!(!e||!e.useExisting)}(e))r=()=>Ae(S(e.useExisting));else{const o=S(e&&(e.useClass||e.provide));if(!function jb(e){return!!e.deps}(e))return Yt(o)||rl(o);r=()=>new o(...Ga(e.deps))}return r}(e),Oi)}(t);if(!en(t)&&!0===t.multi){let o=this.records.get(n);o||(o=kn(void 0,Oi,!0),o.factory=()=>Ga(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n){const r=$(null);try{return n.value===Oi&&(n.value=kb,n.value=n.factory()),"object"==typeof n.value&&n.value&&function Fb(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{$(r)}}injectableDefInScope(t){if(!t.providedIn)return!1;const n=S(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 rl(e){const t=yi(e),n=null!==t?t.factory:Yt(e);if(null!==n)return n;if(e instanceof k)throw new b(204,!1);if(e instanceof Function)return function Lb(e){if(e.length>0)throw new b(204,!1);const n=function ZD(e){return e&&(e[Ii]||e[Jd])||null}(e);return null!==n?()=>n.factory(e):()=>new e}(e);throw new b(204,!1)}function kn(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function ol(e,t){for(const n of e)Array.isArray(n)?ol(n,t):n&&Fa(n)?ol(n.\u0275providers,t):t(n)}const x={lFrame:ep(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function Z(){let e=function Gf(){return x.lFrame.currentTNode}();for(;null!==e&&64===e.type;)e=e.parent;return e}function ep(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 bp(e,t=null,n=null,r){const o=function Mp(e,t=null,n=null,r,o=new Set){const i=[n||B,xb(e)];return r=r||("object"==typeof e?void 0:De(e)),new Pn(i,t||Ai(),r||null,o)}(e,t,n,r);return o.resolveInjectorInitializers(),o}class Me{static#e=this.THROW_IF_NOT_FOUND=Vr;static#t=this.NULL=new wi;static create(t,n){if(Array.isArray(t))return bp({name:""},n,t,"");{const r=t.name??"";return bp({name:r},t.parent,t.providers,r)}}static#n=this.\u0275prov=Q({token:Me,providedIn:"any",factory:()=>Ae(cf)});static#r=this.__NG_ELEMENT_ID__=-1}new k("").__NG_ELEMENT_ID__=e=>{const t=Z();if(null===t)throw new b(204,!1);if(2&t.type)return t.value;if(e&U.Optional)return null;throw new b(204,!1)},Symbol;class mT{resolveComponentFactory(t){throw function gT(e){const t=Error(`No component factory found for ${De(e)}.`);return t.ngComponent=e,t}(t)}}class Ss{static#e=this.NULL=new mT}class fR{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 la{static updates(){return{context:null,updates:[]}}static subscribe(){return{context:null,subscribe:[]}}static unsubscribe(){return{context:null,unsubscribe:[]}}static request(){return{requestId:(new fR).toString()}}}let hR=(()=>{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 Ge,this.onConnect=this._connect.asObservable(),this._close=new Ge,this.onClose=this._close.asObservable(),this._error=new Ge,this.onError=this._error.asObservable(),this._message=new Ge,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=la.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=la.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=la.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=la.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 mR{constructor(t,n,r,o){this._method=[],this._message="",this._message=typeof t<"u"?t:"",this._state=typeof n<"u"?n:sI.alarm,r&&this._method.push(id.visual),o&&this._method.push(id.sound)}get value(){return{message:this._message,state:this._state,method:this._method}}}var sI=function(e){return e.normal="normal",e.alert="alert",e.warn="warn",e.alarm="alarm",e.emergency="emergency",e}(sI||{}),id=function(e){return e.visual="visual",e.sound="sound",e}(id||{});class yR{constructor(){this.obsList=[],this.stream=new hR,this._connect=new Ge,this.onConnect=this._connect.asObservable(),this._close=new Ge,this.onClose=this._close.asObservable(),this._error=new Ge,this.onError=this._error.asObservable(),this._message=new Ge,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 aI{id;position=[0,0];heading;headingTrue=null;headingMagnetic=null;cog;cogTrue=null;cogMagnetic=null;sog;name;mmsi;registrations={};type={id:-1,name:""};callsign;state;wind={direction:null,mwd:null,twd:null,tws:null,speedTrue:null,sog:null,awa:null,aws:null};lastUpdated=new Date;orientation=0;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};properties={}}class lI{id;lastUpdated=new Date;name;mmsi;position=[0,0];properties={};state}class sd extends lI{type={id:-1,name:""};constructor(){super()}}class ER extends sd{callsign;constructor(){super()}}class IR extends lI{orientation=0;sog=0;callsign;track=[];constructor(){super()}}class DR extends sd{callsign;twd;tws;temperature;constructor(){super()}}class ad{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 In=ma(2541);class Pt{static destCoordinate(t,n,r){const o=(0,In.computeDestinationPoint)(t,r,ad.radiansToDegrees(n));return[o.longitude,o.latitude]}static distanceTo(t,n){return(0,In.getDistance)(t,n)}static routeLength(t){return(0,In.getPathLength)(t)}static routeLegs(t,n){if(t.length<2)return[];const r=[];r.push(n?{bearing:(0,In.getGreatCircleBearing)(n,t[0]),distance:Pt.distanceTo(n,t[0])}:{bearing:0,distance:0});for(let o=1;o<t.length;++o){const i={bearing:(0,In.getGreatCircleBearing)(t[o-1],t[o]),distance:Pt.distanceTo(t[o-1],t[o])};r.push(i)}return r}static centreOfPolygon(t){const n=(0,In.getCenter)(t);return[n.longitude,n.latitude]}static inDLCrossingZone(t,n=170){return Math.abs(t[0])>=n}static inBounds(t,n){return(0,In.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(ad.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 bR{action;playback=!1;result=null;type;self=null;timestamp;constructor(t){this.action="notification",this.type=t}}class uI{action;playback=!1;result=null;timestamp;self=null;constructor(){this.action="update"}}class MR extends uI{constructor(){super(),this.action="trail"}}var CR=ma(6380);const wR=["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 V,Ie,cI;const Zo=[];let cd,ua=[],ud=!1,ca=!1;const le={signalk:{},aisState:[]};let je,pI,dI=[0,0,0,0],fI=60,Qo=0,Dn={},bn=500,kt=!1;const Lt={maxAge:54e4,staleAge:36e4,lastTick:(new Date).valueOf(),maxTrack:20},Yo={trailDuration:24,trailResolution:{lastHour:"5s",next23:"10s",beyond24:"1m"}};let Jo,Xo="freeboard-sk";function hI(){je={updated:{},stale:{},expired:{}}}function da({action:e,msg:t}){switch(e){case"onConnect":postMessage({action:"open",playback:kt,result:t.target.readyState});break;case"onClose":console.warn("streamEvent: ",t),mI(!1);break;case"onError":console.warn("streamEvent: ",t),postMessage({action:"error",playback:kt,result:"Connection error!"});break;case"onMessage":!function AR(e){Ie.isHello(e)?(postMessage({action:"hello",result:e,self:e.self,playback:kt}),bn&&EI()):Ie.isDelta(e)?(ud=!0,e.updates.forEach(t=>{t.values&&(Jo=t.$source,t.values.forEach(n=>{if(pI=t.timestamp,e.context)switch(e.context.split(".")[0]){case"shore":case"atons":le?.signalk.atons&&function PR(e,t){let n=!1;if(-1!==e.indexOf("shore.basestations")&&(n=!0),!V.atons.has(e)){const o=new sd;o.id=e,o.position=null,n&&(o.type.id=-1,o.type.name="Basestation"),V.atons.set(e,o)}const r=V.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),ti(e.context,V.atons,le?.signalk.atons);break;case"sar":le?.signalk.sar&&function kR(e,t){if(!V.sar.has(e)){const r=new ER;r.id=e,r.position=null,r.type.id=-1,r.type.name="SaR Beacon",V.sar.set(e,r)}const n=V.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)):"communication.callsignVhf"===t.path?n.callsign=t.value:"navigation.position"===t.path&&t.value&&(n.position=Pt.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0)}(e.context,n),ti(e.context,V.sar,le?.signalk.sar);break;case"aircraft":le?.signalk.aircraft&&function VR(e,t){if(!V.aircraft.has(e)){const r=new IR;r.id=e,r.position=null,V.aircraft.set(e,r)}const n=V.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)):"communication.callsignVhf"===t.path?n.callsign=t.value:"navigation.position"===t.path&&t.value?(n.position=Pt.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0,dd(n)):"navigation.courseOverGroundTrue"===t.path?n.orientation=t.value:"navigation.speedOverGround"===t.path&&(n.sog=t.value)}(e.context,n),ti(e.context,V.aircraft,le?.signalk.aircraft);break;case"meteo":le?.signalk.meteo&&(function LR(e,t){if(!V.meteo.has(e)){const r=new DR;r.id=e,r.position=null,r.type.id=-1,r.type.name="Weather Station",V.meteo.set(e,r)}const n=V.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}}else"communication.callsignVhf"===t.path?n.callsign=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=Pt.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0)}(e.context,n),bI(n)),ti(e.context,V.meteo,le?.signalk.meteo);break;case"vessels":if(Ie.isSelf(e))DI(V.self,n,!0),bI(n);else{if(le?.signalk.vessels){const r=function xR(e){if(!V.aisTargets.has(e)){const t=new aI;t.position=null,V.aisTargets.set(e,t)}return V.aisTargets.get(e)}(e.context);DI(r,n)}ti(e.context,V.aisTargets,le?.signalk.vessels,le?.aisState)}}}))}),yI()):Ie.isResponse(e)&&postMessage({action:"response",result:e})}(t)}}function gI(e={}){e.interval&&"number"==typeof e.interval&&(bn=e.interval,II(),EI(),fI=1/(bn/1e3)*60),kt=!!e.playback,e.selections&&(typeof e.selections.preferredPaths<"u"&&(Dn=e.selections.preferredPaths),e.selections.aisMaxAge&&"number"==typeof e.selections.aisMaxAge&&(Lt.maxAge=e.selections.aisMaxAge),e.selections.aisStaleAge&&"number"==typeof e.selections.aisStaleAge&&(Lt.staleAge=e.selections.aisStaleAge),"number"==typeof e.selections.signalk.maxRadius&&(le.signalk=e.selections.signalk),typeof e.selections.aisState<"u"&&Array.isArray(e.selections.aisState)&&(le.aisState=e.selections.aisState),console.log("Worker: AIS Filter...",le))}function mI(e=!1){II(),Zo.forEach(t=>t.unsubscribe()),Ie&&e&&Ie.close(),Ie=null,postMessage({action:"close",result:e,playback:kt})}function ei(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 vI(){ei(cd+"/tracks"+(le&&le.signalk&&le.signalk.maxRadius?`?radius=${le.signalk.maxRadius}`:"?radius=10000")).then(t=>{ca=!0,Object.entries(t).forEach(n=>{if(V.aisTargets.has(n[0])){const r=V.aisTargets.get(n[0]);r.track=n[1].coordinates,dd(r)}})}).catch(()=>{ca=!1,console.warn("Unable to fetch AIS tracks!")})}function ti(e,t,n=!0,r=[]){if(n){let o=t.get(e);o&&r.includes(o?.state)&&(console.log(`state match => ${r}, ${e}`),je.expired[e]=!0,o=null),o&&le.signalk.maxRadius?o.positionReceived&&Pt.inBounds(o.position,dI)?je.updated[e]=!0:(t.delete(e),je.expired[e]=!0):je.updated[e]=!0}else 0!==t.size&&(t.forEach((o,i)=>{je.expired[i]=!0}),t.clear())}function yI(e=!1){if(!bn||e){const t=new uI;t.playback=kt,V.aisStatus.updated=Object.keys(je.updated),V.aisStatus.stale=Object.keys(je.stale),V.aisStatus.expired=Object.keys(je.expired),t.result=V,t.timestamp=kt?pI:V.self.lastUpdated.toISOString(),postMessage(t),hI(),V.self.resourceUpdates=[],0===Qo&&(function RR(){const e=(new Date).valueOf();V.aisTargets.forEach((t,n)=>{t.lastUpdated.valueOf()<e-Lt.maxAge?(je.expired[n]=!0,V.aisTargets.delete(n)):t.lastUpdated.valueOf()<e-Lt.staleAge&&(je.stale[n]=!0)}),V.aircraft.forEach((t,n)=>{t.lastUpdated.valueOf()<e-Lt.maxAge?(je.expired[n]=!0,V.aircraft.delete(n)):t.lastUpdated.valueOf()<e-Lt.staleAge&&(je.stale[n]=!0)}),V.sar.forEach((t,n)=>{t.lastUpdated.valueOf()<e-Lt.maxAge?(je.expired[n]=!0,V.sar.delete(n)):t.lastUpdated.valueOf()<e-Lt.staleAge&&(je.stale[n]=!0)})}(),V.self.positionReceived&&le?.signalk.maxRadius&&(dI=Pt.calcMapifiedExtent(V.self.position,le.signalk.maxRadius),Qo++)),Qo=Qo>=fI?0:Qo+1}}function EI(){bn&&"number"==typeof bn&&ua.push(setInterval(()=>{ud&&(yI(!0),ud=!1)},bn)),ua.push(setInterval(()=>{console.warn("hasTrackPlugin",ca),ca&&vI()},6e4))}function II(){ua.forEach(e=>clearInterval(e)),ua=[]}function DI(e,t,n=!1){if(e.lastUpdated=new Date,n){const r=-1!==t.path.indexOf("course")?t.path.split(".").slice(0,2).join("."):t.path;-1!==wR.indexOf(r)&&(V.paths[r]=null)}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);else if("performance.beatAngle"===t.path)e.performance.beatAngle=t.value;else if("performance.gybeAngle"===t.path)e.performance.gybeAngle=t.value;else if("communication.callsignVhf"===t.path)e.callsign=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=Pt.normaliseCoords([t.value.longitude,t.value.latitude]),e.positionReceived=!0,n||dd(e)}else"navigation.state"===t.path?e.state=t.value:"navigation.speedOverGround"===t.path?e.sog=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:"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&&Jo===Xo?e.autopilot.state=t.value:"steering.autopilot.mode"===t.path&&Jo===Xo?e.autopilot.mode=t.value:"steering.autopilot.target"===t.path&&Jo===Xo?e.autopilot.target=t.value:"steering.autopilot.engaged"===t.path&&Jo===Xo?e.autopilot.enabled=t.value:"steering.autopilot.defaultPilot"===t.path&&(Xo=t.value);typeof Dn.heading<"u"&&t.path===Dn.heading&&(e.orientation=t.value),typeof Dn.tws<"u"&&t.path===Dn.tws&&(e.wind.tws=t.value),typeof Dn.twd<"u"&&t.path===Dn.twd&&(e.wind.direction="environment.wind.angleTrueGround"===t.path||"environment.wind.angleTrueWater"===t.path?ad.angleToDirection(t.value,e.orientation??0):t.value)}function bI(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 bR(r);i.playback=kt,i.result=n,postMessage(i)}}function dd(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-Lt.maxTrack)}addEventListener("message",({data:e})=>{!function TR(e){if(e.cmd)switch(e.cmd){case"open":console.log("Worker control: opening stream..."),gI(e.options),function SR(e){if(Ie)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:",cd=t.join("/"),function _R(){V={self:new aI,aisTargets:new Map,aisStatus:{updated:[],stale:[],expired:[]},paths:{},atons:new Map,aircraft:new Map,sar:new Map,meteo:new Map},V.self.positionReceived=!1,hI()}(),Ie=new yR,Zo.push(Ie.onConnect.subscribe(n=>da({action:"onConnect",msg:n}))),Zo.push(Ie.onClose.subscribe(n=>da({action:"onClose",msg:n}))),Zo.push(Ie.onError.subscribe(n=>da({action:"onError",msg:n}))),Zo.push(Ie.onMessage.subscribe(n=>da({action:"onMessage",msg:n}))),Ie.authToken=cI,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,Ie.open(`${e.url}${n||""}${r||""}`,e.playbackOptions.subscribe,e.token)}else Ie.open(e.url,e.subscribe,e.token),vI()}(e.options);break;case"close":console.log("Worker control: closing stream..."),mI(!0);break;case"subscribe":console.log("Worker control: subscribing to paths..."),Ie.subscribe(e.options.context,e.options.path);break;case"settings":console.log("Worker control: settings..."),gI(e.options);break;case"alarm":console.log("Worker control: alarm action..."),function OR(e){const t=-1===e.type.indexOf("notifications.")?`notifications.${e.type}`:e.type;e.raise?Ie.raiseAlarm("self",t,new mR(e.message,e.state,!0,!0)):Ie.clearAlarm("self",t)}(e.options);break;case"vessel":if(console.log("Worker control: vessel setting..."),e.options){let t;t="self"===e.options.context?V.self:V.aisTargets.get(e.options.context),t&&e.options.name&&(t.name=e.options.name)}break;case"auth":console.log("Worker control: auth token..."),e.options&&typeof e.options.token<"u"&&(cI=e.options.token);break;case"trail":console.log("Worker control: Fetch vessel trail from server..."),e.options&&(Yo.trailDuration=e.options.trailDuration??24,e.options.trailResolution&&(Yo.trailResolution.lastHour=e.options.trailResolution.lastHour??"5s",Yo.trailResolution.next23=e.options.trailResolution.next23??"1m",Yo.trailResolution.beyond24=e.options.trailResolution.beyond24??"5m")),function NR(e){console.info("Worker: Fetching vessel trail from server",e);const t=cd+"/self/track?",n=[];e.trailDuration>24&&(n.push(ei(`${t}timespan=${e.trailDuration-24}h&resolution=${e.trailResolution.beyond24}&timespanOffset=24`)),n.push(ei(`${t}timespan=23h&resolution=${e.trailResolution.next23}&timespanOffset=1`))),e.trailDuration>1&&e.trailDuration<25&&n.push(ei(`${t}timespan=${e.trailDuration-1}h&resolution=${e.trailResolution.next23}&timespanOffset=1`)),n.push(ei(`${t}timespan=1h&resolution=${e.trailResolution.lastHour}`));let i=[];const s=new MR;s.playback=kt,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,CR.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)})}(Yo)}}(e)})})();
@@ -1624,9 +1624,22 @@
1624
1624
 
1625
1625
  <div>
1626
1626
  From this screen you can filter and select the vessels you wish to
1627
- display on the map OR <br />
1628
- by selecting <i>Filter by Vessel type</i> vessels can be displayed
1629
- based on their AIS Ship Type.
1627
+ display on the map by:
1628
+ <ol>
1629
+ <li>Entering text to filter by vessel name.</li>
1630
+ <li>
1631
+ Toggling on <i>Ship type</i> to display based on their AIS Ship
1632
+ Type.
1633
+ </li>
1634
+ <li>
1635
+ Toggling <i>IMO Only</i> to show only vessels with IMO
1636
+ registration data.
1637
+ <i
1638
+ >(This can be used in conjunction with the previous to
1639
+ options.)</i
1640
+ >
1641
+ </li>
1642
+ </ol>
1630
1643
  </div>
1631
1644
 
1632
1645
  <div style="display: flex; flex-wrap: wrap">