@signalk/server-admin-ui 2.20.2 → 2.20.3

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.
@@ -78,7 +78,7 @@ and limitations under the License.
78
78
  * by Pedro Ladaria <pedro.ladaria@gmail.com>
79
79
  * https://github.com/pladaria/reconnecting-websocket
80
80
  * License MIT
81
- */var kQ=function(){if(typeof WebSocket<"u")return WebSocket},DQ=function(e){return typeof e<"u"&&!!e&&e.CLOSING===2},fc={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0},MQ=(function(){function e(t,n,r){var s=this;r===void 0&&(r={}),this._listeners={error:[],message:[],open:[],close:[]},this._retryCount=-1,this._shouldReconnect=!0,this._connectLock=!1,this._binaryType="blob",this._closeCalled=!1,this._messageQueue=[],this.onclose=null,this.onerror=null,this.onmessage=null,this.onopen=null,this._handleOpen=function(o){s._debug("open event");var a=s._options.minUptime,i=a===void 0?fc.minUptime:a;clearTimeout(s._connectTimeout),s._uptimeTimeout=setTimeout(function(){return s._acceptOpen()},i),s._ws.binaryType=s._binaryType,s._messageQueue.forEach(function(l){return s._ws.send(l)}),s._messageQueue=[],s.onopen&&s.onopen(o),s._listeners.open.forEach(function(l){return s._callEventListener(o,l)})},this._handleMessage=function(o){s._debug("message event"),s.onmessage&&s.onmessage(o),s._listeners.message.forEach(function(a){return s._callEventListener(o,a)})},this._handleError=function(o){s._debug("error event",o.message),s._disconnect(void 0,o.message==="TIMEOUT"?"timeout":void 0),s.onerror&&s.onerror(o),s._debug("exec error listeners"),s._listeners.error.forEach(function(a){return s._callEventListener(o,a)}),s._connect()},this._handleClose=function(o){s._debug("close event"),s._clearTimeouts(),s._shouldReconnect&&s._connect(),s.onclose&&s.onclose(o),s._listeners.close.forEach(function(a){return s._callEventListener(o,a)})},this._url=t,this._protocols=n,this._options=r,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}return Object.defineProperty(e,"CONNECTING",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(e,"OPEN",{get:function(){return 1},enumerable:!0,configurable:!0}),Object.defineProperty(e,"CLOSING",{get:function(){return 2},enumerable:!0,configurable:!0}),Object.defineProperty(e,"CLOSED",{get:function(){return 3},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CONNECTING",{get:function(){return e.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"OPEN",{get:function(){return e.OPEN},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CLOSING",{get:function(){return e.CLOSING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CLOSED",{get:function(){return e.CLOSED},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"binaryType",{get:function(){return this._ws?this._ws.binaryType:this._binaryType},set:function(t){this._binaryType=t,this._ws&&(this._ws.binaryType=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"retryCount",{get:function(){return Math.max(this._retryCount,0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bufferedAmount",{get:function(){var t=this._messageQueue.reduce(function(n,r){return typeof r=="string"?n+=r.length:r instanceof Blob?n+=r.size:n+=r.byteLength,n},0);return t+(this._ws?this._ws.bufferedAmount:0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"extensions",{get:function(){return this._ws?this._ws.extensions:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"protocol",{get:function(){return this._ws?this._ws.protocol:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"readyState",{get:function(){return this._ws?this._ws.readyState:this._options.startClosed?e.CLOSED:e.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this._ws?this._ws.url:""},enumerable:!0,configurable:!0}),e.prototype.close=function(t,n){if(t===void 0&&(t=1e3),this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(t,n)},e.prototype.reconnect=function(t,n){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(t,n),this._connect())},e.prototype.send=function(t){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",t),this._ws.send(t);else{var n=this._options.maxEnqueuedMessages,r=n===void 0?fc.maxEnqueuedMessages:n;this._messageQueue.length<r&&(this._debug("enqueue",t),this._messageQueue.push(t))}},e.prototype.addEventListener=function(t,n){this._listeners[t]&&this._listeners[t].push(n)},e.prototype.dispatchEvent=function(t){var n,r,s=this._listeners[t.type];if(s)try{for(var o=NQ(s),a=o.next();!a.done;a=o.next()){var i=a.value;this._callEventListener(t,i)}}catch(l){n={error:l}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return!0},e.prototype.removeEventListener=function(t,n){this._listeners[t]&&(this._listeners[t]=this._listeners[t].filter(function(r){return r!==n}))},e.prototype._debug=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];this._options.debug&&console.log.apply(console,AQ(["RWS>"],t))},e.prototype._getNextDelay=function(){var t=this._options,n=t.reconnectionDelayGrowFactor,r=n===void 0?fc.reconnectionDelayGrowFactor:n,s=t.minReconnectionDelay,o=s===void 0?fc.minReconnectionDelay:s,a=t.maxReconnectionDelay,i=a===void 0?fc.maxReconnectionDelay:a,l=0;return this._retryCount>0&&(l=o*Math.pow(r,this._retryCount-1),l>i&&(l=i)),this._debug("next delay",l),l},e.prototype._wait=function(){var t=this;return new Promise(function(n){setTimeout(n,t._getNextDelay())})},e.prototype._getNextUrl=function(t){if(typeof t=="string")return Promise.resolve(t);if(typeof t=="function"){var n=t();if(typeof n=="string")return Promise.resolve(n);if(n.then)return n}throw Error("Invalid URL")},e.prototype._connect=function(){var t=this;if(!(this._connectLock||!this._shouldReconnect)){this._connectLock=!0;var n=this._options,r=n.maxRetries,s=r===void 0?fc.maxRetries:r,o=n.connectionTimeout,a=o===void 0?fc.connectionTimeout:o,i=n.WebSocket,l=i===void 0?kQ():i;if(this._retryCount>=s){this._debug("max retries reached",this._retryCount,">=",s);return}if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),!DQ(l))throw Error("No valid WebSocket class provided");this._wait().then(function(){return t._getNextUrl(t._url)}).then(function(f){t._closeCalled||(t._debug("connect",{url:f,protocols:t._protocols}),t._ws=t._protocols?new l(f,t._protocols):new l(f),t._ws.binaryType=t._binaryType,t._connectLock=!1,t._addListeners(),t._connectTimeout=setTimeout(function(){return t._handleTimeout()},a))})}},e.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new IQ(Error("TIMEOUT"),this))},e.prototype._disconnect=function(t,n){if(t===void 0&&(t=1e3),this._clearTimeouts(),!!this._ws){this._removeListeners();try{this._ws.close(t,n),this._handleClose(new RQ(t,n,this))}catch{}}},e.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},e.prototype._callEventListener=function(t,n){"handleEvent"in n?n.handleEvent(t):n(t)},e.prototype._removeListeners=function(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))},e.prototype._addListeners=function(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))},e.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},e})();const LQ=window.location.protocol==="https:"?"wss":"ws";class FQ extends J.Component{constructor(t){super(t),this.state={component:fy(this.props.match.params.moduleId,CQ)},this.websockets=[],this.adminUI={hideSideBar:()=>{window.dispatchEvent(new Event("sidebar:hide"))},getApplicationUserData:(n,r="")=>fetch(`/signalk/v1/applicationData/user/${this.props.match.params.moduleId}/${n}${r}`,{credentials:"include"}).then(s=>{if(s.status!==200)throw new Error(s);return s}).then(s=>s.json()),setApplicationUserData:(n,r={},s="")=>fetch(`/signalk/v1/applicationData/user/${this.props.match.params.moduleId}/${n}${s}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r),credentials:"include"}).then(o=>{if(o.status!==200)throw new Error(o);return o}),openWebsocket:n=>{const r=["subscribe","sendCachedValues","events"],s=r.map((a,i)=>[i,n[a]]).filter(a=>a[1]!==void 0).map(([a,i])=>`${r[a]}=${i}`).join("&"),o=new MQ(`${LQ}://${window.location.host}/signalk/v1/stream?${s}`);return this.websockets.push(o),o},get:({context:n,path:r})=>{const s=n.split(".");return fetch(`/signalk/v1/api/${s[0]}/${s.slice(1).join(".")}/${r}`,{credentials:"include"})},Login:dy}}componentWillUnmount(){this.websockets.forEach(t=>{try{t.close()}catch(n){console.error(n)}})}render(){return c.createElement("div",{style:{backgroundColor:"aliceblue",height:"calc(100vh - 105px)"}},c.createElement(J.Suspense,{fallback:"Loading..."},c.createElement(this.state.component,{...this.props,adminUI:this.adminUI})))}}const jQ=({loginStatus:e})=>({loginStatus:e}),qQ=tn(jQ)(FQ),UQ=()=>{const e=`${window.location.protocol}//${window.location.host}/documentation/`;return c.createElement("iframe",{src:e,style:{width:"100%",height:"calc(100vh - 55px)",border:"none"},title:"Signal K Documentation"})};function _E(){return _E=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_E.apply(null,arguments)}const BQ={webAppInfo:_.shape({name:_.string.isRequired,description:_.string,signalk:_.shape({displayName:_.string,appIcon:_.string})}).isRequired,children:_.node};function K3(e){return e.keywords.includes("signalk-embeddable-webapp")?`/admin/#/e/${j_(e.name)}`:`/${e.name}`}class J3 extends J.Component{render(){const{webAppInfo:t,...n}=this.props,r={icon:"p-3",lead:"mt-2"},s={color:"primary",icon:`fa ${t?.signalk?.displayName?"":"icon-grid"}`},o={style:"h5 mb-0",classes:""};o.classes=Te(o.style,"text-"+s.color,r.lead,"text-capitalize");const a=t?.signalk?.displayName||t.name,i=K3(t),l=function(f,d=null){const p=Te(f,"bg-primary",r.icon,"font-2xl mr-3 float-left"),g={backgroundSize:"cover",backgroundImage:d?`url(/${t.name}/${d})`:"unset"};return d&&(g.width=g.height="72px"),c.createElement("i",{className:p,style:g})};return c.createElement("a",{href:i},c.createElement(ft,null,c.createElement(pt,_E({className:s.classes},n),l(s.icon,t?.signalk?.appIcon),c.createElement("div",{className:o.classes},a),c.createElement("div",{className:"text-muted font-xs"},t.description))))}}J3.propTypes=BQ;class VQ extends J.Component{constructor(t){super(t),this.state={addonComponents:[]}}setAddonComponents(){this.setState({addonComponents:this.props.addons.map(t=>fy(t.name,xQ))})}componentDidMount(){this.setAddonComponents()}componentDidUpdate(t){this.props.addons!==t.addons&&this.setAddonComponents()}render(){return c.createElement("div",{className:"animated fadeIn"},c.createElement(ft,null,c.createElement(xt,null,"Webapps"),c.createElement(pt,null,c.createElement("div",{className:"row"},this.props.webapps.filter(t=>t.name!=="@signalk/server-admin-ui").map(t=>c.createElement(Y,{xs:"12",md:"12",lg:"6",xl:"4",key:t.name},c.createElement(J3,{key:t.name,webAppInfo:t})))))),c.createElement(ft,null,c.createElement(xt,null,"Addons"),c.createElement(pt,null,this.state.addonComponents.map((t,n)=>c.createElement(J.Suspense,{key:n,fallback:"Loading..."},c.createElement(t,{...this.props}))))))}}const HQ=({webapps:e,addons:t})=>({webapps:e,addons:t}),zQ=tn(HQ)(VQ);var X3={exports:{}},Z3={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Q3={exports:{}},GQ=function(t){return!t||typeof t=="string"?!1:t instanceof Array||Array.isArray(t)||t.length>=0&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&t.constructor.name!=="String")},WQ=GQ,YQ=Array.prototype.concat,KQ=Array.prototype.slice,rP=Q3.exports=function(t){for(var n=[],r=0,s=t.length;r<s;r++){var o=t[r];WQ(o)?n=YQ.call(n,KQ.call(o)):n.push(o)}return n};rP.wrap=function(e){return function(){return e(rP(arguments))}};var JQ=Q3.exports,xd=Z3,Rh=JQ,eL=Object.hasOwnProperty,tL=Object.create(null);for(var M0 in xd)eL.call(xd,M0)&&(tL[xd[M0]]=M0);var us=X3.exports={to:{},get:{}};us.get=function(e){var t=e.substring(0,3).toLowerCase(),n,r;switch(t){case"hsl":n=us.get.hsl(e),r="hsl";break;case"hwb":n=us.get.hwb(e),r="hwb";break;default:n=us.get.rgb(e),r="rgb";break}return n?{model:r,value:n}:null};us.get.rgb=function(e){if(!e)return null;var t=/^#([a-f0-9]{3,4})$/i,n=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,r=/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,s=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,o=/^(\w+)$/,a=[0,0,0,1],i,l,f;if(i=e.match(n)){for(f=i[2],i=i[1],l=0;l<3;l++){var d=l*2;a[l]=parseInt(i.slice(d,d+2),16)}f&&(a[3]=parseInt(f,16)/255)}else if(i=e.match(t)){for(i=i[1],f=i[3],l=0;l<3;l++)a[l]=parseInt(i[l]+i[l],16);f&&(a[3]=parseInt(f+f,16)/255)}else if(i=e.match(r)){for(l=0;l<3;l++)a[l]=parseInt(i[l+1],0);i[4]&&(i[5]?a[3]=parseFloat(i[4])*.01:a[3]=parseFloat(i[4]))}else if(i=e.match(s)){for(l=0;l<3;l++)a[l]=Math.round(parseFloat(i[l+1])*2.55);i[4]&&(i[5]?a[3]=parseFloat(i[4])*.01:a[3]=parseFloat(i[4]))}else return(i=e.match(o))?i[1]==="transparent"?[0,0,0,0]:eL.call(xd,i[1])?(a=xd[i[1]],a[3]=1,a):null:null;for(l=0;l<3;l++)a[l]=Mi(a[l],0,255);return a[3]=Mi(a[3],0,1),a};us.get.hsl=function(e){if(!e)return null;var t=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,n=e.match(t);if(n){var r=parseFloat(n[4]),s=(parseFloat(n[1])%360+360)%360,o=Mi(parseFloat(n[2]),0,100),a=Mi(parseFloat(n[3]),0,100),i=Mi(isNaN(r)?1:r,0,1);return[s,o,a,i]}return null};us.get.hwb=function(e){if(!e)return null;var t=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,n=e.match(t);if(n){var r=parseFloat(n[4]),s=(parseFloat(n[1])%360+360)%360,o=Mi(parseFloat(n[2]),0,100),a=Mi(parseFloat(n[3]),0,100),i=Mi(isNaN(r)?1:r,0,1);return[s,o,a,i]}return null};us.to.hex=function(){var e=Rh(arguments);return"#"+Tm(e[0])+Tm(e[1])+Tm(e[2])+(e[3]<1?Tm(Math.round(e[3]*255)):"")};us.to.rgb=function(){var e=Rh(arguments);return e.length<4||e[3]===1?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"};us.to.rgb.percent=function(){var e=Rh(arguments),t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),r=Math.round(e[2]/255*100);return e.length<4||e[3]===1?"rgb("+t+"%, "+n+"%, "+r+"%)":"rgba("+t+"%, "+n+"%, "+r+"%, "+e[3]+")"};us.to.hsl=function(){var e=Rh(arguments);return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"};us.to.hwb=function(){var e=Rh(arguments),t="";return e.length>=4&&e[3]!==1&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"};us.to.keyword=function(e){return tL[e.slice(0,3)]};function Mi(e,t,n){return Math.min(Math.max(t,e),n)}function Tm(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}var XQ=X3.exports;const Jd=Z3,nL={};for(const e of Object.keys(Jd))nL[Jd[e]]=e;const Ye={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};var rL=Ye;for(const e of Object.keys(Ye)){if(!("channels"in Ye[e]))throw new Error("missing channels property: "+e);if(!("labels"in Ye[e]))throw new Error("missing channel labels property: "+e);if(Ye[e].labels.length!==Ye[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:n}=Ye[e];delete Ye[e].channels,delete Ye[e].labels,Object.defineProperty(Ye[e],"channels",{value:t}),Object.defineProperty(Ye[e],"labels",{value:n})}Ye.rgb.hsl=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,s=Math.min(t,n,r),o=Math.max(t,n,r),a=o-s;let i,l;o===s?i=0:t===o?i=(n-r)/a:n===o?i=2+(r-t)/a:r===o&&(i=4+(t-n)/a),i=Math.min(i*60,360),i<0&&(i+=360);const f=(s+o)/2;return o===s?l=0:f<=.5?l=a/(o+s):l=a/(2-o-s),[i,l*100,f*100]};Ye.rgb.hsv=function(e){let t,n,r,s,o;const a=e[0]/255,i=e[1]/255,l=e[2]/255,f=Math.max(a,i,l),d=f-Math.min(a,i,l),p=function(g){return(f-g)/6/d+1/2};return d===0?(s=0,o=0):(o=d/f,t=p(a),n=p(i),r=p(l),a===f?s=r-n:i===f?s=1/3+t-r:l===f&&(s=2/3+n-t),s<0?s+=1:s>1&&(s-=1)),[s*360,o*100,f*100]};Ye.rgb.hwb=function(e){const t=e[0],n=e[1];let r=e[2];const s=Ye.rgb.hsl(e)[0],o=1/255*Math.min(t,Math.min(n,r));return r=1-1/255*Math.max(t,Math.max(n,r)),[s,o*100,r*100]};Ye.rgb.cmyk=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,s=Math.min(1-t,1-n,1-r),o=(1-t-s)/(1-s)||0,a=(1-n-s)/(1-s)||0,i=(1-r-s)/(1-s)||0;return[o*100,a*100,i*100,s*100]};function ZQ(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}Ye.rgb.keyword=function(e){const t=nL[e];if(t)return t;let n=1/0,r;for(const s of Object.keys(Jd)){const o=Jd[s],a=ZQ(e,o);a<n&&(n=a,r=s)}return r};Ye.keyword.rgb=function(e){return Jd[e]};Ye.rgb.xyz=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;const s=t*.4124+n*.3576+r*.1805,o=t*.2126+n*.7152+r*.0722,a=t*.0193+n*.1192+r*.9505;return[s*100,o*100,a*100]};Ye.rgb.lab=function(e){const t=Ye.rgb.xyz(e);let n=t[0],r=t[1],s=t[2];n/=95.047,r/=100,s/=108.883,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;const o=116*r-16,a=500*(n-r),i=200*(r-s);return[o,a,i]};Ye.hsl.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;let s,o,a;if(n===0)return a=r*255,[a,a,a];r<.5?s=r*(1+n):s=r+n-r*n;const i=2*r-s,l=[0,0,0];for(let f=0;f<3;f++)o=t+1/3*-(f-1),o<0&&o++,o>1&&o--,6*o<1?a=i+(s-i)*6*o:2*o<1?a=s:3*o<2?a=i+(s-i)*(2/3-o)*6:a=i,l[f]=a*255;return l};Ye.hsl.hsv=function(e){const t=e[0];let n=e[1]/100,r=e[2]/100,s=n;const o=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,s*=o<=1?o:2-o;const a=(r+n)/2,i=r===0?2*s/(o+s):2*n/(r+n);return[t,i*100,a*100]};Ye.hsv.rgb=function(e){const t=e[0]/60,n=e[1]/100;let r=e[2]/100;const s=Math.floor(t)%6,o=t-Math.floor(t),a=255*r*(1-n),i=255*r*(1-n*o),l=255*r*(1-n*(1-o));switch(r*=255,s){case 0:return[r,l,a];case 1:return[i,r,a];case 2:return[a,r,l];case 3:return[a,i,r];case 4:return[l,a,r];case 5:return[r,a,i]}};Ye.hsv.hsl=function(e){const t=e[0],n=e[1]/100,r=e[2]/100,s=Math.max(r,.01);let o,a;a=(2-n)*r;const i=(2-n)*s;return o=n*s,o/=i<=1?i:2-i,o=o||0,a/=2,[t,o*100,a*100]};Ye.hwb.rgb=function(e){const t=e[0]/360;let n=e[1]/100,r=e[2]/100;const s=n+r;let o;s>1&&(n/=s,r/=s);const a=Math.floor(6*t),i=1-r;o=6*t-a,(a&1)!==0&&(o=1-o);const l=n+o*(i-n);let f,d,p;switch(a){default:case 6:case 0:f=i,d=l,p=n;break;case 1:f=l,d=i,p=n;break;case 2:f=n,d=i,p=l;break;case 3:f=n,d=l,p=i;break;case 4:f=l,d=n,p=i;break;case 5:f=i,d=n,p=l;break}return[f*255,d*255,p*255]};Ye.cmyk.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100,s=e[3]/100,o=1-Math.min(1,t*(1-s)+s),a=1-Math.min(1,n*(1-s)+s),i=1-Math.min(1,r*(1-s)+s);return[o*255,a*255,i*255]};Ye.xyz.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100;let s,o,a;return s=t*3.2406+n*-1.5372+r*-.4986,o=t*-.9689+n*1.8758+r*.0415,a=t*.0557+n*-.204+r*1.057,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),a=Math.min(Math.max(0,a),1),[s*255,o*255,a*255]};Ye.xyz.lab=function(e){let t=e[0],n=e[1],r=e[2];t/=95.047,n/=100,r/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;const s=116*n-16,o=500*(t-n),a=200*(n-r);return[s,o,a]};Ye.lab.xyz=function(e){const t=e[0],n=e[1],r=e[2];let s,o,a;o=(t+16)/116,s=n/500+o,a=o-r/200;const i=o**3,l=s**3,f=a**3;return o=i>.008856?i:(o-16/116)/7.787,s=l>.008856?l:(s-16/116)/7.787,a=f>.008856?f:(a-16/116)/7.787,s*=95.047,o*=100,a*=108.883,[s,o,a]};Ye.lab.lch=function(e){const t=e[0],n=e[1],r=e[2];let s;s=Math.atan2(r,n)*360/2/Math.PI,s<0&&(s+=360);const a=Math.sqrt(n*n+r*r);return[t,a,s]};Ye.lch.lab=function(e){const t=e[0],n=e[1],s=e[2]/360*2*Math.PI,o=n*Math.cos(s),a=n*Math.sin(s);return[t,o,a]};Ye.rgb.ansi16=function(e,t=null){const[n,r,s]=e;let o=t===null?Ye.rgb.hsv(e)[2]:t;if(o=Math.round(o/50),o===0)return 30;let a=30+(Math.round(s/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return o===2&&(a+=60),a};Ye.hsv.ansi16=function(e){return Ye.rgb.ansi16(Ye.hsv.rgb(e),e[2])};Ye.rgb.ansi256=function(e){const t=e[0],n=e[1],r=e[2];return t===n&&n===r?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)};Ye.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const n=(~~(e>50)+1)*.5,r=(t&1)*n*255,s=(t>>1&1)*n*255,o=(t>>2&1)*n*255;return[r,s,o]};Ye.ansi256.rgb=function(e){if(e>=232){const o=(e-232)*10+8;return[o,o,o]}e-=16;let t;const n=Math.floor(e/36)/5*255,r=Math.floor((t=e%36)/6)/5*255,s=t%6/5*255;return[n,r,s]};Ye.rgb.hex=function(e){const n=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(n.length)+n};Ye.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let n=t[0];t[0].length===3&&(n=n.split("").map(i=>i+i).join(""));const r=parseInt(n,16),s=r>>16&255,o=r>>8&255,a=r&255;return[s,o,a]};Ye.rgb.hcg=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,s=Math.max(Math.max(t,n),r),o=Math.min(Math.min(t,n),r),a=s-o;let i,l;return a<1?i=o/(1-a):i=0,a<=0?l=0:s===t?l=(n-r)/a%6:s===n?l=2+(r-t)/a:l=4+(t-n)/a,l/=6,l%=1,[l*360,a*100,i*100]};Ye.hsl.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=n<.5?2*t*n:2*t*(1-n);let s=0;return r<1&&(s=(n-.5*r)/(1-r)),[e[0],r*100,s*100]};Ye.hsv.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=t*n;let s=0;return r<1&&(s=(n-r)/(1-r)),[e[0],r*100,s*100]};Ye.hcg.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;if(n===0)return[r*255,r*255,r*255];const s=[0,0,0],o=t%1*6,a=o%1,i=1-a;let l=0;switch(Math.floor(o)){case 0:s[0]=1,s[1]=a,s[2]=0;break;case 1:s[0]=i,s[1]=1,s[2]=0;break;case 2:s[0]=0,s[1]=1,s[2]=a;break;case 3:s[0]=0,s[1]=i,s[2]=1;break;case 4:s[0]=a,s[1]=0,s[2]=1;break;default:s[0]=1,s[1]=0,s[2]=i}return l=(1-n)*r,[(n*s[0]+l)*255,(n*s[1]+l)*255,(n*s[2]+l)*255]};Ye.hcg.hsv=function(e){const t=e[1]/100,n=e[2]/100,r=t+n*(1-t);let s=0;return r>0&&(s=t/r),[e[0],s*100,r*100]};Ye.hcg.hsl=function(e){const t=e[1]/100,r=e[2]/100*(1-t)+.5*t;let s=0;return r>0&&r<.5?s=t/(2*r):r>=.5&&r<1&&(s=t/(2*(1-r))),[e[0],s*100,r*100]};Ye.hcg.hwb=function(e){const t=e[1]/100,n=e[2]/100,r=t+n*(1-t);return[e[0],(r-t)*100,(1-r)*100]};Ye.hwb.hcg=function(e){const t=e[1]/100,r=1-e[2]/100,s=r-t;let o=0;return s<1&&(o=(r-s)/(1-s)),[e[0],s*100,o*100]};Ye.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};Ye.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};Ye.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};Ye.gray.hsl=function(e){return[0,0,e[0]]};Ye.gray.hsv=Ye.gray.hsl;Ye.gray.hwb=function(e){return[0,100,e[0]]};Ye.gray.cmyk=function(e){return[0,0,0,e[0]]};Ye.gray.lab=function(e){return[e[0],0,0]};Ye.gray.hex=function(e){const t=Math.round(e[0]/100*255)&255,r=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(r.length)+r};Ye.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]};const Zg=rL;function QQ(){const e={},t=Object.keys(Zg);for(let n=t.length,r=0;r<n;r++)e[t[r]]={distance:-1,parent:null};return e}function eee(e){const t=QQ(),n=[e];for(t[e].distance=0;n.length;){const r=n.pop(),s=Object.keys(Zg[r]);for(let o=s.length,a=0;a<o;a++){const i=s[a],l=t[i];l.distance===-1&&(l.distance=t[r].distance+1,l.parent=r,n.unshift(i))}}return t}function tee(e,t){return function(n){return t(e(n))}}function nee(e,t){const n=[t[e].parent,e];let r=Zg[t[e].parent][e],s=t[e].parent;for(;t[s].parent;)n.unshift(t[s].parent),r=tee(Zg[t[s].parent][s],r),s=t[s].parent;return r.conversion=n,r}var ree=function(e){const t=eee(e),n={},r=Object.keys(t);for(let s=r.length,o=0;o<s;o++){const a=r[o];t[a].parent!==null&&(n[a]=nee(a,t))}return n};const SE=rL,see=ree,Ql={},oee=Object.keys(SE);function aee(e){const t=function(...n){const r=n[0];return r==null?r:(r.length>1&&(n=r),e(n))};return"conversion"in e&&(t.conversion=e.conversion),t}function iee(e){const t=function(...n){const r=n[0];if(r==null)return r;r.length>1&&(n=r);const s=e(n);if(typeof s=="object")for(let o=s.length,a=0;a<o;a++)s[a]=Math.round(s[a]);return s};return"conversion"in e&&(t.conversion=e.conversion),t}oee.forEach(e=>{Ql[e]={},Object.defineProperty(Ql[e],"channels",{value:SE[e].channels}),Object.defineProperty(Ql[e],"labels",{value:SE[e].labels});const t=see(e);Object.keys(t).forEach(r=>{const s=t[r];Ql[e][r]=iee(s),Ql[e][r].raw=aee(s)})});var cee=Ql;const eu=XQ,ls=cee,sL=["keyword","gray","hex"],CE={};for(const e of Object.keys(ls))CE[[...ls[e].labels].sort().join("")]=e;const Qg={};function sr(e,t){if(!(this instanceof sr))return new sr(e,t);if(t&&t in sL&&(t=null),t&&!(t in ls))throw new Error("Unknown model: "+t);let n,r;if(e==null)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof sr)this.model=e.model,this.color=[...e.color],this.valpha=e.valpha;else if(typeof e=="string"){const s=eu.get(e);if(s===null)throw new Error("Unable to parse color from string: "+e);this.model=s.model,r=ls[this.model].channels,this.color=s.value.slice(0,r),this.valpha=typeof s.value[r]=="number"?s.value[r]:1}else if(e.length>0){this.model=t||"rgb",r=ls[this.model].channels;const s=Array.prototype.slice.call(e,0,r);this.color=xE(s,r),this.valpha=typeof e[r]=="number"?e[r]:1}else if(typeof e=="number")this.model="rgb",this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;const s=Object.keys(e);"alpha"in e&&(s.splice(s.indexOf("alpha"),1),this.valpha=typeof e.alpha=="number"?e.alpha:0);const o=s.sort().join("");if(!(o in CE))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=CE[o];const{labels:a}=ls[this.model],i=[];for(n=0;n<a.length;n++)i.push(e[a[n]]);this.color=xE(i)}if(Qg[this.model])for(r=ls[this.model].channels,n=0;n<r;n++){const s=Qg[this.model][n];s&&(this.color[n]=s(this.color[n]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}sr.prototype={toString(){return this.string()},toJSON(){return this[this.model]()},string(e){let t=this.model in eu.to?this:this.rgb();t=t.round(typeof e=="number"?e:1);const n=t.valpha===1?t.color:[...t.color,this.valpha];return eu.to[t.model](n)},percentString(e){const t=this.rgb().round(typeof e=="number"?e:1),n=t.valpha===1?t.color:[...t.color,this.valpha];return eu.to.rgb.percent(n)},array(){return this.valpha===1?[...this.color]:[...this.color,this.valpha]},object(){const e={},{channels:t}=ls[this.model],{labels:n}=ls[this.model];for(let r=0;r<t;r++)e[n[r]]=this.color[r];return this.valpha!==1&&(e.alpha=this.valpha),e},unitArray(){const e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,this.valpha!==1&&e.push(this.valpha),e},unitObject(){const e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,this.valpha!==1&&(e.alpha=this.valpha),e},round(e){return e=Math.max(e||0,0),new sr([...this.color.map(uee(e)),this.valpha],this.model)},alpha(e){return e!==void 0?new sr([...this.color,Math.max(0,Math.min(1,e))],this.model):this.valpha},red:An("rgb",0,Yn(255)),green:An("rgb",1,Yn(255)),blue:An("rgb",2,Yn(255)),hue:An(["hsl","hsv","hsl","hwb","hcg"],0,e=>(e%360+360)%360),saturationl:An("hsl",1,Yn(100)),lightness:An("hsl",2,Yn(100)),saturationv:An("hsv",1,Yn(100)),value:An("hsv",2,Yn(100)),chroma:An("hcg",1,Yn(100)),gray:An("hcg",2,Yn(100)),white:An("hwb",1,Yn(100)),wblack:An("hwb",2,Yn(100)),cyan:An("cmyk",0,Yn(100)),magenta:An("cmyk",1,Yn(100)),yellow:An("cmyk",2,Yn(100)),black:An("cmyk",3,Yn(100)),x:An("xyz",0,Yn(95.047)),y:An("xyz",1,Yn(100)),z:An("xyz",2,Yn(108.833)),l:An("lab",0,Yn(100)),a:An("lab",1),b:An("lab",2),keyword(e){return e!==void 0?new sr(e):ls[this.model].keyword(this.color)},hex(e){return e!==void 0?new sr(e):eu.to.hex(this.rgb().round().color)},hexa(e){if(e!==void 0)return new sr(e);const t=this.rgb().round().color;let n=Math.round(this.valpha*255).toString(16).toUpperCase();return n.length===1&&(n="0"+n),eu.to.hex(t)+n},rgbNumber(){const e=this.rgb().color;return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255},luminosity(){const e=this.rgb().color,t=[];for(const[n,r]of e.entries()){const s=r/255;t[n]=s<=.04045?s/12.92:((s+.055)/1.055)**2.4}return .2126*t[0]+.7152*t[1]+.0722*t[2]},contrast(e){const t=this.luminosity(),n=e.luminosity();return t>n?(t+.05)/(n+.05):(n+.05)/(t+.05)},level(e){const t=this.contrast(e);return t>=7?"AAA":t>=4.5?"AA":""},isDark(){const e=this.rgb().color;return(e[0]*2126+e[1]*7152+e[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){const e=this.rgb();for(let t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten(e){const t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken(e){const t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate(e){const t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate(e){const t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten(e){const t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken(e){const t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale(){const e=this.rgb().color,t=e[0]*.3+e[1]*.59+e[2]*.11;return sr.rgb(t,t,t)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){const t=this.hsl();let n=t.color[0];return n=(n+e)%360,n=n<0?360+n:n,t.color[0]=n,t},mix(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);const n=e.rgb(),r=this.rgb(),s=t===void 0?.5:t,o=2*s-1,a=n.alpha()-r.alpha(),i=((o*a===-1?o:(o+a)/(1+o*a))+1)/2,l=1-i;return sr.rgb(i*n.red()+l*r.red(),i*n.green()+l*r.green(),i*n.blue()+l*r.blue(),n.alpha()*s+r.alpha()*(1-s))}};for(const e of Object.keys(ls)){if(sL.includes(e))continue;const{channels:t}=ls[e];sr.prototype[e]=function(...n){return this.model===e?new sr(this):n.length>0?new sr(n,e):new sr([...fee(ls[this.model][e].raw(this.color)),this.valpha],e)},sr[e]=function(...n){let r=n[0];return typeof r=="number"&&(r=xE(n,t)),new sr(r,e)}}function lee(e,t){return Number(e.toFixed(t))}function uee(e){return function(t){return lee(t,e)}}function An(e,t,n){e=Array.isArray(e)?e:[e];for(const r of e)(Qg[r]||(Qg[r]=[]))[t]=n;return e=e[0],function(r){let s;return r!==void 0?(n&&(r=n(r)),s=this[e](),s.color[t]=r,s):(s=this[e]().color[t],n&&(s=n(s)),s)}}function Yn(e){return function(t){return Math.max(0,Math.min(e,t))}}function fee(e){return Array.isArray(e)?e:[e]}function xE(e,t){for(let n=0;n<t;n++)typeof e[n]!="number"&&(e[n]=0);return e}var dee=sr;const sP=xn(dee);var hee="[object Symbol]";function kh(e){return typeof e=="symbol"||ps(e)&&Ha(e)==hee}function hy(e,t){for(var n=-1,r=e==null?0:e.length,s=Array(r);++n<r;)s[n]=t(e[n],n,e);return s}var Un=Array.isArray,oP=Ls?Ls.prototype:void 0,aP=oP?oP.toString:void 0;function oL(e){if(typeof e=="string")return e;if(Un(e))return hy(e,oL)+"";if(kh(e))return aP?aP.call(e):"";var t=e+"";return t=="0"&&1/e==-1/0?"-0":t}var pee=/\s/;function mee(e){for(var t=e.length;t--&&pee.test(e.charAt(t)););return t}var gee=/^\s+/;function vee(e){return e&&e.slice(0,mee(e)+1).replace(gee,"")}function ln(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var iP=NaN,yee=/^[-+]0x[0-9a-f]+$/i,bee=/^0b[01]+$/i,$ee=/^0o[0-7]+$/i,Eee=parseInt;function wee(e){if(typeof e=="number")return e;if(kh(e))return iP;if(ln(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=ln(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=vee(e);var n=bee.test(e);return n||$ee.test(e)?Eee(e.slice(2),n?2:8):yee.test(e)?iP:+e}var cP=1/0,_ee=17976931348623157e292;function See(e){if(!e)return e===0?e:0;if(e=wee(e),e===cP||e===-cP){var t=e<0?-1:1;return t*_ee}return e===e?e:0}function TE(e){var t=See(e),n=t%1;return t===t?n?t-n:t:0}function Dh(e){return e}var Cee="[object AsyncFunction]",xee="[object Function]",Tee="[object GeneratorFunction]",Oee="[object Proxy]";function py(e){if(!ln(e))return!1;var t=Ha(e);return t==xee||t==Tee||t==Cee||t==Oee}var L0=Xr["__core-js_shared__"],lP=(function(){var e=/[^.]+$/.exec(L0&&L0.keys&&L0.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();function Nee(e){return!!lP&&lP in e}var Pee=Function.prototype,Aee=Pee.toString;function Yc(e){if(e!=null){try{return Aee.call(e)}catch{}try{return e+""}catch{}}return""}var Iee=/[\\^$.*+?()[\]{}|]/g,Ree=/^\[object .+?Constructor\]$/,kee=Function.prototype,Dee=Object.prototype,Mee=kee.toString,Lee=Dee.hasOwnProperty,Fee=RegExp("^"+Mee.call(Lee).replace(Iee,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function jee(e){if(!ln(e)||Nee(e))return!1;var t=py(e)?Fee:Ree;return t.test(Yc(e))}function qee(e,t){return e?.[t]}function Kc(e,t){var n=qee(e,t);return jee(n)?n:void 0}var Xd=Kc(Xr,"WeakMap"),ev=Xd&&new Xd,aL=ev?function(e,t){return ev.set(e,t),e}:Dh,uP=Object.create,Mh=(function(){function e(){}return function(t){if(!ln(t))return{};if(uP)return uP(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}})();function Zd(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=Mh(e.prototype),r=e.apply(n,t);return ln(r)?r:n}}var Uee=1;function Bee(e,t,n){var r=t&Uee,s=Zd(e);function o(){var a=this&&this!==Xr&&this instanceof o?s:e;return a.apply(r?n:this,arguments)}return o}function q_(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var Vee=Math.max;function iL(e,t,n,r){for(var s=-1,o=e.length,a=n.length,i=-1,l=t.length,f=Vee(o-a,0),d=Array(l+f),p=!r;++i<l;)d[i]=t[i];for(;++s<a;)(p||s<o)&&(d[n[s]]=e[s]);for(;f--;)d[i++]=e[s++];return d}var Hee=Math.max;function cL(e,t,n,r){for(var s=-1,o=e.length,a=-1,i=n.length,l=-1,f=t.length,d=Hee(o-i,0),p=Array(d+f),g=!r;++s<d;)p[s]=e[s];for(var m=s;++l<f;)p[m+l]=t[l];for(;++a<i;)(g||s<o)&&(p[m+n[a]]=e[s++]);return p}function zee(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}function U_(){}var Gee=4294967295;function Cu(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Gee,this.__views__=[]}Cu.prototype=Mh(U_.prototype);Cu.prototype.constructor=Cu;function lL(){}var uL=ev?function(e){return ev.get(e)}:lL,fP={},Wee=Object.prototype,Yee=Wee.hasOwnProperty;function Kee(e){for(var t=e.name+"",n=fP[t],r=Yee.call(fP,t)?n.length:0;r--;){var s=n[r],o=s.func;if(o==null||o==e)return s.name}return t}function xu(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}xu.prototype=Mh(U_.prototype);xu.prototype.constructor=xu;function Lh(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}function Jee(e){if(e instanceof Cu)return e.clone();var t=new xu(e.__wrapped__,e.__chain__);return t.__actions__=Lh(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}var Xee=Object.prototype,Zee=Xee.hasOwnProperty;function tv(e){if(ps(e)&&!Un(e)&&!(e instanceof Cu)){if(e instanceof xu)return e;if(Zee.call(e,"__wrapped__"))return Jee(e)}return new xu(e)}tv.prototype=U_.prototype;tv.prototype.constructor=tv;function Qee(e){var t=Kee(e),n=tv[t];if(typeof n!="function"||!(t in Cu.prototype))return!1;if(e===n)return!0;var r=uL(n);return!!r&&e===r[0]}var ete=800,tte=16,nte=Date.now;function fL(e){var t=0,n=0;return function(){var r=nte(),s=tte-(r-n);if(n=r,s>0){if(++t>=ete)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var dL=fL(aL),rte=/\{\n\/\* \[wrapped with (.+)\] \*/,ste=/,? & /;function ote(e){var t=e.match(rte);return t?t[1].split(ste):[]}var ate=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function ite(e,t){var n=t.length;if(!n)return e;var r=n-1;return t[r]=(n>1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(ate,`{
81
+ */var kQ=function(){if(typeof WebSocket<"u")return WebSocket},DQ=function(e){return typeof e<"u"&&!!e&&e.CLOSING===2},fc={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0},MQ=(function(){function e(t,n,r){var s=this;r===void 0&&(r={}),this._listeners={error:[],message:[],open:[],close:[]},this._retryCount=-1,this._shouldReconnect=!0,this._connectLock=!1,this._binaryType="blob",this._closeCalled=!1,this._messageQueue=[],this.onclose=null,this.onerror=null,this.onmessage=null,this.onopen=null,this._handleOpen=function(o){s._debug("open event");var a=s._options.minUptime,i=a===void 0?fc.minUptime:a;clearTimeout(s._connectTimeout),s._uptimeTimeout=setTimeout(function(){return s._acceptOpen()},i),s._ws.binaryType=s._binaryType,s._messageQueue.forEach(function(l){return s._ws.send(l)}),s._messageQueue=[],s.onopen&&s.onopen(o),s._listeners.open.forEach(function(l){return s._callEventListener(o,l)})},this._handleMessage=function(o){s._debug("message event"),s.onmessage&&s.onmessage(o),s._listeners.message.forEach(function(a){return s._callEventListener(o,a)})},this._handleError=function(o){s._debug("error event",o.message),s._disconnect(void 0,o.message==="TIMEOUT"?"timeout":void 0),s.onerror&&s.onerror(o),s._debug("exec error listeners"),s._listeners.error.forEach(function(a){return s._callEventListener(o,a)}),s._connect()},this._handleClose=function(o){s._debug("close event"),s._clearTimeouts(),s._shouldReconnect&&s._connect(),s.onclose&&s.onclose(o),s._listeners.close.forEach(function(a){return s._callEventListener(o,a)})},this._url=t,this._protocols=n,this._options=r,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}return Object.defineProperty(e,"CONNECTING",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(e,"OPEN",{get:function(){return 1},enumerable:!0,configurable:!0}),Object.defineProperty(e,"CLOSING",{get:function(){return 2},enumerable:!0,configurable:!0}),Object.defineProperty(e,"CLOSED",{get:function(){return 3},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CONNECTING",{get:function(){return e.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"OPEN",{get:function(){return e.OPEN},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CLOSING",{get:function(){return e.CLOSING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CLOSED",{get:function(){return e.CLOSED},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"binaryType",{get:function(){return this._ws?this._ws.binaryType:this._binaryType},set:function(t){this._binaryType=t,this._ws&&(this._ws.binaryType=t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"retryCount",{get:function(){return Math.max(this._retryCount,0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bufferedAmount",{get:function(){var t=this._messageQueue.reduce(function(n,r){return typeof r=="string"?n+=r.length:r instanceof Blob?n+=r.size:n+=r.byteLength,n},0);return t+(this._ws?this._ws.bufferedAmount:0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"extensions",{get:function(){return this._ws?this._ws.extensions:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"protocol",{get:function(){return this._ws?this._ws.protocol:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"readyState",{get:function(){return this._ws?this._ws.readyState:this._options.startClosed?e.CLOSED:e.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this._ws?this._ws.url:""},enumerable:!0,configurable:!0}),e.prototype.close=function(t,n){if(t===void 0&&(t=1e3),this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(t,n)},e.prototype.reconnect=function(t,n){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(t,n),this._connect())},e.prototype.send=function(t){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",t),this._ws.send(t);else{var n=this._options.maxEnqueuedMessages,r=n===void 0?fc.maxEnqueuedMessages:n;this._messageQueue.length<r&&(this._debug("enqueue",t),this._messageQueue.push(t))}},e.prototype.addEventListener=function(t,n){this._listeners[t]&&this._listeners[t].push(n)},e.prototype.dispatchEvent=function(t){var n,r,s=this._listeners[t.type];if(s)try{for(var o=NQ(s),a=o.next();!a.done;a=o.next()){var i=a.value;this._callEventListener(t,i)}}catch(l){n={error:l}}finally{try{a&&!a.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return!0},e.prototype.removeEventListener=function(t,n){this._listeners[t]&&(this._listeners[t]=this._listeners[t].filter(function(r){return r!==n}))},e.prototype._debug=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];this._options.debug&&console.log.apply(console,AQ(["RWS>"],t))},e.prototype._getNextDelay=function(){var t=this._options,n=t.reconnectionDelayGrowFactor,r=n===void 0?fc.reconnectionDelayGrowFactor:n,s=t.minReconnectionDelay,o=s===void 0?fc.minReconnectionDelay:s,a=t.maxReconnectionDelay,i=a===void 0?fc.maxReconnectionDelay:a,l=0;return this._retryCount>0&&(l=o*Math.pow(r,this._retryCount-1),l>i&&(l=i)),this._debug("next delay",l),l},e.prototype._wait=function(){var t=this;return new Promise(function(n){setTimeout(n,t._getNextDelay())})},e.prototype._getNextUrl=function(t){if(typeof t=="string")return Promise.resolve(t);if(typeof t=="function"){var n=t();if(typeof n=="string")return Promise.resolve(n);if(n.then)return n}throw Error("Invalid URL")},e.prototype._connect=function(){var t=this;if(!(this._connectLock||!this._shouldReconnect)){this._connectLock=!0;var n=this._options,r=n.maxRetries,s=r===void 0?fc.maxRetries:r,o=n.connectionTimeout,a=o===void 0?fc.connectionTimeout:o,i=n.WebSocket,l=i===void 0?kQ():i;if(this._retryCount>=s){this._debug("max retries reached",this._retryCount,">=",s);return}if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),!DQ(l))throw Error("No valid WebSocket class provided");this._wait().then(function(){return t._getNextUrl(t._url)}).then(function(f){t._closeCalled||(t._debug("connect",{url:f,protocols:t._protocols}),t._ws=t._protocols?new l(f,t._protocols):new l(f),t._ws.binaryType=t._binaryType,t._connectLock=!1,t._addListeners(),t._connectTimeout=setTimeout(function(){return t._handleTimeout()},a))})}},e.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new IQ(Error("TIMEOUT"),this))},e.prototype._disconnect=function(t,n){if(t===void 0&&(t=1e3),this._clearTimeouts(),!!this._ws){this._removeListeners();try{this._ws.close(t,n),this._handleClose(new RQ(t,n,this))}catch{}}},e.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},e.prototype._callEventListener=function(t,n){"handleEvent"in n?n.handleEvent(t):n(t)},e.prototype._removeListeners=function(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))},e.prototype._addListeners=function(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))},e.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},e})();const LQ=window.location.protocol==="https:"?"wss":"ws";class FQ extends J.Component{constructor(t){super(t),this.state={component:fy(this.props.match.params.moduleId,CQ)},this.websockets=[],this.adminUI={hideSideBar:()=>{window.dispatchEvent(new Event("sidebar:hide"))},getApplicationUserData:(n,r="")=>fetch(`/signalk/v1/applicationData/user/${this.props.match.params.moduleId}/${n}${r}`,{credentials:"include"}).then(s=>{if(s.status!==200)throw new Error(s);return s}).then(s=>s.json()),setApplicationUserData:(n,r={},s="")=>fetch(`/signalk/v1/applicationData/user/${this.props.match.params.moduleId}/${n}${s}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r),credentials:"include"}).then(o=>{if(o.status!==200)throw new Error(o);return o}),openWebsocket:n=>{const r=["subscribe","sendCachedValues","events"],s=r.map((a,i)=>[i,n[a]]).filter(a=>a[1]!==void 0).map(([a,i])=>`${r[a]}=${i}`).join("&"),o=new MQ(`${LQ}://${window.location.host}/signalk/v1/stream?${s}`);return this.websockets.push(o),o},get:({context:n,path:r})=>{const s=n.split(".");return fetch(`/signalk/v1/api/${s[0]}/${s.slice(1).join(".")}/${r}`,{credentials:"include"})},Login:dy}}componentWillUnmount(){this.websockets.forEach(t=>{try{t.close()}catch(n){console.error(n)}})}render(){return c.createElement("div",{style:{backgroundColor:"aliceblue",height:"calc(100vh - 105px)"}},c.createElement(J.Suspense,{fallback:"Loading..."},c.createElement(this.state.component,{...this.props,adminUI:this.adminUI})))}}const jQ=({loginStatus:e})=>({loginStatus:e}),qQ=tn(jQ)(FQ),UQ=({location:e,history:t})=>{const n=J.useRef(null),r=J.useRef(e.pathname),s=J.useRef(e.hash),o=`${window.location.protocol}//${window.location.host}/documentation/`;r.current=e.pathname,s.current=e.hash;const a=e.pathname.replace("/documentation","")||"/",i=o+a.replace(/^\//,"")+(e.hash||"");J.useEffect(()=>(document.body.classList.add("sidebar-hidden"),()=>{document.body.classList.remove("sidebar-hidden")}),[]);const l=()=>{const f=n.current;if(f)try{const d=f.contentWindow.location.pathname,p=f.contentWindow.location.hash||"",g=d.replace("/documentation","")||"/",m=r.current.replace("/documentation","")||"/";(g!==m||p!==s.current)&&t.replace("/documentation"+g+p),f.contentWindow.addEventListener("hashchange",()=>{const y=f.contentWindow.location.hash||"",$=f.contentWindow.location.pathname.replace("/documentation","")||"/";t.replace("/documentation"+$+y)})}catch{}};return J.useEffect(()=>{const f=n.current;if(!(!f||!f.contentWindow))try{const p=f.contentWindow.location.pathname.replace("/documentation","")||"/",g=f.contentWindow.location.hash||"";(a!==p||(e.hash||"")!==g)&&(f.contentWindow.location=o+a.replace(/^\//,"")+(e.hash||""))}catch{}},[e.pathname,e.hash]),c.createElement("div",{style:{backgroundColor:"#0d1117",margin:0,padding:0}},c.createElement("iframe",{ref:n,src:i,onLoad:l,style:{width:"100%",height:"calc(100vh - 55px)",border:"none"},title:"Signal K Documentation"}))};function _E(){return _E=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_E.apply(null,arguments)}const BQ={webAppInfo:_.shape({name:_.string.isRequired,description:_.string,signalk:_.shape({displayName:_.string,appIcon:_.string})}).isRequired,children:_.node};function K3(e){return e.keywords.includes("signalk-embeddable-webapp")?`/admin/#/e/${j_(e.name)}`:`/${e.name}`}class J3 extends J.Component{render(){const{webAppInfo:t,...n}=this.props,r={icon:"p-3",lead:"mt-2"},s={color:"primary",icon:`fa ${t?.signalk?.displayName?"":"icon-grid"}`},o={style:"h5 mb-0",classes:""};o.classes=Te(o.style,"text-"+s.color,r.lead,"text-capitalize");const a=t?.signalk?.displayName||t.name,i=K3(t),l=function(f,d=null){const p=Te(f,"bg-primary",r.icon,"font-2xl mr-3 float-left"),g={backgroundSize:"cover",backgroundImage:d?`url(/${t.name}/${d})`:"unset"};return d&&(g.width=g.height="72px"),c.createElement("i",{className:p,style:g})};return c.createElement("a",{href:i},c.createElement(ft,null,c.createElement(pt,_E({className:s.classes},n),l(s.icon,t?.signalk?.appIcon),c.createElement("div",{className:o.classes},a),c.createElement("div",{className:"text-muted font-xs"},t.description))))}}J3.propTypes=BQ;class VQ extends J.Component{constructor(t){super(t),this.state={addonComponents:[]}}setAddonComponents(){this.setState({addonComponents:this.props.addons.map(t=>fy(t.name,xQ))})}componentDidMount(){this.setAddonComponents()}componentDidUpdate(t){this.props.addons!==t.addons&&this.setAddonComponents()}render(){return c.createElement("div",{className:"animated fadeIn"},c.createElement(ft,null,c.createElement(xt,null,"Webapps"),c.createElement(pt,null,c.createElement("div",{className:"row"},this.props.webapps.filter(t=>t.name!=="@signalk/server-admin-ui").map(t=>c.createElement(Y,{xs:"12",md:"12",lg:"6",xl:"4",key:t.name},c.createElement(J3,{key:t.name,webAppInfo:t})))))),c.createElement(ft,null,c.createElement(xt,null,"Addons"),c.createElement(pt,null,this.state.addonComponents.map((t,n)=>c.createElement(J.Suspense,{key:n,fallback:"Loading..."},c.createElement(t,{...this.props}))))))}}const HQ=({webapps:e,addons:t})=>({webapps:e,addons:t}),zQ=tn(HQ)(VQ);var X3={exports:{}},Z3={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Q3={exports:{}},GQ=function(t){return!t||typeof t=="string"?!1:t instanceof Array||Array.isArray(t)||t.length>=0&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&t.constructor.name!=="String")},WQ=GQ,YQ=Array.prototype.concat,KQ=Array.prototype.slice,rP=Q3.exports=function(t){for(var n=[],r=0,s=t.length;r<s;r++){var o=t[r];WQ(o)?n=YQ.call(n,KQ.call(o)):n.push(o)}return n};rP.wrap=function(e){return function(){return e(rP(arguments))}};var JQ=Q3.exports,xd=Z3,Rh=JQ,eL=Object.hasOwnProperty,tL=Object.create(null);for(var M0 in xd)eL.call(xd,M0)&&(tL[xd[M0]]=M0);var us=X3.exports={to:{},get:{}};us.get=function(e){var t=e.substring(0,3).toLowerCase(),n,r;switch(t){case"hsl":n=us.get.hsl(e),r="hsl";break;case"hwb":n=us.get.hwb(e),r="hwb";break;default:n=us.get.rgb(e),r="rgb";break}return n?{model:r,value:n}:null};us.get.rgb=function(e){if(!e)return null;var t=/^#([a-f0-9]{3,4})$/i,n=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,r=/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,s=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,o=/^(\w+)$/,a=[0,0,0,1],i,l,f;if(i=e.match(n)){for(f=i[2],i=i[1],l=0;l<3;l++){var d=l*2;a[l]=parseInt(i.slice(d,d+2),16)}f&&(a[3]=parseInt(f,16)/255)}else if(i=e.match(t)){for(i=i[1],f=i[3],l=0;l<3;l++)a[l]=parseInt(i[l]+i[l],16);f&&(a[3]=parseInt(f+f,16)/255)}else if(i=e.match(r)){for(l=0;l<3;l++)a[l]=parseInt(i[l+1],0);i[4]&&(i[5]?a[3]=parseFloat(i[4])*.01:a[3]=parseFloat(i[4]))}else if(i=e.match(s)){for(l=0;l<3;l++)a[l]=Math.round(parseFloat(i[l+1])*2.55);i[4]&&(i[5]?a[3]=parseFloat(i[4])*.01:a[3]=parseFloat(i[4]))}else return(i=e.match(o))?i[1]==="transparent"?[0,0,0,0]:eL.call(xd,i[1])?(a=xd[i[1]],a[3]=1,a):null:null;for(l=0;l<3;l++)a[l]=Mi(a[l],0,255);return a[3]=Mi(a[3],0,1),a};us.get.hsl=function(e){if(!e)return null;var t=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,n=e.match(t);if(n){var r=parseFloat(n[4]),s=(parseFloat(n[1])%360+360)%360,o=Mi(parseFloat(n[2]),0,100),a=Mi(parseFloat(n[3]),0,100),i=Mi(isNaN(r)?1:r,0,1);return[s,o,a,i]}return null};us.get.hwb=function(e){if(!e)return null;var t=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,n=e.match(t);if(n){var r=parseFloat(n[4]),s=(parseFloat(n[1])%360+360)%360,o=Mi(parseFloat(n[2]),0,100),a=Mi(parseFloat(n[3]),0,100),i=Mi(isNaN(r)?1:r,0,1);return[s,o,a,i]}return null};us.to.hex=function(){var e=Rh(arguments);return"#"+Tm(e[0])+Tm(e[1])+Tm(e[2])+(e[3]<1?Tm(Math.round(e[3]*255)):"")};us.to.rgb=function(){var e=Rh(arguments);return e.length<4||e[3]===1?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"};us.to.rgb.percent=function(){var e=Rh(arguments),t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),r=Math.round(e[2]/255*100);return e.length<4||e[3]===1?"rgb("+t+"%, "+n+"%, "+r+"%)":"rgba("+t+"%, "+n+"%, "+r+"%, "+e[3]+")"};us.to.hsl=function(){var e=Rh(arguments);return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"};us.to.hwb=function(){var e=Rh(arguments),t="";return e.length>=4&&e[3]!==1&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"};us.to.keyword=function(e){return tL[e.slice(0,3)]};function Mi(e,t,n){return Math.min(Math.max(t,e),n)}function Tm(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}var XQ=X3.exports;const Jd=Z3,nL={};for(const e of Object.keys(Jd))nL[Jd[e]]=e;const Ye={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};var rL=Ye;for(const e of Object.keys(Ye)){if(!("channels"in Ye[e]))throw new Error("missing channels property: "+e);if(!("labels"in Ye[e]))throw new Error("missing channel labels property: "+e);if(Ye[e].labels.length!==Ye[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:n}=Ye[e];delete Ye[e].channels,delete Ye[e].labels,Object.defineProperty(Ye[e],"channels",{value:t}),Object.defineProperty(Ye[e],"labels",{value:n})}Ye.rgb.hsl=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,s=Math.min(t,n,r),o=Math.max(t,n,r),a=o-s;let i,l;o===s?i=0:t===o?i=(n-r)/a:n===o?i=2+(r-t)/a:r===o&&(i=4+(t-n)/a),i=Math.min(i*60,360),i<0&&(i+=360);const f=(s+o)/2;return o===s?l=0:f<=.5?l=a/(o+s):l=a/(2-o-s),[i,l*100,f*100]};Ye.rgb.hsv=function(e){let t,n,r,s,o;const a=e[0]/255,i=e[1]/255,l=e[2]/255,f=Math.max(a,i,l),d=f-Math.min(a,i,l),p=function(g){return(f-g)/6/d+1/2};return d===0?(s=0,o=0):(o=d/f,t=p(a),n=p(i),r=p(l),a===f?s=r-n:i===f?s=1/3+t-r:l===f&&(s=2/3+n-t),s<0?s+=1:s>1&&(s-=1)),[s*360,o*100,f*100]};Ye.rgb.hwb=function(e){const t=e[0],n=e[1];let r=e[2];const s=Ye.rgb.hsl(e)[0],o=1/255*Math.min(t,Math.min(n,r));return r=1-1/255*Math.max(t,Math.max(n,r)),[s,o*100,r*100]};Ye.rgb.cmyk=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,s=Math.min(1-t,1-n,1-r),o=(1-t-s)/(1-s)||0,a=(1-n-s)/(1-s)||0,i=(1-r-s)/(1-s)||0;return[o*100,a*100,i*100,s*100]};function ZQ(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}Ye.rgb.keyword=function(e){const t=nL[e];if(t)return t;let n=1/0,r;for(const s of Object.keys(Jd)){const o=Jd[s],a=ZQ(e,o);a<n&&(n=a,r=s)}return r};Ye.keyword.rgb=function(e){return Jd[e]};Ye.rgb.xyz=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;const s=t*.4124+n*.3576+r*.1805,o=t*.2126+n*.7152+r*.0722,a=t*.0193+n*.1192+r*.9505;return[s*100,o*100,a*100]};Ye.rgb.lab=function(e){const t=Ye.rgb.xyz(e);let n=t[0],r=t[1],s=t[2];n/=95.047,r/=100,s/=108.883,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;const o=116*r-16,a=500*(n-r),i=200*(r-s);return[o,a,i]};Ye.hsl.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;let s,o,a;if(n===0)return a=r*255,[a,a,a];r<.5?s=r*(1+n):s=r+n-r*n;const i=2*r-s,l=[0,0,0];for(let f=0;f<3;f++)o=t+1/3*-(f-1),o<0&&o++,o>1&&o--,6*o<1?a=i+(s-i)*6*o:2*o<1?a=s:3*o<2?a=i+(s-i)*(2/3-o)*6:a=i,l[f]=a*255;return l};Ye.hsl.hsv=function(e){const t=e[0];let n=e[1]/100,r=e[2]/100,s=n;const o=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,s*=o<=1?o:2-o;const a=(r+n)/2,i=r===0?2*s/(o+s):2*n/(r+n);return[t,i*100,a*100]};Ye.hsv.rgb=function(e){const t=e[0]/60,n=e[1]/100;let r=e[2]/100;const s=Math.floor(t)%6,o=t-Math.floor(t),a=255*r*(1-n),i=255*r*(1-n*o),l=255*r*(1-n*(1-o));switch(r*=255,s){case 0:return[r,l,a];case 1:return[i,r,a];case 2:return[a,r,l];case 3:return[a,i,r];case 4:return[l,a,r];case 5:return[r,a,i]}};Ye.hsv.hsl=function(e){const t=e[0],n=e[1]/100,r=e[2]/100,s=Math.max(r,.01);let o,a;a=(2-n)*r;const i=(2-n)*s;return o=n*s,o/=i<=1?i:2-i,o=o||0,a/=2,[t,o*100,a*100]};Ye.hwb.rgb=function(e){const t=e[0]/360;let n=e[1]/100,r=e[2]/100;const s=n+r;let o;s>1&&(n/=s,r/=s);const a=Math.floor(6*t),i=1-r;o=6*t-a,(a&1)!==0&&(o=1-o);const l=n+o*(i-n);let f,d,p;switch(a){default:case 6:case 0:f=i,d=l,p=n;break;case 1:f=l,d=i,p=n;break;case 2:f=n,d=i,p=l;break;case 3:f=n,d=l,p=i;break;case 4:f=l,d=n,p=i;break;case 5:f=i,d=n,p=l;break}return[f*255,d*255,p*255]};Ye.cmyk.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100,s=e[3]/100,o=1-Math.min(1,t*(1-s)+s),a=1-Math.min(1,n*(1-s)+s),i=1-Math.min(1,r*(1-s)+s);return[o*255,a*255,i*255]};Ye.xyz.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100;let s,o,a;return s=t*3.2406+n*-1.5372+r*-.4986,o=t*-.9689+n*1.8758+r*.0415,a=t*.0557+n*-.204+r*1.057,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),a=Math.min(Math.max(0,a),1),[s*255,o*255,a*255]};Ye.xyz.lab=function(e){let t=e[0],n=e[1],r=e[2];t/=95.047,n/=100,r/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;const s=116*n-16,o=500*(t-n),a=200*(n-r);return[s,o,a]};Ye.lab.xyz=function(e){const t=e[0],n=e[1],r=e[2];let s,o,a;o=(t+16)/116,s=n/500+o,a=o-r/200;const i=o**3,l=s**3,f=a**3;return o=i>.008856?i:(o-16/116)/7.787,s=l>.008856?l:(s-16/116)/7.787,a=f>.008856?f:(a-16/116)/7.787,s*=95.047,o*=100,a*=108.883,[s,o,a]};Ye.lab.lch=function(e){const t=e[0],n=e[1],r=e[2];let s;s=Math.atan2(r,n)*360/2/Math.PI,s<0&&(s+=360);const a=Math.sqrt(n*n+r*r);return[t,a,s]};Ye.lch.lab=function(e){const t=e[0],n=e[1],s=e[2]/360*2*Math.PI,o=n*Math.cos(s),a=n*Math.sin(s);return[t,o,a]};Ye.rgb.ansi16=function(e,t=null){const[n,r,s]=e;let o=t===null?Ye.rgb.hsv(e)[2]:t;if(o=Math.round(o/50),o===0)return 30;let a=30+(Math.round(s/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return o===2&&(a+=60),a};Ye.hsv.ansi16=function(e){return Ye.rgb.ansi16(Ye.hsv.rgb(e),e[2])};Ye.rgb.ansi256=function(e){const t=e[0],n=e[1],r=e[2];return t===n&&n===r?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)};Ye.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const n=(~~(e>50)+1)*.5,r=(t&1)*n*255,s=(t>>1&1)*n*255,o=(t>>2&1)*n*255;return[r,s,o]};Ye.ansi256.rgb=function(e){if(e>=232){const o=(e-232)*10+8;return[o,o,o]}e-=16;let t;const n=Math.floor(e/36)/5*255,r=Math.floor((t=e%36)/6)/5*255,s=t%6/5*255;return[n,r,s]};Ye.rgb.hex=function(e){const n=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".substring(n.length)+n};Ye.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let n=t[0];t[0].length===3&&(n=n.split("").map(i=>i+i).join(""));const r=parseInt(n,16),s=r>>16&255,o=r>>8&255,a=r&255;return[s,o,a]};Ye.rgb.hcg=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,s=Math.max(Math.max(t,n),r),o=Math.min(Math.min(t,n),r),a=s-o;let i,l;return a<1?i=o/(1-a):i=0,a<=0?l=0:s===t?l=(n-r)/a%6:s===n?l=2+(r-t)/a:l=4+(t-n)/a,l/=6,l%=1,[l*360,a*100,i*100]};Ye.hsl.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=n<.5?2*t*n:2*t*(1-n);let s=0;return r<1&&(s=(n-.5*r)/(1-r)),[e[0],r*100,s*100]};Ye.hsv.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=t*n;let s=0;return r<1&&(s=(n-r)/(1-r)),[e[0],r*100,s*100]};Ye.hcg.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;if(n===0)return[r*255,r*255,r*255];const s=[0,0,0],o=t%1*6,a=o%1,i=1-a;let l=0;switch(Math.floor(o)){case 0:s[0]=1,s[1]=a,s[2]=0;break;case 1:s[0]=i,s[1]=1,s[2]=0;break;case 2:s[0]=0,s[1]=1,s[2]=a;break;case 3:s[0]=0,s[1]=i,s[2]=1;break;case 4:s[0]=a,s[1]=0,s[2]=1;break;default:s[0]=1,s[1]=0,s[2]=i}return l=(1-n)*r,[(n*s[0]+l)*255,(n*s[1]+l)*255,(n*s[2]+l)*255]};Ye.hcg.hsv=function(e){const t=e[1]/100,n=e[2]/100,r=t+n*(1-t);let s=0;return r>0&&(s=t/r),[e[0],s*100,r*100]};Ye.hcg.hsl=function(e){const t=e[1]/100,r=e[2]/100*(1-t)+.5*t;let s=0;return r>0&&r<.5?s=t/(2*r):r>=.5&&r<1&&(s=t/(2*(1-r))),[e[0],s*100,r*100]};Ye.hcg.hwb=function(e){const t=e[1]/100,n=e[2]/100,r=t+n*(1-t);return[e[0],(r-t)*100,(1-r)*100]};Ye.hwb.hcg=function(e){const t=e[1]/100,r=1-e[2]/100,s=r-t;let o=0;return s<1&&(o=(r-s)/(1-s)),[e[0],s*100,o*100]};Ye.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};Ye.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};Ye.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};Ye.gray.hsl=function(e){return[0,0,e[0]]};Ye.gray.hsv=Ye.gray.hsl;Ye.gray.hwb=function(e){return[0,100,e[0]]};Ye.gray.cmyk=function(e){return[0,0,0,e[0]]};Ye.gray.lab=function(e){return[e[0],0,0]};Ye.gray.hex=function(e){const t=Math.round(e[0]/100*255)&255,r=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(r.length)+r};Ye.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]};const Zg=rL;function QQ(){const e={},t=Object.keys(Zg);for(let n=t.length,r=0;r<n;r++)e[t[r]]={distance:-1,parent:null};return e}function eee(e){const t=QQ(),n=[e];for(t[e].distance=0;n.length;){const r=n.pop(),s=Object.keys(Zg[r]);for(let o=s.length,a=0;a<o;a++){const i=s[a],l=t[i];l.distance===-1&&(l.distance=t[r].distance+1,l.parent=r,n.unshift(i))}}return t}function tee(e,t){return function(n){return t(e(n))}}function nee(e,t){const n=[t[e].parent,e];let r=Zg[t[e].parent][e],s=t[e].parent;for(;t[s].parent;)n.unshift(t[s].parent),r=tee(Zg[t[s].parent][s],r),s=t[s].parent;return r.conversion=n,r}var ree=function(e){const t=eee(e),n={},r=Object.keys(t);for(let s=r.length,o=0;o<s;o++){const a=r[o];t[a].parent!==null&&(n[a]=nee(a,t))}return n};const SE=rL,see=ree,Ql={},oee=Object.keys(SE);function aee(e){const t=function(...n){const r=n[0];return r==null?r:(r.length>1&&(n=r),e(n))};return"conversion"in e&&(t.conversion=e.conversion),t}function iee(e){const t=function(...n){const r=n[0];if(r==null)return r;r.length>1&&(n=r);const s=e(n);if(typeof s=="object")for(let o=s.length,a=0;a<o;a++)s[a]=Math.round(s[a]);return s};return"conversion"in e&&(t.conversion=e.conversion),t}oee.forEach(e=>{Ql[e]={},Object.defineProperty(Ql[e],"channels",{value:SE[e].channels}),Object.defineProperty(Ql[e],"labels",{value:SE[e].labels});const t=see(e);Object.keys(t).forEach(r=>{const s=t[r];Ql[e][r]=iee(s),Ql[e][r].raw=aee(s)})});var cee=Ql;const eu=XQ,ls=cee,sL=["keyword","gray","hex"],CE={};for(const e of Object.keys(ls))CE[[...ls[e].labels].sort().join("")]=e;const Qg={};function sr(e,t){if(!(this instanceof sr))return new sr(e,t);if(t&&t in sL&&(t=null),t&&!(t in ls))throw new Error("Unknown model: "+t);let n,r;if(e==null)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof sr)this.model=e.model,this.color=[...e.color],this.valpha=e.valpha;else if(typeof e=="string"){const s=eu.get(e);if(s===null)throw new Error("Unable to parse color from string: "+e);this.model=s.model,r=ls[this.model].channels,this.color=s.value.slice(0,r),this.valpha=typeof s.value[r]=="number"?s.value[r]:1}else if(e.length>0){this.model=t||"rgb",r=ls[this.model].channels;const s=Array.prototype.slice.call(e,0,r);this.color=xE(s,r),this.valpha=typeof e[r]=="number"?e[r]:1}else if(typeof e=="number")this.model="rgb",this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;const s=Object.keys(e);"alpha"in e&&(s.splice(s.indexOf("alpha"),1),this.valpha=typeof e.alpha=="number"?e.alpha:0);const o=s.sort().join("");if(!(o in CE))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=CE[o];const{labels:a}=ls[this.model],i=[];for(n=0;n<a.length;n++)i.push(e[a[n]]);this.color=xE(i)}if(Qg[this.model])for(r=ls[this.model].channels,n=0;n<r;n++){const s=Qg[this.model][n];s&&(this.color[n]=s(this.color[n]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}sr.prototype={toString(){return this.string()},toJSON(){return this[this.model]()},string(e){let t=this.model in eu.to?this:this.rgb();t=t.round(typeof e=="number"?e:1);const n=t.valpha===1?t.color:[...t.color,this.valpha];return eu.to[t.model](n)},percentString(e){const t=this.rgb().round(typeof e=="number"?e:1),n=t.valpha===1?t.color:[...t.color,this.valpha];return eu.to.rgb.percent(n)},array(){return this.valpha===1?[...this.color]:[...this.color,this.valpha]},object(){const e={},{channels:t}=ls[this.model],{labels:n}=ls[this.model];for(let r=0;r<t;r++)e[n[r]]=this.color[r];return this.valpha!==1&&(e.alpha=this.valpha),e},unitArray(){const e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,this.valpha!==1&&e.push(this.valpha),e},unitObject(){const e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,this.valpha!==1&&(e.alpha=this.valpha),e},round(e){return e=Math.max(e||0,0),new sr([...this.color.map(uee(e)),this.valpha],this.model)},alpha(e){return e!==void 0?new sr([...this.color,Math.max(0,Math.min(1,e))],this.model):this.valpha},red:An("rgb",0,Yn(255)),green:An("rgb",1,Yn(255)),blue:An("rgb",2,Yn(255)),hue:An(["hsl","hsv","hsl","hwb","hcg"],0,e=>(e%360+360)%360),saturationl:An("hsl",1,Yn(100)),lightness:An("hsl",2,Yn(100)),saturationv:An("hsv",1,Yn(100)),value:An("hsv",2,Yn(100)),chroma:An("hcg",1,Yn(100)),gray:An("hcg",2,Yn(100)),white:An("hwb",1,Yn(100)),wblack:An("hwb",2,Yn(100)),cyan:An("cmyk",0,Yn(100)),magenta:An("cmyk",1,Yn(100)),yellow:An("cmyk",2,Yn(100)),black:An("cmyk",3,Yn(100)),x:An("xyz",0,Yn(95.047)),y:An("xyz",1,Yn(100)),z:An("xyz",2,Yn(108.833)),l:An("lab",0,Yn(100)),a:An("lab",1),b:An("lab",2),keyword(e){return e!==void 0?new sr(e):ls[this.model].keyword(this.color)},hex(e){return e!==void 0?new sr(e):eu.to.hex(this.rgb().round().color)},hexa(e){if(e!==void 0)return new sr(e);const t=this.rgb().round().color;let n=Math.round(this.valpha*255).toString(16).toUpperCase();return n.length===1&&(n="0"+n),eu.to.hex(t)+n},rgbNumber(){const e=this.rgb().color;return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255},luminosity(){const e=this.rgb().color,t=[];for(const[n,r]of e.entries()){const s=r/255;t[n]=s<=.04045?s/12.92:((s+.055)/1.055)**2.4}return .2126*t[0]+.7152*t[1]+.0722*t[2]},contrast(e){const t=this.luminosity(),n=e.luminosity();return t>n?(t+.05)/(n+.05):(n+.05)/(t+.05)},level(e){const t=this.contrast(e);return t>=7?"AAA":t>=4.5?"AA":""},isDark(){const e=this.rgb().color;return(e[0]*2126+e[1]*7152+e[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){const e=this.rgb();for(let t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten(e){const t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken(e){const t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate(e){const t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate(e){const t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten(e){const t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken(e){const t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale(){const e=this.rgb().color,t=e[0]*.3+e[1]*.59+e[2]*.11;return sr.rgb(t,t,t)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){const t=this.hsl();let n=t.color[0];return n=(n+e)%360,n=n<0?360+n:n,t.color[0]=n,t},mix(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);const n=e.rgb(),r=this.rgb(),s=t===void 0?.5:t,o=2*s-1,a=n.alpha()-r.alpha(),i=((o*a===-1?o:(o+a)/(1+o*a))+1)/2,l=1-i;return sr.rgb(i*n.red()+l*r.red(),i*n.green()+l*r.green(),i*n.blue()+l*r.blue(),n.alpha()*s+r.alpha()*(1-s))}};for(const e of Object.keys(ls)){if(sL.includes(e))continue;const{channels:t}=ls[e];sr.prototype[e]=function(...n){return this.model===e?new sr(this):n.length>0?new sr(n,e):new sr([...fee(ls[this.model][e].raw(this.color)),this.valpha],e)},sr[e]=function(...n){let r=n[0];return typeof r=="number"&&(r=xE(n,t)),new sr(r,e)}}function lee(e,t){return Number(e.toFixed(t))}function uee(e){return function(t){return lee(t,e)}}function An(e,t,n){e=Array.isArray(e)?e:[e];for(const r of e)(Qg[r]||(Qg[r]=[]))[t]=n;return e=e[0],function(r){let s;return r!==void 0?(n&&(r=n(r)),s=this[e](),s.color[t]=r,s):(s=this[e]().color[t],n&&(s=n(s)),s)}}function Yn(e){return function(t){return Math.max(0,Math.min(e,t))}}function fee(e){return Array.isArray(e)?e:[e]}function xE(e,t){for(let n=0;n<t;n++)typeof e[n]!="number"&&(e[n]=0);return e}var dee=sr;const sP=xn(dee);var hee="[object Symbol]";function kh(e){return typeof e=="symbol"||ps(e)&&Ha(e)==hee}function hy(e,t){for(var n=-1,r=e==null?0:e.length,s=Array(r);++n<r;)s[n]=t(e[n],n,e);return s}var Un=Array.isArray,oP=Ls?Ls.prototype:void 0,aP=oP?oP.toString:void 0;function oL(e){if(typeof e=="string")return e;if(Un(e))return hy(e,oL)+"";if(kh(e))return aP?aP.call(e):"";var t=e+"";return t=="0"&&1/e==-1/0?"-0":t}var pee=/\s/;function mee(e){for(var t=e.length;t--&&pee.test(e.charAt(t)););return t}var gee=/^\s+/;function vee(e){return e&&e.slice(0,mee(e)+1).replace(gee,"")}function ln(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var iP=NaN,yee=/^[-+]0x[0-9a-f]+$/i,bee=/^0b[01]+$/i,$ee=/^0o[0-7]+$/i,Eee=parseInt;function wee(e){if(typeof e=="number")return e;if(kh(e))return iP;if(ln(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=ln(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=vee(e);var n=bee.test(e);return n||$ee.test(e)?Eee(e.slice(2),n?2:8):yee.test(e)?iP:+e}var cP=1/0,_ee=17976931348623157e292;function See(e){if(!e)return e===0?e:0;if(e=wee(e),e===cP||e===-cP){var t=e<0?-1:1;return t*_ee}return e===e?e:0}function TE(e){var t=See(e),n=t%1;return t===t?n?t-n:t:0}function Dh(e){return e}var Cee="[object AsyncFunction]",xee="[object Function]",Tee="[object GeneratorFunction]",Oee="[object Proxy]";function py(e){if(!ln(e))return!1;var t=Ha(e);return t==xee||t==Tee||t==Cee||t==Oee}var L0=Xr["__core-js_shared__"],lP=(function(){var e=/[^.]+$/.exec(L0&&L0.keys&&L0.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();function Nee(e){return!!lP&&lP in e}var Pee=Function.prototype,Aee=Pee.toString;function Yc(e){if(e!=null){try{return Aee.call(e)}catch{}try{return e+""}catch{}}return""}var Iee=/[\\^$.*+?()[\]{}|]/g,Ree=/^\[object .+?Constructor\]$/,kee=Function.prototype,Dee=Object.prototype,Mee=kee.toString,Lee=Dee.hasOwnProperty,Fee=RegExp("^"+Mee.call(Lee).replace(Iee,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function jee(e){if(!ln(e)||Nee(e))return!1;var t=py(e)?Fee:Ree;return t.test(Yc(e))}function qee(e,t){return e?.[t]}function Kc(e,t){var n=qee(e,t);return jee(n)?n:void 0}var Xd=Kc(Xr,"WeakMap"),ev=Xd&&new Xd,aL=ev?function(e,t){return ev.set(e,t),e}:Dh,uP=Object.create,Mh=(function(){function e(){}return function(t){if(!ln(t))return{};if(uP)return uP(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}})();function Zd(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=Mh(e.prototype),r=e.apply(n,t);return ln(r)?r:n}}var Uee=1;function Bee(e,t,n){var r=t&Uee,s=Zd(e);function o(){var a=this&&this!==Xr&&this instanceof o?s:e;return a.apply(r?n:this,arguments)}return o}function q_(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var Vee=Math.max;function iL(e,t,n,r){for(var s=-1,o=e.length,a=n.length,i=-1,l=t.length,f=Vee(o-a,0),d=Array(l+f),p=!r;++i<l;)d[i]=t[i];for(;++s<a;)(p||s<o)&&(d[n[s]]=e[s]);for(;f--;)d[i++]=e[s++];return d}var Hee=Math.max;function cL(e,t,n,r){for(var s=-1,o=e.length,a=-1,i=n.length,l=-1,f=t.length,d=Hee(o-i,0),p=Array(d+f),g=!r;++s<d;)p[s]=e[s];for(var m=s;++l<f;)p[m+l]=t[l];for(;++a<i;)(g||s<o)&&(p[m+n[a]]=e[s++]);return p}function zee(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}function U_(){}var Gee=4294967295;function Cu(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Gee,this.__views__=[]}Cu.prototype=Mh(U_.prototype);Cu.prototype.constructor=Cu;function lL(){}var uL=ev?function(e){return ev.get(e)}:lL,fP={},Wee=Object.prototype,Yee=Wee.hasOwnProperty;function Kee(e){for(var t=e.name+"",n=fP[t],r=Yee.call(fP,t)?n.length:0;r--;){var s=n[r],o=s.func;if(o==null||o==e)return s.name}return t}function xu(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}xu.prototype=Mh(U_.prototype);xu.prototype.constructor=xu;function Lh(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}function Jee(e){if(e instanceof Cu)return e.clone();var t=new xu(e.__wrapped__,e.__chain__);return t.__actions__=Lh(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}var Xee=Object.prototype,Zee=Xee.hasOwnProperty;function tv(e){if(ps(e)&&!Un(e)&&!(e instanceof Cu)){if(e instanceof xu)return e;if(Zee.call(e,"__wrapped__"))return Jee(e)}return new xu(e)}tv.prototype=U_.prototype;tv.prototype.constructor=tv;function Qee(e){var t=Kee(e),n=tv[t];if(typeof n!="function"||!(t in Cu.prototype))return!1;if(e===n)return!0;var r=uL(n);return!!r&&e===r[0]}var ete=800,tte=16,nte=Date.now;function fL(e){var t=0,n=0;return function(){var r=nte(),s=tte-(r-n);if(n=r,s>0){if(++t>=ete)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var dL=fL(aL),rte=/\{\n\/\* \[wrapped with (.+)\] \*/,ste=/,? & /;function ote(e){var t=e.match(rte);return t?t[1].split(ste):[]}var ate=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function ite(e,t){var n=t.length;if(!n)return e;var r=n-1;return t[r]=(n>1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(ate,`{
82
82
  /* [wrapped with `+t+`] */
83
83
  `)}function cte(e){return function(){return e}}var nv=(function(){try{var e=Kc(Object,"defineProperty");return e({},"",{}),e}catch{}})(),lte=nv?function(e,t){return nv(e,"toString",{configurable:!0,enumerable:!1,value:cte(t),writable:!0})}:Dh,B_=fL(lte);function my(e,t){for(var n=-1,r=e==null?0:e.length;++n<r&&t(e[n],n,e)!==!1;);return e}function ute(e,t,n,r){for(var s=e.length,o=n+-1;++o<s;)if(t(e[o],o,e))return o;return-1}function fte(e){return e!==e}function dte(e,t,n){for(var r=n-1,s=e.length;++r<s;)if(e[r]===t)return r;return-1}function hte(e,t,n){return t===t?dte(e,t,n):ute(e,fte,n)}function V_(e,t){var n=e==null?0:e.length;return!!n&&hte(e,t,0)>-1}var pte=1,mte=2,gte=8,vte=16,yte=32,bte=64,$te=128,Ete=256,wte=512,_te=[["ary",$te],["bind",pte],["bindKey",mte],["curry",gte],["curryRight",vte],["flip",wte],["partial",yte],["partialRight",bte],["rearg",Ete]];function Ste(e,t){return my(_te,function(n){var r="_."+n[0];t&n[1]&&!V_(e,r)&&e.push(r)}),e.sort()}function hL(e,t,n){var r=t+"";return B_(e,ite(r,Ste(ote(r),n)))}var Cte=4,xte=8,dP=32,hP=64;function pL(e,t,n,r,s,o,a,i,l,f){var d=t&xte,p=d?a:void 0,g=d?void 0:a,m=d?o:void 0,y=d?void 0:o;t|=d?dP:hP,t&=~(d?hP:dP),t&Cte||(t&=-4);var $=[e,t,s,m,p,y,g,i,l,f],E=n.apply(void 0,$);return Qee(e)&&dL(E,$),E.placeholder=r,hL(E,e,t)}function mL(e){var t=e;return t.placeholder}var Tte=9007199254740991,Ote=/^(?:0|[1-9]\d*)$/;function Fh(e,t){var n=typeof e;return t=t??Tte,!!t&&(n=="number"||n!="symbol"&&Ote.test(e))&&e>-1&&e%1==0&&e<t}var Nte=Math.min;function Pte(e,t){for(var n=e.length,r=Nte(t.length,n),s=Lh(e);r--;){var o=t[r];e[r]=Fh(o,n)?s[o]:void 0}return e}var pP="__lodash_placeholder__";function rv(e,t){for(var n=-1,r=e.length,s=0,o=[];++n<r;){var a=e[n];(a===t||a===pP)&&(e[n]=pP,o[s++]=n)}return o}var Ate=1,Ite=2,Rte=8,kte=16,Dte=128,Mte=512;function H_(e,t,n,r,s,o,a,i,l,f){var d=t&Dte,p=t&Ate,g=t&Ite,m=t&(Rte|kte),y=t&Mte,$=g?void 0:Zd(e);function E(){for(var v=arguments.length,w=Array(v),C=v;C--;)w[C]=arguments[C];if(m)var N=mL(E),T=zee(w,N);if(r&&(w=iL(w,r,s,m)),o&&(w=cL(w,o,a,m)),v-=T,m&&v<f){var j=rv(w,N);return pL(e,t,H_,E.placeholder,n,w,j,i,l,f-v)}var U=p?n:this,te=g?U[e]:e;return v=w.length,i?w=Pte(w,i):y&&v>1&&w.reverse(),d&&l<v&&(w.length=l),this&&this!==Xr&&this instanceof E&&(te=$||Zd(te)),te.apply(U,w)}return E}function Lte(e,t,n){var r=Zd(e);function s(){for(var o=arguments.length,a=Array(o),i=o,l=mL(s);i--;)a[i]=arguments[i];var f=o<3&&a[0]!==l&&a[o-1]!==l?[]:rv(a,l);if(o-=f.length,o<n)return pL(e,t,H_,s.placeholder,void 0,a,f,void 0,void 0,n-o);var d=this&&this!==Xr&&this instanceof s?r:e;return q_(d,this,a)}return s}var Fte=1;function jte(e,t,n,r){var s=t&Fte,o=Zd(e);function a(){for(var i=-1,l=arguments.length,f=-1,d=r.length,p=Array(d+l),g=this&&this!==Xr&&this instanceof a?o:e;++f<d;)p[f]=r[f];for(;l--;)p[f++]=arguments[++i];return q_(g,s?n:this,p)}return a}var mP="__lodash_placeholder__",F0=1,qte=2,Ute=4,gP=8,rd=128,vP=256,Bte=Math.min;function Vte(e,t){var n=e[1],r=t[1],s=n|r,o=s<(F0|qte|rd),a=r==rd&&n==gP||r==rd&&n==vP&&e[7].length<=t[8]||r==(rd|vP)&&t[7].length<=t[8]&&n==gP;if(!(o||a))return e;r&F0&&(e[2]=t[2],s|=n&F0?0:Ute);var i=t[3];if(i){var l=e[3];e[3]=l?iL(l,i,t[4]):i,e[4]=l?rv(e[3],mP):t[4]}return i=t[5],i&&(l=e[5],e[5]=l?cL(l,i,t[6]):i,e[6]=l?rv(e[5],mP):t[6]),i=t[7],i&&(e[7]=i),r&rd&&(e[8]=e[8]==null?t[8]:Bte(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=s,e}var Hte="Expected a function",yP=1,zte=2,bP=8,$P=16,EP=32,Gte=64,wP=Math.max;function Wte(e,t,n,r,s,o,a,i){var l=t&zte;if(!l&&typeof e!="function")throw new TypeError(Hte);var f=r?r.length:0;if(f||(t&=-97,r=s=void 0),a=a===void 0?a:wP(TE(a),0),i=i===void 0?i:TE(i),f-=s?s.length:0,t&Gte){var d=r,p=s;r=s=void 0}var g=l?void 0:uL(e),m=[e,t,n,r,s,d,p,o,a,i];if(g&&Vte(m,g),e=m[0],t=m[1],n=m[2],r=m[3],s=m[4],i=m[9]=m[9]===void 0?l?0:e.length:wP(m[9]-f,0),!i&&t&(bP|$P)&&(t&=-25),!t||t==yP)var y=Bee(e,t,n);else t==bP||t==$P?y=Lte(e,t,i):(t==EP||t==(yP|EP))&&!s.length?y=jte(e,t,n,r):y=H_.apply(void 0,m);var $=g?aL:dL;return hL($(y,m),e,t)}function z_(e,t,n){t=="__proto__"&&nv?nv(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function jh(e,t){return e===t||e!==e&&t!==t}var Yte=Object.prototype,Kte=Yte.hasOwnProperty;function G_(e,t,n){var r=e[t];(!(Kte.call(e,t)&&jh(r,n))||n===void 0&&!(t in e))&&z_(e,t,n)}function Gu(e,t,n,r){var s=!n;n||(n={});for(var o=-1,a=t.length;++o<a;){var i=t[o],l=void 0;l===void 0&&(l=e[i]),s?z_(n,i,l):G_(n,i,l)}return n}var _P=Math.max;function gL(e,t,n){return t=_P(t===void 0?e.length-1:t,0),function(){for(var r=arguments,s=-1,o=_P(r.length-t,0),a=Array(o);++s<o;)a[s]=r[t+s];s=-1;for(var i=Array(t+1);++s<t;)i[s]=r[s];return i[t]=n(a),q_(e,this,i)}}function W_(e,t){return B_(gL(e,t,Dh),e+"")}var Jte=9007199254740991;function Y_(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Jte}function Wu(e){return e!=null&&Y_(e.length)&&!py(e)}function Xte(e,t,n){if(!ln(n))return!1;var r=typeof t;return(r=="number"?Wu(n)&&Fh(t,n.length):r=="string"&&t in n)?jh(n[t],e):!1}function Zte(e){return W_(function(t,n){var r=-1,s=n.length,o=s>1?n[s-1]:void 0,a=s>2?n[2]:void 0;for(o=e.length>3&&typeof o=="function"?(s--,o):void 0,a&&Xte(n[0],n[1],a)&&(o=s<3?void 0:o,s=1),t=Object(t);++r<s;){var i=n[r];i&&e(t,i,r,o)}return t})}var Qte=Object.prototype;function gy(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||Qte;return e===n}function vL(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var ene="[object Arguments]";function SP(e){return ps(e)&&Ha(e)==ene}var yL=Object.prototype,tne=yL.hasOwnProperty,nne=yL.propertyIsEnumerable,Tu=SP((function(){return arguments})())?SP:function(e){return ps(e)&&tne.call(e,"callee")&&!nne.call(e,"callee")};function rne(){return!1}var bL=typeof exports=="object"&&exports&&!exports.nodeType&&exports,CP=bL&&typeof module=="object"&&module&&!module.nodeType&&module,sne=CP&&CP.exports===bL,xP=sne?Xr.Buffer:void 0,one=xP?xP.isBuffer:void 0,kc=one||rne,ane="[object Arguments]",ine="[object Array]",cne="[object Boolean]",lne="[object Date]",une="[object Error]",fne="[object Function]",dne="[object Map]",hne="[object Number]",pne="[object Object]",mne="[object RegExp]",gne="[object Set]",vne="[object String]",yne="[object WeakMap]",bne="[object ArrayBuffer]",$ne="[object DataView]",Ene="[object Float32Array]",wne="[object Float64Array]",_ne="[object Int8Array]",Sne="[object Int16Array]",Cne="[object Int32Array]",xne="[object Uint8Array]",Tne="[object Uint8ClampedArray]",One="[object Uint16Array]",Nne="[object Uint32Array]",pn={};pn[Ene]=pn[wne]=pn[_ne]=pn[Sne]=pn[Cne]=pn[xne]=pn[Tne]=pn[One]=pn[Nne]=!0;pn[ane]=pn[ine]=pn[bne]=pn[cne]=pn[$ne]=pn[lne]=pn[une]=pn[fne]=pn[dne]=pn[hne]=pn[pne]=pn[mne]=pn[gne]=pn[vne]=pn[yne]=!1;function Pne(e){return ps(e)&&Y_(e.length)&&!!pn[Ha(e)]}function K_(e){return function(t){return e(t)}}var $L=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Td=$L&&typeof module=="object"&&module&&!module.nodeType&&module,Ane=Td&&Td.exports===$L,j0=Ane&&WM.process,Ou=(function(){try{var e=Td&&Td.require&&Td.require("util").types;return e||j0&&j0.binding&&j0.binding("util")}catch{}})(),TP=Ou&&Ou.isTypedArray,qh=TP?K_(TP):Pne,Ine=Object.prototype,Rne=Ine.hasOwnProperty;function EL(e,t){var n=Un(e),r=!n&&Tu(e),s=!n&&!r&&kc(e),o=!n&&!r&&!s&&qh(e),a=n||r||s||o,i=a?vL(e.length,String):[],l=i.length;for(var f in e)(t||Rne.call(e,f))&&!(a&&(f=="length"||s&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||Fh(f,l)))&&i.push(f);return i}var kne=KM(Object.keys,Object),Dne=Object.prototype,Mne=Dne.hasOwnProperty;function wL(e){if(!gy(e))return kne(e);var t=[];for(var n in Object(e))Mne.call(e,n)&&n!="constructor"&&t.push(n);return t}function Ao(e){return Wu(e)?EL(e):wL(e)}function Lne(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var Fne=Object.prototype,jne=Fne.hasOwnProperty;function qne(e){if(!ln(e))return Lne(e);var t=gy(e),n=[];for(var r in e)r=="constructor"&&(t||!jne.call(e,r))||n.push(r);return n}function Uh(e){return Wu(e)?EL(e,!0):qne(e)}var Une=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Bne=/^\w*$/;function J_(e,t){if(Un(e))return!1;var n=typeof e;return n=="number"||n=="symbol"||n=="boolean"||e==null||kh(e)?!0:Bne.test(e)||!Une.test(e)||t!=null&&e in Object(t)}var Qd=Kc(Object,"create");function Vne(){this.__data__=Qd?Qd(null):{},this.size=0}function Hne(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var zne="__lodash_hash_undefined__",Gne=Object.prototype,Wne=Gne.hasOwnProperty;function Yne(e){var t=this.__data__;if(Qd){var n=t[e];return n===zne?void 0:n}return Wne.call(t,e)?t[e]:void 0}var Kne=Object.prototype,Jne=Kne.hasOwnProperty;function Xne(e){var t=this.__data__;return Qd?t[e]!==void 0:Jne.call(t,e)}var Zne="__lodash_hash_undefined__";function Qne(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=Qd&&t===void 0?Zne:t,this}function Dc(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Dc.prototype.clear=Vne;Dc.prototype.delete=Hne;Dc.prototype.get=Yne;Dc.prototype.has=Xne;Dc.prototype.set=Qne;function ere(){this.__data__=[],this.size=0}function vy(e,t){for(var n=e.length;n--;)if(jh(e[n][0],t))return n;return-1}var tre=Array.prototype,nre=tre.splice;function rre(e){var t=this.__data__,n=vy(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():nre.call(t,n,1),--this.size,!0}function sre(e){var t=this.__data__,n=vy(t,e);return n<0?void 0:t[n][1]}function ore(e){return vy(this.__data__,e)>-1}function are(e,t){var n=this.__data__,r=vy(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Ga(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Ga.prototype.clear=ere;Ga.prototype.delete=rre;Ga.prototype.get=sre;Ga.prototype.has=ore;Ga.prototype.set=are;var eh=Kc(Xr,"Map");function ire(){this.size=0,this.__data__={hash:new Dc,map:new(eh||Ga),string:new Dc}}function cre(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function yy(e,t){var n=e.__data__;return cre(t)?n[typeof t=="string"?"string":"hash"]:n.map}function lre(e){var t=yy(this,e).delete(e);return this.size-=t?1:0,t}function ure(e){return yy(this,e).get(e)}function fre(e){return yy(this,e).has(e)}function dre(e,t){var n=yy(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}function Wa(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Wa.prototype.clear=ire;Wa.prototype.delete=lre;Wa.prototype.get=ure;Wa.prototype.has=fre;Wa.prototype.set=dre;var hre="Expected a function";function X_(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(hre);var n=function(){var r=arguments,s=t?t.apply(this,r):r[0],o=n.cache;if(o.has(s))return o.get(s);var a=e.apply(this,r);return n.cache=o.set(s,a)||o,a};return n.cache=new(X_.Cache||Wa),n}X_.Cache=Wa;var pre=500;function mre(e){var t=X_(e,function(r){return n.size===pre&&n.clear(),r}),n=t.cache;return t}var gre=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,vre=/\\(\\)?/g,_L=mre(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(gre,function(n,r,s,o){t.push(s?o.replace(vre,"$1"):r||n)}),t});function Z_(e){return e==null?"":oL(e)}function Yu(e,t){return Un(e)?e:J_(e,t)?[e]:_L(Z_(e))}function Jc(e){if(typeof e=="string"||kh(e))return e;var t=e+"";return t=="0"&&1/e==-1/0?"-0":t}function by(e,t){t=Yu(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[Jc(t[n++])];return n&&n==r?e:void 0}function We(e,t,n){var r=e==null?void 0:by(e,t);return r===void 0?n:r}function Q_(e,t){for(var n=-1,r=t.length,s=e.length;++n<r;)e[s+n]=t[n];return e}var OP=Ls?Ls.isConcatSpreadable:void 0;function yre(e){return Un(e)||Tu(e)||!!(OP&&e&&e[OP])}function Bh(e,t,n,r,s){var o=-1,a=e.length;for(n||(n=yre),s||(s=[]);++o<a;){var i=e[o];t>0&&n(i)?t>1?Bh(i,t-1,n,r,s):Q_(s,i):r||(s[s.length]=i)}return s}function bre(e){var t=e==null?0:e.length;return t?Bh(e,1):[]}function SL(e){return B_(gL(e,void 0,bre),e+"")}function $re(e,t,n){var r=-1,s=e.length;t<0&&(t=-t>s?0:s+t),n=n>s?s:n,n<0&&(n+=s),s=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(s);++r<s;)o[r]=e[r+t];return o}function Ere(e,t,n,r){var s=-1,o=e==null?0:e.length;for(r&&o&&(n=e[++s]);++s<o;)n=t(n,e[s],s,e);return n}function wre(){this.__data__=new Ga,this.size=0}function _re(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function Sre(e){return this.__data__.get(e)}function Cre(e){return this.__data__.has(e)}var xre=200;function Tre(e,t){var n=this.__data__;if(n instanceof Ga){var r=n.__data__;if(!eh||r.length<xre-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Wa(r)}return n.set(e,t),this.size=n.size,this}function co(e){var t=this.__data__=new Ga(e);this.size=t.size}co.prototype.clear=wre;co.prototype.delete=_re;co.prototype.get=Sre;co.prototype.has=Cre;co.prototype.set=Tre;function Ore(e,t){return e&&Gu(t,Ao(t),e)}function Nre(e,t){return e&&Gu(t,Uh(t),e)}var CL=typeof exports=="object"&&exports&&!exports.nodeType&&exports,NP=CL&&typeof module=="object"&&module&&!module.nodeType&&module,Pre=NP&&NP.exports===CL,PP=Pre?Xr.Buffer:void 0,AP=PP?PP.allocUnsafe:void 0;function xL(e,t){if(t)return e.slice();var n=e.length,r=AP?AP(n):new e.constructor(n);return e.copy(r),r}function Are(e,t){for(var n=-1,r=e==null?0:e.length,s=0,o=[];++n<r;){var a=e[n];t(a,n,e)&&(o[s++]=a)}return o}function TL(){return[]}var Ire=Object.prototype,Rre=Ire.propertyIsEnumerable,IP=Object.getOwnPropertySymbols,e2=IP?function(e){return e==null?[]:(e=Object(e),Are(IP(e),function(t){return Rre.call(e,t)}))}:TL;function kre(e,t){return Gu(e,e2(e),t)}var Dre=Object.getOwnPropertySymbols,OL=Dre?function(e){for(var t=[];e;)Q_(t,e2(e)),e=ry(e);return t}:TL;function Mre(e,t){return Gu(e,OL(e),t)}function NL(e,t,n){var r=t(e);return Un(e)?r:Q_(r,n(e))}function OE(e){return NL(e,Ao,e2)}function t2(e){return NL(e,Uh,OL)}var NE=Kc(Xr,"DataView"),PE=Kc(Xr,"Promise"),fu=Kc(Xr,"Set"),RP="[object Map]",Lre="[object Object]",kP="[object Promise]",DP="[object Set]",MP="[object WeakMap]",LP="[object DataView]",Fre=Yc(NE),jre=Yc(eh),qre=Yc(PE),Ure=Yc(fu),Bre=Yc(Xd),As=Ha;(NE&&As(new NE(new ArrayBuffer(1)))!=LP||eh&&As(new eh)!=RP||PE&&As(PE.resolve())!=kP||fu&&As(new fu)!=DP||Xd&&As(new Xd)!=MP)&&(As=function(e){var t=Ha(e),n=t==Lre?e.constructor:void 0,r=n?Yc(n):"";if(r)switch(r){case Fre:return LP;case jre:return RP;case qre:return kP;case Ure:return DP;case Bre:return MP}return t});var Vre=Object.prototype,Hre=Vre.hasOwnProperty;function zre(e){var t=e.length,n=new e.constructor(t);return t&&typeof e[0]=="string"&&Hre.call(e,"index")&&(n.index=e.index,n.input=e.input),n}var sv=Xr.Uint8Array;function n2(e){var t=new e.constructor(e.byteLength);return new sv(t).set(new sv(e)),t}function Gre(e,t){var n=t?n2(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}var Wre=/\w*$/;function Yre(e){var t=new e.constructor(e.source,Wre.exec(e));return t.lastIndex=e.lastIndex,t}var FP=Ls?Ls.prototype:void 0,jP=FP?FP.valueOf:void 0;function Kre(e){return jP?Object(jP.call(e)):{}}function PL(e,t){var n=t?n2(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}var Jre="[object Boolean]",Xre="[object Date]",Zre="[object Map]",Qre="[object Number]",ese="[object RegExp]",tse="[object Set]",nse="[object String]",rse="[object Symbol]",sse="[object ArrayBuffer]",ose="[object DataView]",ase="[object Float32Array]",ise="[object Float64Array]",cse="[object Int8Array]",lse="[object Int16Array]",use="[object Int32Array]",fse="[object Uint8Array]",dse="[object Uint8ClampedArray]",hse="[object Uint16Array]",pse="[object Uint32Array]";function mse(e,t,n){var r=e.constructor;switch(t){case sse:return n2(e);case Jre:case Xre:return new r(+e);case ose:return Gre(e,n);case ase:case ise:case cse:case lse:case use:case fse:case dse:case hse:case pse:return PL(e,n);case Zre:return new r;case Qre:case nse:return new r(e);case ese:return Yre(e);case tse:return new r;case rse:return Kre(e)}}function AL(e){return typeof e.constructor=="function"&&!gy(e)?Mh(ry(e)):{}}var gse="[object Map]";function vse(e){return ps(e)&&As(e)==gse}var qP=Ou&&Ou.isMap,yse=qP?K_(qP):vse,bse="[object Set]";function $se(e){return ps(e)&&As(e)==bse}var UP=Ou&&Ou.isSet,Ese=UP?K_(UP):$se,wse=1,_se=2,Sse=4,IL="[object Arguments]",Cse="[object Array]",xse="[object Boolean]",Tse="[object Date]",Ose="[object Error]",RL="[object Function]",Nse="[object GeneratorFunction]",Pse="[object Map]",Ase="[object Number]",kL="[object Object]",Ise="[object RegExp]",Rse="[object Set]",kse="[object String]",Dse="[object Symbol]",Mse="[object WeakMap]",Lse="[object ArrayBuffer]",Fse="[object DataView]",jse="[object Float32Array]",qse="[object Float64Array]",Use="[object Int8Array]",Bse="[object Int16Array]",Vse="[object Int32Array]",Hse="[object Uint8Array]",zse="[object Uint8ClampedArray]",Gse="[object Uint16Array]",Wse="[object Uint32Array]",fn={};fn[IL]=fn[Cse]=fn[Lse]=fn[Fse]=fn[xse]=fn[Tse]=fn[jse]=fn[qse]=fn[Use]=fn[Bse]=fn[Vse]=fn[Pse]=fn[Ase]=fn[kL]=fn[Ise]=fn[Rse]=fn[kse]=fn[Dse]=fn[Hse]=fn[zse]=fn[Gse]=fn[Wse]=!0;fn[Ose]=fn[RL]=fn[Mse]=!1;function Od(e,t,n,r,s,o){var a,i=t&wse,l=t&_se,f=t&Sse;if(n&&(a=s?n(e,r,s,o):n(e)),a!==void 0)return a;if(!ln(e))return e;var d=Un(e);if(d){if(a=zre(e),!i)return Lh(e,a)}else{var p=As(e),g=p==RL||p==Nse;if(kc(e))return xL(e,i);if(p==kL||p==IL||g&&!s){if(a=l||g?{}:AL(e),!i)return l?Mre(e,Nre(a,e)):kre(e,Ore(a,e))}else{if(!fn[p])return s?e:{};a=mse(e,p,i)}}o||(o=new co);var m=o.get(e);if(m)return m;o.set(e,a),Ese(e)?e.forEach(function(E){a.add(Od(E,t,n,E,e,o))}):yse(e)&&e.forEach(function(E,v){a.set(v,Od(E,t,n,v,e,o))});var y=f?l?t2:OE:l?Uh:Ao,$=d?void 0:y(e);return my($||e,function(E,v){$&&(v=E,E=e[v]),G_(a,v,Od(E,t,n,v,e,o))}),a}var Yse=1,Kse=4;function DL(e){return Od(e,Yse|Kse)}var Jse="__lodash_hash_undefined__";function Xse(e){return this.__data__.set(e,Jse),this}function Zse(e){return this.__data__.has(e)}function Nu(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new Wa;++t<n;)this.add(e[t])}Nu.prototype.add=Nu.prototype.push=Xse;Nu.prototype.has=Zse;function Qse(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}function r2(e,t){return e.has(t)}var eoe=1,toe=2;function ML(e,t,n,r,s,o){var a=n&eoe,i=e.length,l=t.length;if(i!=l&&!(a&&l>i))return!1;var f=o.get(e),d=o.get(t);if(f&&d)return f==t&&d==e;var p=-1,g=!0,m=n&toe?new Nu:void 0;for(o.set(e,t),o.set(t,e);++p<i;){var y=e[p],$=t[p];if(r)var E=a?r($,y,p,t,e,o):r(y,$,p,e,t,o);if(E!==void 0){if(E)continue;g=!1;break}if(m){if(!Qse(t,function(v,w){if(!r2(m,w)&&(y===v||s(y,v,n,r,o)))return m.push(w)})){g=!1;break}}else if(!(y===$||s(y,$,n,r,o))){g=!1;break}}return o.delete(e),o.delete(t),g}function noe(e){var t=-1,n=Array(e.size);return e.forEach(function(r,s){n[++t]=[s,r]}),n}function s2(e){var t=-1,n=Array(e.size);return e.forEach(function(r){n[++t]=r}),n}var roe=1,soe=2,ooe="[object Boolean]",aoe="[object Date]",ioe="[object Error]",coe="[object Map]",loe="[object Number]",uoe="[object RegExp]",foe="[object Set]",doe="[object String]",hoe="[object Symbol]",poe="[object ArrayBuffer]",moe="[object DataView]",BP=Ls?Ls.prototype:void 0,q0=BP?BP.valueOf:void 0;function goe(e,t,n,r,s,o,a){switch(n){case moe:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case poe:return!(e.byteLength!=t.byteLength||!o(new sv(e),new sv(t)));case ooe:case aoe:case loe:return jh(+e,+t);case ioe:return e.name==t.name&&e.message==t.message;case uoe:case doe:return e==t+"";case coe:var i=noe;case foe:var l=r&roe;if(i||(i=s2),e.size!=t.size&&!l)return!1;var f=a.get(e);if(f)return f==t;r|=soe,a.set(e,t);var d=ML(i(e),i(t),r,s,o,a);return a.delete(e),d;case hoe:if(q0)return q0.call(e)==q0.call(t)}return!1}var voe=1,yoe=Object.prototype,boe=yoe.hasOwnProperty;function $oe(e,t,n,r,s,o){var a=n&voe,i=OE(e),l=i.length,f=OE(t),d=f.length;if(l!=d&&!a)return!1;for(var p=l;p--;){var g=i[p];if(!(a?g in t:boe.call(t,g)))return!1}var m=o.get(e),y=o.get(t);if(m&&y)return m==t&&y==e;var $=!0;o.set(e,t),o.set(t,e);for(var E=a;++p<l;){g=i[p];var v=e[g],w=t[g];if(r)var C=a?r(w,v,g,t,e,o):r(v,w,g,e,t,o);if(!(C===void 0?v===w||s(v,w,n,r,o):C)){$=!1;break}E||(E=g=="constructor")}if($&&!E){var N=e.constructor,T=t.constructor;N!=T&&"constructor"in e&&"constructor"in t&&!(typeof N=="function"&&N instanceof N&&typeof T=="function"&&T instanceof T)&&($=!1)}return o.delete(e),o.delete(t),$}var Eoe=1,VP="[object Arguments]",HP="[object Array]",Om="[object Object]",woe=Object.prototype,zP=woe.hasOwnProperty;function _oe(e,t,n,r,s,o){var a=Un(e),i=Un(t),l=a?HP:As(e),f=i?HP:As(t);l=l==VP?Om:l,f=f==VP?Om:f;var d=l==Om,p=f==Om,g=l==f;if(g&&kc(e)){if(!kc(t))return!1;a=!0,d=!1}if(g&&!d)return o||(o=new co),a||qh(e)?ML(e,t,n,r,s,o):goe(e,t,l,n,r,s,o);if(!(n&Eoe)){var m=d&&zP.call(e,"__wrapped__"),y=p&&zP.call(t,"__wrapped__");if(m||y){var $=m?e.value():e,E=y?t.value():t;return o||(o=new co),s($,E,n,r,o)}}return g?(o||(o=new co),$oe(e,t,n,r,s,o)):!1}function $y(e,t,n,r,s){return e===t?!0:e==null||t==null||!ps(e)&&!ps(t)?e!==e&&t!==t:_oe(e,t,n,r,$y,s)}var Soe=1,Coe=2;function xoe(e,t,n,r){var s=n.length,o=s;if(e==null)return!o;for(e=Object(e);s--;){var a=n[s];if(a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++s<o;){a=n[s];var i=a[0],l=e[i],f=a[1];if(a[2]){if(l===void 0&&!(i in e))return!1}else{var d=new co,p;if(!(p===void 0?$y(f,l,Soe|Coe,r,d):p))return!1}}return!0}function LL(e){return e===e&&!ln(e)}function Toe(e){for(var t=Ao(e),n=t.length;n--;){var r=t[n],s=e[r];t[n]=[r,s,LL(s)]}return t}function FL(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}function Ooe(e){var t=Toe(e);return t.length==1&&t[0][2]?FL(t[0][0],t[0][1]):function(n){return n===e||xoe(n,e,t)}}function Noe(e,t){return e!=null&&t in Object(e)}function jL(e,t,n){t=Yu(t,e);for(var r=-1,s=t.length,o=!1;++r<s;){var a=Jc(t[r]);if(!(o=e!=null&&n(e,a)))break;e=e[a]}return o||++r!=s?o:(s=e==null?0:e.length,!!s&&Y_(s)&&Fh(a,s)&&(Un(e)||Tu(e)))}function qL(e,t){return e!=null&&jL(e,t,Noe)}var Poe=1,Aoe=2;function Ioe(e,t){return J_(e)&&LL(t)?FL(Jc(e),t):function(n){var r=We(n,e);return r===void 0&&r===t?qL(n,e):$y(t,r,Poe|Aoe)}}function Roe(e){return function(t){return t?.[e]}}function koe(e){return function(t){return by(t,e)}}function Doe(e){return J_(e)?Roe(Jc(e)):koe(e)}function o2(e){return typeof e=="function"?e:e==null?Dh:typeof e=="object"?Un(e)?Ioe(e[0],e[1]):Ooe(e):Doe(e)}function Moe(e){return function(t,n,r){for(var s=-1,o=Object(t),a=r(t),i=a.length;i--;){var l=a[++s];if(n(o[l],l,o)===!1)break}return t}}var UL=Moe();function BL(e,t){return e&&UL(e,t,Ao)}function Loe(e,t){return function(n,r){if(n==null)return n;if(!Wu(n))return e(n,r);for(var s=n.length,o=-1,a=Object(n);++o<s&&r(a[o],o,a)!==!1;);return n}}var VL=Loe(BL),Foe=8;function ov(e,t,n){t=n?void 0:t;var r=Wte(e,Foe,void 0,void 0,void 0,void 0,void 0,t);return r.placeholder=ov.placeholder,r}ov.placeholder={};function AE(e,t,n){(n!==void 0&&!jh(e[t],n)||n===void 0&&!(t in e))&&z_(e,t,n)}function av(e){return ps(e)&&Wu(e)}function IE(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}function joe(e){return Gu(e,Uh(e))}function qoe(e,t,n,r,s,o,a){var i=IE(e,n),l=IE(t,n),f=a.get(l);if(f){AE(e,n,f);return}var d=o?o(i,l,n+"",e,t,a):void 0,p=d===void 0;if(p){var g=Un(l),m=!g&&kc(l),y=!g&&!m&&qh(l);d=l,g||m||y?Un(i)?d=i:av(i)?d=Lh(i):m?(p=!1,d=xL(l,!0)):y?(p=!1,d=PL(l,!0)):d=[]:Vi(l)||Tu(l)?(d=i,Tu(i)?d=joe(i):(!ln(i)||py(i))&&(d=AL(l))):p=!1}p&&(a.set(l,d),s(d,l,r,o,a),a.delete(l)),AE(e,n,d)}function HL(e,t,n,r,s){e!==t&&UL(t,function(o,a){if(s||(s=new co),ln(o))qoe(e,t,a,n,HL,r,s);else{var i=r?r(IE(e,a),o,a+"",e,t,s):void 0;i===void 0&&(i=o),AE(e,a,i)}},Uh)}var Uoe=200;function Boe(e,t,n,r){var s=-1,o=V_,a=!0,i=e.length,l=[],f=t.length;if(!i)return l;t.length>=Uoe&&(o=r2,a=!1,t=new Nu(t));e:for(;++s<i;){var d=e[s],p=d;if(d=d!==0?d:0,a&&p===p){for(var g=f;g--;)if(t[g]===p)continue e;l.push(d)}else o(t,p,r)||l.push(d)}return l}var Voe=W_(function(e,t){return av(e)?Boe(e,Bh(t,1,av,!0)):[]});function Hoe(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}function zL(e){return typeof e=="function"?e:Dh}function zoe(e,t){var n=Un(e)?my:VL;return n(e,zL(t))}var Goe=1/0;function Woe(e){var t=e==null?0:e.length;return t?Bh(e,Goe):[]}var Yoe=Object.prototype,Koe=Yoe.hasOwnProperty;function Joe(e,t){return e!=null&&Koe.call(e,t)}function Dr(e,t){return e!=null&&jL(e,t,Joe)}var Xoe="[object String]";function Ey(e){return typeof e=="string"||!Un(e)&&ps(e)&&Ha(e)==Xoe}function Zoe(e,t){return t.length<2?e:by(e,$re(t,0,-1))}var Qoe="[object Map]",eae="[object Set]",tae=Object.prototype,nae=tae.hasOwnProperty;function Pu(e){if(e==null)return!0;if(Wu(e)&&(Un(e)||typeof e=="string"||typeof e.splice=="function"||kc(e)||qh(e)||Tu(e)))return!e.length;var t=As(e);if(t==Qoe||t==eae)return!e.size;if(gy(e))return!wL(e).length;for(var n in e)if(nae.call(e,n))return!1;return!0}function rae(e,t,n){n=typeof n=="function"?n:void 0;var r=n?n(e,t):void 0;return r===void 0?$y(e,t,void 0,n):!!r}var sae="[object Number]";function GL(e){return typeof e=="number"||ps(e)&&Ha(e)==sae}function Nd(e){return e==null}var oae=Zte(function(e,t,n){HL(e,t,n)});function WL(e,t){return t=Yu(t,e),e=Zoe(e,t),e==null||delete e[Jc(Hoe(t))]}function aae(e){return Vi(e)?void 0:e}var iae=1,cae=2,lae=4,iv=SL(function(e,t){var n={};if(e==null)return n;var r=!1;t=hy(t,function(o){return o=Yu(o,e),r||(r=o.length>1),o}),Gu(e,t2(e),n),r&&(n=Od(n,iae|cae|lae,aae));for(var s=t.length;s--;)WL(n,t[s]);return n});function a2(e,t,n,r){if(!ln(e))return e;t=Yu(t,e);for(var s=-1,o=t.length,a=o-1,i=e;i!=null&&++s<o;){var l=Jc(t[s]),f=n;if(l==="__proto__"||l==="constructor"||l==="prototype")return e;if(s!=a){var d=i[l];f=r?r(d,l,i):void 0,f===void 0&&(f=ln(d)?d:Fh(t[s+1])?[]:{})}G_(i,l,f),i=i[l]}return e}function YL(e,t,n){for(var r=-1,s=t.length,o={};++r<s;){var a=t[r],i=by(e,a);n(i,a)&&a2(o,Yu(a,e),i)}return o}function uae(e,t){if(e==null)return{};var n=hy(t2(e),function(r){return[r]});return t=o2(t),YL(e,n,function(r,s){return t(r,s[0])})}function fae(e,t){return YL(e,t,function(n,r){return qL(e,r)})}var GP=SL(function(e,t){return e==null?{}:fae(e,t)});function dae(e,t,n,r,s){return s(e,function(o,a,i){n=r?(r=!1,o):t(n,o,a,i)}),n}function hae(e,t,n){var r=Un(e)?Ere:dae,s=arguments.length<3;return r(e,o2(t),n,s,VL)}function dr(e,t,n){return e==null?e:a2(e,t,n)}function pae(e,t,n,r){return r=typeof r=="function"?r:void 0,e==null?e:a2(e,t,n,r)}var mae=9007199254740991,U0=4294967295,gae=Math.min;function KL(e,t){if(e=TE(e),e<1||e>mae)return[];var n=U0,r=gae(e,U0);t=zL(t),e-=U0;for(var s=vL(r,t);++n<e;)t(n);return s}function JL(e){return Un(e)?hy(e,Jc):kh(e)?[e]:Lh(_L(Z_(e)))}function vae(e,t,n){var r=Un(e),s=r||kc(e)||qh(e);if(t=o2(t),n==null){var o=e&&e.constructor;s?n=r?new o:[]:ln(e)?n=py(o)?Mh(ry(e)):{}:n={}}return(s?my:BL)(e,function(a,i,l){return t(n,a,i,l)}),n}var yae=1/0,bae=fu&&1/s2(new fu([,-0]))[1]==yae?function(e){return new fu(e)}:lL,$ae=200;function XL(e,t,n){var r=-1,s=V_,o=e.length,a=!0,i=[],l=i;if(o>=$ae){var f=bae(e);if(f)return s2(f);a=!1,s=r2,l=new Nu}else l=i;e:for(;++r<o;){var d=e[r],p=d;if(d=d!==0?d:0,a&&p===p){for(var g=l.length;g--;)if(l[g]===p)continue e;i.push(d)}else s(l,p,n)||(l!==i&&l.push(p),i.push(d))}return i}var Eae=W_(function(e){return XL(Bh(e,1,av,!0))});function wae(e){return e&&e.length?XL(e):[]}var _ae=0;function Sae(e){var t=++_ae;return Z_(e)+t}function Cae(e,t){return e==null?!0:WL(e,t)}function xae(e){const t=e[0],n=e[1],r=e[2];let s,o,a;return s=t*1+n*0+r*1.13983,o=t*1+n*-.39465+r*-.5806,a=t*1+n*2.02311+r*0,s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),a=Math.min(Math.max(0,a),1),[s*255,o*255,a*255]}function Tae(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,s=t*.299+n*.587+r*.114,o=t*-.14713+n*-.28886+r*.436,a=t*.615+n*-.51499+r*-.10001;return[s,o,a]}const Oae={scheme:"threezerotwofour",author:"jan t. sott (http://github.com/idleberg)",base00:"#090300",base01:"#3a3432",base02:"#4a4543",base03:"#5c5855",base04:"#807d7c",base05:"#a5a2a2",base06:"#d6d5d4",base07:"#f7f7f7",base08:"#db2d20",base09:"#e8bbd0",base0A:"#fded02",base0B:"#01a252",base0C:"#b5e4f4",base0D:"#01a0e4",base0E:"#a16a94",base0F:"#cdab53"},Nae={scheme:"apathy",author:"jannik siebert (https://github.com/janniks)",base00:"#031A16",base01:"#0B342D",base02:"#184E45",base03:"#2B685E",base04:"#5F9C92",base05:"#81B5AC",base06:"#A7CEC8",base07:"#D2E7E4",base08:"#3E9688",base09:"#3E7996",base0A:"#3E4C96",base0B:"#883E96",base0C:"#963E4C",base0D:"#96883E",base0E:"#4C963E",base0F:"#3E965B"},Pae={scheme:"ashes",author:"jannik siebert (https://github.com/janniks)",base00:"#1C2023",base01:"#393F45",base02:"#565E65",base03:"#747C84",base04:"#ADB3BA",base05:"#C7CCD1",base06:"#DFE2E5",base07:"#F3F4F5",base08:"#C7AE95",base09:"#C7C795",base0A:"#AEC795",base0B:"#95C7AE",base0C:"#95AEC7",base0D:"#AE95C7",base0E:"#C795AE",base0F:"#C79595"},Aae={scheme:"atelier dune",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune)",base00:"#20201d",base01:"#292824",base02:"#6e6b5e",base03:"#7d7a68",base04:"#999580",base05:"#a6a28c",base06:"#e8e4cf",base07:"#fefbec",base08:"#d73737",base09:"#b65611",base0A:"#cfb017",base0B:"#60ac39",base0C:"#1fad83",base0D:"#6684e1",base0E:"#b854d4",base0F:"#d43552"},Iae={scheme:"atelier forest",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest)",base00:"#1b1918",base01:"#2c2421",base02:"#68615e",base03:"#766e6b",base04:"#9c9491",base05:"#a8a19f",base06:"#e6e2e0",base07:"#f1efee",base08:"#f22c40",base09:"#df5320",base0A:"#d5911a",base0B:"#5ab738",base0C:"#00ad9c",base0D:"#407ee7",base0E:"#6666ea",base0F:"#c33ff3"},Rae={scheme:"atelier heath",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath)",base00:"#1b181b",base01:"#292329",base02:"#695d69",base03:"#776977",base04:"#9e8f9e",base05:"#ab9bab",base06:"#d8cad8",base07:"#f7f3f7",base08:"#ca402b",base09:"#a65926",base0A:"#bb8a35",base0B:"#379a37",base0C:"#159393",base0D:"#516aec",base0E:"#7b59c0",base0F:"#cc33cc"},kae={scheme:"atelier lakeside",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/)",base00:"#161b1d",base01:"#1f292e",base02:"#516d7b",base03:"#5a7b8c",base04:"#7195a8",base05:"#7ea2b4",base06:"#c1e4f6",base07:"#ebf8ff",base08:"#d22d72",base09:"#935c25",base0A:"#8a8a0f",base0B:"#568c3b",base0C:"#2d8f6f",base0D:"#257fad",base0E:"#5d5db1",base0F:"#b72dd2"},Dae={scheme:"atelier seaside",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/)",base00:"#131513",base01:"#242924",base02:"#5e6e5e",base03:"#687d68",base04:"#809980",base05:"#8ca68c",base06:"#cfe8cf",base07:"#f0fff0",base08:"#e6193c",base09:"#87711d",base0A:"#c3c322",base0B:"#29a329",base0C:"#1999b3",base0D:"#3d62f5",base0E:"#ad2bee",base0F:"#e619c3"},Mae={scheme:"bespin",author:"jan t. sott",base00:"#28211c",base01:"#36312e",base02:"#5e5d5c",base03:"#666666",base04:"#797977",base05:"#8a8986",base06:"#9d9b97",base07:"#baae9e",base08:"#cf6a4c",base09:"#cf7d34",base0A:"#f9ee98",base0B:"#54be0d",base0C:"#afc4db",base0D:"#5ea6ea",base0E:"#9b859d",base0F:"#937121"},Lae={scheme:"brewer",author:"timothée poisot (http://github.com/tpoisot)",base00:"#0c0d0e",base01:"#2e2f30",base02:"#515253",base03:"#737475",base04:"#959697",base05:"#b7b8b9",base06:"#dadbdc",base07:"#fcfdfe",base08:"#e31a1c",base09:"#e6550d",base0A:"#dca060",base0B:"#31a354",base0C:"#80b1d3",base0D:"#3182bd",base0E:"#756bb1",base0F:"#b15928"},Fae={scheme:"bright",author:"chris kempson (http://chriskempson.com)",base00:"#000000",base01:"#303030",base02:"#505050",base03:"#b0b0b0",base04:"#d0d0d0",base05:"#e0e0e0",base06:"#f5f5f5",base07:"#ffffff",base08:"#fb0120",base09:"#fc6d24",base0A:"#fda331",base0B:"#a1c659",base0C:"#76c7b7",base0D:"#6fb3d2",base0E:"#d381c3",base0F:"#be643c"},jae={scheme:"chalk",author:"chris kempson (http://chriskempson.com)",base00:"#151515",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#b0b0b0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#f5f5f5",base08:"#fb9fb1",base09:"#eda987",base0A:"#ddb26f",base0B:"#acc267",base0C:"#12cfc0",base0D:"#6fc2ef",base0E:"#e1a3ee",base0F:"#deaf8f"},qae={scheme:"codeschool",author:"brettof86",base00:"#232c31",base01:"#1c3657",base02:"#2a343a",base03:"#3f4944",base04:"#84898c",base05:"#9ea7a6",base06:"#a7cfa3",base07:"#b5d8f6",base08:"#2a5491",base09:"#43820d",base0A:"#a03b1e",base0B:"#237986",base0C:"#b02f30",base0D:"#484d79",base0E:"#c59820",base0F:"#c98344"},Uae={scheme:"colors",author:"mrmrs (http://clrs.cc)",base00:"#111111",base01:"#333333",base02:"#555555",base03:"#777777",base04:"#999999",base05:"#bbbbbb",base06:"#dddddd",base07:"#ffffff",base08:"#ff4136",base09:"#ff851b",base0A:"#ffdc00",base0B:"#2ecc40",base0C:"#7fdbff",base0D:"#0074d9",base0E:"#b10dc9",base0F:"#85144b"},Bae={scheme:"default",author:"chris kempson (http://chriskempson.com)",base00:"#181818",base01:"#282828",base02:"#383838",base03:"#585858",base04:"#b8b8b8",base05:"#d8d8d8",base06:"#e8e8e8",base07:"#f8f8f8",base08:"#ab4642",base09:"#dc9656",base0A:"#f7ca88",base0B:"#a1b56c",base0C:"#86c1b9",base0D:"#7cafc2",base0E:"#ba8baf",base0F:"#a16946"},Vae={scheme:"eighties",author:"chris kempson (http://chriskempson.com)",base00:"#2d2d2d",base01:"#393939",base02:"#515151",base03:"#747369",base04:"#a09f93",base05:"#d3d0c8",base06:"#e8e6df",base07:"#f2f0ec",base08:"#f2777a",base09:"#f99157",base0A:"#ffcc66",base0B:"#99cc99",base0C:"#66cccc",base0D:"#6699cc",base0E:"#cc99cc",base0F:"#d27b53"},Hae={scheme:"embers",author:"jannik siebert (https://github.com/janniks)",base00:"#16130F",base01:"#2C2620",base02:"#433B32",base03:"#5A5047",base04:"#8A8075",base05:"#A39A90",base06:"#BEB6AE",base07:"#DBD6D1",base08:"#826D57",base09:"#828257",base0A:"#6D8257",base0B:"#57826D",base0C:"#576D82",base0D:"#6D5782",base0E:"#82576D",base0F:"#825757"},zae={scheme:"flat",author:"chris kempson (http://chriskempson.com)",base00:"#2C3E50",base01:"#34495E",base02:"#7F8C8D",base03:"#95A5A6",base04:"#BDC3C7",base05:"#e0e0e0",base06:"#f5f5f5",base07:"#ECF0F1",base08:"#E74C3C",base09:"#E67E22",base0A:"#F1C40F",base0B:"#2ECC71",base0C:"#1ABC9C",base0D:"#3498DB",base0E:"#9B59B6",base0F:"#be643c"},Gae={scheme:"google",author:"seth wright (http://sethawright.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#CC342B",base09:"#F96A38",base0A:"#FBA922",base0B:"#198844",base0C:"#3971ED",base0D:"#3971ED",base0E:"#A36AC7",base0F:"#3971ED"},Wae={scheme:"grayscale",author:"alexandre gavioli (https://github.com/alexx2/)",base00:"#101010",base01:"#252525",base02:"#464646",base03:"#525252",base04:"#ababab",base05:"#b9b9b9",base06:"#e3e3e3",base07:"#f7f7f7",base08:"#7c7c7c",base09:"#999999",base0A:"#a0a0a0",base0B:"#8e8e8e",base0C:"#868686",base0D:"#686868",base0E:"#747474",base0F:"#5e5e5e"},Yae={scheme:"green screen",author:"chris kempson (http://chriskempson.com)",base00:"#001100",base01:"#003300",base02:"#005500",base03:"#007700",base04:"#009900",base05:"#00bb00",base06:"#00dd00",base07:"#00ff00",base08:"#007700",base09:"#009900",base0A:"#007700",base0B:"#00bb00",base0C:"#005500",base0D:"#009900",base0E:"#00bb00",base0F:"#005500"},Kae={scheme:"harmonic16",author:"jannik siebert (https://github.com/janniks)",base00:"#0b1c2c",base01:"#223b54",base02:"#405c79",base03:"#627e99",base04:"#aabcce",base05:"#cbd6e2",base06:"#e5ebf1",base07:"#f7f9fb",base08:"#bf8b56",base09:"#bfbf56",base0A:"#8bbf56",base0B:"#56bf8b",base0C:"#568bbf",base0D:"#8b56bf",base0E:"#bf568b",base0F:"#bf5656"},Jae={scheme:"hopscotch",author:"jan t. sott",base00:"#322931",base01:"#433b42",base02:"#5c545b",base03:"#797379",base04:"#989498",base05:"#b9b5b8",base06:"#d5d3d5",base07:"#ffffff",base08:"#dd464c",base09:"#fd8b19",base0A:"#fdcc59",base0B:"#8fc13e",base0C:"#149b93",base0D:"#1290bf",base0E:"#c85e7c",base0F:"#b33508"},Xae={scheme:"isotope",author:"jan t. sott",base00:"#000000",base01:"#404040",base02:"#606060",base03:"#808080",base04:"#c0c0c0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#ffffff",base08:"#ff0000",base09:"#ff9900",base0A:"#ff0099",base0B:"#33ff00",base0C:"#00ffff",base0D:"#0066ff",base0E:"#cc00ff",base0F:"#3300ff"},Zae={scheme:"marrakesh",author:"alexandre gavioli (http://github.com/alexx2/)",base00:"#201602",base01:"#302e00",base02:"#5f5b17",base03:"#6c6823",base04:"#86813b",base05:"#948e48",base06:"#ccc37a",base07:"#faf0a5",base08:"#c35359",base09:"#b36144",base0A:"#a88339",base0B:"#18974e",base0C:"#75a738",base0D:"#477ca1",base0E:"#8868b3",base0F:"#b3588e"},Qae={scheme:"mocha",author:"chris kempson (http://chriskempson.com)",base00:"#3B3228",base01:"#534636",base02:"#645240",base03:"#7e705a",base04:"#b8afad",base05:"#d0c8c6",base06:"#e9e1dd",base07:"#f5eeeb",base08:"#cb6077",base09:"#d28b71",base0A:"#f4bc87",base0B:"#beb55b",base0C:"#7bbda4",base0D:"#8ab3b5",base0E:"#a89bb9",base0F:"#bb9584"},eie={scheme:"monokai",author:"wimer hazenberg (http://www.monokai.nl)",base00:"#272822",base01:"#383830",base02:"#49483e",base03:"#75715e",base04:"#a59f85",base05:"#f8f8f2",base06:"#f5f4f1",base07:"#f9f8f5",base08:"#f92672",base09:"#fd971f",base0A:"#f4bf75",base0B:"#a6e22e",base0C:"#a1efe4",base0D:"#66d9ef",base0E:"#ae81ff",base0F:"#cc6633"},tie={scheme:"nicinabox",author:"nicinabox (http://github.com/nicinabox)",base00:"#2A2F3A",base01:"#3C444F",base02:"#4F5A65",base03:"#BEBEBE",base04:"#b0b0b0",base05:"#d0d0d0",base06:"#FFFFFF",base07:"#f5f5f5",base08:"#fb9fb1",base09:"#FC6D24",base0A:"#ddb26f",base0B:"#A1C659",base0C:"#12cfc0",base0D:"#6FB3D2",base0E:"#D381C3",base0F:"#deaf8f"},nie={scheme:"ocean",author:"chris kempson (http://chriskempson.com)",base00:"#2b303b",base01:"#343d46",base02:"#4f5b66",base03:"#65737e",base04:"#a7adba",base05:"#c0c5ce",base06:"#dfe1e8",base07:"#eff1f5",base08:"#bf616a",base09:"#d08770",base0A:"#ebcb8b",base0B:"#a3be8c",base0C:"#96b5b4",base0D:"#8fa1b3",base0E:"#b48ead",base0F:"#ab7967"},rie={scheme:"paraiso",author:"jan t. sott",base00:"#2f1e2e",base01:"#41323f",base02:"#4f424c",base03:"#776e71",base04:"#8d8687",base05:"#a39e9b",base06:"#b9b6b0",base07:"#e7e9db",base08:"#ef6155",base09:"#f99b15",base0A:"#fec418",base0B:"#48b685",base0C:"#5bc4bf",base0D:"#06b6ef",base0E:"#815ba4",base0F:"#e96ba8"},sie={scheme:"pop",author:"chris kempson (http://chriskempson.com)",base00:"#000000",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#b0b0b0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#ffffff",base08:"#eb008a",base09:"#f29333",base0A:"#f8ca12",base0B:"#37b349",base0C:"#00aabb",base0D:"#0e5a94",base0E:"#b31e8d",base0F:"#7a2d00"},oie={scheme:"railscasts",author:"ryan bates (http://railscasts.com)",base00:"#2b2b2b",base01:"#272935",base02:"#3a4055",base03:"#5a647e",base04:"#d4cfc9",base05:"#e6e1dc",base06:"#f4f1ed",base07:"#f9f7f3",base08:"#da4939",base09:"#cc7833",base0A:"#ffc66d",base0B:"#a5c261",base0C:"#519f50",base0D:"#6d9cbe",base0E:"#b6b3eb",base0F:"#bc9458"},aie={scheme:"shapeshifter",author:"tyler benziger (http://tybenz.com)",base00:"#000000",base01:"#040404",base02:"#102015",base03:"#343434",base04:"#555555",base05:"#ababab",base06:"#e0e0e0",base07:"#f9f9f9",base08:"#e92f2f",base09:"#e09448",base0A:"#dddd13",base0B:"#0ed839",base0C:"#23edda",base0D:"#3b48e3",base0E:"#f996e2",base0F:"#69542d"},iie={scheme:"solarized",author:"ethan schoonover (http://ethanschoonover.com/solarized)",base00:"#002b36",base01:"#073642",base02:"#586e75",base03:"#657b83",base04:"#839496",base05:"#93a1a1",base06:"#eee8d5",base07:"#fdf6e3",base08:"#dc322f",base09:"#cb4b16",base0A:"#b58900",base0B:"#859900",base0C:"#2aa198",base0D:"#268bd2",base0E:"#6c71c4",base0F:"#d33682"},cie={scheme:"summerfruit",author:"christopher corley (http://cscorley.github.io/)",base00:"#151515",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#B0B0B0",base05:"#D0D0D0",base06:"#E0E0E0",base07:"#FFFFFF",base08:"#FF0086",base09:"#FD8900",base0A:"#ABA800",base0B:"#00C918",base0C:"#1faaaa",base0D:"#3777E6",base0E:"#AD00A1",base0F:"#cc6633"},lie={scheme:"tomorrow",author:"chris kempson (http://chriskempson.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#cc6666",base09:"#de935f",base0A:"#f0c674",base0B:"#b5bd68",base0C:"#8abeb7",base0D:"#81a2be",base0E:"#b294bb",base0F:"#a3685a"},uie={scheme:"london tube",author:"jan t. sott",base00:"#231f20",base01:"#1c3f95",base02:"#5a5758",base03:"#737171",base04:"#959ca1",base05:"#d9d8d8",base06:"#e7e7e8",base07:"#ffffff",base08:"#ee2e24",base09:"#f386a1",base0A:"#ffd204",base0B:"#00853e",base0C:"#85cebc",base0D:"#009ddc",base0E:"#98005d",base0F:"#b06110"},fie={scheme:"twilight",author:"david hart (http://hart-dev.com)",base00:"#1e1e1e",base01:"#323537",base02:"#464b50",base03:"#5f5a60",base04:"#838184",base05:"#a7a7a7",base06:"#c3c3c3",base07:"#ffffff",base08:"#cf6a4c",base09:"#cda869",base0A:"#f9ee98",base0B:"#8f9d6a",base0C:"#afc4db",base0D:"#7587a6",base0E:"#9b859d",base0F:"#9b703f"},ZL={threezerotwofour:Oae,apathy:Nae,ashes:Pae,atelierDune:Aae,atelierForest:Iae,atelierHeath:Rae,atelierLakeside:kae,atelierSeaside:Dae,bespin:Mae,brewer:Lae,bright:Fae,chalk:jae,codeschool:qae,colors:Uae,default:Bae,eighties:Vae,embers:Hae,flat:zae,google:Gae,grayscale:Wae,greenscreen:Yae,harmonic:Kae,hopscotch:Jae,isotope:Xae,marrakesh:Zae,mocha:Qae,monokai:eie,nicinabox:tie,ocean:nie,paraiso:rie,pop:sie,railscasts:oie,shapeshifter:aie,solarized:iie,summerfruit:cie,tomorrow:lie,tube:uie,twilight:fie},QL=ZL.default,WP=Object.keys(QL),die=e=>e<.25?1:e<.5?.9-e:1.1-e,hie=e=>{const t=sP(e),[n,r,s]=Tae(t.array()),o=[die(n),r,s],a=xae(o);return sP.rgb(a).hex()},jl=e=>t=>({className:[t.className,e.className].filter(Boolean).join(" "),style:{...t.style||{},...e.style||{}}}),pie=(e,t)=>{if(e===void 0)return t;if(t===void 0)return e;const n=typeof e,r=typeof t;switch(n){case"string":switch(r){case"string":return[t,e].filter(Boolean).join(" ");case"object":return jl({className:e,style:t});case"function":return(s,...o)=>jl({className:e})(t(s,...o))}break;case"object":switch(r){case"string":return jl({className:t,style:e});case"object":return{...t,...e};case"function":return(s,...o)=>jl({style:e})(t(s,...o))}break;case"function":switch(r){case"string":return(s,...o)=>e(jl(s)({className:t}),...o);case"object":return(s,...o)=>e(jl(s)({style:t}),...o);case"function":return(s,...o)=>e(t(s,...o),...o)}}},mie=(e,t)=>{const n=Object.keys(t);for(const r in e)n.indexOf(r)===-1&&n.push(r);return n.reduce((r,s)=>(r[s]=pie(e[s],t[s]),r),{})},gie=(e,t,...n)=>{if(t===null)return e;Array.isArray(t)||(t=[t]);const s=t.map(o=>e[o]).filter(Boolean).reduce((o,a)=>(typeof a=="string"?o.className=[o.className,a].filter(Boolean).join(" "):typeof a=="object"?o.style={...o.style,...a}:typeof a=="function"&&(o={...o,...a(o,...n)}),o),{className:"",style:{}});return s.className||delete s.className,Object.keys(s.style).length===0&&delete s.style,s},RE=e=>Object.keys(e).reduce((t,n)=>(t[n]=/^base/.test(n)?hie(e[n]):n==="scheme"?e[n]+":inverted":e[n],t),{}),vie=ov((e,t={},n={},...r)=>{const{defaultBase16:s=QL,base16Themes:o=null}=t,a=yie(n,o);a&&(n={...a,...n});const i=WP.reduce((p,g)=>(p[g]=n[g]||s[g],p),{}),l=Object.keys(n).reduce((p,g)=>(WP.indexOf(g)===-1&&(p[g]=n[g]),p),{}),f=e(i),d=mie(l,f);return ov(gie,2)(d,...r)},3),e4=e=>!!e.extend,yie=(e,t)=>{if(e&&e4(e)&&e.extend&&(e=e.extend),typeof e=="string"){const[n,r]=e.split(":");t?e=t[n]:e=ZL[n],r==="inverted"&&(e=RE(e))}return e&&Object.prototype.hasOwnProperty.call(e,"base00")?e:void 0},bie=e=>typeof e=="string"?`${e}:inverted`:e&&e4(e)&&e.extend?typeof e.extend=="string"?{...e,extend:`${e.extend}:inverted`}:{...e,extend:RE(e.extend)}:e&&RE(e);function $ie(e){const t=Object.prototype.toString.call(e).slice(8,-1);return t==="Object"&&typeof e[Symbol.iterator]=="function"?"Iterable":t==="Custom"&&e.constructor!==Object&&e instanceof Object?"Object":t}function t4({styling:e,arrowStyle:t="single",expanded:n,nodeType:r,onClick:s}){return c.createElement("div",{...e("arrowContainer",t),onClick:s},c.createElement("div",{...e(["arrow","arrowSign"],r,n,t)},"▶",t==="double"&&c.createElement("div",{...e(["arrowSign","arrowSignInner"])},"▶")))}function Eie(e,t){return e==="Object"?Object.keys(t).length:e==="Array"?t.length:1/0}function wie(e){return typeof e.set=="function"}function _ie(e,t,n,r=0,s=1/0){let o;if(e==="Object"){let a=Object.getOwnPropertyNames(t);n&&a.sort(n===!0?void 0:n),a=a.slice(r,s+1),o={entries:a.map(i=>({key:i,value:t[i]}))}}else if(e==="Array")o={entries:t.slice(r,s+1).map((a,i)=>({key:i+r,value:a}))};else{let a=0;const i=[];let l=!0;const f=wie(t);for(const d of t){if(a>s){l=!1;break}r<=a&&(f&&Array.isArray(d)?typeof d[0]=="string"||typeof d[0]=="number"?i.push({key:d[0],value:d[1]}):i.push({key:`[entry ${a}]`,value:{"[key]":d[0],"[value]":d[1]}}):i.push({key:a,value:d})),a++}o={hasMore:!l,entries:i}}return o}function B0(e,t,n){const r=[];for(;t-e>n*n;)n=n*n;for(let s=e;s<=t;s+=n)r.push({from:s,to:Math.min(t,s+n-1)});return r}function Sie(e,t,n,r,s=0,o=1/0){const a=_ie.bind(null,e,t,n);if(!r)return a().entries;const i=o<1/0,l=Math.min(o-s,Eie(e,t));if(e!=="Iterable"){if(l<=r||r<7)return a(s,o).entries}else if(l<=r&&!i)return a(s,o).entries;let f;if(e==="Iterable"){const{hasMore:d,entries:p}=a(s,s+r-1);f=d?[...p,...B0(s+r,s+2*r-1,r)]:p}else f=i?B0(s,o,r):[...a(0,r-5).entries,...B0(r-4,l-5,r),...a(l-4,l-1).entries];return f}function Cie(e){const{styling:t,from:n,to:r,renderChildNodes:s,nodeType:o}=e,[a,i]=J.useState(!1),l=J.useCallback(()=>{i(!a)},[a]);return a?c.createElement("div",{...t("itemRange",a)},s(e,n,r)):c.createElement("div",{...t("itemRange",a),onClick:l},c.createElement(t4,{nodeType:o,styling:t,expanded:!1,onClick:l,arrowStyle:"double"}),`${n} ... ${r}`)}function xie(e){return e.to!==void 0}function n4(e,t,n){const{nodeType:r,data:s,collectionLimit:o,circularCache:a,keyPath:i,postprocessValue:l,sortObjectKeys:f}=e,d=[];return Sie(r,s,f,o,t,n).forEach(p=>{if(xie(p))d.push(c.createElement(Cie,{...e,key:`ItemRange--${p.from}-${p.to}`,from:p.from,to:p.to,renderChildNodes:n4}));else{const{key:g,value:m}=p,y=a.includes(m);d.push(c.createElement(r4,{...e,postprocessValue:l,collectionLimit:o,key:`Node--${g}`,keyPath:[g,...i],value:l(m),circularCache:[...a,m],isCircular:y,hideRoot:!1}))}}),d}function i2(e){const{circularCache:t=[],collectionLimit:n,createItemString:r,data:s,expandable:o,getItemString:a,hideRoot:i,isCircular:l,keyPath:f,labelRenderer:d,level:p=0,nodeType:g,nodeTypeIndicator:m,shouldExpandNodeInitially:y,styling:$}=e,[E,v]=J.useState(l?!1:y(f,s,p)),w=J.useCallback(()=>{o&&v(!E)},[o,E]),C=E||i&&p===0?n4({...e,circularCache:t,level:p+1}):null,N=c.createElement("span",{...$("nestedNodeItemType",E)},m),T=a(g,s,N,r(s,n),f),j=[f,g,E,o];return i?c.createElement("li",{...$("rootNode",...j)},c.createElement("ul",{...$("rootNodeChildren",...j)},C)):c.createElement("li",{...$("nestedNode",...j)},o&&c.createElement(t4,{styling:$,nodeType:g,expanded:E,onClick:w}),c.createElement("label",{...$(["label","nestedNodeLabel"],...j),onClick:w},d(...j)),c.createElement("span",{...$("nestedNodeItemString",...j),onClick:w},T),c.createElement("ul",{...$("nestedNodeChildren",...j)},C))}function Tie(e){const t=Object.getOwnPropertyNames(e).length;return`${t} ${t!==1?"keys":"key"}`}function Oie({data:e,...t}){return c.createElement(i2,{...t,data:e,nodeType:"Object",nodeTypeIndicator:t.nodeType==="Error"?"Error()":"{}",createItemString:Tie,expandable:Object.getOwnPropertyNames(e).length>0})}function Nie(e){return`${e.length} ${e.length!==1?"items":"item"}`}function Pie({data:e,...t}){return c.createElement(i2,{...t,data:e,nodeType:"Array",nodeTypeIndicator:"[]",createItemString:Nie,expandable:e.length>0})}function Aie(e,t){let n=0,r=!1;if(Number.isSafeInteger(e.size))n=e.size;else for(const s of e){if(t&&n+1>t){r=!0;break}n+=1}return`${r?">":""}${n} ${n!==1?"entries":"entry"}`}function Iie(e){return c.createElement(i2,{...e,nodeType:"Iterable",nodeTypeIndicator:"()",createItemString:Aie,expandable:!0})}function ma({nodeType:e,styling:t,labelRenderer:n,keyPath:r,valueRenderer:s,value:o,valueGetter:a=i=>i}){return c.createElement("li",{...t("value",e,r)},c.createElement("label",{...t(["label","valueLabel"],e,r)},n(r,e,!1,!1)),c.createElement("span",{...t("valueText",e,r)},s(a(o),o,...r)))}function r4({getItemString:e,keyPath:t,labelRenderer:n,styling:r,value:s,valueRenderer:o,isCustomNode:a,...i}){const l=a(s)?"Custom":$ie(s),f={getItemString:e,key:t[0],keyPath:t,labelRenderer:n,nodeType:l,styling:r,value:s,valueRenderer:o},d={...i,...f,data:s,isCustomNode:a};switch(l){case"Object":case"Error":case"WeakMap":case"WeakSet":return c.createElement(Oie,{...d});case"Array":return c.createElement(Pie,{...d});case"Iterable":case"Map":case"Set":return c.createElement(Iie,{...d});case"String":return c.createElement(ma,{...f,valueGetter:p=>`"${p}"`});case"Number":return c.createElement(ma,{...f});case"Boolean":return c.createElement(ma,{...f,valueGetter:p=>p?"true":"false"});case"Date":return c.createElement(ma,{...f,valueGetter:p=>p.toISOString()});case"Null":return c.createElement(ma,{...f,valueGetter:()=>"null"});case"Undefined":return c.createElement(ma,{...f,valueGetter:()=>"undefined"});case"Function":case"Symbol":return c.createElement(ma,{...f,valueGetter:p=>p.toString()});case"Custom":return c.createElement(ma,{...f});default:return c.createElement(ma,{...f,valueGetter:()=>`<${l}>`})}}const Rie={scheme:"solarized",author:"ethan schoonover (http://ethanschoonover.com/solarized)",base00:"#002b36",base01:"#073642",base02:"#586e75",base03:"#657b83",base04:"#839496",base05:"#93a1a1",base06:"#eee8d5",base07:"#fdf6e3",base08:"#dc322f",base09:"#cb4b16",base0A:"#b58900",base0B:"#859900",base0C:"#2aa198",base0D:"#268bd2",base0E:"#6c71c4",base0F:"#d33682"},kie=e=>({BACKGROUND_COLOR:e.base00,TEXT_COLOR:e.base07,STRING_COLOR:e.base0B,DATE_COLOR:e.base0B,NUMBER_COLOR:e.base09,BOOLEAN_COLOR:e.base09,NULL_COLOR:e.base08,UNDEFINED_COLOR:e.base08,FUNCTION_COLOR:e.base08,SYMBOL_COLOR:e.base08,LABEL_COLOR:e.base0D,ARROW_COLOR:e.base0D,ITEM_STRING_COLOR:e.base0B,ITEM_STRING_EXPANDED_COLOR:e.base03}),Die=e=>({String:e.STRING_COLOR,Date:e.DATE_COLOR,Number:e.NUMBER_COLOR,Boolean:e.BOOLEAN_COLOR,Null:e.NULL_COLOR,Undefined:e.UNDEFINED_COLOR,Function:e.FUNCTION_COLOR,Symbol:e.SYMBOL_COLOR}),Mie=e=>{const t=kie(e);return{tree:{border:0,padding:0,marginTop:"0.5em",marginBottom:"0.5em",marginLeft:"0.125em",marginRight:0,listStyle:"none",MozUserSelect:"none",WebkitUserSelect:"none",backgroundColor:t.BACKGROUND_COLOR},value:({style:n},r,s)=>({style:{...n,paddingTop:"0.25em",paddingRight:0,marginLeft:"0.875em",WebkitUserSelect:"text",MozUserSelect:"text",wordWrap:"break-word",paddingLeft:s.length>1?"2.125em":"1.25em",textIndent:"-0.5em",wordBreak:"break-all"}}),label:{display:"inline-block",color:t.LABEL_COLOR},valueLabel:{margin:"0 0.5em 0 0"},valueText:({style:n},r)=>({style:{...n,color:Die(t)[r]}}),itemRange:(n,r)=>({style:{paddingTop:r?0:"0.25em",cursor:"pointer",color:t.LABEL_COLOR}}),arrow:({style:n},r,s)=>({style:{...n,marginLeft:0,transition:"150ms",WebkitTransition:"150ms",MozTransition:"150ms",WebkitTransform:s?"rotateZ(90deg)":"rotateZ(0deg)",MozTransform:s?"rotateZ(90deg)":"rotateZ(0deg)",transform:s?"rotateZ(90deg)":"rotateZ(0deg)",transformOrigin:"45% 50%",WebkitTransformOrigin:"45% 50%",MozTransformOrigin:"45% 50%",position:"relative",lineHeight:"1.1em",fontSize:"0.75em"}}),arrowContainer:({style:n},r)=>({style:{...n,display:"inline-block",paddingRight:"0.5em",paddingLeft:r==="double"?"1em":0,cursor:"pointer"}}),arrowSign:{color:t.ARROW_COLOR},arrowSignInner:{position:"absolute",top:0,left:"-0.4em"},nestedNode:({style:n},r,s,o,a)=>({style:{...n,position:"relative",paddingTop:"0.25em",marginLeft:r.length>1?"0.875em":0,paddingLeft:a?0:"1.125em"}}),rootNode:{padding:0,margin:0},nestedNodeLabel:({style:n},r,s,o,a)=>({style:{...n,margin:0,padding:0,WebkitUserSelect:a?"inherit":"text",MozUserSelect:a?"inherit":"text",cursor:a?"pointer":"default"}}),nestedNodeItemString:({style:n},r,s,o)=>({style:{...n,paddingLeft:"0.5em",cursor:"default",color:o?t.ITEM_STRING_EXPANDED_COLOR:t.ITEM_STRING_COLOR}}),nestedNodeItemType:{marginLeft:"0.3em",marginRight:"0.3em"},nestedNodeChildren:({style:n},r,s)=>({style:{...n,padding:0,margin:0,listStyle:"none",display:s?"block":"none"}}),rootNodeChildren:{padding:0,margin:0,listStyle:"none"}}},Lie=vie(Mie,{defaultBase16:Rie}),YP=e=>e,Fie=(e,t,n)=>n===0,jie=(e,t,n,r)=>c.createElement("span",null,n," ",r),qie=([e])=>c.createElement("span",null,e,":"),Uie=()=>!1;function Bie({data:e,theme:t,invertTheme:n,keyPath:r=["root"],labelRenderer:s=qie,valueRenderer:o=YP,shouldExpandNodeInitially:a=Fie,hideRoot:i=!1,getItemString:l=jie,postprocessValue:f=YP,isCustomNode:d=Uie,collectionLimit:p=50,sortObjectKeys:g=!1}){const m=J.useMemo(()=>Lie(n?bie(t):t),[t,n]);return c.createElement("ul",{...m("tree")},c.createElement(r4,{keyPath:i?[]:r,value:f(e),isCustomNode:d,styling:m,labelRenderer:s,valueRenderer:o,shouldExpandNodeInitially:a,hideRoot:i,getItemString:l,postprocessValue:f,collectionLimit:p,sortObjectKeys:g}))}function Xc(e,t){if(e==null)return{};var n,r,s=Kt(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function Vie(e){if(Array.isArray(e))return e}function Hie(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,s,o,a,i=[],l=!0,f=!1;try{if(o=(n=n.call(e)).next,t!==0)for(;!(l=(r=o.call(n)).done)&&(i.push(r.value),i.length!==t);l=!0);}catch(d){f=!0,s=d}finally{try{if(!l&&n.return!=null&&(a=n.return(),Object(a)!==a))return}finally{if(f)throw s}}return i}}function kE(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function s4(e,t){if(e){if(typeof e=="string")return kE(e,t);var n={}.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?kE(e,t):void 0}}function zie(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
84
84
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function KP(e,t){return Vie(e)||Hie(e,t)||s4(e,t)||zie()}function Gie(e){if(Array.isArray(e))return kE(e)}function Wie(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Yie(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
@@ -741,7 +741,7 @@ and limitations under the License.
741
741
  || ${a} === "boolean" || ${s} === null`).assign(i,(0,bt._)`[${s}]`)}}}function Ysn({gen:e,parentData:t,parentDataProperty:n},r){e.if((0,bt._)`${t} !== undefined`,()=>e.assign((0,bt._)`${t}[${n}]`,r))}function Jw(e,t,n,r=$u.Correct){const s=r===$u.Correct?bt.operators.EQ:bt.operators.NEQ;let o;switch(e){case"null":return(0,bt._)`${t} ${s} null`;case"array":o=(0,bt._)`Array.isArray(${t})`;break;case"object":o=(0,bt._)`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":o=a((0,bt._)`!(${t} % 1) && !isNaN(${t})`);break;case"number":o=a();break;default:return(0,bt._)`typeof ${t} ${s} ${e}`}return r===$u.Correct?o:(0,bt.not)(o);function a(i=bt.nil){return(0,bt.and)((0,bt._)`typeof ${t} == "number"`,i,n?(0,bt._)`isFinite(${t})`:bt.nil)}}Zn.checkDataType=Jw;function vx(e,t,n,r){if(e.length===1)return Jw(e[0],t,n,r);let s;const o=(0,WU.toHash)(e);if(o.array&&o.object){const a=(0,bt._)`typeof ${t} != "object"`;s=o.null?a:(0,bt._)`!${t} || ${a}`,delete o.null,delete o.array,delete o.object}else s=bt.nil;o.number&&delete o.integer;for(const a in o)s=(0,bt.and)(s,Jw(a,t,n,r));return s}Zn.checkDataTypes=vx;const Ksn={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>typeof e=="string"?(0,bt._)`{type: ${e}}`:(0,bt._)`{type: ${t}}`};function yx(e){const t=Jsn(e);(0,Vsn.reportError)(t,Ksn)}Zn.reportTypeError=yx;function Jsn(e){const{gen:t,data:n,schema:r}=e,s=(0,WU.schemaRefOrVal)(e,r,"type");return{gen:t,keyword:"type",data:n,schema:r.type,schemaCode:s,schemaValue:s,parentSchema:r,params:{},it:e}}var Rb={};Object.defineProperty(Rb,"__esModule",{value:!0});Rb.assignDefaults=void 0;const Jl=_t,Xsn=qe;function Zsn(e,t){const{properties:n,items:r}=e.schema;if(t==="object"&&n)for(const s in n)jD(e,s,n[s].default);else t==="array"&&Array.isArray(r)&&r.forEach((s,o)=>jD(e,o,s.default))}Rb.assignDefaults=Zsn;function jD(e,t,n){const{gen:r,compositeRule:s,data:o,opts:a}=e;if(n===void 0)return;const i=(0,Jl._)`${o}${(0,Jl.getProperty)(t)}`;if(s){(0,Xsn.checkStrictMode)(e,`default is ignored for: ${i}`);return}let l=(0,Jl._)`${i} === undefined`;a.useDefaults==="empty"&&(l=(0,Jl._)`${l} || ${i} === null || ${i} === ""`),r.if(l,(0,Jl._)`${i} = ${(0,Jl.stringify)(n)}`)}var Uo={},Pt={};Object.defineProperty(Pt,"__esModule",{value:!0});Pt.validateUnion=Pt.validateArray=Pt.usePattern=Pt.callValidateCode=Pt.schemaProperties=Pt.allSchemaProperties=Pt.noPropertyInData=Pt.propertyInData=Pt.isOwnProperty=Pt.hasPropFunc=Pt.reportMissingProp=Pt.checkMissingProp=Pt.checkReportMissingProp=void 0;const yn=_t,bx=qe,$i=Xo,Qsn=qe;function eon(e,t){const{gen:n,data:r,it:s}=e;n.if(Ex(n,r,t,s.opts.ownProperties),()=>{e.setParams({missingProperty:(0,yn._)`${t}`},!0),e.error()})}Pt.checkReportMissingProp=eon;function ton({gen:e,data:t,it:{opts:n}},r,s){return(0,yn.or)(...r.map(o=>(0,yn.and)(Ex(e,t,o,n.ownProperties),(0,yn._)`${s} = ${o}`)))}Pt.checkMissingProp=ton;function non(e,t){e.setParams({missingProperty:t},!0),e.error()}Pt.reportMissingProp=non;function JU(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,yn._)`Object.prototype.hasOwnProperty`})}Pt.hasPropFunc=JU;function $x(e,t,n){return(0,yn._)`${JU(e)}.call(${t}, ${n})`}Pt.isOwnProperty=$x;function ron(e,t,n,r){const s=(0,yn._)`${t}${(0,yn.getProperty)(n)} !== undefined`;return r?(0,yn._)`${s} && ${$x(e,t,n)}`:s}Pt.propertyInData=ron;function Ex(e,t,n,r){const s=(0,yn._)`${t}${(0,yn.getProperty)(n)} === undefined`;return r?(0,yn.or)(s,(0,yn.not)($x(e,t,n))):s}Pt.noPropertyInData=Ex;function XU(e){return e?Object.keys(e).filter(t=>t!=="__proto__"):[]}Pt.allSchemaProperties=XU;function son(e,t){return XU(t).filter(n=>!(0,bx.alwaysValidSchema)(e,t[n]))}Pt.schemaProperties=son;function oon({schemaCode:e,data:t,it:{gen:n,topSchemaRef:r,schemaPath:s,errorPath:o},it:a},i,l,f){const d=f?(0,yn._)`${e}, ${t}, ${r}${s}`:t,p=[[$i.default.instancePath,(0,yn.strConcat)($i.default.instancePath,o)],[$i.default.parentData,a.parentData],[$i.default.parentDataProperty,a.parentDataProperty],[$i.default.rootData,$i.default.rootData]];a.opts.dynamicRef&&p.push([$i.default.dynamicAnchors,$i.default.dynamicAnchors]);const g=(0,yn._)`${d}, ${n.object(...p)}`;return l!==yn.nil?(0,yn._)`${i}.call(${l}, ${g})`:(0,yn._)`${i}(${g})`}Pt.callValidateCode=oon;const aon=(0,yn._)`new RegExp`;function ion({gen:e,it:{opts:t}},n){const r=t.unicodeRegExp?"u":"",{regExp:s}=t.code,o=s(n,r);return e.scopeValue("pattern",{key:o.toString(),ref:o,code:(0,yn._)`${s.code==="new RegExp"?aon:(0,Qsn.useFunc)(e,s)}(${n}, ${r})`})}Pt.usePattern=ion;function con(e){const{gen:t,data:n,keyword:r,it:s}=e,o=t.name("valid");if(s.allErrors){const i=t.let("valid",!0);return a(()=>t.assign(i,!1)),i}return t.var(o,!0),a(()=>t.break()),o;function a(i){const l=t.const("len",(0,yn._)`${n}.length`);t.forRange("i",0,l,f=>{e.subschema({keyword:r,dataProp:f,dataPropType:bx.Type.Num},o),t.if((0,yn.not)(o),i)})}}Pt.validateArray=con;function lon(e){const{gen:t,schema:n,keyword:r,it:s}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");if(n.some(l=>(0,bx.alwaysValidSchema)(s,l))&&!s.opts.unevaluated)return;const a=t.let("valid",!1),i=t.name("_valid");t.block(()=>n.forEach((l,f)=>{const d=e.subschema({keyword:r,schemaProp:f,compositeRule:!0},i);t.assign(a,(0,yn._)`${a} || ${i}`),e.mergeValidEvaluated(d,i)||t.if((0,yn.not)(a))})),e.result(a,()=>e.reset(),()=>e.error(!0))}Pt.validateUnion=lon;Object.defineProperty(Uo,"__esModule",{value:!0});Uo.validateKeywordUsage=Uo.validSchemaType=Uo.funcKeywordCode=Uo.macroKeywordCode=void 0;const kr=_t,Cc=Xo,uon=Pt,fon=gp;function don(e,t){const{gen:n,keyword:r,schema:s,parentSchema:o,it:a}=e,i=t.macro.call(a.self,s,o,a),l=ZU(n,r,i);a.opts.validateSchema!==!1&&a.self.validateSchema(i,!0);const f=n.name("valid");e.subschema({schema:i,schemaPath:kr.nil,errSchemaPath:`${a.errSchemaPath}/${r}`,topSchemaRef:l,compositeRule:!0},f),e.pass(f,()=>e.error(!0))}Uo.macroKeywordCode=don;function hon(e,t){var n;const{gen:r,keyword:s,schema:o,parentSchema:a,$data:i,it:l}=e;mon(l,t);const f=!i&&t.compile?t.compile.call(l.self,o,a,l):t.validate,d=ZU(r,s,f),p=r.let("valid");e.block$data(p,g),e.ok((n=t.valid)!==null&&n!==void 0?n:p);function g(){if(t.errors===!1)$(),t.modifying&&qD(e),E(()=>e.error());else{const v=t.async?m():y();t.modifying&&qD(e),E(()=>pon(e,v))}}function m(){const v=r.let("ruleErrs",null);return r.try(()=>$((0,kr._)`await `),w=>r.assign(p,!1).if((0,kr._)`${w} instanceof ${l.ValidationError}`,()=>r.assign(v,(0,kr._)`${w}.errors`),()=>r.throw(w))),v}function y(){const v=(0,kr._)`${d}.errors`;return r.assign(v,null),$(kr.nil),v}function $(v=t.async?(0,kr._)`await `:kr.nil){const w=l.opts.passContext?Cc.default.this:Cc.default.self,C=!("compile"in t&&!i||t.schema===!1);r.assign(p,(0,kr._)`${v}${(0,uon.callValidateCode)(e,d,w,C)}`,t.modifying)}function E(v){var w;r.if((0,kr.not)((w=t.valid)!==null&&w!==void 0?w:p),v)}}Uo.funcKeywordCode=hon;function qD(e){const{gen:t,data:n,it:r}=e;t.if(r.parentData,()=>t.assign(n,(0,kr._)`${r.parentData}[${r.parentDataProperty}]`))}function pon(e,t){const{gen:n}=e;n.if((0,kr._)`Array.isArray(${t})`,()=>{n.assign(Cc.default.vErrors,(0,kr._)`${Cc.default.vErrors} === null ? ${t} : ${Cc.default.vErrors}.concat(${t})`).assign(Cc.default.errors,(0,kr._)`${Cc.default.vErrors}.length`),(0,fon.extendErrors)(e)},()=>e.error())}function mon({schemaEnv:e},t){if(t.async&&!e.$async)throw new Error("async keyword in sync schema")}function ZU(e,t,n){if(n===void 0)throw new Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword",typeof n=="function"?{ref:n}:{ref:n,code:(0,kr.stringify)(n)})}function gon(e,t,n=!1){return!t.length||t.some(r=>r==="array"?Array.isArray(e):r==="object"?e&&typeof e=="object"&&!Array.isArray(e):typeof e==r||n&&typeof e>"u")}Uo.validSchemaType=gon;function von({schema:e,opts:t,self:n,errSchemaPath:r},s,o){if(Array.isArray(s.keyword)?!s.keyword.includes(o):s.keyword!==o)throw new Error("ajv implementation error");const a=s.dependencies;if(a?.some(i=>!Object.prototype.hasOwnProperty.call(e,i)))throw new Error(`parent schema must have dependencies of ${o}: ${a.join(",")}`);if(s.validateSchema&&!s.validateSchema(e[o])){const l=`keyword "${o}" value is invalid at path "${r}": `+n.errorsText(s.validateSchema.errors);if(t.validateSchema==="log")n.logger.error(l);else throw new Error(l)}}Uo.validateKeywordUsage=von;var Bi={};Object.defineProperty(Bi,"__esModule",{value:!0});Bi.extendSubschemaMode=Bi.extendSubschemaData=Bi.getSubschema=void 0;const ko=_t,QU=qe;function yon(e,{keyword:t,schemaProp:n,schema:r,schemaPath:s,errSchemaPath:o,topSchemaRef:a}){if(t!==void 0&&r!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(t!==void 0){const i=e.schema[t];return n===void 0?{schema:i,schemaPath:(0,ko._)`${e.schemaPath}${(0,ko.getProperty)(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:i[n],schemaPath:(0,ko._)`${e.schemaPath}${(0,ko.getProperty)(t)}${(0,ko.getProperty)(n)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${(0,QU.escapeFragment)(n)}`}}if(r!==void 0){if(s===void 0||o===void 0||a===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:r,schemaPath:s,topSchemaRef:a,errSchemaPath:o}}throw new Error('either "keyword" or "schema" must be passed')}Bi.getSubschema=yon;function bon(e,t,{dataProp:n,dataPropType:r,data:s,dataTypes:o,propertyName:a}){if(s!==void 0&&n!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');const{gen:i}=t;if(n!==void 0){const{errorPath:f,dataPathArr:d,opts:p}=t,g=i.let("data",(0,ko._)`${t.data}${(0,ko.getProperty)(n)}`,!0);l(g),e.errorPath=(0,ko.str)`${f}${(0,QU.getErrorPath)(n,r,p.jsPropertySyntax)}`,e.parentDataProperty=(0,ko._)`${n}`,e.dataPathArr=[...d,e.parentDataProperty]}if(s!==void 0){const f=s instanceof ko.Name?s:i.let("data",s,!0);l(f),a!==void 0&&(e.propertyName=a)}o&&(e.dataTypes=o);function l(f){e.data=f,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,f]}}Bi.extendSubschemaData=bon;function $on(e,{jtdDiscriminator:t,jtdMetadata:n,compositeRule:r,createErrors:s,allErrors:o}){r!==void 0&&(e.compositeRule=r),s!==void 0&&(e.createErrors=s),o!==void 0&&(e.allErrors=o),e.jtdDiscriminator=t,e.jtdMetadata=n}Bi.extendSubschemaMode=$on;var mr={},e8={exports:{}},Ri=e8.exports=function(e,t,n){typeof t=="function"&&(n=t,t={}),n=t.cb||n;var r=typeof n=="function"?n:n.pre||function(){},s=n.post||function(){};Rg(t,r,s,e,"",e)};Ri.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};Ri.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};Ri.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};Ri.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function Rg(e,t,n,r,s,o,a,i,l,f){if(r&&typeof r=="object"&&!Array.isArray(r)){t(r,s,o,a,i,l,f);for(var d in r){var p=r[d];if(Array.isArray(p)){if(d in Ri.arrayKeywords)for(var g=0;g<p.length;g++)Rg(e,t,n,p[g],s+"/"+d+"/"+g,o,s,d,r,g)}else if(d in Ri.propsKeywords){if(p&&typeof p=="object")for(var m in p)Rg(e,t,n,p[m],s+"/"+d+"/"+Eon(m),o,s,d,r,m)}else(d in Ri.keywords||e.allKeys&&!(d in Ri.skipKeywords))&&Rg(e,t,n,p,s+"/"+d,o,s,d,r)}n(r,s,o,a,i,l,f)}}function Eon(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}var won=e8.exports;Object.defineProperty(mr,"__esModule",{value:!0});mr.getSchemaRefs=mr.resolveUrl=mr.normalizeId=mr._getFullPath=mr.getFullPath=mr.inlineRef=void 0;const _on=qe,Son=Tb,Con=won,xon=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function Ton(e,t=!0){return typeof e=="boolean"?!0:t===!0?!Xw(e):t?t8(e)<=t:!1}mr.inlineRef=Ton;const Oon=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function Xw(e){for(const t in e){if(Oon.has(t))return!0;const n=e[t];if(Array.isArray(n)&&n.some(Xw)||typeof n=="object"&&Xw(n))return!0}return!1}function t8(e){let t=0;for(const n in e){if(n==="$ref")return 1/0;if(t++,!xon.has(n)&&(typeof e[n]=="object"&&(0,_on.eachItem)(e[n],r=>t+=t8(r)),t===1/0))return 1/0}return t}function n8(e,t="",n){n!==!1&&(t=Eu(t));const r=e.parse(t);return r8(e,r)}mr.getFullPath=n8;function r8(e,t){return e.serialize(t).split("#")[0]+"#"}mr._getFullPath=r8;const Non=/#\/?$/;function Eu(e){return e?e.replace(Non,""):""}mr.normalizeId=Eu;function Pon(e,t,n){return n=Eu(n),e.resolve(t,n)}mr.resolveUrl=Pon;const Aon=/^[a-z_][-a-z0-9._]*$/i;function Ion(e,t){if(typeof e=="boolean")return{};const{schemaId:n,uriResolver:r}=this.opts,s=Eu(e[n]||t),o={"":s},a=n8(r,s,!1),i={},l=new Set;return Con(e,{allKeys:!0},(p,g,m,y)=>{if(y===void 0)return;const $=a+g;let E=o[y];typeof p[n]=="string"&&(E=v.call(this,p[n])),w.call(this,p.$anchor),w.call(this,p.$dynamicAnchor),o[g]=E;function v(C){const N=this.opts.uriResolver.resolve;if(C=Eu(E?N(E,C):C),l.has(C))throw d(C);l.add(C);let T=this.refs[C];return typeof T=="string"&&(T=this.refs[T]),typeof T=="object"?f(p,T.schema,C):C!==Eu($)&&(C[0]==="#"?(f(p,i[C],C),i[C]=p):this.refs[C]=$),C}function w(C){if(typeof C=="string"){if(!Aon.test(C))throw new Error(`invalid anchor "${C}"`);v.call(this,`#${C}`)}}}),i;function f(p,g,m){if(g!==void 0&&!Son(p,g))throw d(m)}function d(p){return new Error(`reference "${p}" resolves to more than one schema`)}}mr.getSchemaRefs=Ion;Object.defineProperty(fo,"__esModule",{value:!0});fo.getData=fo.KeywordCxt=fo.validateFunctionCode=void 0;const s8=ju,UD=Zn,wx=ka,Mv=Zn,Ron=Rb,Bd=Uo,rE=Bi,Qe=_t,ut=Xo,kon=mr,Da=qe,bd=gp;function Don(e){if(i8(e)&&(c8(e),a8(e))){Fon(e);return}o8(e,()=>(0,s8.topBoolOrEmptySchema)(e))}fo.validateFunctionCode=Don;function o8({gen:e,validateName:t,schema:n,schemaEnv:r,opts:s},o){s.code.es5?e.func(t,(0,Qe._)`${ut.default.data}, ${ut.default.valCxt}`,r.$async,()=>{e.code((0,Qe._)`"use strict"; ${BD(n,s)}`),Lon(e,s),e.code(o)}):e.func(t,(0,Qe._)`${ut.default.data}, ${Mon(s)}`,r.$async,()=>e.code(BD(n,s)).code(o))}function Mon(e){return(0,Qe._)`{${ut.default.instancePath}="", ${ut.default.parentData}, ${ut.default.parentDataProperty}, ${ut.default.rootData}=${ut.default.data}${e.dynamicRef?(0,Qe._)`, ${ut.default.dynamicAnchors}={}`:Qe.nil}}={}`}function Lon(e,t){e.if(ut.default.valCxt,()=>{e.var(ut.default.instancePath,(0,Qe._)`${ut.default.valCxt}.${ut.default.instancePath}`),e.var(ut.default.parentData,(0,Qe._)`${ut.default.valCxt}.${ut.default.parentData}`),e.var(ut.default.parentDataProperty,(0,Qe._)`${ut.default.valCxt}.${ut.default.parentDataProperty}`),e.var(ut.default.rootData,(0,Qe._)`${ut.default.valCxt}.${ut.default.rootData}`),t.dynamicRef&&e.var(ut.default.dynamicAnchors,(0,Qe._)`${ut.default.valCxt}.${ut.default.dynamicAnchors}`)},()=>{e.var(ut.default.instancePath,(0,Qe._)`""`),e.var(ut.default.parentData,(0,Qe._)`undefined`),e.var(ut.default.parentDataProperty,(0,Qe._)`undefined`),e.var(ut.default.rootData,ut.default.data),t.dynamicRef&&e.var(ut.default.dynamicAnchors,(0,Qe._)`{}`)})}function Fon(e){const{schema:t,opts:n,gen:r}=e;o8(e,()=>{n.$comment&&t.$comment&&u8(e),Von(e),r.let(ut.default.vErrors,null),r.let(ut.default.errors,0),n.unevaluated&&jon(e),l8(e),Gon(e)})}function jon(e){const{gen:t,validateName:n}=e;e.evaluated=t.const("evaluated",(0,Qe._)`${n}.evaluated`),t.if((0,Qe._)`${e.evaluated}.dynamicProps`,()=>t.assign((0,Qe._)`${e.evaluated}.props`,(0,Qe._)`undefined`)),t.if((0,Qe._)`${e.evaluated}.dynamicItems`,()=>t.assign((0,Qe._)`${e.evaluated}.items`,(0,Qe._)`undefined`))}function BD(e,t){const n=typeof e=="object"&&e[t.schemaId];return n&&(t.code.source||t.code.process)?(0,Qe._)`/*# sourceURL=${n} */`:Qe.nil}function qon(e,t){if(i8(e)&&(c8(e),a8(e))){Uon(e,t);return}(0,s8.boolOrEmptySchema)(e,t)}function a8({schema:e,self:t}){if(typeof e=="boolean")return!e;for(const n in e)if(t.RULES.all[n])return!0;return!1}function i8(e){return typeof e.schema!="boolean"}function Uon(e,t){const{schema:n,gen:r,opts:s}=e;s.$comment&&n.$comment&&u8(e),Hon(e),zon(e);const o=r.const("_errs",ut.default.errors);l8(e,o),r.var(t,(0,Qe._)`${o} === ${ut.default.errors}`)}function c8(e){(0,Da.checkUnknownRules)(e),Bon(e)}function l8(e,t){if(e.opts.jtd)return VD(e,[],!1,t);const n=(0,UD.getSchemaTypes)(e.schema),r=(0,UD.coerceAndCheckDataType)(e,n);VD(e,n,!r,t)}function Bon(e){const{schema:t,errSchemaPath:n,opts:r,self:s}=e;t.$ref&&r.ignoreKeywordsWithRef&&(0,Da.schemaHasRulesButRef)(t,s.RULES)&&s.logger.warn(`$ref: keywords ignored in schema at path "${n}"`)}function Von(e){const{schema:t,opts:n}=e;t.default!==void 0&&n.useDefaults&&n.strictSchema&&(0,Da.checkStrictMode)(e,"default is ignored in the schema root")}function Hon(e){const t=e.schema[e.opts.schemaId];t&&(e.baseId=(0,kon.resolveUrl)(e.opts.uriResolver,e.baseId,t))}function zon(e){if(e.schema.$async&&!e.schemaEnv.$async)throw new Error("async schema in sync schema")}function u8({gen:e,schemaEnv:t,schema:n,errSchemaPath:r,opts:s}){const o=n.$comment;if(s.$comment===!0)e.code((0,Qe._)`${ut.default.self}.logger.log(${o})`);else if(typeof s.$comment=="function"){const a=(0,Qe.str)`${r}/$comment`,i=e.scopeValue("root",{ref:t.root});e.code((0,Qe._)`${ut.default.self}.opts.$comment(${o}, ${a}, ${i}.schema)`)}}function Gon(e){const{gen:t,schemaEnv:n,validateName:r,ValidationError:s,opts:o}=e;n.$async?t.if((0,Qe._)`${ut.default.errors} === 0`,()=>t.return(ut.default.data),()=>t.throw((0,Qe._)`new ${s}(${ut.default.vErrors})`)):(t.assign((0,Qe._)`${r}.errors`,ut.default.vErrors),o.unevaluated&&Won(e),t.return((0,Qe._)`${ut.default.errors} === 0`))}function Won({gen:e,evaluated:t,props:n,items:r}){n instanceof Qe.Name&&e.assign((0,Qe._)`${t}.props`,n),r instanceof Qe.Name&&e.assign((0,Qe._)`${t}.items`,r)}function VD(e,t,n,r){const{gen:s,schema:o,data:a,allErrors:i,opts:l,self:f}=e,{RULES:d}=f;if(o.$ref&&(l.ignoreKeywordsWithRef||!(0,Da.schemaHasRulesButRef)(o,d))){s.block(()=>h8(e,"$ref",d.all.$ref.definition));return}l.jtd||Yon(e,t),s.block(()=>{for(const g of d.rules)p(g);p(d.post)});function p(g){(0,wx.shouldUseGroup)(o,g)&&(g.type?(s.if((0,Mv.checkDataType)(g.type,a,l.strictNumbers)),HD(e,g),t.length===1&&t[0]===g.type&&n&&(s.else(),(0,Mv.reportTypeError)(e)),s.endIf()):HD(e,g),i||s.if((0,Qe._)`${ut.default.errors} === ${r||0}`))}}function HD(e,t){const{gen:n,schema:r,opts:{useDefaults:s}}=e;s&&(0,Ron.assignDefaults)(e,t.type),n.block(()=>{for(const o of t.rules)(0,wx.shouldUseRule)(r,o)&&h8(e,o.keyword,o.definition,t.type)})}function Yon(e,t){e.schemaEnv.meta||!e.opts.strictTypes||(Kon(e,t),e.opts.allowUnionTypes||Jon(e,t),Xon(e,e.dataTypes))}function Kon(e,t){if(t.length){if(!e.dataTypes.length){e.dataTypes=t;return}t.forEach(n=>{f8(e.dataTypes,n)||_x(e,`type "${n}" not allowed by context "${e.dataTypes.join(",")}"`)}),Qon(e,t)}}function Jon(e,t){t.length>1&&!(t.length===2&&t.includes("null"))&&_x(e,"use allowUnionTypes to allow union type keyword")}function Xon(e,t){const n=e.self.RULES.all;for(const r in n){const s=n[r];if(typeof s=="object"&&(0,wx.shouldUseRule)(e.schema,s)){const{type:o}=s.definition;o.length&&!o.some(a=>Zon(t,a))&&_x(e,`missing type "${o.join(",")}" for keyword "${r}"`)}}}function Zon(e,t){return e.includes(t)||t==="number"&&e.includes("integer")}function f8(e,t){return e.includes(t)||t==="integer"&&e.includes("number")}function Qon(e,t){const n=[];for(const r of e.dataTypes)f8(t,r)?n.push(r):t.includes("integer")&&r==="number"&&n.push("integer");e.dataTypes=n}function _x(e,t){const n=e.schemaEnv.baseId+e.errSchemaPath;t+=` at "${n}" (strictTypes)`,(0,Da.checkStrictMode)(e,t,e.opts.strictTypes)}class d8{constructor(t,n,r){if((0,Bd.validateKeywordUsage)(t,n,r),this.gen=t.gen,this.allErrors=t.allErrors,this.keyword=r,this.data=t.data,this.schema=t.schema[r],this.$data=n.$data&&t.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,Da.schemaRefOrVal)(t,this.schema,r,this.$data),this.schemaType=n.schemaType,this.parentSchema=t.schema,this.params={},this.it=t,this.def=n,this.$data)this.schemaCode=t.gen.const("vSchema",p8(this.$data,t));else if(this.schemaCode=this.schemaValue,!(0,Bd.validSchemaType)(this.schema,n.schemaType,n.allowUndefined))throw new Error(`${r} value must be ${JSON.stringify(n.schemaType)}`);("code"in n?n.trackErrors:n.errors!==!1)&&(this.errsCount=t.gen.const("_errs",ut.default.errors))}result(t,n,r){this.failResult((0,Qe.not)(t),n,r)}failResult(t,n,r){this.gen.if(t),r?r():this.error(),n?(this.gen.else(),n(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(t,n){this.failResult((0,Qe.not)(t),void 0,n)}fail(t){if(t===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(t),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(t){if(!this.$data)return this.fail(t);const{schemaCode:n}=this;this.fail((0,Qe._)`${n} !== undefined && (${(0,Qe.or)(this.invalid$data(),t)})`)}error(t,n,r){if(n){this.setParams(n),this._error(t,r),this.setParams({});return}this._error(t,r)}_error(t,n){(t?bd.reportExtraError:bd.reportError)(this,this.def.error,n)}$dataError(){(0,bd.reportError)(this,this.def.$dataError||bd.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,bd.resetErrorsCount)(this.gen,this.errsCount)}ok(t){this.allErrors||this.gen.if(t)}setParams(t,n){n?Object.assign(this.params,t):this.params=t}block$data(t,n,r=Qe.nil){this.gen.block(()=>{this.check$data(t,r),n()})}check$data(t=Qe.nil,n=Qe.nil){if(!this.$data)return;const{gen:r,schemaCode:s,schemaType:o,def:a}=this;r.if((0,Qe.or)((0,Qe._)`${s} === undefined`,n)),t!==Qe.nil&&r.assign(t,!0),(o.length||a.validateSchema)&&(r.elseIf(this.invalid$data()),this.$dataError(),t!==Qe.nil&&r.assign(t,!1)),r.else()}invalid$data(){const{gen:t,schemaCode:n,schemaType:r,def:s,it:o}=this;return(0,Qe.or)(a(),i());function a(){if(r.length){if(!(n instanceof Qe.Name))throw new Error("ajv implementation error");const l=Array.isArray(r)?r:[r];return(0,Qe._)`${(0,Mv.checkDataTypes)(l,n,o.opts.strictNumbers,Mv.DataType.Wrong)}`}return Qe.nil}function i(){if(s.validateSchema){const l=t.scopeValue("validate$data",{ref:s.validateSchema});return(0,Qe._)`!${l}(${n})`}return Qe.nil}}subschema(t,n){const r=(0,rE.getSubschema)(this.it,t);(0,rE.extendSubschemaData)(r,this.it,t),(0,rE.extendSubschemaMode)(r,t);const s={...this.it,...r,items:void 0,props:void 0};return qon(s,n),s}mergeEvaluated(t,n){const{it:r,gen:s}=this;r.opts.unevaluated&&(r.props!==!0&&t.props!==void 0&&(r.props=Da.mergeEvaluated.props(s,t.props,r.props,n)),r.items!==!0&&t.items!==void 0&&(r.items=Da.mergeEvaluated.items(s,t.items,r.items,n)))}mergeValidEvaluated(t,n){const{it:r,gen:s}=this;if(r.opts.unevaluated&&(r.props!==!0||r.items!==!0))return s.if(n,()=>this.mergeEvaluated(t,Qe.Name)),!0}}fo.KeywordCxt=d8;function h8(e,t,n,r){const s=new d8(e,n,t);"code"in n?n.code(s,r):s.$data&&n.validate?(0,Bd.funcKeywordCode)(s,n):"macro"in n?(0,Bd.macroKeywordCode)(s,n):(n.compile||n.validate)&&(0,Bd.funcKeywordCode)(s,n)}const ean=/^\/(?:[^~]|~0|~1)*$/,tan=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function p8(e,{dataLevel:t,dataNames:n,dataPathArr:r}){let s,o;if(e==="")return ut.default.rootData;if(e[0]==="/"){if(!ean.test(e))throw new Error(`Invalid JSON-pointer: ${e}`);s=e,o=ut.default.rootData}else{const f=tan.exec(e);if(!f)throw new Error(`Invalid JSON-pointer: ${e}`);const d=+f[1];if(s=f[2],s==="#"){if(d>=t)throw new Error(l("property/index",d));return r[t-d]}if(d>t)throw new Error(l("data",d));if(o=n[t-d],!s)return o}let a=o;const i=s.split("/");for(const f of i)f&&(o=(0,Qe._)`${o}${(0,Qe.getProperty)((0,Da.unescapeJsonPointer)(f))}`,a=(0,Qe._)`${a} && ${o}`);return a;function l(f,d){return`Cannot access ${f} ${d} levels up, current level is ${t}`}}fo.getData=p8;var vp={};Object.defineProperty(vp,"__esModule",{value:!0});class nan extends Error{constructor(t){super("validation failed"),this.errors=t,this.ajv=this.validation=!0}}vp.default=nan;var vf={};Object.defineProperty(vf,"__esModule",{value:!0});const sE=mr;class ran extends Error{constructor(t,n,r,s){super(s||`can't resolve reference ${r} from id ${n}`),this.missingRef=(0,sE.resolveUrl)(t,n,r),this.missingSchema=(0,sE.normalizeId)((0,sE.getFullPath)(t,this.missingRef))}}vf.default=ran;var Yr={};Object.defineProperty(Yr,"__esModule",{value:!0});Yr.resolveSchema=Yr.getCompilingSchema=Yr.resolveRef=Yr.compileSchema=Yr.SchemaEnv=void 0;const Zs=_t,san=vp,gc=Xo,oo=mr,zD=qe,oan=fo;class kb{constructor(t){var n;this.refs={},this.dynamicAnchors={};let r;typeof t.schema=="object"&&(r=t.schema),this.schema=t.schema,this.schemaId=t.schemaId,this.root=t.root||this,this.baseId=(n=t.baseId)!==null&&n!==void 0?n:(0,oo.normalizeId)(r?.[t.schemaId||"$id"]),this.schemaPath=t.schemaPath,this.localRefs=t.localRefs,this.meta=t.meta,this.$async=r?.$async,this.refs={}}}Yr.SchemaEnv=kb;function Sx(e){const t=m8.call(this,e);if(t)return t;const n=(0,oo.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:r,lines:s}=this.opts.code,{ownProperties:o}=this.opts,a=new Zs.CodeGen(this.scope,{es5:r,lines:s,ownProperties:o});let i;e.$async&&(i=a.scopeValue("Error",{ref:san.default,code:(0,Zs._)`require("ajv/dist/runtime/validation_error").default`}));const l=a.scopeName("validate");e.validateName=l;const f={gen:a,allErrors:this.opts.allErrors,data:gc.default.data,parentData:gc.default.parentData,parentDataProperty:gc.default.parentDataProperty,dataNames:[gc.default.data],dataPathArr:[Zs.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:a.scopeValue("schema",this.opts.code.source===!0?{ref:e.schema,code:(0,Zs.stringify)(e.schema)}:{ref:e.schema}),validateName:l,ValidationError:i,schema:e.schema,schemaEnv:e,rootId:n,baseId:e.baseId||n,schemaPath:Zs.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,Zs._)`""`,opts:this.opts,self:this};let d;try{this._compilations.add(e),(0,oan.validateFunctionCode)(f),a.optimize(this.opts.code.optimize);const p=a.toString();d=`${a.scopeRefs(gc.default.scope)}return ${p}`,this.opts.code.process&&(d=this.opts.code.process(d,e));const m=new Function(`${gc.default.self}`,`${gc.default.scope}`,d)(this,this.scope.get());if(this.scope.value(l,{ref:m}),m.errors=null,m.schema=e.schema,m.schemaEnv=e,e.$async&&(m.$async=!0),this.opts.code.source===!0&&(m.source={validateName:l,validateCode:p,scopeValues:a._values}),this.opts.unevaluated){const{props:y,items:$}=f;m.evaluated={props:y instanceof Zs.Name?void 0:y,items:$ instanceof Zs.Name?void 0:$,dynamicProps:y instanceof Zs.Name,dynamicItems:$ instanceof Zs.Name},m.source&&(m.source.evaluated=(0,Zs.stringify)(m.evaluated))}return e.validate=m,e}catch(p){throw delete e.validate,delete e.validateName,d&&this.logger.error("Error compiling schema, function code:",d),p}finally{this._compilations.delete(e)}}Yr.compileSchema=Sx;function aan(e,t,n){var r;n=(0,oo.resolveUrl)(this.opts.uriResolver,t,n);const s=e.refs[n];if(s)return s;let o=lan.call(this,e,n);if(o===void 0){const a=(r=e.localRefs)===null||r===void 0?void 0:r[n],{schemaId:i}=this.opts;a&&(o=new kb({schema:a,schemaId:i,root:e,baseId:t}))}if(o!==void 0)return e.refs[n]=ian.call(this,o)}Yr.resolveRef=aan;function ian(e){return(0,oo.inlineRef)(e.schema,this.opts.inlineRefs)?e.schema:e.validate?e:Sx.call(this,e)}function m8(e){for(const t of this._compilations)if(can(t,e))return t}Yr.getCompilingSchema=m8;function can(e,t){return e.schema===t.schema&&e.root===t.root&&e.baseId===t.baseId}function lan(e,t){let n;for(;typeof(n=this.refs[t])=="string";)t=n;return n||this.schemas[t]||Db.call(this,e,t)}function Db(e,t){const n=this.opts.uriResolver.parse(t),r=(0,oo._getFullPath)(this.opts.uriResolver,n);let s=(0,oo.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&r===s)return oE.call(this,n,e);const o=(0,oo.normalizeId)(r),a=this.refs[o]||this.schemas[o];if(typeof a=="string"){const i=Db.call(this,e,a);return typeof i?.schema!="object"?void 0:oE.call(this,n,i)}if(typeof a?.schema=="object"){if(a.validate||Sx.call(this,a),o===(0,oo.normalizeId)(t)){const{schema:i}=a,{schemaId:l}=this.opts,f=i[l];return f&&(s=(0,oo.resolveUrl)(this.opts.uriResolver,s,f)),new kb({schema:i,schemaId:l,root:e,baseId:s})}return oE.call(this,n,a)}}Yr.resolveSchema=Db;const uan=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function oE(e,{baseId:t,schema:n,root:r}){var s;if(((s=e.fragment)===null||s===void 0?void 0:s[0])!=="/")return;for(const i of e.fragment.slice(1).split("/")){if(typeof n=="boolean")return;const l=n[(0,zD.unescapeFragment)(i)];if(l===void 0)return;n=l;const f=typeof n=="object"&&n[this.opts.schemaId];!uan.has(i)&&f&&(t=(0,oo.resolveUrl)(this.opts.uriResolver,t,f))}let o;if(typeof n!="boolean"&&n.$ref&&!(0,zD.schemaHasRulesButRef)(n,this.RULES)){const i=(0,oo.resolveUrl)(this.opts.uriResolver,t,n.$ref);o=Db.call(this,r,i)}const{schemaId:a}=this.opts;if(o=o||new kb({schema:n,schemaId:a,root:r,baseId:t}),o.schema!==o.root.schema)return o}const fan="https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",dan="Meta-schema for $data reference (JSON AnySchema extension proposal)",han="object",pan=["$data"],man={$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},gan=!1,van={$id:fan,description:dan,type:han,required:pan,properties:man,additionalProperties:gan};var Cx={};Object.defineProperty(Cx,"__esModule",{value:!0});const g8=xU;g8.code='require("ajv/dist/runtime/uri").default';Cx.default=g8;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=void 0;var t=fo;Object.defineProperty(e,"KeywordCxt",{enumerable:!0,get:function(){return t.KeywordCxt}});var n=_t;Object.defineProperty(e,"_",{enumerable:!0,get:function(){return n._}}),Object.defineProperty(e,"str",{enumerable:!0,get:function(){return n.str}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return n.stringify}}),Object.defineProperty(e,"nil",{enumerable:!0,get:function(){return n.nil}}),Object.defineProperty(e,"Name",{enumerable:!0,get:function(){return n.Name}}),Object.defineProperty(e,"CodeGen",{enumerable:!0,get:function(){return n.CodeGen}});const r=vp,s=vf,o=Uc,a=Yr,i=_t,l=mr,f=Zn,d=qe,p=van,g=Cx,m=(V,I)=>new RegExp(V,I);m.code="new RegExp";const y=["removeAdditional","useDefaults","coerceTypes"],$=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),E={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},v={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},w=200;function C(V){var I,F,k,S,P,D,ne,Z,Pe,_e,Fe,He,Ot,Rt,Xe,B,O,A,H,ee,me,we,Ke,Ae,ze;const Dt=V.strict,mt=(I=V.code)===null||I===void 0?void 0:I.optimize,Ht=mt===!0||mt===void 0?1:mt||0,vr=(k=(F=V.code)===null||F===void 0?void 0:F.regExp)!==null&&k!==void 0?k:m,es=(S=V.uriResolver)!==null&&S!==void 0?S:g.default;return{strictSchema:(D=(P=V.strictSchema)!==null&&P!==void 0?P:Dt)!==null&&D!==void 0?D:!0,strictNumbers:(Z=(ne=V.strictNumbers)!==null&&ne!==void 0?ne:Dt)!==null&&Z!==void 0?Z:!0,strictTypes:(_e=(Pe=V.strictTypes)!==null&&Pe!==void 0?Pe:Dt)!==null&&_e!==void 0?_e:"log",strictTuples:(He=(Fe=V.strictTuples)!==null&&Fe!==void 0?Fe:Dt)!==null&&He!==void 0?He:"log",strictRequired:(Rt=(Ot=V.strictRequired)!==null&&Ot!==void 0?Ot:Dt)!==null&&Rt!==void 0?Rt:!1,code:V.code?{...V.code,optimize:Ht,regExp:vr}:{optimize:Ht,regExp:vr},loopRequired:(Xe=V.loopRequired)!==null&&Xe!==void 0?Xe:w,loopEnum:(B=V.loopEnum)!==null&&B!==void 0?B:w,meta:(O=V.meta)!==null&&O!==void 0?O:!0,messages:(A=V.messages)!==null&&A!==void 0?A:!0,inlineRefs:(H=V.inlineRefs)!==null&&H!==void 0?H:!0,schemaId:(ee=V.schemaId)!==null&&ee!==void 0?ee:"$id",addUsedSchema:(me=V.addUsedSchema)!==null&&me!==void 0?me:!0,validateSchema:(we=V.validateSchema)!==null&&we!==void 0?we:!0,validateFormats:(Ke=V.validateFormats)!==null&&Ke!==void 0?Ke:!0,unicodeRegExp:(Ae=V.unicodeRegExp)!==null&&Ae!==void 0?Ae:!0,int32range:(ze=V.int32range)!==null&&ze!==void 0?ze:!0,uriResolver:es}}class N{constructor(I={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,I=this.opts={...I,...C(I)};const{es5:F,lines:k}=this.opts.code;this.scope=new i.ValueScope({scope:{},prefixes:$,es5:F,lines:k}),this.logger=le(I.logger);const S=I.validateFormats;I.validateFormats=!1,this.RULES=(0,o.getRules)(),T.call(this,E,I,"NOT SUPPORTED"),T.call(this,v,I,"DEPRECATED","warn"),this._metaOpts=oe.call(this),I.formats&&te.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),I.keywords&&Q.call(this,I.keywords),typeof I.meta=="object"&&this.addMetaSchema(I.meta),U.call(this),I.validateFormats=S}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){const{$data:I,meta:F,schemaId:k}=this.opts;let S=p;k==="id"&&(S={...p},S.id=S.$id,delete S.$id),F&&I&&this.addMetaSchema(S,S[k],!1)}defaultMeta(){const{meta:I,schemaId:F}=this.opts;return this.opts.defaultMeta=typeof I=="object"?I[F]||I:void 0}validate(I,F){let k;if(typeof I=="string"){if(k=this.getSchema(I),!k)throw new Error(`no schema with key or ref "${I}"`)}else k=this.compile(I);const S=k(F);return"$async"in k||(this.errors=k.errors),S}compile(I,F){const k=this._addSchema(I,F);return k.validate||this._compileSchemaEnv(k)}compileAsync(I,F){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");const{loadSchema:k}=this.opts;return S.call(this,I,F);async function S(_e,Fe){await P.call(this,_e.$schema);const He=this._addSchema(_e,Fe);return He.validate||D.call(this,He)}async function P(_e){_e&&!this.getSchema(_e)&&await S.call(this,{$ref:_e},!0)}async function D(_e){try{return this._compileSchemaEnv(_e)}catch(Fe){if(!(Fe instanceof s.default))throw Fe;return ne.call(this,Fe),await Z.call(this,Fe.missingSchema),D.call(this,_e)}}function ne({missingSchema:_e,missingRef:Fe}){if(this.refs[_e])throw new Error(`AnySchema ${_e} is loaded but ${Fe} cannot be resolved`)}async function Z(_e){const Fe=await Pe.call(this,_e);this.refs[_e]||await P.call(this,Fe.$schema),this.refs[_e]||this.addSchema(Fe,_e,F)}async function Pe(_e){const Fe=this._loading[_e];if(Fe)return Fe;try{return await(this._loading[_e]=k(_e))}finally{delete this._loading[_e]}}}addSchema(I,F,k,S=this.opts.validateSchema){if(Array.isArray(I)){for(const D of I)this.addSchema(D,void 0,k,S);return this}let P;if(typeof I=="object"){const{schemaId:D}=this.opts;if(P=I[D],P!==void 0&&typeof P!="string")throw new Error(`schema ${D} must be string`)}return F=(0,l.normalizeId)(F||P),this._checkUnique(F),this.schemas[F]=this._addSchema(I,k,F,S,!0),this}addMetaSchema(I,F,k=this.opts.validateSchema){return this.addSchema(I,F,!0,k),this}validateSchema(I,F){if(typeof I=="boolean")return!0;let k;if(k=I.$schema,k!==void 0&&typeof k!="string")throw new Error("$schema must be a string");if(k=k||this.opts.defaultMeta||this.defaultMeta(),!k)return this.logger.warn("meta-schema not available"),this.errors=null,!0;const S=this.validate(k,I);if(!S&&F){const P="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(P);else throw new Error(P)}return S}getSchema(I){let F;for(;typeof(F=j.call(this,I))=="string";)I=F;if(F===void 0){const{schemaId:k}=this.opts,S=new a.SchemaEnv({schema:{},schemaId:k});if(F=a.resolveSchema.call(this,S,I),!F)return;this.refs[I]=F}return F.validate||this._compileSchemaEnv(F)}removeSchema(I){if(I instanceof RegExp)return this._removeAllSchemas(this.schemas,I),this._removeAllSchemas(this.refs,I),this;switch(typeof I){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{const F=j.call(this,I);return typeof F=="object"&&this._cache.delete(F.schema),delete this.schemas[I],delete this.refs[I],this}case"object":{const F=I;this._cache.delete(F);let k=I[this.opts.schemaId];return k&&(k=(0,l.normalizeId)(k),delete this.schemas[k],delete this.refs[k]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(I){for(const F of I)this.addKeyword(F);return this}addKeyword(I,F){let k;if(typeof I=="string")k=I,typeof F=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),F.keyword=k);else if(typeof I=="object"&&F===void 0){if(F=I,k=F.keyword,Array.isArray(k)&&!k.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(ae.call(this,k,F),!F)return(0,d.eachItem)(k,P=>K.call(this,P)),this;ce.call(this,F);const S={...F,type:(0,f.getJSONTypes)(F.type),schemaType:(0,f.getJSONTypes)(F.schemaType)};return(0,d.eachItem)(k,S.type.length===0?P=>K.call(this,P,S):P=>S.type.forEach(D=>K.call(this,P,S,D))),this}getKeyword(I){const F=this.RULES.all[I];return typeof F=="object"?F.definition:!!F}removeKeyword(I){const{RULES:F}=this;delete F.keywords[I],delete F.all[I];for(const k of F.rules){const S=k.rules.findIndex(P=>P.keyword===I);S>=0&&k.rules.splice(S,1)}return this}addFormat(I,F){return typeof F=="string"&&(F=new RegExp(F)),this.formats[I]=F,this}errorsText(I=this.errors,{separator:F=", ",dataVar:k="data"}={}){return!I||I.length===0?"No errors":I.map(S=>`${k}${S.instancePath} ${S.message}`).reduce((S,P)=>S+F+P)}$dataMetaSchema(I,F){const k=this.RULES.all;I=JSON.parse(JSON.stringify(I));for(const S of F){const P=S.split("/").slice(1);let D=I;for(const ne of P)D=D[ne];for(const ne in k){const Z=k[ne];if(typeof Z!="object")continue;const{$data:Pe}=Z.definition,_e=D[ne];Pe&&_e&&(D[ne]=pe(_e))}}return I}_removeAllSchemas(I,F){for(const k in I){const S=I[k];(!F||F.test(k))&&(typeof S=="string"?delete I[k]:S&&!S.meta&&(this._cache.delete(S.schema),delete I[k]))}}_addSchema(I,F,k,S=this.opts.validateSchema,P=this.opts.addUsedSchema){let D;const{schemaId:ne}=this.opts;if(typeof I=="object")D=I[ne];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof I!="boolean")throw new Error("schema must be object or boolean")}let Z=this._cache.get(I);if(Z!==void 0)return Z;k=(0,l.normalizeId)(D||k);const Pe=l.getSchemaRefs.call(this,I,k);return Z=new a.SchemaEnv({schema:I,schemaId:ne,meta:F,baseId:k,localRefs:Pe}),this._cache.set(Z.schema,Z),P&&!k.startsWith("#")&&(k&&this._checkUnique(k),this.refs[k]=Z),S&&this.validateSchema(I,!0),Z}_checkUnique(I){if(this.schemas[I]||this.refs[I])throw new Error(`schema with key or id "${I}" already exists`)}_compileSchemaEnv(I){if(I.meta?this._compileMetaSchema(I):a.compileSchema.call(this,I),!I.validate)throw new Error("ajv implementation error");return I.validate}_compileMetaSchema(I){const F=this.opts;this.opts=this._metaOpts;try{a.compileSchema.call(this,I)}finally{this.opts=F}}}N.ValidationError=r.default,N.MissingRefError=s.default,e.default=N;function T(V,I,F,k="error"){for(const S in V){const P=S;P in I&&this.logger[k](`${F}: option ${S}. ${V[P]}`)}}function j(V){return V=(0,l.normalizeId)(V),this.schemas[V]||this.refs[V]}function U(){const V=this.opts.schemas;if(V)if(Array.isArray(V))this.addSchema(V);else for(const I in V)this.addSchema(V[I],I)}function te(){for(const V in this.opts.formats){const I=this.opts.formats[V];I&&this.addFormat(V,I)}}function Q(V){if(Array.isArray(V)){this.addVocabulary(V);return}this.logger.warn("keywords option as map is deprecated, pass array");for(const I in V){const F=V[I];F.keyword||(F.keyword=I),this.addKeyword(F)}}function oe(){const V={...this.opts};for(const I of y)delete V[I];return V}const fe={log(){},warn(){},error(){}};function le(V){if(V===!1)return fe;if(V===void 0)return console;if(V.log&&V.warn&&V.error)return V;throw new Error("logger must implement log, warn and error methods")}const de=/^[a-z_$][a-z0-9_$:-]*$/i;function ae(V,I){const{RULES:F}=this;if((0,d.eachItem)(V,k=>{if(F.keywords[k])throw new Error(`Keyword ${k} is already defined`);if(!de.test(k))throw new Error(`Keyword ${k} has invalid name`)}),!!I&&I.$data&&!("code"in I||"validate"in I))throw new Error('$data keyword must have "code" or "validate" function')}function K(V,I,F){var k;const S=I?.post;if(F&&S)throw new Error('keyword with "post" flag cannot have "type"');const{RULES:P}=this;let D=S?P.post:P.rules.find(({type:Z})=>Z===F);if(D||(D={type:F,rules:[]},P.rules.push(D)),P.keywords[V]=!0,!I)return;const ne={keyword:V,definition:{...I,type:(0,f.getJSONTypes)(I.type),schemaType:(0,f.getJSONTypes)(I.schemaType)}};I.before?ie.call(this,D,ne,I.before):D.rules.push(ne),P.all[V]=ne,(k=I.implements)===null||k===void 0||k.forEach(Z=>this.addKeyword(Z))}function ie(V,I,F){const k=V.rules.findIndex(S=>S.keyword===F);k>=0?V.rules.splice(k,0,I):(V.rules.push(I),this.logger.warn(`rule ${F} is not defined`))}function ce(V){let{metaSchema:I}=V;I!==void 0&&(V.$data&&this.opts.$data&&(I=pe(I)),V.validateSchema=this.compile(I,!0))}const ye={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function pe(V){return{anyOf:[V,ye]}}})(FU);var xx={},Tx={},Ox={};Object.defineProperty(Ox,"__esModule",{value:!0});const yan={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};Ox.default=yan;var Bc={};Object.defineProperty(Bc,"__esModule",{value:!0});Bc.callRef=Bc.getValidate=void 0;const ban=vf,GD=Pt,Gr=_t,Xl=Xo,WD=Yr,sg=qe,$an={keyword:"$ref",schemaType:"string",code(e){const{gen:t,schema:n,it:r}=e,{baseId:s,schemaEnv:o,validateName:a,opts:i,self:l}=r,{root:f}=o;if((n==="#"||n==="#/")&&s===f.baseId)return p();const d=WD.resolveRef.call(l,f,s,n);if(d===void 0)throw new ban.default(r.opts.uriResolver,s,n);if(d instanceof WD.SchemaEnv)return g(d);return m(d);function p(){if(o===f)return kg(e,a,o,o.$async);const y=t.scopeValue("root",{ref:f});return kg(e,(0,Gr._)`${y}.validate`,f,f.$async)}function g(y){const $=v8(e,y);kg(e,$,y,y.$async)}function m(y){const $=t.scopeValue("schema",i.code.source===!0?{ref:y,code:(0,Gr.stringify)(y)}:{ref:y}),E=t.name("valid"),v=e.subschema({schema:y,dataTypes:[],schemaPath:Gr.nil,topSchemaRef:$,errSchemaPath:n},E);e.mergeEvaluated(v),e.ok(E)}}};function v8(e,t){const{gen:n}=e;return t.validate?n.scopeValue("validate",{ref:t.validate}):(0,Gr._)`${n.scopeValue("wrapper",{ref:t})}.validate`}Bc.getValidate=v8;function kg(e,t,n,r){const{gen:s,it:o}=e,{allErrors:a,schemaEnv:i,opts:l}=o,f=l.passContext?Xl.default.this:Gr.nil;r?d():p();function d(){if(!i.$async)throw new Error("async schema referenced by sync schema");const y=s.let("valid");s.try(()=>{s.code((0,Gr._)`await ${(0,GD.callValidateCode)(e,t,f)}`),m(t),a||s.assign(y,!0)},$=>{s.if((0,Gr._)`!(${$} instanceof ${o.ValidationError})`,()=>s.throw($)),g($),a||s.assign(y,!1)}),e.ok(y)}function p(){e.result((0,GD.callValidateCode)(e,t,f),()=>m(t),()=>g(t))}function g(y){const $=(0,Gr._)`${y}.errors`;s.assign(Xl.default.vErrors,(0,Gr._)`${Xl.default.vErrors} === null ? ${$} : ${Xl.default.vErrors}.concat(${$})`),s.assign(Xl.default.errors,(0,Gr._)`${Xl.default.vErrors}.length`)}function m(y){var $;if(!o.opts.unevaluated)return;const E=($=n?.validate)===null||$===void 0?void 0:$.evaluated;if(o.props!==!0)if(E&&!E.dynamicProps)E.props!==void 0&&(o.props=sg.mergeEvaluated.props(s,E.props,o.props));else{const v=s.var("props",(0,Gr._)`${y}.evaluated.props`);o.props=sg.mergeEvaluated.props(s,v,o.props,Gr.Name)}if(o.items!==!0)if(E&&!E.dynamicItems)E.items!==void 0&&(o.items=sg.mergeEvaluated.items(s,E.items,o.items));else{const v=s.var("items",(0,Gr._)`${y}.evaluated.items`);o.items=sg.mergeEvaluated.items(s,v,o.items,Gr.Name)}}}Bc.callRef=kg;Bc.default=$an;Object.defineProperty(Tx,"__esModule",{value:!0});const Ean=Ox,wan=Bc,_an=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",Ean.default,wan.default];Tx.default=_an;var Nx={},Px={};Object.defineProperty(Px,"__esModule",{value:!0});const Lv=_t,Ei=Lv.operators,Fv={maximum:{okStr:"<=",ok:Ei.LTE,fail:Ei.GT},minimum:{okStr:">=",ok:Ei.GTE,fail:Ei.LT},exclusiveMaximum:{okStr:"<",ok:Ei.LT,fail:Ei.GTE},exclusiveMinimum:{okStr:">",ok:Ei.GT,fail:Ei.LTE}},San={message:({keyword:e,schemaCode:t})=>(0,Lv.str)`must be ${Fv[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>(0,Lv._)`{comparison: ${Fv[e].okStr}, limit: ${t}}`},Can={keyword:Object.keys(Fv),type:"number",schemaType:"number",$data:!0,error:San,code(e){const{keyword:t,data:n,schemaCode:r}=e;e.fail$data((0,Lv._)`${n} ${Fv[t].fail} ${r} || isNaN(${n})`)}};Px.default=Can;var Ax={};Object.defineProperty(Ax,"__esModule",{value:!0});const Vd=_t,xan={message:({schemaCode:e})=>(0,Vd.str)`must be multiple of ${e}`,params:({schemaCode:e})=>(0,Vd._)`{multipleOf: ${e}}`},Tan={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:xan,code(e){const{gen:t,data:n,schemaCode:r,it:s}=e,o=s.opts.multipleOfPrecision,a=t.let("res"),i=o?(0,Vd._)`Math.abs(Math.round(${a}) - ${a}) > 1e-${o}`:(0,Vd._)`${a} !== parseInt(${a})`;e.fail$data((0,Vd._)`(${r} === 0 || (${a} = ${n}/${r}, ${i}))`)}};Ax.default=Tan;var Ix={},Rx={};Object.defineProperty(Rx,"__esModule",{value:!0});function y8(e){const t=e.length;let n=0,r=0,s;for(;r<t;)n++,s=e.charCodeAt(r++),s>=55296&&s<=56319&&r<t&&(s=e.charCodeAt(r),(s&64512)===56320&&r++);return n}Rx.default=y8;y8.code='require("ajv/dist/runtime/ucs2length").default';Object.defineProperty(Ix,"__esModule",{value:!0});const xc=_t,Oan=qe,Nan=Rx,Pan={message({keyword:e,schemaCode:t}){const n=e==="maxLength"?"more":"fewer";return(0,xc.str)`must NOT have ${n} than ${t} characters`},params:({schemaCode:e})=>(0,xc._)`{limit: ${e}}`},Aan={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:Pan,code(e){const{keyword:t,data:n,schemaCode:r,it:s}=e,o=t==="maxLength"?xc.operators.GT:xc.operators.LT,a=s.opts.unicode===!1?(0,xc._)`${n}.length`:(0,xc._)`${(0,Oan.useFunc)(e.gen,Nan.default)}(${n})`;e.fail$data((0,xc._)`${a} ${o} ${r}`)}};Ix.default=Aan;var kx={};Object.defineProperty(kx,"__esModule",{value:!0});const Ian=Pt,jv=_t,Ran={message:({schemaCode:e})=>(0,jv.str)`must match pattern "${e}"`,params:({schemaCode:e})=>(0,jv._)`{pattern: ${e}}`},kan={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:Ran,code(e){const{data:t,$data:n,schema:r,schemaCode:s,it:o}=e,a=o.opts.unicodeRegExp?"u":"",i=n?(0,jv._)`(new RegExp(${s}, ${a}))`:(0,Ian.usePattern)(e,r);e.fail$data((0,jv._)`!${i}.test(${t})`)}};kx.default=kan;var Dx={};Object.defineProperty(Dx,"__esModule",{value:!0});const Hd=_t,Dan={message({keyword:e,schemaCode:t}){const n=e==="maxProperties"?"more":"fewer";return(0,Hd.str)`must NOT have ${n} than ${t} properties`},params:({schemaCode:e})=>(0,Hd._)`{limit: ${e}}`},Man={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:Dan,code(e){const{keyword:t,data:n,schemaCode:r}=e,s=t==="maxProperties"?Hd.operators.GT:Hd.operators.LT;e.fail$data((0,Hd._)`Object.keys(${n}).length ${s} ${r}`)}};Dx.default=Man;var Mx={};Object.defineProperty(Mx,"__esModule",{value:!0});const $d=Pt,zd=_t,Lan=qe,Fan={message:({params:{missingProperty:e}})=>(0,zd.str)`must have required property '${e}'`,params:({params:{missingProperty:e}})=>(0,zd._)`{missingProperty: ${e}}`},jan={keyword:"required",type:"object",schemaType:"array",$data:!0,error:Fan,code(e){const{gen:t,schema:n,schemaCode:r,data:s,$data:o,it:a}=e,{opts:i}=a;if(!o&&n.length===0)return;const l=n.length>=i.loopRequired;if(a.allErrors?f():d(),i.strictRequired){const m=e.parentSchema.properties,{definedProperties:y}=e.it;for(const $ of n)if(m?.[$]===void 0&&!y.has($)){const E=a.schemaEnv.baseId+a.errSchemaPath,v=`required property "${$}" is not defined at "${E}" (strictRequired)`;(0,Lan.checkStrictMode)(a,v,a.opts.strictRequired)}}function f(){if(l||o)e.block$data(zd.nil,p);else for(const m of n)(0,$d.checkReportMissingProp)(e,m)}function d(){const m=t.let("missing");if(l||o){const y=t.let("valid",!0);e.block$data(y,()=>g(m,y)),e.ok(y)}else t.if((0,$d.checkMissingProp)(e,n,m)),(0,$d.reportMissingProp)(e,m),t.else()}function p(){t.forOf("prop",r,m=>{e.setParams({missingProperty:m}),t.if((0,$d.noPropertyInData)(t,s,m,i.ownProperties),()=>e.error())})}function g(m,y){e.setParams({missingProperty:m}),t.forOf(m,r,()=>{t.assign(y,(0,$d.propertyInData)(t,s,m,i.ownProperties)),t.if((0,zd.not)(y),()=>{e.error(),t.break()})},zd.nil)}}};Mx.default=jan;var Lx={};Object.defineProperty(Lx,"__esModule",{value:!0});const Gd=_t,qan={message({keyword:e,schemaCode:t}){const n=e==="maxItems"?"more":"fewer";return(0,Gd.str)`must NOT have ${n} than ${t} items`},params:({schemaCode:e})=>(0,Gd._)`{limit: ${e}}`},Uan={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:qan,code(e){const{keyword:t,data:n,schemaCode:r}=e,s=t==="maxItems"?Gd.operators.GT:Gd.operators.LT;e.fail$data((0,Gd._)`${n}.length ${s} ${r}`)}};Lx.default=Uan;var Fx={},yp={};Object.defineProperty(yp,"__esModule",{value:!0});const b8=Tb;b8.code='require("ajv/dist/runtime/equal").default';yp.default=b8;Object.defineProperty(Fx,"__esModule",{value:!0});const aE=Zn,fr=_t,Ban=qe,Van=yp,Han={message:({params:{i:e,j:t}})=>(0,fr.str)`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>(0,fr._)`{i: ${e}, j: ${t}}`},zan={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:Han,code(e){const{gen:t,data:n,$data:r,schema:s,parentSchema:o,schemaCode:a,it:i}=e;if(!r&&!s)return;const l=t.let("valid"),f=o.items?(0,aE.getSchemaTypes)(o.items):[];e.block$data(l,d,(0,fr._)`${a} === false`),e.ok(l);function d(){const y=t.let("i",(0,fr._)`${n}.length`),$=t.let("j");e.setParams({i:y,j:$}),t.assign(l,!0),t.if((0,fr._)`${y} > 1`,()=>(p()?g:m)(y,$))}function p(){return f.length>0&&!f.some(y=>y==="object"||y==="array")}function g(y,$){const E=t.name("item"),v=(0,aE.checkDataTypes)(f,E,i.opts.strictNumbers,aE.DataType.Wrong),w=t.const("indices",(0,fr._)`{}`);t.for((0,fr._)`;${y}--;`,()=>{t.let(E,(0,fr._)`${n}[${y}]`),t.if(v,(0,fr._)`continue`),f.length>1&&t.if((0,fr._)`typeof ${E} == "string"`,(0,fr._)`${E} += "_"`),t.if((0,fr._)`typeof ${w}[${E}] == "number"`,()=>{t.assign($,(0,fr._)`${w}[${E}]`),e.error(),t.assign(l,!1).break()}).code((0,fr._)`${w}[${E}] = ${y}`)})}function m(y,$){const E=(0,Ban.useFunc)(t,Van.default),v=t.name("outer");t.label(v).for((0,fr._)`;${y}--;`,()=>t.for((0,fr._)`${$} = ${y}; ${$}--;`,()=>t.if((0,fr._)`${E}(${n}[${y}], ${n}[${$}])`,()=>{e.error(),t.assign(l,!1).break(v)})))}}};Fx.default=zan;var jx={};Object.defineProperty(jx,"__esModule",{value:!0});const Zw=_t,Gan=qe,Wan=yp,Yan={message:"must be equal to constant",params:({schemaCode:e})=>(0,Zw._)`{allowedValue: ${e}}`},Kan={keyword:"const",$data:!0,error:Yan,code(e){const{gen:t,data:n,$data:r,schemaCode:s,schema:o}=e;r||o&&typeof o=="object"?e.fail$data((0,Zw._)`!${(0,Gan.useFunc)(t,Wan.default)}(${n}, ${s})`):e.fail((0,Zw._)`${o} !== ${n}`)}};jx.default=Kan;var qx={};Object.defineProperty(qx,"__esModule",{value:!0});const Cd=_t,Jan=qe,Xan=yp,Zan={message:"must be equal to one of the allowed values",params:({schemaCode:e})=>(0,Cd._)`{allowedValues: ${e}}`},Qan={keyword:"enum",schemaType:"array",$data:!0,error:Zan,code(e){const{gen:t,data:n,$data:r,schema:s,schemaCode:o,it:a}=e;if(!r&&s.length===0)throw new Error("enum must have non-empty array");const i=s.length>=a.opts.loopEnum;let l;const f=()=>l??(l=(0,Jan.useFunc)(t,Xan.default));let d;if(i||r)d=t.let("valid"),e.block$data(d,p);else{if(!Array.isArray(s))throw new Error("ajv implementation error");const m=t.const("vSchema",o);d=(0,Cd.or)(...s.map((y,$)=>g(m,$)))}e.pass(d);function p(){t.assign(d,!1),t.forOf("v",o,m=>t.if((0,Cd._)`${f()}(${n}, ${m})`,()=>t.assign(d,!0).break()))}function g(m,y){const $=s[y];return typeof $=="object"&&$!==null?(0,Cd._)`${f()}(${n}, ${m}[${y}])`:(0,Cd._)`${n} === ${$}`}}};qx.default=Qan;Object.defineProperty(Nx,"__esModule",{value:!0});const ein=Px,tin=Ax,nin=Ix,rin=kx,sin=Dx,oin=Mx,ain=Lx,iin=Fx,cin=jx,lin=qx,uin=[ein.default,tin.default,nin.default,rin.default,sin.default,oin.default,ain.default,iin.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},cin.default,lin.default];Nx.default=uin;var Ux={},yf={};Object.defineProperty(yf,"__esModule",{value:!0});yf.validateAdditionalItems=void 0;const Tc=_t,Qw=qe,fin={message:({params:{len:e}})=>(0,Tc.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,Tc._)`{limit: ${e}}`},din={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:fin,code(e){const{parentSchema:t,it:n}=e,{items:r}=t;if(!Array.isArray(r)){(0,Qw.checkStrictMode)(n,'"additionalItems" is ignored when "items" is not an array of schemas');return}$8(e,r)}};function $8(e,t){const{gen:n,schema:r,data:s,keyword:o,it:a}=e;a.items=!0;const i=n.const("len",(0,Tc._)`${s}.length`);if(r===!1)e.setParams({len:t.length}),e.pass((0,Tc._)`${i} <= ${t.length}`);else if(typeof r=="object"&&!(0,Qw.alwaysValidSchema)(a,r)){const f=n.var("valid",(0,Tc._)`${i} <= ${t.length}`);n.if((0,Tc.not)(f),()=>l(f)),e.ok(f)}function l(f){n.forRange("i",t.length,i,d=>{e.subschema({keyword:o,dataProp:d,dataPropType:Qw.Type.Num},f),a.allErrors||n.if((0,Tc.not)(f),()=>n.break())})}}yf.validateAdditionalItems=$8;yf.default=din;var Bx={},bf={};Object.defineProperty(bf,"__esModule",{value:!0});bf.validateTuple=void 0;const YD=_t,Dg=qe,hin=Pt,pin={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){const{schema:t,it:n}=e;if(Array.isArray(t))return E8(e,"additionalItems",t);n.items=!0,!(0,Dg.alwaysValidSchema)(n,t)&&e.ok((0,hin.validateArray)(e))}};function E8(e,t,n=e.schema){const{gen:r,parentSchema:s,data:o,keyword:a,it:i}=e;d(s),i.opts.unevaluated&&n.length&&i.items!==!0&&(i.items=Dg.mergeEvaluated.items(r,n.length,i.items));const l=r.name("valid"),f=r.const("len",(0,YD._)`${o}.length`);n.forEach((p,g)=>{(0,Dg.alwaysValidSchema)(i,p)||(r.if((0,YD._)`${f} > ${g}`,()=>e.subschema({keyword:a,schemaProp:g,dataProp:g},l)),e.ok(l))});function d(p){const{opts:g,errSchemaPath:m}=i,y=n.length,$=y===p.minItems&&(y===p.maxItems||p[t]===!1);if(g.strictTuples&&!$){const E=`"${a}" is ${y}-tuple, but minItems or maxItems/${t} are not specified or different at path "${m}"`;(0,Dg.checkStrictMode)(i,E,g.strictTuples)}}}bf.validateTuple=E8;bf.default=pin;Object.defineProperty(Bx,"__esModule",{value:!0});const min=bf,gin={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:e=>(0,min.validateTuple)(e,"items")};Bx.default=gin;var Vx={};Object.defineProperty(Vx,"__esModule",{value:!0});const KD=_t,vin=qe,yin=Pt,bin=yf,$in={message:({params:{len:e}})=>(0,KD.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,KD._)`{limit: ${e}}`},Ein={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:$in,code(e){const{schema:t,parentSchema:n,it:r}=e,{prefixItems:s}=n;r.items=!0,!(0,vin.alwaysValidSchema)(r,t)&&(s?(0,bin.validateAdditionalItems)(e,s):e.ok((0,yin.validateArray)(e)))}};Vx.default=Ein;var Hx={};Object.defineProperty(Hx,"__esModule",{value:!0});const Ps=_t,og=qe,win={message:({params:{min:e,max:t}})=>t===void 0?(0,Ps.str)`must contain at least ${e} valid item(s)`:(0,Ps.str)`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>t===void 0?(0,Ps._)`{minContains: ${e}}`:(0,Ps._)`{minContains: ${e}, maxContains: ${t}}`},_in={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:win,code(e){const{gen:t,schema:n,parentSchema:r,data:s,it:o}=e;let a,i;const{minContains:l,maxContains:f}=r;o.opts.next?(a=l===void 0?1:l,i=f):a=1;const d=t.const("len",(0,Ps._)`${s}.length`);if(e.setParams({min:a,max:i}),i===void 0&&a===0){(0,og.checkStrictMode)(o,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(i!==void 0&&a>i){(0,og.checkStrictMode)(o,'"minContains" > "maxContains" is always invalid'),e.fail();return}if((0,og.alwaysValidSchema)(o,n)){let $=(0,Ps._)`${d} >= ${a}`;i!==void 0&&($=(0,Ps._)`${$} && ${d} <= ${i}`),e.pass($);return}o.items=!0;const p=t.name("valid");i===void 0&&a===1?m(p,()=>t.if(p,()=>t.break())):a===0?(t.let(p,!0),i!==void 0&&t.if((0,Ps._)`${s}.length > 0`,g)):(t.let(p,!1),g()),e.result(p,()=>e.reset());function g(){const $=t.name("_valid"),E=t.let("count",0);m($,()=>t.if($,()=>y(E)))}function m($,E){t.forRange("i",0,d,v=>{e.subschema({keyword:"contains",dataProp:v,dataPropType:og.Type.Num,compositeRule:!0},$),E()})}function y($){t.code((0,Ps._)`${$}++`),i===void 0?t.if((0,Ps._)`${$} >= ${a}`,()=>t.assign(p,!0).break()):(t.if((0,Ps._)`${$} > ${i}`,()=>t.assign(p,!1).break()),a===1?t.assign(p,!0):t.if((0,Ps._)`${$} >= ${a}`,()=>t.assign(p,!0)))}}};Hx.default=_in;var w8={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.validateSchemaDeps=e.validatePropertyDeps=e.error=void 0;const t=_t,n=qe,r=Pt;e.error={message:({params:{property:l,depsCount:f,deps:d}})=>{const p=f===1?"property":"properties";return(0,t.str)`must have ${p} ${d} when property ${l} is present`},params:({params:{property:l,depsCount:f,deps:d,missingProperty:p}})=>(0,t._)`{property: ${l},
742
742
  missingProperty: ${p},
743
743
  depsCount: ${f},
744
- deps: ${d}}`};const s={keyword:"dependencies",type:"object",schemaType:"object",error:e.error,code(l){const[f,d]=o(l);a(l,f),i(l,d)}};function o({schema:l}){const f={},d={};for(const p in l){if(p==="__proto__")continue;const g=Array.isArray(l[p])?f:d;g[p]=l[p]}return[f,d]}function a(l,f=l.schema){const{gen:d,data:p,it:g}=l;if(Object.keys(f).length===0)return;const m=d.let("missing");for(const y in f){const $=f[y];if($.length===0)continue;const E=(0,r.propertyInData)(d,p,y,g.opts.ownProperties);l.setParams({property:y,depsCount:$.length,deps:$.join(", ")}),g.allErrors?d.if(E,()=>{for(const v of $)(0,r.checkReportMissingProp)(l,v)}):(d.if((0,t._)`${E} && (${(0,r.checkMissingProp)(l,$,m)})`),(0,r.reportMissingProp)(l,m),d.else())}}e.validatePropertyDeps=a;function i(l,f=l.schema){const{gen:d,data:p,keyword:g,it:m}=l,y=d.name("valid");for(const $ in f)(0,n.alwaysValidSchema)(m,f[$])||(d.if((0,r.propertyInData)(d,p,$,m.opts.ownProperties),()=>{const E=l.subschema({keyword:g,schemaProp:$},y);l.mergeValidEvaluated(E,y)},()=>d.var(y,!0)),l.ok(y))}e.validateSchemaDeps=i,e.default=s})(w8);var zx={};Object.defineProperty(zx,"__esModule",{value:!0});const _8=_t,Sin=qe,Cin={message:"property name must be valid",params:({params:e})=>(0,_8._)`{propertyName: ${e.propertyName}}`},xin={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:Cin,code(e){const{gen:t,schema:n,data:r,it:s}=e;if((0,Sin.alwaysValidSchema)(s,n))return;const o=t.name("valid");t.forIn("key",r,a=>{e.setParams({propertyName:a}),e.subschema({keyword:"propertyNames",data:a,dataTypes:["string"],propertyName:a,compositeRule:!0},o),t.if((0,_8.not)(o),()=>{e.error(!0),s.allErrors||t.break()})}),e.ok(o)}};zx.default=xin;var Mb={};Object.defineProperty(Mb,"__esModule",{value:!0});const ag=Pt,eo=_t,Tin=Xo,ig=qe,Oin={message:"must NOT have additional properties",params:({params:e})=>(0,eo._)`{additionalProperty: ${e.additionalProperty}}`},Nin={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:Oin,code(e){const{gen:t,schema:n,parentSchema:r,data:s,errsCount:o,it:a}=e;if(!o)throw new Error("ajv implementation error");const{allErrors:i,opts:l}=a;if(a.props=!0,l.removeAdditional!=="all"&&(0,ig.alwaysValidSchema)(a,n))return;const f=(0,ag.allSchemaProperties)(r.properties),d=(0,ag.allSchemaProperties)(r.patternProperties);p(),e.ok((0,eo._)`${o} === ${Tin.default.errors}`);function p(){t.forIn("key",s,E=>{!f.length&&!d.length?y(E):t.if(g(E),()=>y(E))})}function g(E){let v;if(f.length>8){const w=(0,ig.schemaRefOrVal)(a,r.properties,"properties");v=(0,ag.isOwnProperty)(t,w,E)}else f.length?v=(0,eo.or)(...f.map(w=>(0,eo._)`${E} === ${w}`)):v=eo.nil;return d.length&&(v=(0,eo.or)(v,...d.map(w=>(0,eo._)`${(0,ag.usePattern)(e,w)}.test(${E})`))),(0,eo.not)(v)}function m(E){t.code((0,eo._)`delete ${s}[${E}]`)}function y(E){if(l.removeAdditional==="all"||l.removeAdditional&&n===!1){m(E);return}if(n===!1){e.setParams({additionalProperty:E}),e.error(),i||t.break();return}if(typeof n=="object"&&!(0,ig.alwaysValidSchema)(a,n)){const v=t.name("valid");l.removeAdditional==="failing"?($(E,v,!1),t.if((0,eo.not)(v),()=>{e.reset(),m(E)})):($(E,v),i||t.if((0,eo.not)(v),()=>t.break()))}}function $(E,v,w){const C={keyword:"additionalProperties",dataProp:E,dataPropType:ig.Type.Str};w===!1&&Object.assign(C,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(C,v)}}};Mb.default=Nin;var Gx={};Object.defineProperty(Gx,"__esModule",{value:!0});const Pin=fo,JD=Pt,iE=qe,XD=Mb,Ain={keyword:"properties",type:"object",schemaType:"object",code(e){const{gen:t,schema:n,parentSchema:r,data:s,it:o}=e;o.opts.removeAdditional==="all"&&r.additionalProperties===void 0&&XD.default.code(new Pin.KeywordCxt(o,XD.default,"additionalProperties"));const a=(0,JD.allSchemaProperties)(n);for(const p of a)o.definedProperties.add(p);o.opts.unevaluated&&a.length&&o.props!==!0&&(o.props=iE.mergeEvaluated.props(t,(0,iE.toHash)(a),o.props));const i=a.filter(p=>!(0,iE.alwaysValidSchema)(o,n[p]));if(i.length===0)return;const l=t.name("valid");for(const p of i)f(p)?d(p):(t.if((0,JD.propertyInData)(t,s,p,o.opts.ownProperties)),d(p),o.allErrors||t.else().var(l,!0),t.endIf()),e.it.definedProperties.add(p),e.ok(l);function f(p){return o.opts.useDefaults&&!o.compositeRule&&n[p].default!==void 0}function d(p){e.subschema({keyword:"properties",schemaProp:p,dataProp:p},l)}}};Gx.default=Ain;var Wx={};Object.defineProperty(Wx,"__esModule",{value:!0});const ZD=Pt,cg=_t,QD=qe,eM=qe,Iin={keyword:"patternProperties",type:"object",schemaType:"object",code(e){const{gen:t,schema:n,data:r,parentSchema:s,it:o}=e,{opts:a}=o,i=(0,ZD.allSchemaProperties)(n),l=i.filter($=>(0,QD.alwaysValidSchema)(o,n[$]));if(i.length===0||l.length===i.length&&(!o.opts.unevaluated||o.props===!0))return;const f=a.strictSchema&&!a.allowMatchingProperties&&s.properties,d=t.name("valid");o.props!==!0&&!(o.props instanceof cg.Name)&&(o.props=(0,eM.evaluatedPropsToName)(t,o.props));const{props:p}=o;g();function g(){for(const $ of i)f&&m($),o.allErrors?y($):(t.var(d,!0),y($),t.if(d))}function m($){for(const E in f)new RegExp($).test(E)&&(0,QD.checkStrictMode)(o,`property ${E} matches pattern ${$} (use allowMatchingProperties)`)}function y($){t.forIn("key",r,E=>{t.if((0,cg._)`${(0,ZD.usePattern)(e,$)}.test(${E})`,()=>{const v=l.includes($);v||e.subschema({keyword:"patternProperties",schemaProp:$,dataProp:E,dataPropType:eM.Type.Str},d),o.opts.unevaluated&&p!==!0?t.assign((0,cg._)`${p}[${E}]`,!0):!v&&!o.allErrors&&t.if((0,cg.not)(d),()=>t.break())})})}}};Wx.default=Iin;var Yx={};Object.defineProperty(Yx,"__esModule",{value:!0});const Rin=qe,kin={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){const{gen:t,schema:n,it:r}=e;if((0,Rin.alwaysValidSchema)(r,n)){e.fail();return}const s=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},s),e.failResult(s,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};Yx.default=kin;var Kx={};Object.defineProperty(Kx,"__esModule",{value:!0});const Din=Pt,Min={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:Din.validateUnion,error:{message:"must match a schema in anyOf"}};Kx.default=Min;var Jx={};Object.defineProperty(Jx,"__esModule",{value:!0});const Mg=_t,Lin=qe,Fin={message:"must match exactly one schema in oneOf",params:({params:e})=>(0,Mg._)`{passingSchemas: ${e.passing}}`},jin={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:Fin,code(e){const{gen:t,schema:n,parentSchema:r,it:s}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");if(s.opts.discriminator&&r.discriminator)return;const o=n,a=t.let("valid",!1),i=t.let("passing",null),l=t.name("_valid");e.setParams({passing:i}),t.block(f),e.result(a,()=>e.reset(),()=>e.error(!0));function f(){o.forEach((d,p)=>{let g;(0,Lin.alwaysValidSchema)(s,d)?t.var(l,!0):g=e.subschema({keyword:"oneOf",schemaProp:p,compositeRule:!0},l),p>0&&t.if((0,Mg._)`${l} && ${a}`).assign(a,!1).assign(i,(0,Mg._)`[${i}, ${p}]`).else(),t.if(l,()=>{t.assign(a,!0),t.assign(i,p),g&&e.mergeEvaluated(g,Mg.Name)})})}}};Jx.default=jin;var Xx={};Object.defineProperty(Xx,"__esModule",{value:!0});const qin=qe,Uin={keyword:"allOf",schemaType:"array",code(e){const{gen:t,schema:n,it:r}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");const s=t.name("valid");n.forEach((o,a)=>{if((0,qin.alwaysValidSchema)(r,o))return;const i=e.subschema({keyword:"allOf",schemaProp:a},s);e.ok(s),e.mergeEvaluated(i)})}};Xx.default=Uin;var Zx={};Object.defineProperty(Zx,"__esModule",{value:!0});const qv=_t,S8=qe,Bin={message:({params:e})=>(0,qv.str)`must match "${e.ifClause}" schema`,params:({params:e})=>(0,qv._)`{failingKeyword: ${e.ifClause}}`},Vin={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:Bin,code(e){const{gen:t,parentSchema:n,it:r}=e;n.then===void 0&&n.else===void 0&&(0,S8.checkStrictMode)(r,'"if" without "then" and "else" is ignored');const s=tM(r,"then"),o=tM(r,"else");if(!s&&!o)return;const a=t.let("valid",!0),i=t.name("_valid");if(l(),e.reset(),s&&o){const d=t.let("ifClause");e.setParams({ifClause:d}),t.if(i,f("then",d),f("else",d))}else s?t.if(i,f("then")):t.if((0,qv.not)(i),f("else"));e.pass(a,()=>e.error(!0));function l(){const d=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},i);e.mergeEvaluated(d)}function f(d,p){return()=>{const g=e.subschema({keyword:d},i);t.assign(a,i),e.mergeValidEvaluated(g,a),p?t.assign(p,(0,qv._)`${d}`):e.setParams({ifClause:d})}}}};function tM(e,t){const n=e.schema[t];return n!==void 0&&!(0,S8.alwaysValidSchema)(e,n)}Zx.default=Vin;var Qx={};Object.defineProperty(Qx,"__esModule",{value:!0});const Hin=qe,zin={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:n}){t.if===void 0&&(0,Hin.checkStrictMode)(n,`"${e}" without "if" is ignored`)}};Qx.default=zin;Object.defineProperty(Ux,"__esModule",{value:!0});const Gin=yf,Win=Bx,Yin=bf,Kin=Vx,Jin=Hx,Xin=w8,Zin=zx,Qin=Mb,ecn=Gx,tcn=Wx,ncn=Yx,rcn=Kx,scn=Jx,ocn=Xx,acn=Zx,icn=Qx;function ccn(e=!1){const t=[ncn.default,rcn.default,scn.default,ocn.default,acn.default,icn.default,Zin.default,Qin.default,Xin.default,ecn.default,tcn.default];return e?t.push(Win.default,Kin.default):t.push(Gin.default,Yin.default),t.push(Jin.default),t}Ux.default=ccn;var eT={},tT={};Object.defineProperty(tT,"__esModule",{value:!0});const Ln=_t,lcn={message:({schemaCode:e})=>(0,Ln.str)`must match format "${e}"`,params:({schemaCode:e})=>(0,Ln._)`{format: ${e}}`},ucn={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:lcn,code(e,t){const{gen:n,data:r,$data:s,schema:o,schemaCode:a,it:i}=e,{opts:l,errSchemaPath:f,schemaEnv:d,self:p}=i;if(!l.validateFormats)return;s?g():m();function g(){const y=n.scopeValue("formats",{ref:p.formats,code:l.code.formats}),$=n.const("fDef",(0,Ln._)`${y}[${a}]`),E=n.let("fType"),v=n.let("format");n.if((0,Ln._)`typeof ${$} == "object" && !(${$} instanceof RegExp)`,()=>n.assign(E,(0,Ln._)`${$}.type || "string"`).assign(v,(0,Ln._)`${$}.validate`),()=>n.assign(E,(0,Ln._)`"string"`).assign(v,$)),e.fail$data((0,Ln.or)(w(),C()));function w(){return l.strictSchema===!1?Ln.nil:(0,Ln._)`${a} && !${v}`}function C(){const N=d.$async?(0,Ln._)`(${$}.async ? await ${v}(${r}) : ${v}(${r}))`:(0,Ln._)`${v}(${r})`,T=(0,Ln._)`(typeof ${v} == "function" ? ${N} : ${v}.test(${r}))`;return(0,Ln._)`${v} && ${v} !== true && ${E} === ${t} && !${T}`}}function m(){const y=p.formats[o];if(!y){w();return}if(y===!0)return;const[$,E,v]=C(y);$===t&&e.pass(N());function w(){if(l.strictSchema===!1){p.logger.warn(T());return}throw new Error(T());function T(){return`unknown format "${o}" ignored in schema at path "${f}"`}}function C(T){const j=T instanceof RegExp?(0,Ln.regexpCode)(T):l.code.formats?(0,Ln._)`${l.code.formats}${(0,Ln.getProperty)(o)}`:void 0,U=n.scopeValue("formats",{key:o,ref:T,code:j});return typeof T=="object"&&!(T instanceof RegExp)?[T.type||"string",T.validate,(0,Ln._)`${U}.validate`]:["string",T,U]}function N(){if(typeof y=="object"&&!(y instanceof RegExp)&&y.async){if(!d.$async)throw new Error("async format in sync schema");return(0,Ln._)`await ${v}(${r})`}return typeof E=="function"?(0,Ln._)`${v}(${r})`:(0,Ln._)`${v}.test(${r})`}}}};tT.default=ucn;Object.defineProperty(eT,"__esModule",{value:!0});const fcn=tT,dcn=[fcn.default];eT.default=dcn;var qu={};Object.defineProperty(qu,"__esModule",{value:!0});qu.contentVocabulary=qu.metadataVocabulary=void 0;qu.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];qu.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"];Object.defineProperty(xx,"__esModule",{value:!0});const hcn=Tx,pcn=Nx,mcn=Ux,gcn=eT,nM=qu,vcn=[hcn.default,pcn.default,(0,mcn.default)(),gcn.default,nM.metadataVocabulary,nM.contentVocabulary];xx.default=vcn;var nT={},Lb={};Object.defineProperty(Lb,"__esModule",{value:!0});Lb.DiscrError=void 0;var rM;(function(e){e.Tag="tag",e.Mapping="mapping"})(rM||(Lb.DiscrError=rM={}));Object.defineProperty(nT,"__esModule",{value:!0});const ru=_t,e_=Lb,sM=Yr,ycn=vf,bcn=qe,$cn={message:({params:{discrError:e,tagName:t}})=>e===e_.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:n}})=>(0,ru._)`{error: ${e}, tag: ${n}, tagValue: ${t}}`},Ecn={keyword:"discriminator",type:"object",schemaType:"object",error:$cn,code(e){const{gen:t,data:n,schema:r,parentSchema:s,it:o}=e,{oneOf:a}=s;if(!o.opts.discriminator)throw new Error("discriminator: requires discriminator option");const i=r.propertyName;if(typeof i!="string")throw new Error("discriminator: requires propertyName");if(r.mapping)throw new Error("discriminator: mapping is not supported");if(!a)throw new Error("discriminator: requires oneOf keyword");const l=t.let("valid",!1),f=t.const("tag",(0,ru._)`${n}${(0,ru.getProperty)(i)}`);t.if((0,ru._)`typeof ${f} == "string"`,()=>d(),()=>e.error(!1,{discrError:e_.DiscrError.Tag,tag:f,tagName:i})),e.ok(l);function d(){const m=g();t.if(!1);for(const y in m)t.elseIf((0,ru._)`${f} === ${y}`),t.assign(l,p(m[y]));t.else(),e.error(!1,{discrError:e_.DiscrError.Mapping,tag:f,tagName:i}),t.endIf()}function p(m){const y=t.name("valid"),$=e.subschema({keyword:"oneOf",schemaProp:m},y);return e.mergeEvaluated($,ru.Name),y}function g(){var m;const y={},$=v(s);let E=!0;for(let N=0;N<a.length;N++){let T=a[N];if(T?.$ref&&!(0,bcn.schemaHasRulesButRef)(T,o.self.RULES)){const U=T.$ref;if(T=sM.resolveRef.call(o.self,o.schemaEnv.root,o.baseId,U),T instanceof sM.SchemaEnv&&(T=T.schema),T===void 0)throw new ycn.default(o.opts.uriResolver,o.baseId,U)}const j=(m=T?.properties)===null||m===void 0?void 0:m[i];if(typeof j!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${i}"`);E=E&&($||v(T)),w(j,N)}if(!E)throw new Error(`discriminator: "${i}" must be required`);return y;function v({required:N}){return Array.isArray(N)&&N.includes(i)}function w(N,T){if(N.const)C(N.const,T);else if(N.enum)for(const j of N.enum)C(j,T);else throw new Error(`discriminator: "properties/${i}" must have "const" or "enum"`)}function C(N,T){if(typeof N!="string"||N in y)throw new Error(`discriminator: "${i}" values must be unique strings`);y[N]=T}}}};nT.default=Ecn;const wcn="http://json-schema.org/draft-07/schema#",_cn="http://json-schema.org/draft-07/schema#",Scn="Core schema meta-schema",Ccn={schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},xcn=["object","boolean"],Tcn={$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},Ocn={$schema:wcn,$id:_cn,title:Scn,definitions:Ccn,type:xcn,properties:Tcn,default:!0};(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MissingRefError=t.ValidationError=t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=t.Ajv=void 0;const n=FU,r=xx,s=nT,o=Ocn,a=["/properties"],i="http://json-schema.org/draft-07/schema";class l extends n.default{_addVocabularies(){super._addVocabularies(),r.default.forEach(y=>this.addVocabulary(y)),this.opts.discriminator&&this.addKeyword(s.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;const y=this.opts.$data?this.$dataMetaSchema(o,a):o;this.addMetaSchema(y,i,!1),this.refs["http://json-schema.org/schema"]=i}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(i)?i:void 0)}}t.Ajv=l,e.exports=t=l,e.exports.Ajv=l,Object.defineProperty(t,"__esModule",{value:!0}),t.default=l;var f=fo;Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return f.KeywordCxt}});var d=_t;Object.defineProperty(t,"_",{enumerable:!0,get:function(){return d._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return d.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return d.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return d.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return d.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return d.CodeGen}});var p=vp;Object.defineProperty(t,"ValidationError",{enumerable:!0,get:function(){return p.default}});var g=vf;Object.defineProperty(t,"MissingRefError",{enumerable:!0,get:function(){return g.default}})})(Ww,Ww.exports);var Ncn=Ww.exports;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.formatLimitDefinition=void 0;const t=Ncn,n=_t,r=n.operators,s={formatMaximum:{okStr:"<=",ok:r.LTE,fail:r.GT},formatMinimum:{okStr:">=",ok:r.GTE,fail:r.LT},formatExclusiveMaximum:{okStr:"<",ok:r.LT,fail:r.GTE},formatExclusiveMinimum:{okStr:">",ok:r.GT,fail:r.LTE}},o={message:({keyword:i,schemaCode:l})=>n.str`should be ${s[i].okStr} ${l}`,params:({keyword:i,schemaCode:l})=>n._`{comparison: ${s[i].okStr}, limit: ${l}}`};e.formatLimitDefinition={keyword:Object.keys(s),type:"string",schemaType:"string",$data:!0,error:o,code(i){const{gen:l,data:f,schemaCode:d,keyword:p,it:g}=i,{opts:m,self:y}=g;if(!m.validateFormats)return;const $=new t.KeywordCxt(g,y.RULES.all.format.definition,"format");$.$data?E():v();function E(){const C=l.scopeValue("formats",{ref:y.formats,code:m.code.formats}),N=l.const("fmt",n._`${C}[${$.schemaCode}]`);i.fail$data(n.or(n._`typeof ${N} != "object"`,n._`${N} instanceof RegExp`,n._`typeof ${N}.compare != "function"`,w(N)))}function v(){const C=$.schema,N=y.formats[C];if(!N||N===!0)return;if(typeof N!="object"||N instanceof RegExp||typeof N.compare!="function")throw new Error(`"${p}": format "${C}" does not define "compare" function`);const T=l.scopeValue("formats",{key:C,ref:N,code:m.code.formats?n._`${m.code.formats}${n.getProperty(C)}`:void 0});i.fail$data(w(T))}function w(C){return n._`${C}.compare(${f}, ${d}) ${s[p].fail} 0`}},dependencies:["format"]};const a=i=>(i.addKeyword(e.formatLimitDefinition),i);e.default=a})(LU);(function(e,t){Object.defineProperty(t,"__esModule",{value:!0});const n=MU,r=LU,s=_t,o=new s.Name("fullFormats"),a=new s.Name("fastFormats"),i=(f,d={keywords:!0})=>{if(Array.isArray(d))return l(f,d,n.fullFormats,o),f;const[p,g]=d.mode==="fast"?[n.fastFormats,a]:[n.fullFormats,o],m=d.formats||n.formatNames;return l(f,m,p,g),d.keywords&&r.default(f),f};i.get=(f,d="full")=>{const g=(d==="fast"?n.fastFormats:n.fullFormats)[f];if(!g)throw new Error(`Unknown format "${f}"`);return g};function l(f,d,p,g){var m,y;(m=(y=f.opts.code).formats)!==null&&m!==void 0||(y.formats=s._`require("ajv-formats/dist/formats").${g}`);for(const $ of d)f.addFormat($,p[$])}e.exports=t=i,Object.defineProperty(t,"__esModule",{value:!0}),t.default=i})(Gw,Gw.exports);var Pcn=Gw.exports;const oM=xn(Pcn),Acn={allErrors:!0,multipleOfPrecision:8,strict:!1,verbose:!0,discriminator:!1},Icn=/^(#?([0-9A-Fa-f]{3}){1,2}\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\(\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*\))|(rgb\(\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*\)))$/,Rcn=/^data:([a-z]+\/[a-z0-9-+.]+)?;(?:name=(.*);)?base64,(.*)$/;function kcn(e,t,n={},r,s=ysn){const o=new s({...Acn,...n});return r?oM(o,r):r!==!1&&oM(o),o.addFormat("data-url",Rcn),o.addFormat("color",Icn),o.addKeyword(tf),o.addKeyword(yS),Array.isArray(e)&&o.addMetaSchema(e),ln(t)&&Object.keys(t).forEach(a=>{o.addFormat(a,t[a])}),o}function Dcn(e=[],t){return e.map(n=>{var r;const{instancePath:s,keyword:o,params:a,schemaPath:i,parentSchema:l,...f}=n;let{message:d=""}=f,p=s.replace(/\//g,"."),g=`${p} ${d}`.trim();const m=[...((r=a.deps)===null||r===void 0?void 0:r.split(", "))||[],a.missingProperty,a.property].filter(y=>y);if(m.length>0)m.forEach(y=>{const $=p?`${p}.${y}`:y;let E=At(We(t,`${$.replace(/^\./,"")}`)).title;if(E===void 0){const v=i.replace(/\/properties\//g,"/").split("/").slice(1,-1).concat([y]);E=At(We(t,v)).title}if(E)d=d.replace(`'${y}'`,`'${E}'`);else{const v=We(l,[In,y,"title"]);v&&(d=d.replace(`'${y}'`,`'${v}'`))}}),g=d;else{const y=At(We(t,`${p.replace(/^\./,"")}`)).title;if(y)g=`'${y}' ${d}`.trim();else{const $=l?.title;$&&(g=`'${$}' ${d}`.trim())}}return"missingProperty"in a&&(p=p?`${p}.${a.missingProperty}`:a.missingProperty),{name:o,property:p,message:d,params:a,stack:g,schemaPath:i}})}function Mcn(e,t,n,r,s,o,a){const{validationError:i}=t;let l=Dcn(t.errors,a);i&&(l=[...l,{stack:i.message}]),typeof o=="function"&&(l=o(l,a));let f=rKt(l);if(i&&(f={...f,$schema:{__errors:[i.message]}}),typeof s!="function")return{errors:l,errorSchema:f};const d=o6(e,r,n,r,!0),p=s(d,wv(d),a),g=uC(p);return Cg({errors:l,errorSchema:f},g)}class Lcn{constructor(t,n){const{additionalMetaSchemas:r,customFormats:s,ajvOptionsOverrides:o,ajvFormatOptions:a,AjvClass:i}=t;this.ajv=kcn(r,s,o,a,i),this.localizer=n}reset(){this.ajv.removeSchema()}toErrorList(t,n=[]){return hh(t,n)}rawValidation(t,n){var r,s;let o,a;t[Ai]&&(a=this.ajv.getSchema(t[Ai]));try{a===void 0&&(a=this.ajv.compile(t)),a(n)}catch(l){o=l}let i;return a&&(typeof this.localizer=="function"&&(((r=a.errors)!==null&&r!==void 0?r:[]).forEach(l=>{var f;["missingProperty","property"].forEach(d=>{var p;!((p=l.params)===null||p===void 0)&&p[d]&&(l.params[d]=`'${l.params[d]}'`)}),!((f=l.params)===null||f===void 0)&&f.deps&&(l.params.deps=l.params.deps.split(", ").map(d=>`'${d}'`).join(", "))}),this.localizer(a.errors),((s=a.errors)!==null&&s!==void 0?s:[]).forEach(l=>{var f;["missingProperty","property"].forEach(d=>{var p;!((p=l.params)===null||p===void 0)&&p[d]&&(l.params[d]=l.params[d].slice(1,-1))}),!((f=l.params)===null||f===void 0)&&f.deps&&(l.params.deps=l.params.deps.split(", ").map(d=>d.slice(1,-1)).join(", "))})),i=a.errors||void 0,a.errors=null),{errors:i,validationError:o}}validateFormData(t,n,r,s,o){const a=this.rawValidation(n,t);return Mcn(this,a,t,n,r,s,o)}handleSchemaUpdate(t){var n,r;const s=(n=t[Ai])!==null&&n!==void 0?n:Pj;this.ajv.getSchema(s)===void 0?this.ajv.addSchema(t,s):gn(t,(r=this.ajv.getSchema(s))===null||r===void 0?void 0:r.schema)||(this.ajv.removeSchema(s),this.ajv.addSchema(t,s))}isValid(t,n,r){var s;try{this.handleSchemaUpdate(r);const o=fC(t),a=(s=o[Ai])!==null&&s!==void 0?s:ZYt(o);let i;return i=this.ajv.getSchema(a),i===void 0&&(i=this.ajv.addSchema(o,a).getSchema(a)||this.ajv.compile(o)),i(n)}catch(o){return console.warn("Error encountered compiling schema:",o),!1}}}function Fcn(e={},t){return new Lcn(e,t)}const jcn=Fcn();function t_(){return t_=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},t_.apply(null,arguments)}const qcn=x6(xQt),n_={CONTENT:"col-9",TOOLBAR:"col-3",ADD_BUTTON_CONTAINER:"col-3 offset-9"},Rs={BTN_INFO:"btn btn-info",BTN_OUTLINE_DARK:"btn btn-outline-dark",BTN_DANGER:"btn btn-danger",ARRAY_ITEM:"row array-item",ARRAY_ITEM_TOOLBOX:"array-item-toolbox",ARRAY_ITEM_LIST:"array-item-list",ARRAY_ITEM_ADD:"row",FIELD_DESCRIPTION:"field-description"},Ucn=e=>{if(!e||typeof e!="string")return!1;const t=e.split("_");return t.length>2&&/^\d+$/.test(t[t.length-1])},lg=(e,t,n,r,s,o=0)=>c.createElement("button",{type:"button",className:e,onClick:t,disabled:n,tabIndex:o,style:r},s),Bcn=e=>{const{children:t,disabled:n,hasToolbar:r,hasMoveUp:s,hasMoveDown:o,hasRemove:a,index:i,onDropIndexClick:l,onReorderClick:f,readonly:d,registry:p,uiSchema:g}=e,{MoveUpButton:m,MoveDownButton:y,RemoveButton:$}=p.templates.ButtonTemplates;return c.createElement("div",{className:Rs.ARRAY_ITEM},c.createElement("div",{className:n_.CONTENT},t),c.createElement("div",{className:`${n_.TOOLBAR} ${Rs.ARRAY_ITEM_TOOLBOX}`},r&&c.createElement("div",{className:"btn-group btn-group-flex"},(s||o)&&c.createElement(m,{className:"array-item-move-up array-button-style",disabled:n||d||!s,onClick:f(i,i-1),uiSchema:g,registry:p}),(s||o)&&c.createElement(y,{className:"array-item-move-down array-button-style",disabled:n||d||!o,onClick:f(i,i+1),uiSchema:g,registry:p}),a&&c.createElement($,{className:"array-item-remove array-button-style",disabled:n||d,onClick:l(i),uiSchema:g,registry:p}))))},Vcn=e=>{const{id:t,classNames:n,style:r,label:s,help:o,required:a,description:i,errors:l,children:f,displayLabel:d,schema:p}=e,g=p.type==="boolean",m=p.type==="object";return c.createElement("div",{className:n,style:r},d&&s&&!g&&c.createElement("label",{htmlFor:t},s,a&&c.createElement("span",{className:"required"},"*")),i&&!m&&c.createElement("p",{id:`${t}__description`,className:Rs.FIELD_DESCRIPTION},i),f,l,o)},Hcn=e=>{const{title:t,description:n,properties:r,idSchema:s}=e,o=Ucn(s.$id);return c.createElement("fieldset",{id:s.$id},t&&!o&&c.createElement("legend",{id:`${s.$id}__title`},t),n&&c.createElement("p",{id:`${s.$id}__description`,className:Rs.FIELD_DESCRIPTION},n),r.map(a=>a.content))},zcn=e=>{const{canAdd:t,disabled:n,idSchema:r,uiSchema:s,items:o,onAddClick:a,readonly:i,registry:l,schema:f,title:d}=e,p=At(s),g=Tt("ArrayFieldItemTemplate",l,p),{ButtonTemplates:{AddButton:m}}=l.templates;return c.createElement("fieldset",{className:"field field-array field-array-of-object",id:r.$id},(p.title||d)&&c.createElement("legend",{id:`${r.$id}__title`},p.title||d),(p.description||f.description)&&c.createElement("div",{className:Rs.FIELD_DESCRIPTION},p.description||f.description),c.createElement("div",{className:Rs.ARRAY_ITEM_LIST},o?.map(({key:y,...$})=>c.createElement(g,t_({key:y},$)))),t&&c.createElement("div",{className:Rs.ARRAY_ITEM_ADD},c.createElement("p",{className:`${n_.ADD_BUTTON_CONTAINER} text-right array-item-add`},c.createElement(m,{className:"btn-add col-12",onClick:a,disabled:n||i,uiSchema:s,registry:l}))))},Gcn={FieldTemplate:Vcn,ObjectFieldTemplate:Hcn,ArrayFieldTemplate:zcn,ArrayFieldItemTemplate:Bcn,ButtonTemplates:{AddButton:e=>lg(`${Rs.BTN_INFO} ${e.className||""}`,e.onClick,e.disabled,void 0,c.createElement("i",{className:"fas fa-plus"}),0),MoveUpButton:e=>lg(`${Rs.BTN_OUTLINE_DARK} ${e.className||""}`,e.onClick,e.disabled,void 0,c.createElement("i",{className:"fas fa-arrow-up"}),-1),MoveDownButton:e=>lg(`${Rs.BTN_OUTLINE_DARK} ${e.className||""}`,e.onClick,e.disabled,void 0,c.createElement("i",{className:"fas fa-arrow-down"}),-1),RemoveButton:e=>lg(`${Rs.BTN_DANGER} ${e.className||""}`,e.onClick,e.disabled,void 0,c.createElement("i",{className:"fas fa-times"}),-1),SubmitButton:e=>{const{submitText:t}=e.uiSchema?.["ui:submitButtonOptions"]||{};return c.createElement("div",null,c.createElement("button",{type:"submit",className:Rs.BTN_INFO},t||"Submit"))}}},Wcn=({plugin:e,onSubmit:t})=>{const{enabled:n,enableLogging:r,enableDebug:s}=e.data;return c.createElement(qcn,{validator:jcn,schema:{type:"object",...e.statusMessage&&{description:`Status: ${e.statusMessage}`},properties:{configuration:{type:"object",title:" ",description:e.schema.description,properties:e.schema.properties}}},uiSchema:e.uiSchema?{configuration:e.uiSchema}:{},formData:e.data||{},templates:Gcn,onSubmit:({formData:o})=>{t({...o,enabled:n,enableLogging:r,enableDebug:s})}},c.createElement("button",{type:"submit",className:"btn btn-primary"},c.createElement("i",{className:"fa fa-save",style:{marginRight:"8px"}}),"Save Configuration"))};class Ycn extends J.Component{constructor(t){super(t),this.state={component:fy(t.plugin.packageName,TQ),configuration:this.props.plugin.data.configuration}}render(){return c.createElement("div",null,c.createElement(J.Suspense,{fallback:"Loading..."},c.createElement(this.state.component,{configuration:this.state.configuration,save:t=>{this.props.saveData({...this.props.plugin.data,configuration:t}),this.setState({configuration:t})}})))}}const aM="admin.v1.plugins.search",cE="admin.v1.plugins.openPlugin",iM="admin.v1.plugins.statusFilter";class Kcn extends J.Component{constructor(t){super(t),this.state={plugins:[],search:localStorage.getItem(aM)||"",statusFilter:localStorage.getItem(iM)||"all",searchResults:null,selectedPlugin:null,wasmEnabled:!0},this.lastOpenedPlugin="--",this.handleSearch=this.handleSearch.bind(this),this.handleStatusFilter=this.handleStatusFilter.bind(this),this.selectPlugin=this.selectPlugin.bind(this),this.handlePluginClick=this.handlePluginClick.bind(this)}searchPlugins(t,n){const r=n.toLowerCase();return t.filter(s=>s.id.toLowerCase().includes(r)||s.packageName.toLowerCase().includes(r)||s.description&&s.description.toLowerCase().includes(r)||s.name.toLowerCase().includes(r))}filterPluginsByStatus(t,n){return n==="all"?t:t.filter(r=>{const s=r.schema&&r.schema.properties&&Object.keys(r.schema?.properties).length!==0&&(r.data.configuration===null||r.data.configuration===void 0);switch(n){case"enabled":return!s&&r.data.enabled;case"disabled":return s||!r.data.enabled;default:return!0}})}getFilteredPlugins(){let t=this.state.plugins;return t=this.filterPluginsByStatus(t,this.state.statusFilter),this.state.search.length>0&&(t=this.searchPlugins(t,this.state.search)),t}handleSearch(t){const n=t.target.value;this.setState({search:n}),localStorage.setItem(aM,n)}handleStatusFilter(t){const n=t.target.value;this.setState({statusFilter:n}),localStorage.setItem(iM,n)}handlePluginClick(t){const n=t.currentTarget.getAttribute("data-plugin-id"),r=this.state.plugins.find(s=>s.id===n);if(r){const s=this.state.selectedPlugin&&this.state.selectedPlugin.id===r.id;this.selectPlugin(s?null:r)}}selectPlugin(t){const n=t?t.id:null;n?(localStorage.setItem(cE,n),this.setState({selectedPlugin:t})):(localStorage.removeItem(cE),this.setState({selectedPlugin:null}))}scrollToSelectedPlugin(t){if(!this.tableContainer||!t)return;const n=this.tableContainer.querySelector(`[data-plugin-id="${t}"]`);if(!n)return;const r=this.tableContainer.getBoundingClientRect(),s=n.getBoundingClientRect();if(s.bottom>r.bottom||s.top<r.top){const o=n.offsetTop,a=this.tableContainer.clientHeight,i=n.clientHeight,l=o-a/2+i/2;this.tableContainer.scrollTo({top:Math.max(0,l),behavior:"smooth"})}}componentDidMount(){Promise.all([fetch(`${window.serverRoutesPrefix}/plugins`,{credentials:"same-origin"}).then(t=>{if(t.status===200)return t.json();throw new Error("/plugins request failed:"+t.status)}),fetch(`${window.serverRoutesPrefix}/settings`,{credentials:"same-origin"}).then(t=>t.status===200?t.json():{interfaces:{wasm:!0}}).catch(()=>({interfaces:{wasm:!0}}))]).then(([t,n])=>{const r=n?.interfaces?.wasm!==!1,s=this.props.match.params.pluginid,o=localStorage.getItem(cE);let a=null;s&&s!=="-"?a=t.find(i=>i.id===s):o&&(a=t.find(i=>i.id===o)),this.setState({plugins:t,selectedPlugin:a,wasmEnabled:r}),a&&requestAnimationFrame(()=>{this.scrollToSelectedPlugin(a.id)})}).catch(t=>{console.error(t),alert("Could not fetch plugins list")})}render(){const t=this.getFilteredPlugins(),n=this.state.selectedPlugin?this.state.selectedPlugin.id:null;return c.createElement("div",null,c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),c.createElement("strong",null,"Plugin Configuration")),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal",onSubmit:r=>{r.preventDefault()}},c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"1",className:"col-form-label"},c.createElement(ve,{htmlFor:"search"},"Search")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"search",id:"search",onChange:this.handleSearch,value:this.state.search,placeholder:"Search plugins..."})),c.createElement(Y,{xs:"3",md:"2",className:"col-form-label"},c.createElement(ve,{htmlFor:"statusFilter"},"Filter by Status")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",name:"statusFilter",id:"statusFilter",onChange:this.handleStatusFilter,value:this.state.statusFilter},c.createElement("option",{value:"all"},"All Plugins"),c.createElement("option",{value:"enabled"},"Enabled"),c.createElement("option",{value:"disabled"},"Disabled"))))),c.createElement("div",{ref:r=>{this.tableContainer=r},style:{maxHeight:"400px",overflowY:"auto",border:"1px solid #dee2e6"}},c.createElement(Jr,{responsive:!0,bordered:!0,striped:!0,size:"sm",hover:!0,className:"mb-0"},c.createElement("thead",{style:{position:"sticky",top:0,backgroundColor:"#f8f9fa",zIndex:1}},c.createElement("tr",null,c.createElement("th",{style:{width:"30%"}},"Plugin Name"),c.createElement("th",{style:{width:"15%"}},"Status"),c.createElement("th",{style:{width:"55%"}},"Description"))),c.createElement("tbody",null,t.map(r=>{const s=n===r.id,o=r.schema&&r.schema.properties&&Object.keys(r.schema?.properties).length!==0&&(r.data.configuration===null||r.data.configuration===void 0),i=r.type==="wasm"&&!this.state.wasmEnabled;let l="badge-secondary",f="Disabled";return i?(l="badge-danger",f="WASM disabled"):r.data.enabled&&!o&&(l="badge-success",f="Enabled"),c.createElement("tr",{key:r.id,"data-plugin-id":r.id,onClick:this.handlePluginClick,style:{cursor:"pointer"},className:s?"table-active":""},c.createElement("td",null,c.createElement("strong",null,r.name)),c.createElement("td",null,c.createElement("div",{className:"d-flex align-items-center justify-content-between"},c.createElement("div",{className:`badge ${l}`},f),c.createElement("i",{className:"fa fa-cog text-muted",style:{fontSize:"16px"},title:"Click to configure"}))),c.createElement("td",null,c.createElement("small",null,r.description||"No description available")))})))))),this.state.selectedPlugin&&c.createElement(Xcn,{plugin:this.state.selectedPlugin,isConfigurator:Jcn(this.state.selectedPlugin),onClose:()=>this.selectPlugin(null),saveData:r=>(this.state.selectedPlugin.data.enabled===void 0&&r.enabled===void 0&&(r.enabled=!0),this.saveData(this.state.selectedPlugin.id,r))}))}saveData(t,n){return fetch(`${window.serverRoutesPrefix}/plugins/${t}/config`,{method:"POST",body:JSON.stringify(n),headers:new Headers({"Content-Type":"application/json"}),credentials:"same-origin"}).then(r=>{if(r.status!==200)throw console.error(r),alert("Saving plugin settings failed"),new Error("Save failed");{const s=[...this.state.plugins],o=s.findIndex(a=>a.id===t);if(o!==-1){s[o].data=n;const a=this.state.selectedPlugin&&this.state.selectedPlugin.id===t?{...this.state.selectedPlugin,data:n}:this.state.selectedPlugin;this.setState({plugins:s,selectedPlugin:a})}return!0}})}}const Jcn=e=>e.keywords.includes("signalk-plugin-configurator");class Xcn extends J.Component{constructor(t){super(t),this.state={showSaveSuccess:!1}}showSuccessMessage=()=>{this.setState({showSaveSuccess:!0}),setTimeout(()=>{this.setState({showSaveSuccess:!1})},3e3)};render(){const t={marginLeft:"10px",marginBottom:"0px"},{schema:n}=this.props.plugin,r=n&&n.properties&&Object.keys(n?.properties).length!==0&&(this.props.plugin.data.configuration===null||this.props.plugin.data.configuration===void 0);return c.createElement("div",null,this.state.showSaveSuccess&&c.createElement("div",{style:{position:"fixed",top:"20px",right:"20px",zIndex:9999,maxWidth:"300px"}},c.createElement("div",{className:"alert alert-success mb-0",role:"alert",style:{boxShadow:"0 4px 12px rgba(0,0,0,0.3)"}},c.createElement("i",{className:"fa fa-check"})," Configuration saved successfully!")),c.createElement(ft,{className:"mt-3 plugin-config-card",ref:s=>{this.configCard=s}},c.createElement(xt,{id:"plugin-config-header"},c.createElement(cn,{className:"mb-2"},c.createElement(Y,{className:"align-self-center"},c.createElement("h5",{className:"mb-0"},c.createElement("i",{className:"fa fa-cog",style:{marginRight:"10px"}}),"Configure: ",this.props.plugin.name),c.createElement("small",{className:"text-muted"},this.props.plugin.packageName))),!r&&c.createElement(cn,null,c.createElement(Y,{lg:4,className:"mt-2 mt-lg-0"},c.createElement(ve,{style:t,className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"enabled",className:"switch-input",onChange:()=>{this.props.saveData({...this.props.plugin.data,enabled:!this.props.plugin.data.enabled})},checked:this.props.plugin.data.enabled}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})),c.createElement("span",{className:"ml-1"},"Enabled")),c.createElement(Y,{lg:4,className:"mt-2 mt-lg-0"},c.createElement(ve,{style:t,className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"enableLogging",className:"switch-input",onChange:()=>{this.props.saveData({...this.props.plugin.data,enableLogging:!this.props.plugin.data.enableLogging})},checked:this.props.plugin.data.enableLogging}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})),c.createElement("span",{className:"ml-1"},"Data logging")),c.createElement(Y,{lg:4,className:"mt-2 mt-lg-0"},c.createElement(ve,{style:t,className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"enableDebug",className:"switch-input ",onChange:()=>{this.props.saveData({...this.props.plugin.data,enableDebug:!this.props.plugin.data.enableDebug})},checked:this.props.plugin.data.enableDebug}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})),c.createElement("span",{className:"ml-1"},"Enable debug log")))),c.createElement(pt,null,!this.props.isConfigurator&&c.createElement("div",null,c.createElement(Wcn,{plugin:this.props.plugin,onSubmit:s=>{this.props.saveData(s).then(()=>{this.showSuccessMessage()}).catch(()=>{})}}),c.createElement("div",{style:{position:"fixed",bottom:"20px",right:"20px",zIndex:1e3,backgroundColor:"#fff",padding:"10px",borderRadius:"5px",boxShadow:"0 4px 12px rgba(0,0,0,0.2)",border:"1px solid #dee2e6"}},c.createElement("button",{type:"button",className:"btn btn-primary",onClick:()=>{const s=document.querySelector('.plugin-config-card form button[type="submit"]');s&&s.click()},style:{minWidth:"140px"}},c.createElement("i",{className:"fa fa-save",style:{marginRight:"8px"}}),"Save Configuration"))),this.props.isConfigurator&&c.createElement(Ycn,this.props))))}}class Zcn extends J.Component{constructor(t){super(t),this.state={hasData:!1,isOpen:!1,isSaving:!1,isTesting:!1,testResult:null,saveResult:null,enabled:!1,issuer:"",clientId:"",clientSecret:"",clientSecretSet:!1,providerName:"SSO Login",defaultPermission:"readonly",autoCreateUsers:!0,autoLogin:!1,adminGroups:"",readwriteGroups:"",groupsAttribute:"groups",scope:"openid email profile",envOverrides:{}},this.handleChange=this.handleChange.bind(this),this.handleSaveConfig=this.handleSaveConfig.bind(this),this.handleTestConnection=this.handleTestConnection.bind(this),this.toggle=this.toggle.bind(this)}componentDidMount(){this.props.loginStatus.authenticationRequired&&this.fetchOIDCConfig()}componentDidUpdate(t){this.props.loginStatus.authenticationRequired!==t.loginStatus.authenticationRequired&&this.fetchOIDCConfig()}fetchOIDCConfig(){fetch(`${window.serverRoutesPrefix}/security/oidc`,{credentials:"include"}).then(t=>t.json()).then(t=>{this.setState({hasData:!0,enabled:t.enabled||!1,issuer:t.issuer||"",clientId:t.clientId||"",clientSecret:"",clientSecretSet:t.clientSecretSet||!1,providerName:t.providerName||"SSO Login",defaultPermission:t.defaultPermission||"readonly",autoCreateUsers:t.autoCreateUsers!==void 0?t.autoCreateUsers:!0,autoLogin:t.autoLogin||!1,adminGroups:Array.isArray(t.adminGroups)?t.adminGroups.join(", "):t.adminGroups||"",readwriteGroups:Array.isArray(t.readwriteGroups)?t.readwriteGroups.join(", "):t.readwriteGroups||"",groupsAttribute:t.groupsAttribute||"groups",scope:t.scope||"openid email profile",envOverrides:t.envOverrides||{}})}).catch(t=>{console.error("Failed to fetch OIDC config:",t)})}handleChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.setState({[t.target.name]:n})}handleSaveConfig(){this.setState({isSaving:!0,saveResult:null});const t={enabled:this.state.enabled,issuer:this.state.issuer,clientId:this.state.clientId,clientSecret:this.state.clientSecret,providerName:this.state.providerName,defaultPermission:this.state.defaultPermission,autoCreateUsers:this.state.autoCreateUsers,autoLogin:this.state.autoLogin,adminGroups:this.state.adminGroups,readwriteGroups:this.state.readwriteGroups,groupsAttribute:this.state.groupsAttribute,scope:this.state.scope};fetch(`${window.serverRoutesPrefix}/security/oidc`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),credentials:"include"}).then(n=>n.ok?n.json():n.json().then(r=>{throw new Error(r.error||"Failed to save configuration")})).then(()=>{this.setState({isSaving:!1,saveResult:{success:!0,message:"OIDC configuration saved"},clientSecret:"",clientSecretSet:!0}),this.fetchOIDCConfig()}).catch(n=>{this.setState({isSaving:!1,saveResult:{success:!1,message:n.message}})})}handleTestConnection(){if(!this.state.issuer){this.setState({testResult:{success:!1,message:"Issuer URL is required"}});return}this.setState({isTesting:!0,testResult:null}),fetch(`${window.serverRoutesPrefix}/security/oidc/test`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({issuer:this.state.issuer}),credentials:"include"}).then(t=>t.ok?t.json():t.json().then(n=>{throw new Error(n.error||"Connection test failed")})).then(t=>{this.setState({isTesting:!1,testResult:{success:!0,message:`Connected to ${t.issuer}`,endpoints:{authorization:t.authorization_endpoint,token:t.token_endpoint}}})}).catch(t=>{this.setState({isTesting:!1,testResult:{success:!1,message:t.message}})})}toggle(){this.setState({isOpen:!this.state.isOpen})}isFieldDisabled(t){return this.state.envOverrides[t]===!0}renderEnvBadge(t){return this.state.envOverrides[t]?c.createElement(Sr,{color:"warning",className:"ml-2",title:"Set via environment variable"},"ENV"):null}render(){return!this.state.hasData||!this.props.loginStatus.authenticationRequired?null:c.createElement(ft,null,c.createElement(xt,{onClick:this.toggle,style:{cursor:"pointer"}},c.createElement("i",{className:"fa fa-openid"})," OIDC / SSO Authentication",c.createElement("span",{className:"float-right"},this.state.enabled&&c.createElement(Sr,{color:"success",className:"mr-2"},"Enabled"),c.createElement("i",{className:`fa fa-chevron-${this.state.isOpen?"up":"down"}`}))),c.createElement(uy,{isOpen:this.state.isOpen},c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal"},c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Enable OIDC"),this.renderEnvBadge("enabled")),c.createElement(Y,{md:"9"},c.createElement(xe,{check:!0},c.createElement("div",null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"enabled",className:"switch-input",onChange:this.handleChange,checked:this.state.enabled,disabled:this.isFieldDisabled("enabled")}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))),c.createElement(st,{color:"muted"},"Enable OpenID Connect authentication"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"issuer"},"Issuer URL"),this.renderEnvBadge("issuer")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(cn,null,c.createElement(Y,{md:"8"},c.createElement(Ee,{type:"text",name:"issuer",placeholder:"https://auth.example.com",onChange:this.handleChange,value:this.state.issuer,disabled:this.isFieldDisabled("issuer")})),c.createElement(Y,{md:"4"},c.createElement(it,{color:"secondary",onClick:this.handleTestConnection,disabled:this.state.isTesting||!this.state.issuer},c.createElement("i",{className:`fa fa-${this.state.isTesting?"spinner fa-spin":"plug"}`})," ","Test Connection"))),c.createElement(st,{color:"muted"},"The OIDC provider's issuer URL (e.g., Keycloak, Authentik)"),this.state.testResult&&c.createElement(Rc,{color:this.state.testResult.success?"success":"danger",className:"mt-2"},this.state.testResult.message))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"clientId"},"Client ID"),this.renderEnvBadge("clientId")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"clientId",placeholder:"signalk-server",onChange:this.handleChange,value:this.state.clientId,disabled:this.isFieldDisabled("clientId")}),c.createElement(st,{color:"muted"},"Client ID from your OIDC provider"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"clientSecret"},"Client Secret"),this.renderEnvBadge("clientSecret")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"password",name:"clientSecret",placeholder:this.state.clientSecretSet?"••••••••••••••••":"Enter client secret",onChange:this.handleChange,value:this.state.clientSecret,disabled:this.isFieldDisabled("clientSecret")}),c.createElement(st,{color:"muted"},this.state.clientSecretSet?"Leave empty to keep existing secret":"Client secret from your OIDC provider"),c.createElement(st,null,c.createElement("strong",null,"Recommended:")," Set via environment variable"," ",c.createElement("code",null,"SIGNALK_OIDC_CLIENT_SECRET")," instead of storing in configuration."))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"providerName"},"Provider Display Name"),this.renderEnvBadge("providerName")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"providerName",placeholder:"SSO Login",onChange:this.handleChange,value:this.state.providerName,disabled:this.isFieldDisabled("providerName")}),c.createElement(st,{color:"muted"},"Text shown on the SSO login button"))),c.createElement("hr",null),c.createElement("h5",null,"Permission Mapping"),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"defaultPermission"},"Default Permission"),this.renderEnvBadge("defaultPermission")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"select",name:"defaultPermission",value:this.state.defaultPermission,onChange:this.handleChange,disabled:this.isFieldDisabled("defaultPermission")},c.createElement("option",{value:"readonly"},"Read Only"),c.createElement("option",{value:"readwrite"},"Read/Write"),c.createElement("option",{value:"admin"},"Admin")),c.createElement(st,{color:"muted"},"Permission for users not matching any group mapping"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"adminGroups"},"Admin Groups"),this.renderEnvBadge("adminGroups")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"adminGroups",placeholder:"admins, sk-admin",onChange:this.handleChange,value:this.state.adminGroups,disabled:this.isFieldDisabled("adminGroups")}),c.createElement(st,{color:"muted"},"Comma-separated list of groups that grant admin permission"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"readwriteGroups"},"Read/Write Groups"),this.renderEnvBadge("readwriteGroups")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"readwriteGroups",placeholder:"users, operators",onChange:this.handleChange,value:this.state.readwriteGroups,disabled:this.isFieldDisabled("readwriteGroups")}),c.createElement(st,{color:"muted"},"Comma-separated list of groups that grant read/write permission"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"groupsAttribute"},"Groups Attribute"),this.renderEnvBadge("groupsAttribute")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"groupsAttribute",placeholder:"groups",onChange:this.handleChange,value:this.state.groupsAttribute,disabled:this.isFieldDisabled("groupsAttribute")}),c.createElement(st,{color:"muted"},"ID token claim containing user groups (e.g., groups, roles, memberOf)"))),c.createElement("hr",null),c.createElement("h5",null,"User Settings"),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Auto-Create Users"),this.renderEnvBadge("autoCreateUsers")),c.createElement(Y,{md:"9"},c.createElement(xe,{check:!0},c.createElement("div",null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"autoCreateUsers",className:"switch-input",onChange:this.handleChange,checked:this.state.autoCreateUsers,disabled:this.isFieldDisabled("autoCreateUsers")}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))),c.createElement(st,{color:"muted"},"Automatically create local user on first OIDC login"))),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Auto-Login"),this.renderEnvBadge("autoLogin")),c.createElement(Y,{md:"9"},c.createElement(xe,{check:!0},c.createElement("div",null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"autoLogin",className:"switch-input",onChange:this.handleChange,checked:this.state.autoLogin,disabled:this.isFieldDisabled("autoLogin")}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))),c.createElement(st,{color:"muted"},"Automatically redirect to OIDC login when not authenticated"))),c.createElement("hr",null),c.createElement("h5",null,"Advanced"),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"scope"},"Scope"),this.renderEnvBadge("scope")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"scope",placeholder:"openid email profile",onChange:this.handleChange,value:this.state.scope,disabled:this.isFieldDisabled("scope")}),c.createElement(st,{color:"muted"},"Space-separated OAuth scopes (must include 'openid')"))))),c.createElement(tr,null,this.state.saveResult&&c.createElement(Rc,{color:this.state.saveResult.success?"success":"danger",className:"mb-2"},this.state.saveResult.message),c.createElement(it,{size:"sm",color:"primary",onClick:this.handleSaveConfig,disabled:this.state.isSaving},c.createElement("i",{className:`fa fa-${this.state.isSaving?"spinner fa-spin":"dot-circle-o"}`})," ","Save"))))}}const Qcn=({loginStatus:e})=>({loginStatus:e}),eln=tn(Qcn)(Zcn);function tln(){fetch(`${window.serverRoutesPrefix}/security/config`,{credentials:"include"}).then(e=>e.json()).then(e=>{this.setState({...e,hasData:!0})})}const nln=`${window.location.protocol}//${window.location.host}`;let rln=class extends J.Component{constructor(t){super(t),this.state={hasData:!1},this.handleChange=this.handleChange.bind(this),this.handleSaveConfig=this.handleSaveConfig.bind(this),this.fetchSecurityConfig=tln.bind(this)}componentDidMount(){this.props.loginStatus.authenticationRequired&&this.fetchSecurityConfig()}componentDidUpdate(t){this.props.loginStatus.authenticationRequired!==t.loginStatus.authenticationRequired&&this.fetchSecurityConfig()}handleChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.setState({[t.target.name]:n})}handleSaveConfig(){var t={allow_readonly:this.state.allow_readonly,expiration:this.state.expiration,allowNewUserRegistration:this.state.allowNewUserRegistration,allowDeviceAccessRequests:this.state.allowDeviceAccessRequests,allowedCorsOrigins:this.state.allowedCorsOrigins,adminUIOrigin:nln};fetch(`${window.serverRoutesPrefix}/security/config`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),credentials:"include"}).then(n=>n.text()).then(n=>{this.fetchSecurityConfig(),alert(n)})}render(){return c.createElement("div",{className:"animated fadeIn"},this.props.loginStatus.authenticationRequired===!1&&c.createElement(Ih,null),this.state.hasData&&this.props.loginStatus.authenticationRequired&&c.createElement("div",null,c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"Settings"),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal"},c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Allow Readonly Access")),c.createElement(Y,{md:"9"},c.createElement(xe,{check:!0},c.createElement("div",null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"allow_readonly",className:"switch-input",onChange:this.handleChange,checked:this.state.allow_readonly}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))))),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Allow New User Registration")),c.createElement(Y,{md:"9"},c.createElement(xe,{check:!0},c.createElement("div",null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"allowNewUserRegistration",className:"switch-input",onChange:this.handleChange,checked:this.state.allowNewUserRegistration}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))))),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Allow New Device Registration")),c.createElement(Y,{md:"9"},c.createElement(xe,{check:!0},c.createElement("div",null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"allowDeviceAccessRequests",className:"switch-input",onChange:this.handleChange,checked:this.state.allowDeviceAccessRequests}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"text-input"},"Remember Me timeout")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"text",name:"expiration",onChange:this.handleChange,value:this.state.expiration}),c.createElement(st,{color:"muted"},"Examples: 60s, 1m, 1h, 1d")),c.createElement(Y,{md:"6"},c.createElement(st,{color:"muted"},"How long server keeps you logged when Remember Me is checked in login."))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"12"},c.createElement(ve,null,"With no configuration all CORS origins are accepted, but client requests with credentials:include do not work. Add a single * origin to allow all origins with credentials. You can also restrict CORS requests to specific origins. The origin that this UI was loaded from is automatically added to the allowed origins so that requests from the UI work. Changes to the Allowed CORS origins requires a server restart.")))," ",c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"text-input"},"Allowed CORS origins")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"allowedCorsOrigins",onChange:this.handleChange,value:this.state.allowedCorsOrigins}),c.createElement(st,{color:"muted"},"Use either * or a comma delimited list of origins, example: http://host1.name.com:3000,http://host2.name.com:3000"))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",onClick:this.handleSaveConfig},c.createElement("i",{className:"fa fa-dot-circle-o"})," Save"))),c.createElement(eln,null)))}};const sln=({loginStatus:e})=>({loginStatus:e}),oln=tn(sln)(rln);function aln(){fetch(`${window.serverRoutesPrefix}/security/users`,{credentials:"include"}).then(e=>e.json()).then(e=>{this.setState({users:e})})}class iln extends J.Component{constructor(t){super(t),this.state={},this.handleAddUser=this.handleAddUser.bind(this),this.fetchSecurityUsers=aln.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleApply=this.handleApply.bind(this),this.handleUserChange=this.handleUserChange.bind(this),this.deleteUser=this.deleteUser.bind(this)}componentDidMount(){this.props.loginStatus.authenticationRequired&&this.fetchSecurityUsers()}componentDidUpdate(t){this.props.loginStatus.authenticationRequired!==t.loginStatus.authenticationRequired&&this.fetchSecurityUsers()}handleUserChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.selectedUser[t.target.name]=n,this.setState({selectedUser:this.state.selectedUser})}handleAddUser(){var t={type:"readonly",isNew:!0};this.setState({selectedUser:t,selectedIndex:this.state.users.length-1},()=>{this.refs.selectedUser.scrollIntoView()})}handleApply(t){if(t.preventDefault(),!this.state.selectedUser.userId||this.state.selectedUser.userId.length===0){alert("Please specify a User Id");return}if(this.state.selectedUser.password&&this.state.selectedUser.password!==this.state.selectedUser.confirmPassword){alert("Passwords do not match");return}var n=this.state.selectedUser.isNew,r={password:this.state.selectedUser.password,type:this.state.selectedUser.type||"readonly"};fetch(`${window.serverRoutesPrefix}/security/users/${this.state.selectedUser.userId}`,{method:n?"POST":"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(r),credentials:"include"}).then(s=>s.text()).then(s=>{this.setState({selectedUser:null,selectedIndex:-1}),alert(s),this.fetchSecurityUsers()})}deleteUser(){fetch(`${window.serverRoutesPrefix}/security/users/${this.state.selectedUser.userId}`,{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include"}).then(t=>t.text()).then(t=>{this.setState({selectedUser:null,selectedIndex:-1}),alert(t),this.fetchSecurityUsers()})}userClicked(t,n){this.setState({selectedUser:JSON.parse(JSON.stringify(t)),selectedIndex:n},()=>{this.refs.selectedUser.scrollIntoView()})}handleCancel(){this.setState({selectedUser:null})}render(){return c.createElement("div",{className:"animated fadeIn"},this.props.loginStatus.authenticationRequired===!1&&c.createElement(Ih,null),this.state.users&&this.props.loginStatus.authenticationRequired&&c.createElement("div",null,c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"Users"),c.createElement(pt,null,c.createElement(Jr,{hover:!0,responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",null,"User ID"),c.createElement("th",null,"Type"),c.createElement("th",null,"Auth"))),c.createElement("tbody",null,(this.state.users||[]).map((t,n)=>c.createElement("tr",{key:t.userId,onClick:this.userClicked.bind(this,t,n)},c.createElement("td",null,t.userId,t.email&&c.createElement("small",{className:"text-muted ml-2"},"(",t.email,")")),c.createElement("td",null,uln(t.type)),c.createElement("td",null,t.isOIDC?c.createElement(Sr,{color:"info",title:"Authenticated via SSO"},"SSO"):c.createElement(Sr,{color:"secondary"},"Local"))))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",onClick:this.handleAddUser},c.createElement("i",{className:"fa fa-plus-circle"})," Add"))),this.state.selectedUser&&c.createElement("div",{ref:"selectedUser"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"User",this.state.selectedUser.isOIDC&&c.createElement(Sr,{color:"info",className:"ml-2"},"SSO User")),c.createElement(pt,null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"userid"},"User ID")),c.createElement(Y,{xs:"12",md:"9"},this.state.selectedUser.isNew&&c.createElement(Ee,{type:"text",name:"userId",value:this.state.selectedUser.userId,onChange:this.handleUserChange}),!this.state.selectedUser.isNew&&c.createElement(ve,null,this.state.selectedUser.userId))),this.state.selectedUser.email&&c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,null,"Email")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(ve,null,this.state.selectedUser.email))),this.state.selectedUser.isOIDC?c.createElement(xe,{row:!0},c.createElement(Y,{md:"12"},c.createElement(st,{color:"muted"},c.createElement("i",{className:"fa fa-info-circle"})," This user authenticates via Single Sign-On. Password cannot be set for SSO users."))):c.createElement(c.Fragment,null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"password"},"Password")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"password",name:"password",value:this.state.selectedUser.password,onChange:this.handleUserChange}))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"text-input"},"Confirm Password")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"password",name:"confirmPassword",value:this.state.selectedUser.confirmPassword,onChange:this.handleUserChange})))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"select"},"Permissions")),c.createElement(Y,{xs:"12",md:"2"},c.createElement(Ee,{type:"select",name:"type",value:this.state.selectedUser.type,onChange:this.handleUserChange},c.createElement("option",{value:"readonly"},"Read Only"),c.createElement("option",{value:"readwrite"},"Read/Write"),c.createElement("option",{value:"admin"},"Admin"))))),c.createElement(tr,null,c.createElement(cn,null,c.createElement(Y,{xs:"4",md:"1"},c.createElement(it,{size:"sm",color:"primary",onClick:this.handleApply},c.createElement("i",{className:"fa fa-dot-circle-o"})," Apply")),c.createElement(Y,{xs:"4",md:"1"},c.createElement(it,{size:"sm",color:"secondary",onClick:this.handleCancel},c.createElement("i",{className:"fa fa-ban"})," Cancel")),c.createElement(Y,{xs:"4",md:"10",className:"text-right"},c.createElement(it,{size:"sm",color:"danger",onClick:this.deleteUser},c.createElement("i",{className:"fa fa-ban"})," Delete"))))))))}}const cln=({loginStatus:e})=>({loginStatus:e}),lln=tn(cln)(iln);function uln(e){if(e==="readonly")return"Read Only";if(e==="readwrite")return"Read/Write";if(e==="admin")return"Admin"}function fln(){fetch(`${window.serverRoutesPrefix}/security/devices`,{credentials:"include"}).then(e=>e.json()).then(e=>{this.setState({devices:e})})}class dln extends J.Component{constructor(t){super(t),this.state={devices:[]},this.fetchSecurityDevices=fln.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleApply=this.handleApply.bind(this),this.handleDeviceChange=this.handleDeviceChange.bind(this),this.deleteDevice=this.deleteDevice.bind(this)}componentDidMount(){this.props.loginStatus.authenticationRequired&&this.fetchSecurityDevices()}handleDeviceChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.selectedDevice[t.target.name]=n,this.setState({selectedDevice:this.state.selectedDevice})}handleApply(t){t.preventDefault();var n={permissions:this.state.selectedDevice.permissions||"readonly",description:this.state.selectedDevice.description};fetch(`${window.serverRoutesPrefix}/security/devices/${this.state.selectedDevice.clientId}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(n),credentials:"include"}).then(r=>r.text()).then(r=>{this.setState({selectedDevice:null,selectedIndex:-1}),alert(r),this.fetchSecurityDevices()})}deleteDevice(){fetch(`${window.serverRoutesPrefix}/security/devices/${this.state.selectedDevice.clientId}`,{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include"}).then(t=>t.text()).then(t=>{this.setState({selectedDevice:null,selectedIndex:-1}),alert(t),this.fetchSecurityDevices()})}deviceClicked(t,n){this.setState({selectedDevice:JSON.parse(JSON.stringify(t)),selectedIndex:n},()=>{this.refs.selectedDevice.scrollIntoView()})}handleCancel(){this.setState({selectedDevice:null})}render(){return c.createElement("div",{className:"animated fadeIn"},this.props.loginStatus.authenticationRequired===!1&&c.createElement(Ih,null),this.props.loginStatus.authenticationRequired&&c.createElement("div",null,c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"Devices"),c.createElement(pt,null,c.createElement(Jr,{hover:!0,responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",null,"Client ID"),c.createElement("th",null,"Description"),c.createElement("th",null,"Type"))),c.createElement("tbody",null,(this.state.devices||[]).map((t,n)=>c.createElement("tr",{key:t.clientId,onClick:this.deviceClicked.bind(this,t,n)},c.createElement("td",null,t.clientId),c.createElement("td",null,t.description),c.createElement("td",null,cM(t.permissions))))))),c.createElement(tr,null)),this.state.selectedDevice&&c.createElement("div",{ref:"selectedDevice"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"Device"),c.createElement(pt,null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"clientId"},"Client ID")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(ve,null,this.state.selectedDevice.clientId))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"description"},"Description")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{size:"60",style:{width:"auto"},type:"text",name:"description",onChange:this.handleDeviceChange,value:this.state.selectedDevice.description}))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"select"},"Permissions")),c.createElement(Y,{xs:"12",md:"2"},!this.state.selectedDevice.requestedPermissions&&c.createElement(Ee,{type:"select",name:"permissions",value:this.state.selectedDevice.permissions,onChange:this.handleDeviceChange},c.createElement("option",{value:"readonly"},"Read Only"),c.createElement("option",{value:"readwrite"},"Read/Write"),c.createElement("option",{value:"admin"},"Admin")),this.state.selectedDevice.requestedPermissions&&c.createElement(ve,null,cM(this.state.selectedDevice.permissions))))),c.createElement(tr,null,c.createElement(cn,null,c.createElement(Y,{xs:"4",md:"1"},c.createElement(it,{size:"sm",color:"primary",onClick:this.handleApply},c.createElement("i",{className:"fa fa-dot-circle-o"})," Apply")),c.createElement(Y,{xs:"4",md:"1"},c.createElement(it,{size:"sm",color:"secondary",onClick:this.handleCancel},c.createElement("i",{className:"fa fa-ban"})," Cancel")),c.createElement(Y,{xs:"4",md:"10",className:"text-right"},c.createElement(it,{size:"sm",color:"danger",onClick:this.deleteDevice},c.createElement("i",{className:"fa fa-ban"})," Delete"))))))))}}const hln=({securityDevices:e})=>({securityDevices:e}),pln=tn(hln)(dln);function cM(e){if(e==="readonly")return"Read Only";if(e==="readwrite")return"Read/Write";if(e==="admin")return"Admin"}class mln extends J.Component{constructor(t){super(t),this.state={errorMessage:null,email:"",password:"",confirmPassword:"",registrationSent:!1},this.handleInputChange=this.handleInputChange.bind(this),this.handleCreate=this.handleCreate.bind(this)}handleInputChange(t){var n=t.target.name;this.setState({[t.target.name]:t.target.value},()=>{n==="password"||n==="confirmPassword"&&this.state.password!==this.state.confirmPassword?this.setState({errorMessage:"Passwords do not match"}):this.setState({errorMessage:null})})}handleCreate(){if(this.state.email.length===0)this.setState({errorMessage:"Please enter an email address"});else if(this.state.password.length===0&&this.state.confirmPassword.length===0)this.setState({errorMessage:"Please enter and conform your password"});else{if(this.state.password!==this.state.confirmPassword)return;var t={userId:this.state.email,password:this.state.password};fetch("/signalk/v1/access/requests",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),credentials:"include"}).then(n=>{n.status!==202?n.json().then(r=>{this.setState({errorMessage:r.message?r.message:r.result})}):this.setState({registrationSent:!0})})}}render(){return c.createElement("div",null,c.createElement(Hu,null,c.createElement(cn,{className:"justify-content-center"},c.createElement(Y,{md:"6"},c.createElement(ft,{className:"mx-4"},c.createElement(pt,{className:"p-4"},c.createElement("h1",null,"Register"),this.state.registrationSent&&c.createElement("p",{className:"text-muted"},"Your registration has been sent"),!this.state.registrationSent&&c.createElement(xr,null,c.createElement("p",{className:"text-muted"},"Create your account"),c.createElement(Bo,{className:"mb-3"},c.createElement(Oa,{addonType:"prepend"},c.createElement(Vo,null,"@")),c.createElement(Ee,{name:"email",type:"text",placeholder:"Email",onChange:this.handleInputChange})),c.createElement(Bo,{className:"mb-3"},c.createElement(Oa,{addonType:"prepend"},c.createElement(Vo,null,c.createElement("i",{className:"icon-lock"}))),c.createElement(Ee,{name:"password",type:"password",placeholder:"Password",onChange:this.handleInputChange})),c.createElement(Bo,{className:"mb-0"},c.createElement(Oa,{addonType:"prepend"},c.createElement(Vo,null,c.createElement("i",{className:"icon-lock"}))),c.createElement(Ee,{name:"confirmPassword",type:"password",placeholder:"Repeat password",onChange:this.handleInputChange})),this.state.errorMessage&&c.createElement("p",{className:"text-danger mt-3 mb-0"},this.state.errorMessage))),!this.state.registrationSent&&c.createElement(tr,{className:"p-4"},c.createElement(cn,null,c.createElement(Y,{xs:"12",sm:"12"},c.createElement(it,{color:"success",block:!0,onClick:this.handleCreate},"Create Account")))))))))}}class gln extends J.Component{constructor(t){super(t),this.state={selectedRequest:null,accessRequestsApproving:[],accessRequestsDenying:[]},this.handleRequestChange=this.handleRequestChange.bind(this)}handleAccessRequest(t,n){var r=n?"accessRequestsApproving":"accessRequestsDenying";this.state[r].push(t),this.setState({stateKey:this.state});var s={permissions:this.state.selectedRequest.permissions||"readonly",config:this.state.selectedRequest.config,expiration:this.state.selectedRequest.expiration||"1y"};fetch(`${window.serverRoutesPrefix}/security/access/requests/${t}/${n?"approved":"denied"}`,{method:"PUT",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)}).then(o=>o.text()).then(()=>{this.state[r]=this.state[r].filter(o=>o!==t),this.setState({stateKey:this.state[r],selectedRequest:null})})}requestClicked(t,n,r){this.setState({selectedRequest:JSON.parse(JSON.stringify(n)),selectedIndex:r},()=>{this.refs.selectedRequest.scrollIntoView()})}handleRequestChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.selectedRequest[t.target.name]=n,this.setState({selectedRequest:this.state.selectedRequest})}handleCancel(){this.setState({selectedRequest:null})}render(){return c.createElement("div",{className:"animated fadeIn"},this.props.loginStatus.authenticationRequired===!1&&c.createElement(Ih,null),this.props.loginStatus.authenticationRequired&&c.createElement("div",null,c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"Access Requests"),c.createElement(pt,null,c.createElement(Jr,{hover:!0,responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",null,"Permissions"),c.createElement("th",null,"Identifier"),c.createElement("th",null,"Description"),c.createElement("th",null,"Source IP"))),c.createElement("tbody",null,(this.props.accessRequests||[]).map((t,n)=>c.createElement("tr",{key:t.accessIdentifier,onClick:this.requestClicked.bind(this,event,t,n)},c.createElement("td",null,t.permissions==="admin"?c.createElement(Sr,{color:"danger"},"Admin"):t.permissions==="readwrite"?c.createElement(Sr,{color:"warning"},"Read/Write"):c.createElement(Sr,{color:"secondary"},"Read Only")),c.createElement("td",null,t.accessIdentifier),c.createElement("td",null,t.accessDescription),c.createElement("td",null,t.ip))))))),this.state.selectedRequest&&c.createElement("div",{ref:"selectedRequest"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"Request"),c.createElement(pt,null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"4",lg:"2"},c.createElement(ve,null,"Identifier")),c.createElement(Y,{xs:"12",md:"8"},c.createElement(ve,null,this.state.selectedRequest.accessIdentifier))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"4",lg:"2"},c.createElement(ve,null,"Description")),c.createElement(Y,{xs:"12",md:"8"},c.createElement(ve,null,this.state.selectedRequest.accessDescription))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"4",lg:"2"},c.createElement(ve,{htmlFor:"text-input"},"Authentication Timeout")),c.createElement(Y,{xs:"12",md:"8",lg:"3"},c.createElement(Ee,{type:"text",name:"expiration",onChange:this.handleRequestChange,value:this.state.selectedRequest.expiration}),c.createElement(st,{color:"muted"},"Examples: 60s, 1m, 1h, 1d, NEVER"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"4",lg:"2"},c.createElement(ve,{htmlFor:"select"},"Permissions")),c.createElement(Y,{xs:"12",md:"8",lg:"3"},!this.state.selectedRequest.requestedPermissions&&c.createElement(Ee,{type:"select",name:"permissions",value:this.state.selectedRequest.permissions,onChange:this.handleRequestChange},c.createElement("option",{value:"readonly"},"Read Only"),c.createElement("option",{value:"readwrite"},"Read/Write"),c.createElement("option",{value:"admin"},"Admin")),this.state.selectedRequest.requestedPermissions&&c.createElement(ve,null,this.state.selectedRequest.permissions==="admin"?c.createElement(Sr,{color:"danger",style:{fontSize:"large"}},"Admin"):this.state.selectedRequest.permissions==="readwrite"?c.createElement(Sr,{color:"warning",style:{fontSize:"large"}},"Read/Write"):c.createElement(Sr,{color:"secondary",style:{fontSize:"large"}},"Read Only"))))),c.createElement(tr,null,c.createElement(cn,{className:"ml-0 mr-0 d-flex justify-content-between justify-content-sm-start"},c.createElement(Y,{xs:"4",md:"4",lg:"2",className:"pl-0 pr-0 pr-md-2"},c.createElement(it,{size:"md",color:"success",onClick:this.handleAccessRequest.bind(this,this.state.selectedRequest.accessIdentifier,!0)},c.createElement("i",{className:this.state.accessRequestsApproving.indexOf(this.state.selectedRequest.accessIdentifier)!==-1?"fa fa-spinner fa-spin":"fa fa-check"})," ","Approve")),c.createElement(Y,{xs:"4",md:"8",lg:"3",className:"pl-2 pl-lg-1 pr-0 pr-md-2"},c.createElement(it,{size:"md",color:"danger",className:"float-right float-sm-left",onClick:this.handleAccessRequest.bind(this,this.state.selectedRequest.accessIdentifier,!1)},c.createElement("i",{className:this.state.accessRequestsDenying.indexOf(this.state.selectedRequest.accessIdentifier)!==-1?"fa fa-spinner fa-spin":"fa fa-ban"})," ","Deny"))))))))}}const vln=({accessRequests:e,loginStatus:t})=>({accessRequests:e,loginStatus:t}),yln=tn(vln)(gln);class bln extends J.Component{constructor(){super(),this.handleAddFilter=this.handleAddFilter.bind(this),this.handleEnabledChange=this.handleEnabledChange.bind(this)}filterChanged(t,n){t[n.target.name]=n.target.value,this.props.onChange(n)}deleteFilter(t,n){this.props.value.options.filters.splice(t,1),this.props.onChange(n)}handleEnabledChange(t){this.props.value.options.filtersEnabled=t.target.checked,this.props.onChange(t)}handleAddFilter(t){this.props.value.options.filters||(this.props.value.options.filters=[]),this.props.value.options.filters.push({source:"",pgn:""}),this.props.onChange(t)}render(){const t=this.props.value.options.useCanName?"Can NAME":"Address";return c.createElement("div",null,c.createElement(ft,null,c.createElement(xt,null,"Filters"),c.createElement(pt,null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"filtersEnabled",className:"switch-input",checked:this.props.value.options.filtersEnabled,onChange:this.handleEnabledChange}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})),"  Enabled ",c.createElement("br",null),c.createElement("br",null),"Filter out all messages from a specific ",t," by entering just the ",t,".",c.createElement("br",null),"Filter out a specific PGN from all devices by entering just the PGN.",c.createElement("br",null),"Filter out a specific PGN from a specific ",t," by entering both.",c.createElement("br",null),c.createElement("br",null),this.props.value.options.filters&&this.props.value.options.filters.length>0&&c.createElement(Jr,{responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",null,t),c.createElement("th",null,"PGN"),c.createElement("th",null))),c.createElement("tbody",null,this.props.value.options.filters.map((n,r)=>c.createElement("tr",{key:r},c.createElement("td",null,c.createElement(Ee,{type:"text",name:"source",value:n.source,onChange:this.filterChanged.bind(this,n)})),c.createElement("td",null,c.createElement(Ee,{type:"text",name:"pgn",value:n.pgn,onChange:this.filterChanged.bind(this,n)})),c.createElement("td",null,c.createElement(it,{color:"link",className:"text-danger",onClick:this.deleteFilter.bind(this,r)},c.createElement("i",{className:"fas fa-trash"}))))))),c.createElement(it,{size:"sm",color:"primary",onClick:this.handleAddFilter},c.createElement("i",{className:"fa fa-plus-circle"})," Add"))))}}class $ln extends J.Component{constructor(){super(),this.state={hasAnalyzer:!1}}componentDidMount(){fetch(`${window.serverRoutesPrefix}/hasAnalyzer`,{credentials:"include"}).then(t=>t.json()).then(t=>{this.setState({hasAnalyzer:t})})}render(){let n={NMEA2000:Fln,NMEA0183:jln,SignalK:qln,Seatalk:Uln,FileStream:Bln}[this.props.value.type]||(()=>null);return c.createElement("div",null,c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,{htmlFor:"select"},"Data Type")),c.createElement(Y,{xs:"6",md:"3"},this.props.value.isNew?c.createElement(Ee,{type:"select",value:this.props.value.type,name:"type",onChange:r=>this.props.onChange(r)},c.createElement("option",{value:"NMEA2000"},"NMEA 2000"),c.createElement("option",{value:"NMEA0183"},"NMEA 0183"),c.createElement("option",{value:"SignalK"},"Signal K"),c.createElement("option",{value:"Seatalk"},"Seatalk (GPIO)"),c.createElement("option",{value:"FileStream"},"File Stream")):this.props.value.type)),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Enabled")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"enabled",className:"switch-input",onChange:r=>this.props.onChange(r),checked:this.props.value.enabled}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))),this.props.value.type!=="FileStream"&&c.createElement(Sln,{value:this.props.value,onChange:this.props.onChange}),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"id"},"ID")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"text",name:"id",value:this.props.value.id,disabled:!this.props.value.isNew,onChange:r=>{const s={target:{name:r.target.name,type:r.target.type,value:(r.target.value||"").replace(/[^a-zA-Z\d-_]/g,"")}};this.props.onChange(s)}}))),c.createElement(n,{value:this.props.value,onChange:this.props.onChange,hasAnalyzer:this.state.hasAnalyzer}),c.createElement(xln,{value:this.props.value.options,onChange:this.props.onChange}),this.props.value.type==="NMEA2000"&&c.createElement(bln,{value:this.props.value,onChange:this.props.onPropChange}))}}class hs extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:this.props.name},this.props.title)),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"text",name:this.props.name,value:this.props.value,onChange:t=>this.props.onChange(t)}),this.props.helpText&&c.createElement(st,{color:"muted"},this.props.helpText)))}}class Eln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:this.props.name},this.props.title)),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"textarea",name:this.props.name,value:this.props.value,rows:this.props.rows,onChange:t=>this.props.onChange(t)}),this.props.helpText&&c.createElement(st,{color:"muted"},this.props.helpText)))}}class C8 extends J.Component{constructor(){super(),this.state={devices:{}}}componentDidMount(){fetch(`${window.serverRoutesPrefix}/serialports`,{credentials:"include"}).then(t=>t.json()).then(t=>{t.serialports=t.serialports.map(n=>n.path),this.setState({devices:t})})}render(){const t=!wln(this.props.value.device,this.state.devices);let n=t?this.props.value.device==="Enter manually"?"":this.props.value.device:"";return c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"serialportselect"},"Serial port")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",name:"options.device",id:"serialportselect",onChange:this.props.onChange,helpText:"help me",value:t?"Enter manually":this.props.value.device},c.createElement("option",{key:"enterManually"},"Enter manually"),_ln(["byOpenPlotter","byId","byPath","serialports"],["OpenPlotter managed:","by-id:","by-path:","Listed:"],this.state.devices))),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"text",name:"options.device",disabled:!t,value:n||"",onChange:r=>this.props.onChange(r)})))}}const wln=(e,t)=>Object.keys(t).reduce((r,s)=>r.concat(t[s]),[]).includes(e),_ln=(e,t,n)=>e.reduce((r,s,o)=>(n[s]&&n[s].length>0&&(r.push(c.createElement("option",{disabled:"true",key:s},t[o])),n[s].forEach((a,i)=>{r.push(c.createElement("option",{key:`${s}${i}`},a))})),r),[]);class Sln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Data Logging")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"logging",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.logging}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}class Cln extends J.Component{constructor(t){super(t),this.props.value.validateChecksum=typeof this.props.value.validateChecksum>"u"||this.props.value.validateChecksum}render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Validate Checksum")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.validateChecksum",className:"switch-input",onChange:t=>{this.props.onChange(t),this.props.value.validateChecksum&&(this.props.value.appendChecksum=!1)},checked:this.props.value.validateChecksum}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}class xln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Override timestamps")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.overrideTimestamp",className:"switch-input",onChange:this.props.onChange,checked:this.props.value.overrideTimestamp}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}class Tln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Remove NULL characters")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.removeNulls",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.removeNulls}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}class Oln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Append Checksum")),c.createElement(Y,{xs:"2",md:"1"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.appendChecksum",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.appendChecksum&&!this.props.value.validateChecksum,disabled:!!this.props.value.validateChecksum}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))),c.createElement(Y,{xs:"12",md:"6"},this.props.value.validateChecksum&&c.createElement("label",{className:"text-muted small"},"Turn Validate Checksum OFF to enable appending the checksum")))}}class Nln extends J.Component{render(){return c.createElement(hs,{title:"Input Event",name:"options.sentenceEvent",helpText:"Additional event name for incoming sentences. Example: nmea1data",value:this.props.value.sentenceEvent,onChange:this.props.onChange})}}class Pln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"dataType"},"Data Type")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"select",value:this.props.value.options.dataType,name:"options.dataType",onChange:t=>this.props.onChange(t)},!this.props.value.options.dataType&&c.createElement("option",{value:""},"Select data type"),c.createElement("option",{value:"SignalK"},"Signal K"),c.createElement("option",{value:"NMEA2000JS"},"Actisense NMEA 2000 (canboatjs)"),c.createElement("option",{value:"NMEA2000IK"},"iKonvert NMEA 2000 (canboatjs)"),c.createElement("option",{value:"NMEA2000YD"},"Yacht Devices YDGW-02 NMEA 2000 (canboatjs)"),c.createElement("option",{value:"NMEA2000",disabled:!this.props.hasAnalyzer},"NMEA 2000 (canboat)"),c.createElement("option",{value:"NMEA0183"},"NMEA 0183"),this.props.value.type==="FileStream"&&c.createElement("option",{value:"Multiplexed"},"Multiplexed Log"))))}}class Aln extends J.Component{render(){return c.createElement(hs,{title:"Baud Rate",name:"options.baudrate",helpText:"Example: 4800",value:this.props.value.baudrate,onChange:t=>this.props.onChange(t,"number")})}}class Iln extends J.Component{constructor(t){super(t),this.props.value.baudrate=this.props.value.baudrate||(this.props.value.type==="ikonvert-canboatjs"?230400:115200)}render(){return c.createElement(hs,{title:"Baud Rate",name:"options.baudrate",value:this.props.value.baudrate,onChange:t=>this.props.onChange(t,"number")})}}class Fb extends J.Component{constructor(t){super(),this.state=Fb.getDerivedStateFromProps(t),this.onChange=this.onChange.bind(this)}static getDerivedStateFromProps(t){let n=t.value.toStdout;return Array.isArray(n)&&(n=n.join(",")),{value:n}}onChange(t){this.setState({value:t.target.value}),this.props.onChange({target:{type:t.target.type,name:t.target.name,value:t.target.value.split(",")}})}render(){return c.createElement(hs,{title:"Output Events",name:"options.toStdout",helpText:"Events that should be written as output to this connection. Example: nmea0183,nmea0183out",value:this.state.value,onChange:this.onChange})}}class rT extends J.Component{constructor(t){super(),this.onChange=this.onChange.bind(this),this.state=rT.getDerivedStateFromProps(t)}static getDerivedStateFromProps(t){let n=t.value.ignoredSentences;return Array.isArray(n)&&(n=n.join(",")),{value:n}}onChange(t){this.setState({value:t.target.value}),this.props.onChange({target:{type:t.target.type,name:t.target.name,value:t.target.value.split(",")}})}render(){return c.createElement(hs,{title:"Ignored Sentences",name:"options.ignoredSentences",helpText:"NMEA0183 sentences to throw away from the input data. Example: RMC,ROT",value:this.state.value,onChange:this.onChange})}}class ki extends J.Component{render(){return c.createElement(hs,{title:"Port",name:"options.port",helpText:"Example: 4123",value:this.props.value.port,onChange:this.props.onChange})}}class lu extends J.Component{render(){return c.createElement(hs,{title:"Host",name:"options.host",helpText:"Example: localhost",value:this.props.value.host,onChange:this.props.onChange})}}class Lg extends J.Component{render(){return c.createElement(hs,{title:"No data timeout",name:"options.noDataReceivedTimeout",helpText:"Timeout for no data received in seconds. Socket is disconnected and reconnection attempted if timeout is reached. Leave empty or 0 to disable.",value:this.props.value.noDataReceivedTimeout,onChange:this.props.onChange})}}class Rln extends J.Component{render(){return c.createElement(hs,{title:"Remote 'self' to use",name:"options.remoteSelf",helpText:"like vessels.urn:mrn:signalk:uuid:f6d9f041-4e61-4335-82c0-7a51fb10ae86 OR vessels.urn:mrn:imo:mmsi:230099999",value:this.props.value.remoteSelf,onChange:this.props.onChange})}}class kln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Suppress nmea0183 event")),c.createElement(Y,{xs:"1",md:"1"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.suppress0183event",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.suppress0183event}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))),c.createElement(Y,{xs:"12",md:"6"},c.createElement("label",{className:"text-muted small"},"Supress sending the default nmea0183 event for incoming sentences")))}}class Dln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Use Can NAME in source data")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.useCanName",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.useCanName}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}class Mln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"CamcelCase Compat (for legacy N2K plugins)")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.useCamelCompat",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.useCamelCompat!==void 0?this.props.value.useCamelCompat:!0}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}class Lln extends J.Component{constructor(t){super(t)}render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Collect Network Statistics")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.sendNetworkStats",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.sendNetworkStats}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}const Fln=e=>c.createElement("div",null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"options.type"},"NMEA 2000 Source")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",value:e.value.options.type||"none",name:"options.type",onChange:t=>e.onChange(t)},c.createElement("option",{value:"none"},"Select a source"),c.createElement("option",{value:"ngt-1-canboatjs"},"Actisense NGT-1 (canboatjs)"),c.createElement("option",{value:"ngt-1",disabled:!e.hasAnalyzer},"Actisense NGT-1 (canboat)"),c.createElement("option",{value:"ikonvert-canboatjs"},"iKonvert (canboatjs)"),c.createElement("option",{value:"navlink2-tcp-canboatjs"},"NavLink2 (canboatjs)"),c.createElement("option",{value:"ydwg02-canboatjs"},"Yacht Devices RAW TCP (canboatjs)"),c.createElement("option",{value:"ydwg02-udp-canboatjs"},"Yacht Devices RAW UDP (canboatjs)"),c.createElement("option",{value:"ydwg02-usb-canboatjs"},"Yacht Devices RAW USB (canboatjs)"),c.createElement("option",{value:"canbus-canboatjs"},"Canbus (canboatjs)"),c.createElement("option",{value:"w2k-1-n2k-ascii-canboatjs"},"W2K-1 N2K ASCII (canboatjs)"),c.createElement("option",{value:"w2k-1-n2k-actisense-canboatjs"},"W2K-1 N2K ACTISENSE (canboatjs)"),c.createElement("option",{value:"canbus",disabled:!e.hasAnalyzer},"Canbus (canboat)")))),(e.value.options.type==="ngt-1"||e.value.options.type==="ngt-1-canboatjs"||e.value.options.type==="ydwg02-usb-canboatjs"||e.value.options.type==="ikonvert-canboatjs")&&c.createElement("div",null,c.createElement(C8,{value:e.value.options,onChange:e.onChange}),c.createElement(Iln,{value:e.value.options,onChange:e.onChange})),e.value.options.type==="ydwg02-canboatjs"&&c.createElement("div",null,c.createElement(lu,{value:e.value.options,onChange:e.onChange}),c.createElement(ki,{value:e.value.options,onChange:e.onChange}),c.createElement(Lg,{value:e.value.options,onChange:e.onChange})),e.value.options.type==="ydwg02-udp-canboatjs"&&c.createElement("div",null,c.createElement(lu,{value:e.value.options,onChange:e.onChange}),c.createElement(ki,{value:e.value.options,onChange:e.onChange})),e.value.options.type==="navlink2-tcp-canboatjs"&&c.createElement("div",null,c.createElement(lu,{value:e.value.options,onChange:e.onChange}),c.createElement(ki,{value:e.value.options,onChange:e.onChange}),c.createElement(Lg,{value:e.value.options,onChange:e.onChange})),(e.value.options.type==="canbus"||e.value.options.type==="canbus-canboatjs")&&c.createElement("div",null,c.createElement(hs,{title:"Interface",name:"options.interface",helpText:"Example: can0",value:e.value.options.interface,onChange:e.onChange}),c.createElement(hs,{title:"UniqueNumber",name:"options.uniqueNumber",helpText:"Example: any number from 1 to 2097151, will be equal to SerialNumber of a SignalK NMEA2000 device. Leave empty for random (default). Set a fixed value if you have problem with source identification on some B&G MFD's after SignalK restart.",value:e.value.options.uniqueNumber,onChange:e.onChange}),c.createElement(hs,{title:"ManufacturerCode",name:"options.mfgCode",helpText:"Example: 999 - Unknown (default), 0 - Internal, or any other mabufacturer code to emulate. Leave empty for default 999. Set to 0 if you have problem with source identification on some B&G MFD's after SignalK restart.",value:e.value.options.mfgCode,onChange:e.onChange})),(e.value.options.type==="ngt-1-canboatjs"||e.value.options.type==="ikonvert-canboatjs"||e.value.options.type==="navlink2-tcp-canboatjs")&&c.createElement(Lln,{value:e.value.options,onChange:e.onChange}),(e.value.options.type==="w2k-1-n2k-ascii-canboatjs"||e.value.options.type==="w2k-1-n2k-actisense-canboatjs")&&c.createElement("div",null,c.createElement(lu,{value:e.value.options,onChange:e.onChange}),c.createElement(ki,{value:e.value.options,onChange:e.onChange}),c.createElement(Lg,{value:e.value.options,onChange:e.onChange})),c.createElement(Dln,{value:e.value.options,onChange:e.onChange}),e.value.options.type!==void 0&&e.value.options.type.indexOf("canboatjs")!==-1&&c.createElement(Mln,{value:e.value.options,onChange:e.onChange})),jln=e=>c.createElement("div",null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"options.type"},"NMEA 0183 Source")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",value:e.value.options.type,name:"options.type",onChange:t=>e.onChange(t)},c.createElement("option",null,"Select a source"),c.createElement("option",{value:"serial"},"Serial"),c.createElement("option",{value:"tcp"},"TCP Client"),c.createElement("option",{value:"tcpserver"},"TCP Server on port 10110"),c.createElement("option",{value:"udp"},"UDP"),c.createElement("option",{value:"gpsd"},"GPSD"))),e.value.options.type==="serial"&&c.createElement(Y,{xs:"12",md:"6"},"Serial ports are bidirectional. Input from the connection is parsed as NMEA0183. Configure Output Events below to connect server's NMEA0183 data for output."),e.value.options.type==="tcpserver"&&c.createElement(Y,{xs:"12",md:"6"},"Accept input from clients connected to the default TCP/10110 NMEA0183 server")),x8(e),(e.value.options.type==="tcp"||e.value.options.type==="gpsd")&&c.createElement("div",null,c.createElement(lu,{value:e.value.options,onChange:e.onChange}),c.createElement(ki,{value:e.value.options,onChange:e.onChange}),c.createElement(Fb,{value:e.value.options,onChange:e.onChange}),c.createElement(Lg,{value:e.value.options,onChange:e.onChange})),c.createElement("div",null,c.createElement(kln,{value:e.value.options,onChange:e.onChange})),e.value.options.type==="udp"&&c.createElement(ki,{value:e.value.options,onChange:e.onChange}),c.createElement(Nln,{value:e.value.options,onChange:e.onChange}),c.createElement(Cln,{value:e.value.options,onChange:e.onChange}),c.createElement(Oln,{value:e.value.options,onChange:e.onChange}),c.createElement(Tln,{value:e.value.options,onChange:e.onChange}),c.createElement(rT,{value:e.value.options,onChange:e.onChange})),qln=e=>c.createElement("div",null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"options.type"},"SignalK Source")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",value:e.value.options.type,name:"options.type",onChange:t=>e.onChange(t),disabled:e.value.options.useDiscovery,helpText:"afoo"},c.createElement("option",null,"Select a source"),c.createElement("option",{value:"serial"},"Serial"),c.createElement("option",{value:"ws"},"WebSocket"),c.createElement("option",{value:"wss"},"WebSocket SSL"),c.createElement("option",{value:"tcp"},"TCP"),c.createElement("option",{value:"udp"},"UDP")))),e.value.options.useDiscovery&&c.createElement("p",{className:"text-danger"},"This connection is deprecated, please delete it and recreate it with the connection automatically discovered at the top of the page."),!e.value.options.useDiscovery&&(e.value.options.type==="ws"||e.value.options.type==="wss"||e.value.options.type==="tcp")&&c.createElement("div",null,c.createElement(lu,{value:e.value.options,onChange:e.onChange}),c.createElement(ki,{value:e.value.options,onChange:e.onChange}),e.value.options.type==="wss"&&c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Allow self signed certificates")),c.createElement(Y,{xs:"12",md:"8"},c.createElement("div",{key:name},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:"options.selfsignedcert",name:"options.selfsignedcert",className:"switch-input",onChange:e.onChange,checked:e.value.options.selfsignedcert,disabled:e.value.options.type!=="wss"}),c.createElement("span",{className:"switch-label","data-on":"On","data-off":"Off"}),c.createElement("span",{className:"switch-handle"}))))),(e.value.options.type==="ws"||e.value.options.type==="wss")&&c.createElement("div",null,c.createElement(Eln,{title:"Subscription",name:"options.subscription",rows:"6",value:e.value.options.subscription,onChange:t=>e.onChange(t,"jsonstring"),helpText:"Defaults to all. This can be an array of subscriptions."}))),e.value.options.type==="udp"&&c.createElement(ki,{value:e.value.options,onChange:e.onChange}),x8(e),!e.value.options.useDiscovery&&c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"options.type"},"'self' handling")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",value:e.value.options.selfHandling||"noSelf",name:"options.selfHandling",onChange:t=>e.onChange(t)},c.createElement("option",{value:"useRemoteSelf"},"Map remote 'self' to local 'self'"),c.createElement("option",{value:"manualSelf"},"Manual mapping"),c.createElement("option",{value:"noSelf"},"No 'self' mapping")))),!e.value.options.useDiscovery&&e.value.options.selfHandling==="manualSelf"&&c.createElement(Rln,{value:e.value.options,onChange:e.onChange})),lM=[4,5,6,12,13,16,17,18,19,20,21,22,23,24,25,26,27].map(e=>`0${e}`.slice(-2)),Uln=e=>c.createElement("span",null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"options.type"},"GPIO Library")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",value:e.value.options.type||"none",name:"options.type",onChange:t=>e.onChange(t)},c.createElement("option",{value:"none"},"Select a library"),c.createElement("option",{value:"gpiod"},"gpiod"),c.createElement("option",{value:"pigpio"},"pigpio (legacy)")))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"gpio"},"GPIO Pin")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",name:"options.gpio",id:"gpio",onChange:e.onChange,value:e.value.options.gpio||lM[0]},lM.map(t=>c.createElement("option",{key:t},`GPIO${t}`))))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"gpioInvert"},"Invert signal")),c.createElement(Y,{xs:"12",md:"10"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:"gpioInvert",name:"options.gpioInvert",className:"switch-input",onChange:e.onChange,checked:e.value.options.gpioInvert}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))),Bln=e=>c.createElement("div",null,c.createElement(Pln,{hasAnalyzer:e.hasAnalyzer,value:e.value,onChange:e.onChange}),c.createElement(hs,{title:"File Name",name:"options.filename",value:e.value.options.filename,onChange:e.onChange})),x8=e=>e.value.options.type==="serial"&&c.createElement("div",null,c.createElement(C8,{value:e.value.options,onChange:e.onChange}),c.createElement(Aln,{value:e.value.options,onChange:e.onChange}),c.createElement(Fb,{value:e.value.options,onChange:e.onChange}));function Vln(e){var t=Hln();return function(){var r=ir(e),s;if(t){var o=ir(this).constructor;s=Reflect.construct(r,arguments,o)}else s=r.apply(this,arguments);return Ji(this,s)}}function Hln(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function uM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function zln(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?uM(Object(n),!0).forEach(function(r){hr(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):uM(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}var fM=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0,r=String(t).toLowerCase(),s=String(n.value).toLowerCase(),o=String(n.label).toLowerCase();return s===r||o===r},Gln={formatCreateLabel:function(t){return'Create "'.concat(t,'"')},isValidNewOption:function(t,n,r){return!(!t||n.some(function(s){return fM(t,s)})||r.some(function(s){return fM(t,s)}))},getNewOptionData:function(t,n){return{label:n,value:t,__isNew__:!0}}},Wln=zln({allowCreateWhileLoading:!1,createOptionPosition:"last"},Gln),Yln=function(t){var n,r;return r=n=(function(s){Ja(a,s);var o=Vln(a);function a(i){var l;Ya(this,a),l=o.call(this,i),l.select=void 0,l.onChange=function(d,p){var g=l.props,m=g.getNewOptionData,y=g.inputValue,$=g.isMulti,E=g.onChange,v=g.onCreateOption,w=g.value,C=g.name;if(p.action!=="select-option")return E(d,p);var N=l.state.newOption,T=Array.isArray(d)?d:[d];if(T[T.length-1]===N){if(v)v(y);else{var j=m(y,y),U={action:"create-option",name:C};E($?[].concat(mg(uv(w)),[j]):j,U)}return}E(d,p)};var f=i.options||[];return l.state={newOption:void 0,options:f},l}return Ka(a,[{key:"UNSAFE_componentWillReceiveProps",value:function(l){var f=l.allowCreateWhileLoading,d=l.createOptionPosition,p=l.formatCreateLabel,g=l.getNewOptionData,m=l.inputValue,y=l.isLoading,$=l.isValidNewOption,E=l.value,v=l.options||[],w=this.state.newOption;$(m,uv(E),v)?w=g(m,p(m)):w=void 0,this.setState({newOption:w,options:(f||!y)&&w?d==="first"?[w].concat(mg(v)):[].concat(mg(v),[w]):v})}},{key:"focus",value:function(){this.select.focus()}},{key:"blur",value:function(){this.select.blur()}},{key:"render",value:function(){var l=this,f=this.state.options;return c.createElement(t,Ie({},this.props,{ref:function(p){l.select=p},options:f,onChange:this.onChange}))}}]),a})(J.Component),n.defaultProps=Wln,r},Kln=Yln(p2),sT=M4(Kln),Uv={exports:{}};Uv.exports;(function(e,t){var n=200,r="Expected a function",s="__lodash_hash_undefined__",o=1,a=2,i=9007199254740991,l="[object Arguments]",f="[object Array]",d="[object Boolean]",p="[object Date]",g="[object Error]",m="[object Function]",y="[object GeneratorFunction]",$="[object Map]",E="[object Number]",v="[object Object]",w="[object Promise]",C="[object RegExp]",N="[object Set]",T="[object String]",j="[object Symbol]",U="[object WeakMap]",te="[object ArrayBuffer]",Q="[object DataView]",oe="[object Float32Array]",fe="[object Float64Array]",le="[object Int8Array]",de="[object Int16Array]",ae="[object Int32Array]",K="[object Uint8Array]",ie="[object Uint8ClampedArray]",ce="[object Uint16Array]",ye="[object Uint32Array]",pe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,V=/^\w*$/,I=/^\./,F=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,k=/[\\^$.*+?()[\]{}|]/g,S=/\\(\\)?/g,P=/^\[object .+?Constructor\]$/,D=/^(?:0|[1-9]\d*)$/,ne={};ne[oe]=ne[fe]=ne[le]=ne[de]=ne[ae]=ne[K]=ne[ie]=ne[ce]=ne[ye]=!0,ne[l]=ne[f]=ne[te]=ne[d]=ne[Q]=ne[p]=ne[g]=ne[m]=ne[$]=ne[E]=ne[v]=ne[C]=ne[N]=ne[T]=ne[U]=!1;var Z=typeof Cn=="object"&&Cn&&Cn.Object===Object&&Cn,Pe=typeof self=="object"&&self&&self.Object===Object&&self,_e=Z||Pe||Function("return this")(),Fe=t&&!t.nodeType&&t,He=Fe&&!0&&e&&!e.nodeType&&e,Ot=He&&He.exports===Fe,Rt=Ot&&Z.process,Xe=(function(){try{return Rt&&Rt.binding("util")}catch{}})(),B=Xe&&Xe.isTypedArray;function O(M,G){for(var he=-1,Se=M?M.length:0;++he<Se;)if(G(M[he],he,M))return!0;return!1}function A(M){return function(G){return G?.[M]}}function H(M,G){for(var he=-1,Se=Array(M);++he<M;)Se[he]=G(he);return Se}function ee(M){return function(G){return M(G)}}function me(M,G){return M?.[G]}function we(M){var G=!1;if(M!=null&&typeof M.toString!="function")try{G=!!(M+"")}catch{}return G}function Ke(M){var G=-1,he=Array(M.size);return M.forEach(function(Se,Ge){he[++G]=[Ge,Se]}),he}function Ae(M,G){return function(he){return M(G(he))}}function ze(M){var G=-1,he=Array(M.size);return M.forEach(function(Se){he[++G]=Se}),he}var Dt=Array.prototype,mt=Function.prototype,Ht=Object.prototype,vr=_e["__core-js_shared__"],es=(function(){var M=/[^.]+$/.exec(vr&&vr.keys&&vr.keys.IE_PROTO||"");return M?"Symbol(src)_1."+M:""})(),ul=mt.toString,ts=Ht.hasOwnProperty,wo=Ht.toString,_f=RegExp("^"+ul.call(ts).replace(k,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),fl=_e.Symbol,dl=_e.Uint8Array,Sf=Ht.propertyIsEnumerable,bp=Dt.splice,Gb=Ae(Object.keys,Object),Cf=Qo(_e,"DataView"),ti=Qo(_e,"Map"),hl=Qo(_e,"Promise"),xf=Qo(_e,"Set"),Tf=Qo(_e,"WeakMap"),Zi=Qo(Object,"create"),Wb=ea(Cf),$p=ea(ti),Yb=ea(hl),Kb=ea(xf),Jb=ea(Tf),ni=fl?fl.prototype:void 0,Of=ni?ni.valueOf:void 0,pl=ni?ni.toString:void 0;function Zo(M){var G=-1,he=M?M.length:0;for(this.clear();++G<he;){var Se=M[G];this.set(Se[0],Se[1])}}function Xb(){this.__data__=Zi?Zi(null):{}}function Zb(M){return this.has(M)&&delete this.__data__[M]}function Qb(M){var G=this.__data__;if(Zi){var he=G[M];return he===s?void 0:he}return ts.call(G,M)?G[M]:void 0}function e$(M){var G=this.__data__;return Zi?G[M]!==void 0:ts.call(G,M)}function t$(M,G){var he=this.__data__;return he[M]=Zi&&G===void 0?s:G,this}Zo.prototype.clear=Xb,Zo.prototype.delete=Zb,Zo.prototype.get=Qb,Zo.prototype.has=e$,Zo.prototype.set=t$;function Bs(M){var G=-1,he=M?M.length:0;for(this.clear();++G<he;){var Se=M[G];this.set(Se[0],Se[1])}}function n$(){this.__data__=[]}function Ep(M){var G=this.__data__,he=Qi(G,M);if(he<0)return!1;var Se=G.length-1;return he==Se?G.pop():bp.call(G,he,1),!0}function r$(M){var G=this.__data__,he=Qi(G,M);return he<0?void 0:G[he][1]}function s$(M){return Qi(this.__data__,M)>-1}function o$(M,G){var he=this.__data__,Se=Qi(he,M);return Se<0?he.push([M,G]):he[Se][1]=G,this}Bs.prototype.clear=n$,Bs.prototype.delete=Ep,Bs.prototype.get=r$,Bs.prototype.has=s$,Bs.prototype.set=o$;function Vs(M){var G=-1,he=M?M.length:0;for(this.clear();++G<he;){var Se=M[G];this.set(Se[0],Se[1])}}function a$(){this.__data__={hash:new Zo,map:new(ti||Bs),string:new Zo}}function i$(M){return ec(this,M).delete(M)}function ml(M){return ec(this,M).get(M)}function c$(M){return ec(this,M).has(M)}function gl(M,G){return ec(this,M).set(M,G),this}Vs.prototype.clear=a$,Vs.prototype.delete=i$,Vs.prototype.get=ml,Vs.prototype.has=c$,Vs.prototype.set=gl;function vl(M){var G=-1,he=M?M.length:0;for(this.__data__=new Vs;++G<he;)this.add(M[G])}function l$(M){return this.__data__.set(M,s),this}function u$(M){return this.__data__.has(M)}vl.prototype.add=vl.prototype.push=l$,vl.prototype.has=u$;function $s(M){this.__data__=new Bs(M)}function wp(){this.__data__=new Bs}function _p(M){return this.__data__.delete(M)}function f$(M){return this.__data__.get(M)}function d$(M){return this.__data__.has(M)}function h$(M,G){var he=this.__data__;if(he instanceof Bs){var Se=he.__data__;if(!ti||Se.length<n-1)return Se.push([M,G]),this;he=this.__data__=new Vs(Se)}return he.set(M,G),this}$s.prototype.clear=wp,$s.prototype.delete=_p,$s.prototype.get=f$,$s.prototype.has=d$,$s.prototype.set=h$;function p$(M,G){var he=ta(M)||kp(M)?H(M.length,String):[],Se=he.length,Ge=!!Se;for(var De in M)ts.call(M,De)&&!(Ge&&(De=="length"||Df(De,Se)))&&he.push(De);return he}function Qi(M,G){for(var he=M.length;he--;)if(Rp(M[he][0],G))return he;return-1}function yl(M,G){G=si(G,M)?[G]:$l(G);for(var he=0,Se=G.length;M!=null&&he<Se;)M=M[oi(G[he++])];return he&&he==Se?M:void 0}function Sp(M){return wo.call(M)}function Nf(M,G){return M!=null&&G in Object(M)}function Pf(M,G,he,Se,Ge){return M===G?!0:M==null||G==null||!_l(M)&&!Nn(G)?M!==M&&G!==G:Cp(M,G,Pf,he,Se,Ge)}function Cp(M,G,he,Se,Ge,De){var gt=ta(M),Tn=ta(G),en=f,Rn=f;gt||(en=_o(M),en=en==l?v:en),Tn||(Rn=_o(G),Rn=Rn==l?v:Rn);var nr=en==v&&!we(M),St=Rn==v&&!we(G),_n=en==Rn;if(_n&&!nr)return De||(De=new $s),gt||na(M)?kf(M,G,he,Se,Ge,De):v$(M,G,en,he,Se,Ge,De);if(!(Ge&a)){var yr=nr&&ts.call(M,"__wrapped__"),jr=St&&ts.call(G,"__wrapped__");if(yr||jr){var Es=yr?M.value():M,Hs=jr?G.value():G;return De||(De=new $s),he(Es,Hs,Se,Ge,De)}}return _n?(De||(De=new $s),Pp(M,G,he,Se,Ge,De)):!1}function bl(M,G,he,Se){var Ge=he.length,De=Ge;if(M==null)return!De;for(M=Object(M);Ge--;){var gt=he[Ge];if(gt[2]?gt[1]!==M[gt[0]]:!(gt[0]in M))return!1}for(;++Ge<De;){gt=he[Ge];var Tn=gt[0],en=M[Tn],Rn=gt[1];if(gt[2]){if(en===void 0&&!(Tn in M))return!1}else{var nr=new $s,St;if(!(St===void 0?Pf(Rn,en,Se,o|a,nr):St))return!1}}return!0}function xp(M){if(!_l(M)||$$(M))return!1;var G=Mp(M)||we(M)?_f:P;return G.test(ea(M))}function m$(M){return Nn(M)&&wl(M.length)&&!!ne[wo.call(M)]}function Tp(M){return typeof M=="function"?M:M==null?Fp:typeof M=="object"?ta(M)?g$(M[0],M[1]):Af(M):jp(M)}function Op(M){if(!E$(M))return Gb(M);var G=[];for(var he in Object(M))ts.call(M,he)&&he!="constructor"&&G.push(he);return G}function Af(M){var G=Ap(M);return G.length==1&&G[0][2]?El(G[0][0],G[0][1]):function(he){return he===M||bl(he,M,G)}}function g$(M,G){return si(M)&&Ip(G)?El(oi(M),G):function(he){var Se=Mf(he,M);return Se===void 0&&Se===G?Fr(he,M):Pf(G,Se,void 0,o|a)}}function Np(M){return function(G){return yl(G,M)}}function If(M,G){for(var he=M?G.length:0,Se=he-1;he--;){var Ge=G[he];if(he==Se||Ge!==De){var De=Ge;if(Df(Ge))bp.call(M,Ge,1);else if(si(Ge,M))delete M[oi(Ge)];else{var gt=$l(Ge),Tn=w$(M,gt);Tn!=null&&delete Tn[oi(S$(gt))]}}}return M}function Rf(M,G,he){var Se=-1,Ge=M.length;G<0&&(G=-G>Ge?0:Ge+G),he=he>Ge?Ge:he,he<0&&(he+=Ge),Ge=G>he?0:he-G>>>0,G>>>=0;for(var De=Array(Ge);++Se<Ge;)De[Se]=M[Se+G];return De}function ri(M){if(typeof M=="string")return M;if(tc(M))return pl?pl.call(M):"";var G=M+"";return G=="0"&&1/M==-1/0?"-0":G}function $l(M){return ta(M)?M:_$(M)}function kf(M,G,he,Se,Ge,De){var gt=Ge&a,Tn=M.length,en=G.length;if(Tn!=en&&!(gt&&en>Tn))return!1;var Rn=De.get(M);if(Rn&&De.get(G))return Rn==G;var nr=-1,St=!0,_n=Ge&o?new vl:void 0;for(De.set(M,G),De.set(G,M);++nr<Tn;){var yr=M[nr],jr=G[nr];if(Se)var Es=gt?Se(jr,yr,nr,G,M,De):Se(yr,jr,nr,M,G,De);if(Es!==void 0){if(Es)continue;St=!1;break}if(_n){if(!O(G,function(Hs,ra){if(!_n.has(ra)&&(yr===Hs||he(yr,Hs,Se,Ge,De)))return _n.add(ra)})){St=!1;break}}else if(!(yr===jr||he(yr,jr,Se,Ge,De))){St=!1;break}}return De.delete(M),De.delete(G),St}function v$(M,G,he,Se,Ge,De,gt){switch(he){case Q:if(M.byteLength!=G.byteLength||M.byteOffset!=G.byteOffset)return!1;M=M.buffer,G=G.buffer;case te:return!(M.byteLength!=G.byteLength||!Se(new dl(M),new dl(G)));case d:case p:case E:return Rp(+M,+G);case g:return M.name==G.name&&M.message==G.message;case C:case T:return M==G+"";case $:var Tn=Ke;case N:var en=De&a;if(Tn||(Tn=ze),M.size!=G.size&&!en)return!1;var Rn=gt.get(M);if(Rn)return Rn==G;De|=o,gt.set(M,G);var nr=kf(Tn(M),Tn(G),Se,Ge,De,gt);return gt.delete(M),nr;case j:if(Of)return Of.call(M)==Of.call(G)}return!1}function Pp(M,G,he,Se,Ge,De){var gt=Ge&a,Tn=Sl(M),en=Tn.length,Rn=Sl(G),nr=Rn.length;if(en!=nr&&!gt)return!1;for(var St=en;St--;){var _n=Tn[St];if(!(gt?_n in G:ts.call(G,_n)))return!1}var yr=De.get(M);if(yr&&De.get(G))return yr==G;var jr=!0;De.set(M,G),De.set(G,M);for(var Es=gt;++St<en;){_n=Tn[St];var Hs=M[_n],ra=G[_n];if(Se)var qp=gt?Se(ra,Hs,_n,G,M,De):Se(Hs,ra,_n,M,G,De);if(!(qp===void 0?Hs===ra||he(Hs,ra,Se,Ge,De):qp)){jr=!1;break}Es||(Es=_n=="constructor")}if(jr&&!Es){var nc=M.constructor,sa=G.constructor;nc!=sa&&"constructor"in M&&"constructor"in G&&!(typeof nc=="function"&&nc instanceof nc&&typeof sa=="function"&&sa instanceof sa)&&(jr=!1)}return De.delete(M),De.delete(G),jr}function ec(M,G){var he=M.__data__;return b$(G)?he[typeof G=="string"?"string":"hash"]:he.map}function Ap(M){for(var G=Sl(M),he=G.length;he--;){var Se=G[he],Ge=M[Se];G[he]=[Se,Ge,Ip(Ge)]}return G}function Qo(M,G){var he=me(M,G);return xp(he)?he:void 0}var _o=Sp;(Cf&&_o(new Cf(new ArrayBuffer(1)))!=Q||ti&&_o(new ti)!=$||hl&&_o(hl.resolve())!=w||xf&&_o(new xf)!=N||Tf&&_o(new Tf)!=U)&&(_o=function(M){var G=wo.call(M),he=G==v?M.constructor:void 0,Se=he?ea(he):void 0;if(Se)switch(Se){case Wb:return Q;case $p:return $;case Yb:return w;case Kb:return N;case Jb:return U}return G});function y$(M,G,he){G=si(G,M)?[G]:$l(G);for(var Se,Ge=-1,gt=G.length;++Ge<gt;){var De=oi(G[Ge]);if(!(Se=M!=null&&he(M,De)))break;M=M[De]}if(Se)return Se;var gt=M?M.length:0;return!!gt&&wl(gt)&&Df(De,gt)&&(ta(M)||kp(M))}function Df(M,G){return G=G??i,!!G&&(typeof M=="number"||D.test(M))&&M>-1&&M%1==0&&M<G}function si(M,G){if(ta(M))return!1;var he=typeof M;return he=="number"||he=="symbol"||he=="boolean"||M==null||tc(M)?!0:V.test(M)||!pe.test(M)||G!=null&&M in Object(G)}function b$(M){var G=typeof M;return G=="string"||G=="number"||G=="symbol"||G=="boolean"?M!=="__proto__":M===null}function $$(M){return!!es&&es in M}function E$(M){var G=M&&M.constructor,he=typeof G=="function"&&G.prototype||Ht;return M===he}function Ip(M){return M===M&&!_l(M)}function El(M,G){return function(he){return he==null?!1:he[M]===G&&(G!==void 0||M in Object(he))}}function w$(M,G){return G.length==1?M:yl(M,Rf(G,0,-1))}var _$=Wt(function(M){M=Lp(M);var G=[];return I.test(M)&&G.push(""),M.replace(F,function(he,Se,Ge,De){G.push(Ge?De.replace(S,"$1"):Se||he)}),G});function oi(M){if(typeof M=="string"||tc(M))return M;var G=M+"";return G=="0"&&1/M==-1/0?"-0":G}function ea(M){if(M!=null){try{return ul.call(M)}catch{}try{return M+""}catch{}}return""}function S$(M){var G=M?M.length:0;return G?M[G-1]:void 0}function rn(M,G){var he=[];if(!(M&&M.length))return he;var Se=-1,Ge=[],De=M.length;for(G=Tp(G);++Se<De;){var gt=M[Se];G(gt,Se,M)&&(he.push(gt),Ge.push(Se))}return If(M,Ge),he}function Wt(M,G){if(typeof M!="function"||G&&typeof G!="function")throw new TypeError(r);var he=function(){var Se=arguments,Ge=G?G.apply(this,Se):Se[0],De=he.cache;if(De.has(Ge))return De.get(Ge);var gt=M.apply(this,Se);return he.cache=De.set(Ge,gt),gt};return he.cache=new(Wt.Cache||Vs),he}Wt.Cache=Vs;function Rp(M,G){return M===G||M!==M&&G!==G}function kp(M){return C$(M)&&ts.call(M,"callee")&&(!Sf.call(M,"callee")||wo.call(M)==l)}var ta=Array.isArray;function Dp(M){return M!=null&&wl(M.length)&&!Mp(M)}function C$(M){return Nn(M)&&Dp(M)}function Mp(M){var G=_l(M)?wo.call(M):"";return G==m||G==y}function wl(M){return typeof M=="number"&&M>-1&&M%1==0&&M<=i}function _l(M){var G=typeof M;return!!M&&(G=="object"||G=="function")}function Nn(M){return!!M&&typeof M=="object"}function tc(M){return typeof M=="symbol"||Nn(M)&&wo.call(M)==j}var na=B?ee(B):m$;function Lp(M){return M==null?"":ri(M)}function Mf(M,G,he){var Se=M==null?void 0:yl(M,G);return Se===void 0?he:Se}function Fr(M,G){return M!=null&&y$(M,G,Nf)}function Sl(M){return Dp(M)?p$(M):Op(M)}function Fp(M){return M}function jp(M){return si(M)?A(oi(M)):Np(M)}e.exports=rn})(Uv,Uv.exports);var Jln=Uv.exports;const r_=xn(Jln);var Xln=200,oT="__lodash_hash_undefined__",Zln=1/0,Qln="[object Function]",eun="[object GeneratorFunction]",tun=/[\\^$.*+?()[\]{}|]/g,nun=/^\[object .+?Constructor\]$/,run=typeof Cn=="object"&&Cn&&Cn.Object===Object&&Cn,sun=typeof self=="object"&&self&&self.Object===Object&&self,aT=run||sun||Function("return this")();function oun(e,t){var n=e?e.length:0;return!!n&&iun(e,t,0)>-1}function aun(e,t,n,r){for(var s=e.length,o=n+-1;++o<s;)if(t(e[o],o,e))return o;return-1}function iun(e,t,n){if(t!==t)return aun(e,cun,n);for(var r=n-1,s=e.length;++r<s;)if(e[r]===t)return r;return-1}function cun(e){return e!==e}function lun(e,t){return e.has(t)}function uun(e,t){return e?.[t]}function fun(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}function T8(e){var t=-1,n=Array(e.size);return e.forEach(function(r){n[++t]=r}),n}var dun=Array.prototype,hun=Function.prototype,O8=Object.prototype,lE=aT["__core-js_shared__"],dM=(function(){var e=/[^.]+$/.exec(lE&&lE.keys&&lE.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})(),N8=hun.toString,iT=O8.hasOwnProperty,pun=O8.toString,mun=RegExp("^"+N8.call(iT).replace(tun,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),gun=dun.splice,vun=cT(aT,"Map"),uE=cT(aT,"Set"),vh=cT(Object,"create");function Vc(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function yun(){this.__data__=vh?vh(null):{}}function bun(e){return this.has(e)&&delete this.__data__[e]}function $un(e){var t=this.__data__;if(vh){var n=t[e];return n===oT?void 0:n}return iT.call(t,e)?t[e]:void 0}function Eun(e){var t=this.__data__;return vh?t[e]!==void 0:iT.call(t,e)}function wun(e,t){var n=this.__data__;return n[e]=vh&&t===void 0?oT:t,this}Vc.prototype.clear=yun;Vc.prototype.delete=bun;Vc.prototype.get=$un;Vc.prototype.has=Eun;Vc.prototype.set=wun;function $f(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function _un(){this.__data__=[]}function Sun(e){var t=this.__data__,n=jb(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():gun.call(t,n,1),!0}function Cun(e){var t=this.__data__,n=jb(t,e);return n<0?void 0:t[n][1]}function xun(e){return jb(this.__data__,e)>-1}function Tun(e,t){var n=this.__data__,r=jb(n,e);return r<0?n.push([e,t]):n[r][1]=t,this}$f.prototype.clear=_un;$f.prototype.delete=Sun;$f.prototype.get=Cun;$f.prototype.has=xun;$f.prototype.set=Tun;function Ef(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Oun(){this.__data__={hash:new Vc,map:new(vun||$f),string:new Vc}}function Nun(e){return qb(this,e).delete(e)}function Pun(e){return qb(this,e).get(e)}function Aun(e){return qb(this,e).has(e)}function Iun(e,t){return qb(this,e).set(e,t),this}Ef.prototype.clear=Oun;Ef.prototype.delete=Nun;Ef.prototype.get=Pun;Ef.prototype.has=Aun;Ef.prototype.set=Iun;function Bv(e){var t=-1,n=e?e.length:0;for(this.__data__=new Ef;++t<n;)this.add(e[t])}function Run(e){return this.__data__.set(e,oT),this}function kun(e){return this.__data__.has(e)}Bv.prototype.add=Bv.prototype.push=Run;Bv.prototype.has=kun;function jb(e,t){for(var n=e.length;n--;)if(Bun(e[n][0],t))return n;return-1}function Dun(e){if(!P8(e)||jun(e))return!1;var t=Vun(e)||fun(e)?mun:nun;return t.test(qun(e))}function Mun(e,t,n){var r=-1,s=oun,o=e.length,a=!0,i=[],l=i;if(o>=Xln){var f=Lun(e);if(f)return T8(f);a=!1,s=lun,l=new Bv}else l=i;e:for(;++r<o;){var d=e[r],p=d;if(d=d!==0?d:0,a&&p===p){for(var g=l.length;g--;)if(l[g]===p)continue e;i.push(d)}else s(l,p,n)||(l!==i&&l.push(p),i.push(d))}return i}var Lun=uE&&1/T8(new uE([,-0]))[1]==Zln?function(e){return new uE(e)}:Hun;function qb(e,t){var n=e.__data__;return Fun(t)?n[typeof t=="string"?"string":"hash"]:n.map}function cT(e,t){var n=uun(e,t);return Dun(n)?n:void 0}function Fun(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function jun(e){return!!dM&&dM in e}function qun(e){if(e!=null){try{return N8.call(e)}catch{}try{return e+""}catch{}}return""}function Uun(e){return e&&e.length?Mun(e):[]}function Bun(e,t){return e===t||e!==e&&t!==t}function Vun(e){var t=P8(e)?pun.call(e):"";return t==Qln||t==eun}function P8(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function Hun(){}var zun=Uun;const Gun=xn(zun),s_="SOURCEPRIOS_PPRIO_CHANGED",A8="SOURCEPRIOS_PRIO_DELETED",o_="SOURCEPRIOS_PRIO_MOVED",I8="SOURCEPRIOS_PATH_CHANGED",R8="SOURCEPRIOS_PATH_DELETED",k8="SOURCEPRIOS_SAVING",D8="SOURCEPRIOS_SAVED",M8="SOURCEPRIOS_SAVE_FAILED",L8="SOURCEPRIOS_SAVE_FAILED_OVER";function hM(e){return e.reduce((t,n,r)=>{const{timeout:s}=n;if(!t)return t;if(r===0)return!0;const o=Number(s);return Number.isNaN(o)||o<=0?!1:r===1?!0:o>Number(e[r-1].timeout)},!0)}const Wun=(e,t)=>{const n=JSON.parse(JSON.stringify(e.sourcePriorities));let r={...e.saveState};const{path:s,index:o,pathIndex:a,sourceRef:i,timeout:l,change:f}=t.data||{},d=a!==void 0?n[a].priorities:void 0;switch(t.type){case I8:o===n.length&&n.push({path:"",priorities:[]}),n[o].path=s,r.dirty=!0;break;case R8:r_(n,(g,m)=>m===o),r.dirty=!0;break;case s_:a===n.length&&n.push({path:"",priorities:[]}),o===d.length&&d.push({sourceRef:"",timeout:""}),d[o]={sourceRef:i,timeout:l},r.dirty=!0,r.timeoutsOk=hM(d);break;case A8:r_(d,(g,m)=>m===o),r.dirty=!0;break;case o_:const p=d[o];d[o]=d[o+f],d[o+f]=p,r.dirty=!0,r.timeoutsOk=hM(d);break;case k8:r={...r,isSaving:!0,saveFailed:!1};break;case D8:r={...r,dirty:!1,isSaving:!1,saveFailed:!1};break;case M8:r={...r,isSaving:!1,saveFailed:!0};break;case L8:r={...r,saveFailed:!1};break;default:return e}return{sourcePriorities:n,saveState:r}};function pM(e,t){fetch(`/signalk/v1/api/vessels/self/${e.replace(/\./g,"/")}`,{credentials:"include"}).then(n=>n.json()).then(n=>{let r=[n.$source];return n.values&&(r=r.concat(Object.keys(n.values))),Gun(r)}).then(t)}class Yun extends J.Component{constructor(t){super(t),this.state={isOpen:!1,sourceRefs:[]},pM(this.props.path,n=>{this.setState({sourceRefs:n})})}componentDidUpdate(t){this.props.path!==t.path&&pM(this.props.path,n=>{this.setState({sourceRefs:n})})}render(){const t=()=>this.setState(n=>({isOpen:!n.isOpen}));return c.createElement("div",null,!this.state.isOpen&&c.createElement("div",{onClick:t},"..."),c.createElement(uy,{isOpen:this.state.isOpen},c.createElement(Jr,null,c.createElement("thead",{onClick:t},c.createElement("tr",null,c.createElement("td",{style:{width:"30px"}},"#"),c.createElement("td",null,"Source Reference (see DataBrowser for details)"),c.createElement("td",{style:{width:"120px"}},"Timeout (ms)"),c.createElement("td",{style:{Width:"80px"}},"Order"),c.createElement("td",null))),c.createElement("tbody",null,[...this.props.priorities,{sourceRef:"",timeout:""}].map(({sourceRef:n,timeout:r},s)=>{const o=this.state.sourceRefs.map(a=>({label:a,value:a}));return c.createElement("tr",{key:s},c.createElement("td",null,s+1,"."),c.createElement("td",null,c.createElement(sT,{menuPortalTarget:document.body,options:o,value:{value:n,label:n},onChange:a=>{this.props.dispatch({type:s_,data:{pathIndex:this.props.pathIndex,sourceRef:a.value,timeout:r,index:s}})}})),c.createElement("td",null,s>0&&c.createElement(Ee,{type:"number",name:"timeout",onChange:a=>this.props.dispatch({type:s_,data:{pathIndex:this.props.pathIndex,sourceRef:n,timeout:a.target.value,index:s}}),value:r})),c.createElement("td",null,s>0&&s<this.props.priorities.length&&c.createElement("button",{onClick:()=>!this.props.isSaving&&this.props.dispatch({type:o_,data:{pathIndex:this.props.pathIndex,index:s,change:-1}})},c.createElement("i",{className:"fas fa-arrow-up"})),s<this.props.priorities.length-1&&c.createElement("button",{onClick:()=>!this.props.isSaving&&this.props.dispatch({type:o_,data:{pathIndex:this.props.pathIndex,index:s,change:1}})},c.createElement("i",{className:"fas fa-arrow-down"}))),c.createElement("td",null,s<this.props.priorities.length&&c.createElement("i",{className:"fas fa-trash",onClick:()=>!this.props.isSaving&&this.props.dispatch({type:A8,data:{pathIndex:this.props.pathIndex,index:s}})})))})))))}}const Kun=e=>t=>{t({type:k8}),fetch(`${window.serverRoutesPrefix}/sourcePriorities`,{method:"PUT",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(e.reduce((n,r)=>(n[r.path]=r.priorities,n),{}))}).then(n=>{if(n.status===200)t({type:D8});else throw new Error}).catch(()=>{t({type:M8}),setTimeout(()=>t({type:L8}),5*1e3)})};function Jun(e){fetch(`${window.serverRoutesPrefix}/availablePaths`,{credentials:"include"}).then(t=>t.json()).then(e)}class Xun extends J.Component{constructor(t){super(t),this.state={availablePaths:[]},Jun(n=>{this.setState({availablePaths:n.map(r=>({value:r,label:r}))})})}render(){const t=[].concat(this.props.sourcePriorities);return t.push({path:"",priorities:[]}),c.createElement(ft,null,c.createElement(xt,null,"Source Priorities Settings"),c.createElement(pt,null,c.createElement(Rc,null,c.createElement("p",null,"Use Source Priorities to filter incoming data so that data from lower priority sources is discarded when there is fresh data from some higher priority source."),c.createElement("p",null,"Incoming data is not handled if the"," ",c.createElement("b",null,"latest value for a path is from a higher priority source and it is not older than the timeout")," ","specified for the source of the incoming data. Timeout for data from unlisted sources is 10 seconds."),c.createElement("p",null,"You can debug the settings by saving them and activating debug key"," ",c.createElement("b",null,"signalk-server:sourcepriorities")," in"," ",c.createElement("a",{href:"./#/serverConfiguration/log"},"Server Log"))),c.createElement(Jr,{responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",{style:{width:"40%"}},"Path"),c.createElement("th",null,"Priorities"),c.createElement("th",null))),c.createElement("tbody",null,t.map(({path:n,priorities:r},s)=>c.createElement("tr",{key:s},c.createElement("td",null,c.createElement(sT,{menuPortalTarget:document.body,options:this.state.availablePaths,value:{value:n,label:n},onChange:o=>{this.props.dispatch({type:I8,data:{path:o.value,index:s}})}})),c.createElement("td",null,c.createElement(Yun,{key:n,path:n,priorities:r,dispatch:this.props.dispatch,isSaving:this.props.saveState.isSaving,pathIndex:s})),c.createElement("td",{style:{border:"none"}},s<this.props.sourcePriorities.length&&c.createElement("i",{className:"fas fa-trash",onClick:()=>this.props.dispatch({type:R8,data:{index:s}})}))))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",disabled:!this.props.saveState.dirty||this.props.saveState.isSaving||!this.props.saveState.timeoutsOk,onClick:n=>{n.preventDefault(),this.props.dispatch(Kun(this.props.sourcePriorities))}},c.createElement("i",{className:"fa fa-save"})," Save"),this.props.saveState.saveFailed&&"Saving priorities settings failed!",!this.props.saveState.timeoutsOk&&c.createElement("span",{style:{paddingLeft:"10px"}},c.createElement(Sr,{color:"danger"},"Error"),"The timeout values need to be numbers in ascending order, please fix.")))}}const Zun=({sourcePrioritiesData:e})=>({sourcePriorities:e.sourcePriorities,saveState:e.saveState}),Qun=tn(Zun)(Xun);var efn="Expected a function",F8="__lodash_hash_undefined__",tfn=9007199254740991,nfn="[object Function]",rfn="[object GeneratorFunction]",sfn="[object Symbol]",ofn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,afn=/^\w*$/,ifn=/^\./,cfn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,lfn=/[\\^$.*+?()[\]{}|]/g,ufn=/\\(\\)?/g,ffn=/^\[object .+?Constructor\]$/,dfn=/^(?:0|[1-9]\d*)$/,hfn=typeof Cn=="object"&&Cn&&Cn.Object===Object&&Cn,pfn=typeof self=="object"&&self&&self.Object===Object&&self,lT=hfn||pfn||Function("return this")();function mfn(e,t){return e?.[t]}function gfn(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}var vfn=Array.prototype,yfn=Function.prototype,j8=Object.prototype,fE=lT["__core-js_shared__"],mM=(function(){var e=/[^.]+$/.exec(fE&&fE.keys&&fE.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})(),q8=yfn.toString,Ub=j8.hasOwnProperty,U8=j8.toString,bfn=RegExp("^"+q8.call(Ub).replace(lfn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),gM=lT.Symbol,$fn=vfn.splice,Efn=B8(lT,"Map"),yh=B8(Object,"create"),vM=gM?gM.prototype:void 0,yM=vM?vM.toString:void 0;function Hc(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function wfn(){this.__data__=yh?yh(null):{}}function _fn(e){return this.has(e)&&delete this.__data__[e]}function Sfn(e){var t=this.__data__;if(yh){var n=t[e];return n===F8?void 0:n}return Ub.call(t,e)?t[e]:void 0}function Cfn(e){var t=this.__data__;return yh?t[e]!==void 0:Ub.call(t,e)}function xfn(e,t){var n=this.__data__;return n[e]=yh&&t===void 0?F8:t,this}Hc.prototype.clear=wfn;Hc.prototype.delete=_fn;Hc.prototype.get=Sfn;Hc.prototype.has=Cfn;Hc.prototype.set=xfn;function wf(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Tfn(){this.__data__=[]}function Ofn(e){var t=this.__data__,n=Bb(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():$fn.call(t,n,1),!0}function Nfn(e){var t=this.__data__,n=Bb(t,e);return n<0?void 0:t[n][1]}function Pfn(e){return Bb(this.__data__,e)>-1}function Afn(e,t){var n=this.__data__,r=Bb(n,e);return r<0?n.push([e,t]):n[r][1]=t,this}wf.prototype.clear=Tfn;wf.prototype.delete=Ofn;wf.prototype.get=Nfn;wf.prototype.has=Pfn;wf.prototype.set=Afn;function ll(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Ifn(){this.__data__={hash:new Hc,map:new(Efn||wf),string:new Hc}}function Rfn(e){return Vb(this,e).delete(e)}function kfn(e){return Vb(this,e).get(e)}function Dfn(e){return Vb(this,e).has(e)}function Mfn(e,t){return Vb(this,e).set(e,t),this}ll.prototype.clear=Ifn;ll.prototype.delete=Rfn;ll.prototype.get=kfn;ll.prototype.has=Dfn;ll.prototype.set=Mfn;function Lfn(e,t,n){var r=e[t];(!(Ub.call(e,t)&&V8(r,n))||n===void 0&&!(t in e))&&(e[t]=n)}function Bb(e,t){for(var n=e.length;n--;)if(V8(e[n][0],t))return n;return-1}function Ffn(e){if(!Vv(e)||zfn(e))return!1;var t=Kfn(e)||gfn(e)?bfn:ffn;return t.test(Yfn(e))}function jfn(e,t,n,r){if(!Vv(e))return e;t=Vfn(t,e)?[t]:Ufn(t);for(var s=-1,o=t.length,a=o-1,i=e;i!=null&&++s<o;){var l=Wfn(t[s]),f=n;if(s!=a){var d=i[l];f=void 0,f===void 0&&(f=Vv(d)?d:Bfn(t[s+1])?[]:{})}Lfn(i,l,f),i=i[l]}return e}function qfn(e){if(typeof e=="string")return e;if(fT(e))return yM?yM.call(e):"";var t=e+"";return t=="0"&&1/e==-1/0?"-0":t}function Ufn(e){return H8(e)?e:Gfn(e)}function Vb(e,t){var n=e.__data__;return Hfn(t)?n[typeof t=="string"?"string":"hash"]:n.map}function B8(e,t){var n=mfn(e,t);return Ffn(n)?n:void 0}function Bfn(e,t){return t=t??tfn,!!t&&(typeof e=="number"||dfn.test(e))&&e>-1&&e%1==0&&e<t}function Vfn(e,t){if(H8(e))return!1;var n=typeof e;return n=="number"||n=="symbol"||n=="boolean"||e==null||fT(e)?!0:afn.test(e)||!ofn.test(e)||t!=null&&e in Object(t)}function Hfn(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function zfn(e){return!!mM&&mM in e}var Gfn=uT(function(e){e=Xfn(e);var t=[];return ifn.test(e)&&t.push(""),e.replace(cfn,function(n,r,s,o){t.push(s?o.replace(ufn,"$1"):r||n)}),t});function Wfn(e){if(typeof e=="string"||fT(e))return e;var t=e+"";return t=="0"&&1/e==-1/0?"-0":t}function Yfn(e){if(e!=null){try{return q8.call(e)}catch{}try{return e+""}catch{}}return""}function uT(e,t){if(typeof e!="function"||t&&typeof t!="function")throw new TypeError(efn);var n=function(){var r=arguments,s=t?t.apply(this,r):r[0],o=n.cache;if(o.has(s))return o.get(s);var a=e.apply(this,r);return n.cache=o.set(s,a),a};return n.cache=new(uT.Cache||ll),n}uT.Cache=ll;function V8(e,t){return e===t||e!==e&&t!==t}var H8=Array.isArray;function Kfn(e){var t=Vv(e)?U8.call(e):"";return t==nfn||t==rfn}function Vv(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function Jfn(e){return!!e&&typeof e=="object"}function fT(e){return typeof e=="symbol"||Jfn(e)&&U8.call(e)==sfn}function Xfn(e){return e==null?"":qfn(e)}function Zfn(e,t,n){return e==null?e:jfn(e,t,n)}var Qfn=Zfn;const edn=xn(Qfn);function tdn(){fetch(`${window.serverRoutesPrefix}/providers`,{credentials:"include"}).then(e=>e.json()).then(e=>{let t,n;this.state.selectedProviderId&&(t=e.find(r=>r.id===this.state.selectedProviderId),n=e.findIndex(r=>r.id===this.state.selectedProviderId)),t&&(t.originalId=t.id),this.setState({providers:e,selectedProvider:t?JSON.parse(JSON.stringify(t)):void 0,selectedIndex:n})})}function ndn(){fetch(`${window.serverRoutesPrefix}/runDiscovery`,{method:"PUT",credentials:"include"})}class rdn extends J.Component{constructor(t){super(t),this.state={activeTab:"1",providers:[],selectedProviderId:this.props.match.params.providerId},this.fetchProviders=tdn.bind(this),this.runDiscovery=ndn.bind(this),this.handleProviderChange=this.handleProviderChange.bind(this),this.handleProviderPropChange=this.handleProviderChange.bind(this),this.handleAddProvider=this.handleAddProvider.bind(this),this.handleCancel=this.handleCancel.bind(this),this.toggle=this.toggle.bind(this),this.handleApply=this.handleApply.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleDelete=this.handleDelete.bind(this)}componentDidMount(){this.fetchProviders(),this.runDiscovery()}handleProviderChange(t,n){var r=t.target.type==="checkbox"?t.target.checked:t.target.value;n==="number"&&(r=Number(r)),edn(this.state.selectedProvider,t.target.name,r),this.setState({selectedProvider:this.state.selectedProvider})}handleProviderPropChange(){this.setState({selectedProvider:this.state.selectedProvider})}handleAddProvider(){var t={type:"NMEA2000",logging:!1,isNew:!0,id:"",enabled:!0,options:{},editable:!0};this.setState({selectedProvider:JSON.parse(JSON.stringify(t)),selectedIndex:this.state.providers.length-1},()=>{this.refs.selectedProvider.scrollIntoView()})}handleApply(){var t=this.state.selectedProvider.isNew,n=this.state.selectedProvider.wasDiscovered;delete this.state.selectedProvider.json;var r=this.state.selectedProvider.originalId;fetch(`${window.serverRoutesPrefix}/providers/${r&&!t?r:""}`,{method:t?"POST":"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.state.selectedProvider),credentials:"include"}).then(s=>{if(s.ok){var o=JSON.parse(JSON.stringify(this.state.selectedProvider));delete o.isNew,delete o.wasDiscovered,delete this.state.selectedProvider.isNew,t?this.state.providers.push(o):this.state.providers[this.state.selectedIndex]=o,n&&this.props.discoveredProviders.splice(this.state.selectedIndex,1),this.setState({providers:this.state.providers,selectedProvider:null,selectedIndex:-1},()=>{this.props.history.push("/serverConfiguration/connections/-")})}return s.text()}).then(s=>{alert(s)})}handleCancel(){this.setState({selectedProvider:null})}handleDelete(){fetch(`${window.serverRoutesPrefix}/providers/${this.state.selectedProvider.id}`,{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include"}).then(t=>t.text()).then(t=>{this.state.providers.splice(this.state.selectedIndex,1),this.setState({providers:this.state.providers,selectedProvider:null,selectedIndex:-1}),alert(t)})}providerClicked(t,n){this.setState({selectedProvider:{...JSON.parse(JSON.stringify(t)),originalId:t.id},selectedIndex:n},()=>{this.refs.selectedProvider.scrollIntoView()})}toggle(t){this.state.activeTab!==t&&this.setState({activeTab:t})}render(){return c.createElement("div",{className:"animated fadeIn"},this.props.discoveredProviders&&this.props.discoveredProviders.length>0&&c.createElement(ft,null,c.createElement(xt,null,"Discovered Connections"),c.createElement(pt,null,c.createElement(Jr,{hover:!0,responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",null,"ID"),c.createElement("th",null,"Data Type"),c.createElement("th",null,"Enabled"),c.createElement("th",null,"Data Logging"))),c.createElement("tbody",null,(this.props.discoveredProviders||[]).map((t,n)=>c.createElement("tr",{onClick:this.providerClicked.bind(this,t,n),key:t.id},c.createElement("td",null,t.id),c.createElement("td",null,c.createElement(bM,{provider:t})),c.createElement("td",null,c.createElement(ug,{applicable:t.editable,toggle:t.enabled})),c.createElement("td",null,c.createElement(ug,{applicable:t.editable,toggle:t.logging})))))))),c.createElement(ft,null,c.createElement(xt,null,"Connections"),c.createElement(pt,null,c.createElement(Jr,{hover:!0,responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",null,"ID"),c.createElement("th",null,"Data Type"),c.createElement("th",null,"Enabled"),c.createElement("th",null,"Data Logging"))),c.createElement("tbody",null,(this.state.providers||[]).map((t,n)=>c.createElement("tr",{onClick:this.providerClicked.bind(this,t,n),key:t.id},c.createElement("td",null,t.id),c.createElement("td",null,c.createElement(bM,{provider:t})),c.createElement("td",null,c.createElement(ug,{applicable:t.editable,toggle:t.enabled})),c.createElement("td",null,c.createElement(ug,{applicable:t.editable,toggle:t.logging}))))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",onClick:this.handleAddProvider},c.createElement("i",{className:"fa fa-plus-circle"})," Add"))),this.state.selectedProvider&&c.createElement("div",{ref:"selectedProvider",style:{scrollMarginTop:"54px"}},c.createElement(ft,null,c.createElement(pt,null,this.state.selectedProvider.editable?c.createElement($ln,{value:this.state.selectedProvider,onChange:this.handleProviderChange,onPropChange:this.handleProviderPropChange}):c.createElement(Ee,{type:"textarea",name:"json",id:"json",rows:"20",value:this.state.selectedProvider.json,readOnly:"true"})),c.createElement(tr,null,this.state.selectedProvider.editable?c.createElement(cn,null,c.createElement(Y,{xs:"4",md:"1"},c.createElement(it,{size:"sm",color:"primary",onClick:this.handleApply},c.createElement("i",{className:"fa fa-dot-circle-o"})," Apply")),c.createElement(Y,{xs:"4",md:"1"},c.createElement(it,{size:"sm",color:"secondary",onClick:this.handleCancel},c.createElement("i",{className:"fa fa-ban"})," Cancel")),c.createElement(Y,{xs:"4",md:"10",className:"text-right"},c.createElement(it,{size:"sm",color:"danger",onClick:this.handleDelete},c.createElement("i",{className:"fa fa-ban"})," Delete"))):c.createElement(cn,null,c.createElement(Y,{xs:"4",md:"12",className:"text-right"},c.createElement(it,{size:"sm",color:"danger",onClick:this.handleDelete},c.createElement("i",{className:"fa fa-ban"})," Delete")))))),c.createElement(Qun,null))}}const ug=e=>c.createElement("div",null,e.applicable?e.toggle?"Yes":"No":"N/A"),bM=e=>c.createElement("div",null,e.provider.type,e.provider.type==="FileStream"?`/${e.provider.options.dataType}`:""),sdn=({discoveredProviders:e})=>({discoveredProviders:e}),odn=tn(sdn)(rdn);function adn(){fetch(`${window.serverRoutesPrefix}/vessel`,{credentials:"include"}).then(e=>e.json()).then(e=>{this.setState({...e,hasData:!0})})}class idn extends J.Component{constructor(t){super(t),this.state={hasData:!1},this.fetchVessel=adn.bind(this),this.handleChange=this.handleChange.bind(this),this.handleSaveVessel=this.handleSaveVessel.bind(this)}componentDidMount(){this.fetchVessel()}handleChange(t){console.log(t);const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.setState({[t.target.name]:n})}handleSaveVessel(){fetch(`${window.serverRoutesPrefix}/vessel`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.state),credentials:"include"}).then(t=>t.text()).then(t=>{alert(t)})}render(){return this.state.hasData&&c.createElement("div",{className:"animated fadeIn"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),c.createElement("strong",null,"Vessel Base Data")),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal"},c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"name"},"Name")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"name",onChange:this.handleChange,value:this.state.name}),c.createElement(st,{color:"muted"},"The name of the vessel"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"mmsi"},"MMSI")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"mmsi",onChange:this.handleChange,value:this.state.mmsi}),c.createElement(st,{color:"muted"},"Leave blank if there is no mmsi"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"callsignVhf"},"Call Sign")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"callsignVhf",onChange:this.handleChange,value:this.state.callsignVhf}),c.createElement(st,{color:"muted"},"Leave blank if there is no call sign"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"uuid"},"UUID")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"uuid",onChange:this.handleChange,value:this.state.uuid}),c.createElement(st,{color:"muted"},"Ignored if MMSI is set"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"aisShipType"},"Ship Type")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"select",name:"aisShipType",value:this.state.aisShipType,onChange:this.handleChange},c.createElement("option",{value:"20"},"Wing In Ground"),c.createElement("option",{value:"29"},"Wing In Ground (no other information)"),c.createElement("option",{value:"30"},"Fishing"),c.createElement("option",{value:"31"},"Towing"),c.createElement("option",{value:"32"},"Towing exceeds 200m or wider than 25m"),c.createElement("option",{value:"33"},"Engaged in dredging or underwater operations"),c.createElement("option",{value:"34"},"Engaged in diving operations"),c.createElement("option",{value:"35"},"Engaged in military operations"),c.createElement("option",{value:"36"},"Sailing"),c.createElement("option",{value:"37"},"Pleasure"),c.createElement("option",{value:"40"},"High speed craft"),c.createElement("option",{value:"41"},"High speed craft carrying dangerous goods"),c.createElement("option",{value:"42"},"High speed craft hazard cat B"),c.createElement("option",{value:"43"},"High speed craft hazard cat C"),c.createElement("option",{value:"44"},"High speed craft hazard cat D"),c.createElement("option",{value:"49"},"High speed craft (no additional information)"),c.createElement("option",{value:"50"},"Pilot vessel"),c.createElement("option",{value:"51"},"SAR"),c.createElement("option",{value:"52"},"Tug"),c.createElement("option",{value:"53"},"Port tender"),c.createElement("option",{value:"54"},"Anti-pollution"),c.createElement("option",{value:"55"},"Law enforcement"),c.createElement("option",{value:"56"},"Spare"),c.createElement("option",{value:"57"},"Spare #2"),c.createElement("option",{value:"58"},"Medical"),c.createElement("option",{value:"59"},"RR Resolution No.1"),c.createElement("option",{value:"60"},"Passenger ship"),c.createElement("option",{value:"69"},"Passenger ship (no additional information)"),c.createElement("option",{value:"70"},"Cargo ship"),c.createElement("option",{value:"71"},"Cargo ship carrying dangerous goods"),c.createElement("option",{value:"72"},"Cargo ship hazard cat B"),c.createElement("option",{value:"73"},"Cargo ship hazard cat C"),c.createElement("option",{value:"74"},"Cargo ship hazard cat D"),c.createElement("option",{value:"79"},"Cargo ship (no additional information)"),c.createElement("option",{value:"80"},"Tanker"),c.createElement("option",{value:"81"},"Tanker carrying dangerous goods"),c.createElement("option",{value:"82"},"Tanker hazard cat B"),c.createElement("option",{value:"83"},"Tanker hazard cat C"),c.createElement("option",{value:"84"},"Tanker hazard cat D"),c.createElement("option",{value:"89"},"Tanker (no additional information)"),c.createElement("option",{value:"90"},"Other"),c.createElement("option",{value:"91"},"Other carrying dangerous goods"),c.createElement("option",{value:"92"},"Other hazard cat B"),c.createElement("option",{value:"93"},"Other hazard cat C"),c.createElement("option",{value:"94"},"Other hazard cat D"),c.createElement("option",{value:"99"},"Other (no additional information)")))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"draft"},"Draft")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"draft",onChange:this.handleChange,value:this.state.draft}),c.createElement(st,{color:"muted"},"The maximum draft in meters of the vessel"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"length"},"Length")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"length",onChange:this.handleChange,value:this.state.length}),c.createElement(st,{color:"muted"},"The overall length of the vessel in meters"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"beam"},"Beam")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"beam",onChange:this.handleChange,value:this.state.beam}),c.createElement(st,{color:"muted"},"The beam of the vessel in meters"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"height"},"Height")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"height",onChange:this.handleChange,value:this.state.height}),c.createElement(st,{color:"muted"},"The total height of the vessel in meters"," "))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"gpsFromBow"},"GPS Distance From Bow")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"gpsFromBow",onChange:this.handleChange,value:this.state.gpsFromBow}),c.createElement(st,{color:"muted"},"The distance of the gps receiver from the bow in meters"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"gpsFromCenter"},"GPS Distance From Center")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"gpsFromCenter",onChange:this.handleChange,value:this.state.gpsFromCenter}),c.createElement(st,{color:"muted"},"The distance from the center of vessel of the gps receiver in meters"))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",onClick:this.handleSaveVessel},c.createElement("i",{className:"fa fa-dot-circle-o"})," Save"))))}}const cdn=tn()(idn);function ldn(){const e=fetch(`${window.serverRoutesPrefix}/logfiles/`,{credentials:"include"}).then(t=>t.ok?t:(this.setState({authorized:!1}),!1));e&&e.then(t=>t.json()).then(t=>{t.sort(),this.setState({logfileslist:t,hasData:!0,authorized:!0})})}let udn=class extends J.Component{constructor(t){super(t),this.state={hasData:!1,authorized:!0},this.fetchLogfileList=ldn.bind(this)}componentDidMount(){this.fetchLogfileList()}render(){return this.state.authorized?this.state.hasData&&c.createElement("div",{className:"animated fadeIn"},c.createElement(cn,null,c.createElement(Y,{sm:"12",xl:"12"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),c.createElement("strong",null,"Data Logfiles")),c.createElement(pt,null,c.createElement(Ph,null,this.logfilesToRows(this.state.logfileslist))),c.createElement(tr,null,c.createElement("small",{className:"text-muted"},"Click button to download each logfile or"),c.createElement("a",{href:`${window.serverRoutesPrefix}/ziplogs`},c.createElement(it,{className:"m-2"},"Get all logs in one ZIP file"))))))):c.createElement("div",{className:"animated fadeIn"},"Not Authorized")}logfilesToRows(t){const n=t.reduce((r,s)=>{const o=s.substr(13,10),a=s.substr(24,2);return r[o]||(r[o]=[]),r[o].push(a),r},{});return Object.keys(n).map((r,s)=>c.createElement(Ah,{key:s},r,n[r].map((o,a)=>c.createElement("span",{key:a},c.createElement("a",{href:`${window.serverRoutesPrefix}/logfiles/skserver-raw_${r}T${o}.log`},c.createElement(it,{className:"m-2"},o))))))}};const z8=tn()(udn);function fdn(){fetch(`${window.serverRoutesPrefix}/settings`,{credentials:"include"}).then(e=>e.json()).then(e=>{this.setState({...e,hasData:!0})})}class ddn extends J.Component{constructor(t){super(t),this.state={hasData:!1},this.fetchSettings=fdn.bind(this),this.handleChange=this.handleChange.bind(this),this.handleCourseApiChange=this.handleCourseApiChange.bind(this),this.handleOptionChange=this.handleOptionChange.bind(this),this.handleInterfaceChange=this.handleInterfaceChange.bind(this),this.handleSaveSettings=this.handleSaveSettings.bind(this)}componentDidMount(){this.fetchSettings()}handleChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.setState({[t.target.name]:n})}handleCourseApiChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.courseApi[t.target.name]=n,this.setState({courseApi:this.state.courseApi})}handleOptionChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.options[t.target.name]=n,this.setState({options:this.state.options})}handleInterfaceChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.interfaces[t.target.name]=n,this.setState({interfaces:this.state.interfaces})}handleSaveSettings(){fetch(`${window.serverRoutesPrefix}/settings`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.state),credentials:"include"}).then(t=>t.text()).then(t=>{alert(t)})}render(){return this.state.hasData&&c.createElement("div",{className:"animated fadeIn"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),c.createElement("strong",null,"Server Settings")),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal"},!this.state.runFromSystemd&&c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"port"},"HTTP Port")),c.createElement(Y,{xs:"12",md:10},c.createElement(Ee,{size:"5",style:{width:"auto"},type:"text",name:"port",onChange:this.handleChange,value:this.state.port}),c.createElement(st,{color:"muted"},"Saving a new value here will not have effect if overridden by environment variable PORT"))),this.state.runFromSystemd&&c.createElement(xe,{row:!0},c.createElement(Y,{xs:"12",md:10},c.createElement(st,null,"The server was started by systemd, run signalk-server-setup to change ports and ssl configuration."))),this.state.options.ssl&&!this.state.runFromSystemd&&c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"sslport"},"SSL Port")),c.createElement(Y,{xs:"12",md:10},c.createElement(Ee,{size:"5",style:{width:"auto"},type:"text",name:"sslport",onChange:this.handleChange,value:this.state.sslport}),c.createElement(st,{color:"muted"},"Saving a new value here will not have effect if overridden by environment variable SSLPORT"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,null,"Options")),c.createElement(Y,{md:10},c.createElement(xe,{check:!0},Object.keys(this.state.options).map(n=>c.createElement("div",{key:n},c.createElement(ve,{style:{marginRight:"15px"},className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:n,name:n,className:"switch-input",onChange:this.handleOptionChange,checked:this.state.options[n]}),c.createElement("span",{className:"switch-label","data-on":"On","data-off":"Off"}),c.createElement("span",{className:"switch-handle"})),c.createElement("span",{style:{lineHeight:"23px"}},n)))))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,null,"Interfaces")),c.createElement(Y,{md:10},c.createElement(xe,{check:!0},Object.keys($M).map(n=>c.createElement("div",{key:n},c.createElement(ve,{style:{marginRight:"15px"},className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:n,name:n,className:"switch-input",onChange:this.handleInterfaceChange,checked:this.state.interfaces[n]}),c.createElement("span",{className:"switch-label","data-on":"On","data-off":"Off"}),c.createElement("span",{className:"switch-handle"})),c.createElement("span",{style:{lineHeight:"24px"}},$M[n])))))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"pruneContextsMinutes"},"Maximum age of inactive vessels' data")),c.createElement(Y,{xs:"12",md:10},c.createElement(Ee,{type:"text",name:"pruneContextsMinutes",onChange:this.handleChange,value:this.state.pruneContextsMinutes}),c.createElement(st,{color:"muted"},"Vessels that have not been updated after this many minutes will be removed"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"loggingDirectory"},"Data Logging Directory")),c.createElement(Y,{xs:"12",md:10},c.createElement(Ee,{type:"text",name:"loggingDirectory",onChange:this.handleChange,value:this.state.loggingDirectory}),c.createElement(st,{color:"muted"},"Connections that have logging enabled create hourly log files in Multiplexed format in this directory"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,null,"Keep only most recent data log files")),c.createElement(Y,null,c.createElement(xe,{check:!0},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"keepMostRecentLogsOnly",id:"keepMostRecentLogsOnly",className:"switch-input",onChange:this.handleChange,checked:this.state.keepMostRecentLogsOnly}),c.createElement("span",{className:"switch-label","data-on":"On","data-off":"Off"}),c.createElement("span",{className:"switch-handle"})))),c.createElement(Y,null,c.createElement(Ee,{type:"text",name:"logCountToKeep",onChange:this.handleChange,value:this.state.logCountToKeep}),c.createElement(st,{color:"muted"},"How many hourly files to keep"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,null,"API Only Mode",c.createElement("br",null),c.createElement("i",null,"(Course API)"))),c.createElement(Y,null,c.createElement(xe,{check:!0},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"apiOnly",id:"apiOnly",className:"switch-input",onChange:this.handleCourseApiChange,checked:this.state.courseApi.apiOnly}),c.createElement("span",{className:"switch-label","data-on":"On","data-off":"Off"}),c.createElement("span",{className:"switch-handle"})),c.createElement(st,{color:"muted"},"Accept course operations only via HTTP requests. Destination data from NMEA sources is not used.")))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",onClick:this.handleSaveSettings},c.createElement("i",{className:"fa fa-dot-circle-o"})," Save")," ",c.createElement(Sr,{color:"danger",className:"float-right"},"Restart Required"))))}}const $M={applicationData:"Application Data Storage",logfiles:"Data log files access","nmea-tcp":"NMEA 0183 over TCP (10110)",tcp:"Signal K over TCP (8375)",wasm:"WebAssembly Runtime"},hdn=tn()(ddn);class pdn extends J.Component{render(){return c.createElement("div",null,c.createElement(cdn,null),c.createElement(hdn,null),c.createElement(z8,null))}}const wi=0,mdn=1,dE=2,gdn=3;class vdn extends J.Component{constructor(t){super(t),this.state={restoreFile:null,restoreState:wi,includePlugins:!1},this.fileChanged=this.fileChanged.bind(this),this.handleRestoreFileChange=this.handleRestoreFileChange.bind(this),this.includePluginsChange=this.includePluginsChange.bind(this),this.backup=this.backup.bind(this),this.validate=this.validate.bind(this),this.restore=this.restore.bind(this),this.restart=this.restart.bind(this),this.cancelRestore=this.cancelRestore.bind(this)}cancelRestore(){this.setState({restoreState:wi})}fileChanged(t){this.setState({...this.state,restoreFile:t.target.files[0]})}backup(){const t=`${window.serverRoutesPrefix}/backup?includePlugins=${this.state.includePlugins}`;window.location=t}restore(){fetch(`${window.serverRoutesPrefix}/restore`,{credentials:"include",method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.state.restoreContents)}).then(t=>{if(!t.ok)return t.text()}).then(t=>{typeof t=="string"?(alert(t),this.setState({restoreState:wi,restoreFile:null})):this.setState({restoreState:gdn})}).catch(t=>{alert(t.message)})}restart(){this.props.restart(),this.setState({restoreState:wi}),window.location="/admin/#/dashboard"}validate(){if(!this.state.restoreFile){alert("Please choose a file");return}const t=new FormData;t.append("file",this.state.restoreFile),this.setState({restoreState:mdn}),fetch(`${window.serverRoutesPrefix}/validateBackup`,{credentials:"include",method:"POST",headers:{Accept:"application/json"},body:t}).then(n=>n.ok?n.json():n.text()).then(n=>{if(typeof n=="string")alert(n),this.setState({restoreState:wi,restoreFile:null});else{const r={};n.forEach(s=>{r[s]=!0}),this.setState({restoreState:dE,restoreContents:r})}}).catch(n=>{alert(n.message)})}handleRestoreFileChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.restoreContents[t.target.name]=n,this.setState({restoreContents:this.state.restoreContents})}includePluginsChange(t){this.state.includePlugins=t.target.checked,this.setState({includePlugins:this.state.includePlugins})}render(){return c.createElement("div",null,this.state.restoreState===wi&&!this.props.restoreStatus.state&&c.createElement(ft,null,c.createElement(xt,null,"Backup Settings"),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal"},c.createElement(st,{color:"muted"},"This will backup your server and plugin settings."),c.createElement("br",null),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"2"},c.createElement(ve,null,"Include Plugins")),c.createElement(Y,{xs:"2",md:10},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"enabled",className:"switch-input",onChange:n=>this.includePluginsChange(n),checked:this.state.includePlugins}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})),c.createElement(st,{color:"muted"},"Selecting Yes will increase the size of the backup, but will allow for offline restore."))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",onClick:this.backup},c.createElement("i",{className:"fa fa-dot-circle-o"})," Backup")," ")),c.createElement(ft,null,c.createElement(xt,null,"Restore Settings"),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal"},this.state.restoreState===wi&&!this.props.restoreStatus.state&&c.createElement("div",null,c.createElement(st,{color:"muted"},"Please select the backup file from your device to use in restoring the settings. Your existing settings will be overwritten."),c.createElement("br",null),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"12",md:10},c.createElement(Ee,{type:"file",name:"backupFile",onChange:this.fileChanged})))),this.state.restoreState===dE&&c.createElement(xe,{check:!0},c.createElement(Y,{xs:"12",md:10},Object.keys(this.state.restoreContents).map(n=>c.createElement("div",{key:n},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:n,name:n,className:"switch-input",onChange:this.handleRestoreFileChange,checked:this.state.restoreContents[n]}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))," ",n)))),this.props.restoreStatus&&this.props.restoreStatus.state&&this.props.restoreStatus.state!=="Complete"&&c.createElement("div",null,c.createElement(xe,{row:!0},c.createElement(Y,{xs:"12",md:10},c.createElement(st,null,this.props.restoreStatus.state," :"," ",this.props.restoreStatus.message))),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"12",md:10},c.createElement(Nh,{animated:!0,color:"success",value:this.props.restoreStatus.percentComplete})))),this.props.restoreStatus.state&&this.props.restoreStatus.state==="Complete"&&c.createElement("div",null,c.createElement(xe,{row:!0},c.createElement(Y,{xs:"12",md:10},c.createElement(st,null,"Please Restart"))),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"12",md:10},c.createElement(it,{size:"sm",color:"danger",onClick:this.restart},this.props.restarting?c.createElement("i",{className:"fa fa-circle-o-notch fa-spin"}):c.createElement("i",{className:"fa fa-circle-o-notch"})," ","Restart")))))),c.createElement(tr,null,this.state.restoreState===wi&&!this.props.restoreStatus.state&&c.createElement("div",null,c.createElement(it,{size:"sm",color:"danger",onClick:this.validate,disabled:this.state.restoreFile===null},c.createElement("i",{className:"fa fa-dot-circle-o"})," Restore")," "),this.state.restoreState===dE&&c.createElement("div",null,c.createElement(it,{size:"sm",color:"primary",onClick:this.cancelRestore},c.createElement("i",{className:"fa fa-dot-circle-o"})," Cancel")," ",c.createElement(it,{size:"sm",color:"danger",onClick:this.restore},c.createElement("i",{className:"fa fa-dot-circle-o"})," Confirm")))))}}const ydn=tn(({restoreStatus:e,restarting:t})=>({restoreStatus:e,restarting:t}),{restart:H3})(vdn);class bdn extends J.Component{constructor(t){super(t),this.state={hasData:!0,webSocket:null,didSubScribe:!1,pause:!1,debugKeys:[]},this.handleDebug=this.handleDebug.bind(this),this.handlePause=this.handlePause.bind(this),this.fetchDebugKeys=this.fetchDebugKeys.bind(this)}subscribeToLogsIfNeeded(){if(!this.state.pause&&this.props.webSocket&&(this.props.webSocket!==this.state.webSocket||this.state.didSubScribe===!1)){const t={context:"vessels.self",subscribe:[{path:"log"}]};this.props.webSocket.send(JSON.stringify(t)),this.state.webSocket=this.props.webSocket,this.state.didSubScribe=!0}}unsubscribeToLogs(){if(this.props.webSocket){const t={context:"vessels.self",unsubscribe:[{path:"log"}]};this.props.webSocket.send(JSON.stringify(t)),this.state.didSubScribe=!1}}fetchDebugKeys(){fetch(`${window.serverRoutesPrefix}/debugKeys`,{credentials:"include"}).then(t=>t.json()).then(t=>{this.setState({debugKeys:t.sort()})})}componentDidMount(){this.subscribeToLogsIfNeeded(),this.fetchDebugKeys()}componentDidUpdate(){this.subscribeToLogsIfNeeded()}componentWillUnmount(){this.unsubscribeToLogs()}handleDebug(t){this.doHandleDebug(t.target.value)}handleDebugCheckbox(t,n){const r=this.props.log.debugEnabled.length>0?this.props.log.debugEnabled.split(","):[];n?r.push(t):r_(r,s=>s===t),this.doHandleDebug(r.toString())}doHandleDebug(t){fetch(`${window.serverRoutesPrefix}/debug`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:t}),credentials:"include"}).then(n=>n.text())}handleRememberDebug(t){fetch(`${window.serverRoutesPrefix}/rememberDebug`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:t.target.checked}),credentials:"include"}).then(n=>n.text())}handlePause(t){this.state.pause=t.target.checked,this.setState(this.state),this.state.pause?this.unsubscribeToLogs():this.subscribeToLogsIfNeeded()}render(){return this.state.hasData&&c.createElement("div",{className:"animated fadeIn"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),c.createElement("strong",null,"Server Log")),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal",onSubmit:t=>{t.preventDefault()}},c.createElement(xe,{row:!0},c.createElement(Y,null,c.createElement(sT,{isMulti:!0,options:this.state.debugKeys.map(t=>({label:t,value:t})),value:this.props.log.debugEnabled?this.props.log.debugEnabled.split(",").map(t=>({label:t,value:t})):null,onChange:t=>{const n=t!==null?t.map(({value:r})=>r).join(","):"";this.doHandleDebug(n)}}),c.createElement(st,{color:"muted",style:{marginBottom:"15px"}},"Select the appropriate debug keys to activate debug logging for various components on the server."))),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"6",md:"6"},"Persist debug settings over server restarts"," ",c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:"Enabled",name:"debug",className:"switch-input",onChange:this.handleRememberDebug,checked:this.props.log.rememberDebug}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))),c.createElement(Y,{xs:"6",md:"6"},"Pause the log window"," ",c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:"Pause",name:"pause",className:"switch-input",onChange:this.handlePause,checked:this.state.pause}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))),c.createElement($dn,{value:this.props.log})))),c.createElement(z8,null))}}class $dn extends J.Component{componentDidMount(){this.end.scrollIntoView()}render(){return c.createElement("div",{style:{overflowY:"scroll",maxHeight:"60vh",border:"1px solid",padding:"5px",fontFamily:"monospace"}},this.props.value.entries&&this.props.value.entries.map(t=>c.createElement(Edn,{key:t.i,log:t.d})),c.createElement("div",{ref:t=>{this.end=t}}," "))}}class Edn extends c.PureComponent{render(){return c.createElement("span",null,pj(this.props.log),c.createElement("br",null))}}const wdn=tn(({log:e,webSocket:t})=>({log:e,webSocket:t}))(bdn);class _dn extends J.Component{constructor(t){super(t),this.state={chanelog:null},this.handleUpdate=this.handleUpdate.bind(this),this.fetchChangelog=this.fetchChangelog.bind(this),this.fetchChangelog()}fetchChangelog(){fetch("https://raw.githubusercontent.com/SignalK/signalk-server-node/master/CHANGELOG.md").then(t=>t.text()).then(t=>{this.setState({changelog:t})})}handleUpdate(){console.log("handleUpdate"),confirm("Are you sure you want to update the server?'")&&(this.props.history.push("/appstore/updates"),fetch(`${window.serverRoutesPrefix}/appstore/install/signalk-server/${this.props.appStore.serverUpdate}`,{method:"POST",credentials:"include"}).then(()=>{this.history.pushState(null,"appstore/updates")}))}render(){if(!this.props.appStore.storeAvailable)return c.createElement("div",{className:"animated fadeIn"},c.createElement(ft,null,c.createElement(xt,null,"Waiting for App store data to load...")));let t=!1,n=!1,r=this.props.appStore.installing.find(s=>s.name==="signalk-server");return r&&(r.isWaiting||r.isInstalling?t=!0:n=!0),c.createElement("div",{className:"animated fadeIn"},!this.props.appStore.canUpdateServer&&c.createElement(ft,{className:"border-warning"},c.createElement(xt,null,"Server Update"),c.createElement(pt,null,"This installation is not updatable from the admin user interface.")),this.props.appStore.isInDocker&&c.createElement(ft,{className:"border-warning"},c.createElement(xt,null,"Running as a Docker container"),c.createElement(pt,null,c.createElement("p",null,"The server is running as a Docker container. You need to pull a new server version from Container registry to update.",c.createElement("ul",null,c.createElement("code",null,"docker pull cr.signalk.io/signalk/signalk-server"))),c.createElement("p",null,"More info about running Signal K in Docker can be found at"," ",c.createElement("a",{href:"https://github.com/SignalK/signalk-server/blob/master/docker/README.md",target:"_blank",rel:"noopener noreferrer"},"Docker README")," ","."))),this.props.appStore.canUpdateServer&&this.props.appStore.serverUpdate&&!t&&!n&&c.createElement(ft,null,c.createElement(xt,null,"Server version ",this.props.appStore.serverUpdate," is available"),c.createElement(pt,null,c.createElement("a",{href:"https://github.com/SignalK/signalk-server/releases/"},"Release Notes for latest releases."),c.createElement("br",null),c.createElement("br",null),c.createElement(it,{className:"btn btn-danger",size:"sm",color:"primary",onClick:this.handleUpdate},"Update"))),t&&c.createElement(ft,null,c.createElement(xt,null,"Server Update"),c.createElement(pt,null,"The update is being installed")),n&&c.createElement(ft,null,c.createElement(xt,null,"Server Update"),c.createElement(pt,null,"The update has been installed, please restart the Signal K server.")),this.props.appStore.canUpdateServer&&!this.props.appStore.serverUpdate&&c.createElement(ft,null,c.createElement(xt,null,"Server Update"),c.createElement(pt,null,"Your server is up to date.")),c.createElement(ft,null,c.createElement(xt,null,"Sponsoring"),c.createElement(pt,null,c.createElement("p",null,"If you find Signal K valuable to you consider sponsoring our work on developing it further."),c.createElement("p",null,"Your support allows us to do things like",c.createElement("ul",null,c.createElement("li",null,"travel to meet in person and push things forward"),c.createElement("li",null,"purchase equipment to develop on"),c.createElement("li",null,"upgrade our cloud resources beyond the free tiers"))),c.createElement("p",null,"See"," ",c.createElement("a",{href:"https://opencollective.com/signalk"},"Signal K in Open Collective")," ","for details."))))}}const Sdn=tn(({appStore:e})=>({appStore:e}))(qM(_dn));class Cdn extends J.Component{componentDidMount(){const{dispatch:t}=this.props;z3(t),EE(t)}render(){const t=this.props.location.pathname.indexOf("/e/")===0?{padding:"0px"}:{};return c.createElement("div",{className:"app"},c.createElement(fQ,null),c.createElement("div",{className:"app-body"},c.createElement(yQ,this.props),c.createElement("main",{className:"main"},c.createElement(Hu,{fluid:!0,style:t},c.createElement(Gv,null,c.createElement(hn,{path:"/dashboard",name:"Dashboard",component:_r(G3,!0)}),c.createElement(hn,{path:"/webapps",name:"Webapps",component:_r(zQ,!0)}),c.createElement(hn,{path:"/e/:moduleId",name:"Embedded Webapps",component:_r(qQ,!0)}),c.createElement(hn,{path:"/databrowser",name:"DataBrowser",component:_r(Vkt,!0)}),c.createElement(hn,{path:"/serverConfiguration/datafiddler",name:"DataFiddler",component:_r(Wkt,!0)}),c.createElement(hn,{path:"/appstore",name:"Appstore",component:_r(Q3t)}),c.createElement(hn,{path:"/serverConfiguration/plugins/:pluginid",component:_r(Kcn)}),c.createElement(hn,{path:"/serverConfiguration/settings",component:_r(pdn)}),c.createElement(hn,{path:"/serverConfiguration/backuprestore",component:_r(ydn)}),c.createElement(hn,{path:"/serverConfiguration/connections/:providerId",component:_r(odn)}),c.createElement(hn,{path:"/serverConfiguration/log",component:_r(wdn)}),c.createElement(hn,{path:"/serverConfiguration/update",component:_r(Sdn)}),c.createElement(hn,{path:"/security/settings",component:_r(oln)}),c.createElement(hn,{path:"/security/users",component:_r(lln)}),c.createElement(hn,{path:"/security/devices",component:_r(pln)}),c.createElement(hn,{path:"/security/access/requests",component:_r(yln)}),c.createElement(hn,{path:"/documentation",name:"Documentation",component:UQ}),c.createElement(hn,{path:"/login",component:dy}),c.createElement(hn,{path:"/register",component:mln}),c.createElement(zv,{from:"/",to:"/dashboard"})))),c.createElement(bQ,null)),c.createElement(EQ,null))}}const xdn=tn()(Cdn),_r=(e,t)=>{class n extends J.Component{constructor(s){super(s),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}render(){return Tdn(this.props.loginStatus,t)?c.createElement(dy,null):this.state.hasError?c.createElement("span",null,"Something went wrong."):c.createElement(e,this.props)}}return tn(({loginStatus:r})=>({loginStatus:r}))(qM(n))};function Tdn(e,t){return t&&e.readOnlyAccess?!1:e.authenticationRequired&&e.status==="notLoggedIn"}/*!
744
+ deps: ${d}}`};const s={keyword:"dependencies",type:"object",schemaType:"object",error:e.error,code(l){const[f,d]=o(l);a(l,f),i(l,d)}};function o({schema:l}){const f={},d={};for(const p in l){if(p==="__proto__")continue;const g=Array.isArray(l[p])?f:d;g[p]=l[p]}return[f,d]}function a(l,f=l.schema){const{gen:d,data:p,it:g}=l;if(Object.keys(f).length===0)return;const m=d.let("missing");for(const y in f){const $=f[y];if($.length===0)continue;const E=(0,r.propertyInData)(d,p,y,g.opts.ownProperties);l.setParams({property:y,depsCount:$.length,deps:$.join(", ")}),g.allErrors?d.if(E,()=>{for(const v of $)(0,r.checkReportMissingProp)(l,v)}):(d.if((0,t._)`${E} && (${(0,r.checkMissingProp)(l,$,m)})`),(0,r.reportMissingProp)(l,m),d.else())}}e.validatePropertyDeps=a;function i(l,f=l.schema){const{gen:d,data:p,keyword:g,it:m}=l,y=d.name("valid");for(const $ in f)(0,n.alwaysValidSchema)(m,f[$])||(d.if((0,r.propertyInData)(d,p,$,m.opts.ownProperties),()=>{const E=l.subschema({keyword:g,schemaProp:$},y);l.mergeValidEvaluated(E,y)},()=>d.var(y,!0)),l.ok(y))}e.validateSchemaDeps=i,e.default=s})(w8);var zx={};Object.defineProperty(zx,"__esModule",{value:!0});const _8=_t,Sin=qe,Cin={message:"property name must be valid",params:({params:e})=>(0,_8._)`{propertyName: ${e.propertyName}}`},xin={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:Cin,code(e){const{gen:t,schema:n,data:r,it:s}=e;if((0,Sin.alwaysValidSchema)(s,n))return;const o=t.name("valid");t.forIn("key",r,a=>{e.setParams({propertyName:a}),e.subschema({keyword:"propertyNames",data:a,dataTypes:["string"],propertyName:a,compositeRule:!0},o),t.if((0,_8.not)(o),()=>{e.error(!0),s.allErrors||t.break()})}),e.ok(o)}};zx.default=xin;var Mb={};Object.defineProperty(Mb,"__esModule",{value:!0});const ag=Pt,eo=_t,Tin=Xo,ig=qe,Oin={message:"must NOT have additional properties",params:({params:e})=>(0,eo._)`{additionalProperty: ${e.additionalProperty}}`},Nin={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:Oin,code(e){const{gen:t,schema:n,parentSchema:r,data:s,errsCount:o,it:a}=e;if(!o)throw new Error("ajv implementation error");const{allErrors:i,opts:l}=a;if(a.props=!0,l.removeAdditional!=="all"&&(0,ig.alwaysValidSchema)(a,n))return;const f=(0,ag.allSchemaProperties)(r.properties),d=(0,ag.allSchemaProperties)(r.patternProperties);p(),e.ok((0,eo._)`${o} === ${Tin.default.errors}`);function p(){t.forIn("key",s,E=>{!f.length&&!d.length?y(E):t.if(g(E),()=>y(E))})}function g(E){let v;if(f.length>8){const w=(0,ig.schemaRefOrVal)(a,r.properties,"properties");v=(0,ag.isOwnProperty)(t,w,E)}else f.length?v=(0,eo.or)(...f.map(w=>(0,eo._)`${E} === ${w}`)):v=eo.nil;return d.length&&(v=(0,eo.or)(v,...d.map(w=>(0,eo._)`${(0,ag.usePattern)(e,w)}.test(${E})`))),(0,eo.not)(v)}function m(E){t.code((0,eo._)`delete ${s}[${E}]`)}function y(E){if(l.removeAdditional==="all"||l.removeAdditional&&n===!1){m(E);return}if(n===!1){e.setParams({additionalProperty:E}),e.error(),i||t.break();return}if(typeof n=="object"&&!(0,ig.alwaysValidSchema)(a,n)){const v=t.name("valid");l.removeAdditional==="failing"?($(E,v,!1),t.if((0,eo.not)(v),()=>{e.reset(),m(E)})):($(E,v),i||t.if((0,eo.not)(v),()=>t.break()))}}function $(E,v,w){const C={keyword:"additionalProperties",dataProp:E,dataPropType:ig.Type.Str};w===!1&&Object.assign(C,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(C,v)}}};Mb.default=Nin;var Gx={};Object.defineProperty(Gx,"__esModule",{value:!0});const Pin=fo,JD=Pt,iE=qe,XD=Mb,Ain={keyword:"properties",type:"object",schemaType:"object",code(e){const{gen:t,schema:n,parentSchema:r,data:s,it:o}=e;o.opts.removeAdditional==="all"&&r.additionalProperties===void 0&&XD.default.code(new Pin.KeywordCxt(o,XD.default,"additionalProperties"));const a=(0,JD.allSchemaProperties)(n);for(const p of a)o.definedProperties.add(p);o.opts.unevaluated&&a.length&&o.props!==!0&&(o.props=iE.mergeEvaluated.props(t,(0,iE.toHash)(a),o.props));const i=a.filter(p=>!(0,iE.alwaysValidSchema)(o,n[p]));if(i.length===0)return;const l=t.name("valid");for(const p of i)f(p)?d(p):(t.if((0,JD.propertyInData)(t,s,p,o.opts.ownProperties)),d(p),o.allErrors||t.else().var(l,!0),t.endIf()),e.it.definedProperties.add(p),e.ok(l);function f(p){return o.opts.useDefaults&&!o.compositeRule&&n[p].default!==void 0}function d(p){e.subschema({keyword:"properties",schemaProp:p,dataProp:p},l)}}};Gx.default=Ain;var Wx={};Object.defineProperty(Wx,"__esModule",{value:!0});const ZD=Pt,cg=_t,QD=qe,eM=qe,Iin={keyword:"patternProperties",type:"object",schemaType:"object",code(e){const{gen:t,schema:n,data:r,parentSchema:s,it:o}=e,{opts:a}=o,i=(0,ZD.allSchemaProperties)(n),l=i.filter($=>(0,QD.alwaysValidSchema)(o,n[$]));if(i.length===0||l.length===i.length&&(!o.opts.unevaluated||o.props===!0))return;const f=a.strictSchema&&!a.allowMatchingProperties&&s.properties,d=t.name("valid");o.props!==!0&&!(o.props instanceof cg.Name)&&(o.props=(0,eM.evaluatedPropsToName)(t,o.props));const{props:p}=o;g();function g(){for(const $ of i)f&&m($),o.allErrors?y($):(t.var(d,!0),y($),t.if(d))}function m($){for(const E in f)new RegExp($).test(E)&&(0,QD.checkStrictMode)(o,`property ${E} matches pattern ${$} (use allowMatchingProperties)`)}function y($){t.forIn("key",r,E=>{t.if((0,cg._)`${(0,ZD.usePattern)(e,$)}.test(${E})`,()=>{const v=l.includes($);v||e.subschema({keyword:"patternProperties",schemaProp:$,dataProp:E,dataPropType:eM.Type.Str},d),o.opts.unevaluated&&p!==!0?t.assign((0,cg._)`${p}[${E}]`,!0):!v&&!o.allErrors&&t.if((0,cg.not)(d),()=>t.break())})})}}};Wx.default=Iin;var Yx={};Object.defineProperty(Yx,"__esModule",{value:!0});const Rin=qe,kin={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){const{gen:t,schema:n,it:r}=e;if((0,Rin.alwaysValidSchema)(r,n)){e.fail();return}const s=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},s),e.failResult(s,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};Yx.default=kin;var Kx={};Object.defineProperty(Kx,"__esModule",{value:!0});const Din=Pt,Min={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:Din.validateUnion,error:{message:"must match a schema in anyOf"}};Kx.default=Min;var Jx={};Object.defineProperty(Jx,"__esModule",{value:!0});const Mg=_t,Lin=qe,Fin={message:"must match exactly one schema in oneOf",params:({params:e})=>(0,Mg._)`{passingSchemas: ${e.passing}}`},jin={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:Fin,code(e){const{gen:t,schema:n,parentSchema:r,it:s}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");if(s.opts.discriminator&&r.discriminator)return;const o=n,a=t.let("valid",!1),i=t.let("passing",null),l=t.name("_valid");e.setParams({passing:i}),t.block(f),e.result(a,()=>e.reset(),()=>e.error(!0));function f(){o.forEach((d,p)=>{let g;(0,Lin.alwaysValidSchema)(s,d)?t.var(l,!0):g=e.subschema({keyword:"oneOf",schemaProp:p,compositeRule:!0},l),p>0&&t.if((0,Mg._)`${l} && ${a}`).assign(a,!1).assign(i,(0,Mg._)`[${i}, ${p}]`).else(),t.if(l,()=>{t.assign(a,!0),t.assign(i,p),g&&e.mergeEvaluated(g,Mg.Name)})})}}};Jx.default=jin;var Xx={};Object.defineProperty(Xx,"__esModule",{value:!0});const qin=qe,Uin={keyword:"allOf",schemaType:"array",code(e){const{gen:t,schema:n,it:r}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");const s=t.name("valid");n.forEach((o,a)=>{if((0,qin.alwaysValidSchema)(r,o))return;const i=e.subschema({keyword:"allOf",schemaProp:a},s);e.ok(s),e.mergeEvaluated(i)})}};Xx.default=Uin;var Zx={};Object.defineProperty(Zx,"__esModule",{value:!0});const qv=_t,S8=qe,Bin={message:({params:e})=>(0,qv.str)`must match "${e.ifClause}" schema`,params:({params:e})=>(0,qv._)`{failingKeyword: ${e.ifClause}}`},Vin={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:Bin,code(e){const{gen:t,parentSchema:n,it:r}=e;n.then===void 0&&n.else===void 0&&(0,S8.checkStrictMode)(r,'"if" without "then" and "else" is ignored');const s=tM(r,"then"),o=tM(r,"else");if(!s&&!o)return;const a=t.let("valid",!0),i=t.name("_valid");if(l(),e.reset(),s&&o){const d=t.let("ifClause");e.setParams({ifClause:d}),t.if(i,f("then",d),f("else",d))}else s?t.if(i,f("then")):t.if((0,qv.not)(i),f("else"));e.pass(a,()=>e.error(!0));function l(){const d=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},i);e.mergeEvaluated(d)}function f(d,p){return()=>{const g=e.subschema({keyword:d},i);t.assign(a,i),e.mergeValidEvaluated(g,a),p?t.assign(p,(0,qv._)`${d}`):e.setParams({ifClause:d})}}}};function tM(e,t){const n=e.schema[t];return n!==void 0&&!(0,S8.alwaysValidSchema)(e,n)}Zx.default=Vin;var Qx={};Object.defineProperty(Qx,"__esModule",{value:!0});const Hin=qe,zin={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:n}){t.if===void 0&&(0,Hin.checkStrictMode)(n,`"${e}" without "if" is ignored`)}};Qx.default=zin;Object.defineProperty(Ux,"__esModule",{value:!0});const Gin=yf,Win=Bx,Yin=bf,Kin=Vx,Jin=Hx,Xin=w8,Zin=zx,Qin=Mb,ecn=Gx,tcn=Wx,ncn=Yx,rcn=Kx,scn=Jx,ocn=Xx,acn=Zx,icn=Qx;function ccn(e=!1){const t=[ncn.default,rcn.default,scn.default,ocn.default,acn.default,icn.default,Zin.default,Qin.default,Xin.default,ecn.default,tcn.default];return e?t.push(Win.default,Kin.default):t.push(Gin.default,Yin.default),t.push(Jin.default),t}Ux.default=ccn;var eT={},tT={};Object.defineProperty(tT,"__esModule",{value:!0});const Ln=_t,lcn={message:({schemaCode:e})=>(0,Ln.str)`must match format "${e}"`,params:({schemaCode:e})=>(0,Ln._)`{format: ${e}}`},ucn={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:lcn,code(e,t){const{gen:n,data:r,$data:s,schema:o,schemaCode:a,it:i}=e,{opts:l,errSchemaPath:f,schemaEnv:d,self:p}=i;if(!l.validateFormats)return;s?g():m();function g(){const y=n.scopeValue("formats",{ref:p.formats,code:l.code.formats}),$=n.const("fDef",(0,Ln._)`${y}[${a}]`),E=n.let("fType"),v=n.let("format");n.if((0,Ln._)`typeof ${$} == "object" && !(${$} instanceof RegExp)`,()=>n.assign(E,(0,Ln._)`${$}.type || "string"`).assign(v,(0,Ln._)`${$}.validate`),()=>n.assign(E,(0,Ln._)`"string"`).assign(v,$)),e.fail$data((0,Ln.or)(w(),C()));function w(){return l.strictSchema===!1?Ln.nil:(0,Ln._)`${a} && !${v}`}function C(){const N=d.$async?(0,Ln._)`(${$}.async ? await ${v}(${r}) : ${v}(${r}))`:(0,Ln._)`${v}(${r})`,T=(0,Ln._)`(typeof ${v} == "function" ? ${N} : ${v}.test(${r}))`;return(0,Ln._)`${v} && ${v} !== true && ${E} === ${t} && !${T}`}}function m(){const y=p.formats[o];if(!y){w();return}if(y===!0)return;const[$,E,v]=C(y);$===t&&e.pass(N());function w(){if(l.strictSchema===!1){p.logger.warn(T());return}throw new Error(T());function T(){return`unknown format "${o}" ignored in schema at path "${f}"`}}function C(T){const j=T instanceof RegExp?(0,Ln.regexpCode)(T):l.code.formats?(0,Ln._)`${l.code.formats}${(0,Ln.getProperty)(o)}`:void 0,U=n.scopeValue("formats",{key:o,ref:T,code:j});return typeof T=="object"&&!(T instanceof RegExp)?[T.type||"string",T.validate,(0,Ln._)`${U}.validate`]:["string",T,U]}function N(){if(typeof y=="object"&&!(y instanceof RegExp)&&y.async){if(!d.$async)throw new Error("async format in sync schema");return(0,Ln._)`await ${v}(${r})`}return typeof E=="function"?(0,Ln._)`${v}(${r})`:(0,Ln._)`${v}.test(${r})`}}}};tT.default=ucn;Object.defineProperty(eT,"__esModule",{value:!0});const fcn=tT,dcn=[fcn.default];eT.default=dcn;var qu={};Object.defineProperty(qu,"__esModule",{value:!0});qu.contentVocabulary=qu.metadataVocabulary=void 0;qu.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];qu.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"];Object.defineProperty(xx,"__esModule",{value:!0});const hcn=Tx,pcn=Nx,mcn=Ux,gcn=eT,nM=qu,vcn=[hcn.default,pcn.default,(0,mcn.default)(),gcn.default,nM.metadataVocabulary,nM.contentVocabulary];xx.default=vcn;var nT={},Lb={};Object.defineProperty(Lb,"__esModule",{value:!0});Lb.DiscrError=void 0;var rM;(function(e){e.Tag="tag",e.Mapping="mapping"})(rM||(Lb.DiscrError=rM={}));Object.defineProperty(nT,"__esModule",{value:!0});const ru=_t,e_=Lb,sM=Yr,ycn=vf,bcn=qe,$cn={message:({params:{discrError:e,tagName:t}})=>e===e_.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:n}})=>(0,ru._)`{error: ${e}, tag: ${n}, tagValue: ${t}}`},Ecn={keyword:"discriminator",type:"object",schemaType:"object",error:$cn,code(e){const{gen:t,data:n,schema:r,parentSchema:s,it:o}=e,{oneOf:a}=s;if(!o.opts.discriminator)throw new Error("discriminator: requires discriminator option");const i=r.propertyName;if(typeof i!="string")throw new Error("discriminator: requires propertyName");if(r.mapping)throw new Error("discriminator: mapping is not supported");if(!a)throw new Error("discriminator: requires oneOf keyword");const l=t.let("valid",!1),f=t.const("tag",(0,ru._)`${n}${(0,ru.getProperty)(i)}`);t.if((0,ru._)`typeof ${f} == "string"`,()=>d(),()=>e.error(!1,{discrError:e_.DiscrError.Tag,tag:f,tagName:i})),e.ok(l);function d(){const m=g();t.if(!1);for(const y in m)t.elseIf((0,ru._)`${f} === ${y}`),t.assign(l,p(m[y]));t.else(),e.error(!1,{discrError:e_.DiscrError.Mapping,tag:f,tagName:i}),t.endIf()}function p(m){const y=t.name("valid"),$=e.subschema({keyword:"oneOf",schemaProp:m},y);return e.mergeEvaluated($,ru.Name),y}function g(){var m;const y={},$=v(s);let E=!0;for(let N=0;N<a.length;N++){let T=a[N];if(T?.$ref&&!(0,bcn.schemaHasRulesButRef)(T,o.self.RULES)){const U=T.$ref;if(T=sM.resolveRef.call(o.self,o.schemaEnv.root,o.baseId,U),T instanceof sM.SchemaEnv&&(T=T.schema),T===void 0)throw new ycn.default(o.opts.uriResolver,o.baseId,U)}const j=(m=T?.properties)===null||m===void 0?void 0:m[i];if(typeof j!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${i}"`);E=E&&($||v(T)),w(j,N)}if(!E)throw new Error(`discriminator: "${i}" must be required`);return y;function v({required:N}){return Array.isArray(N)&&N.includes(i)}function w(N,T){if(N.const)C(N.const,T);else if(N.enum)for(const j of N.enum)C(j,T);else throw new Error(`discriminator: "properties/${i}" must have "const" or "enum"`)}function C(N,T){if(typeof N!="string"||N in y)throw new Error(`discriminator: "${i}" values must be unique strings`);y[N]=T}}}};nT.default=Ecn;const wcn="http://json-schema.org/draft-07/schema#",_cn="http://json-schema.org/draft-07/schema#",Scn="Core schema meta-schema",Ccn={schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},xcn=["object","boolean"],Tcn={$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},Ocn={$schema:wcn,$id:_cn,title:Scn,definitions:Ccn,type:xcn,properties:Tcn,default:!0};(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MissingRefError=t.ValidationError=t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=t.Ajv=void 0;const n=FU,r=xx,s=nT,o=Ocn,a=["/properties"],i="http://json-schema.org/draft-07/schema";class l extends n.default{_addVocabularies(){super._addVocabularies(),r.default.forEach(y=>this.addVocabulary(y)),this.opts.discriminator&&this.addKeyword(s.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;const y=this.opts.$data?this.$dataMetaSchema(o,a):o;this.addMetaSchema(y,i,!1),this.refs["http://json-schema.org/schema"]=i}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(i)?i:void 0)}}t.Ajv=l,e.exports=t=l,e.exports.Ajv=l,Object.defineProperty(t,"__esModule",{value:!0}),t.default=l;var f=fo;Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return f.KeywordCxt}});var d=_t;Object.defineProperty(t,"_",{enumerable:!0,get:function(){return d._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return d.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return d.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return d.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return d.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return d.CodeGen}});var p=vp;Object.defineProperty(t,"ValidationError",{enumerable:!0,get:function(){return p.default}});var g=vf;Object.defineProperty(t,"MissingRefError",{enumerable:!0,get:function(){return g.default}})})(Ww,Ww.exports);var Ncn=Ww.exports;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.formatLimitDefinition=void 0;const t=Ncn,n=_t,r=n.operators,s={formatMaximum:{okStr:"<=",ok:r.LTE,fail:r.GT},formatMinimum:{okStr:">=",ok:r.GTE,fail:r.LT},formatExclusiveMaximum:{okStr:"<",ok:r.LT,fail:r.GTE},formatExclusiveMinimum:{okStr:">",ok:r.GT,fail:r.LTE}},o={message:({keyword:i,schemaCode:l})=>n.str`should be ${s[i].okStr} ${l}`,params:({keyword:i,schemaCode:l})=>n._`{comparison: ${s[i].okStr}, limit: ${l}}`};e.formatLimitDefinition={keyword:Object.keys(s),type:"string",schemaType:"string",$data:!0,error:o,code(i){const{gen:l,data:f,schemaCode:d,keyword:p,it:g}=i,{opts:m,self:y}=g;if(!m.validateFormats)return;const $=new t.KeywordCxt(g,y.RULES.all.format.definition,"format");$.$data?E():v();function E(){const C=l.scopeValue("formats",{ref:y.formats,code:m.code.formats}),N=l.const("fmt",n._`${C}[${$.schemaCode}]`);i.fail$data(n.or(n._`typeof ${N} != "object"`,n._`${N} instanceof RegExp`,n._`typeof ${N}.compare != "function"`,w(N)))}function v(){const C=$.schema,N=y.formats[C];if(!N||N===!0)return;if(typeof N!="object"||N instanceof RegExp||typeof N.compare!="function")throw new Error(`"${p}": format "${C}" does not define "compare" function`);const T=l.scopeValue("formats",{key:C,ref:N,code:m.code.formats?n._`${m.code.formats}${n.getProperty(C)}`:void 0});i.fail$data(w(T))}function w(C){return n._`${C}.compare(${f}, ${d}) ${s[p].fail} 0`}},dependencies:["format"]};const a=i=>(i.addKeyword(e.formatLimitDefinition),i);e.default=a})(LU);(function(e,t){Object.defineProperty(t,"__esModule",{value:!0});const n=MU,r=LU,s=_t,o=new s.Name("fullFormats"),a=new s.Name("fastFormats"),i=(f,d={keywords:!0})=>{if(Array.isArray(d))return l(f,d,n.fullFormats,o),f;const[p,g]=d.mode==="fast"?[n.fastFormats,a]:[n.fullFormats,o],m=d.formats||n.formatNames;return l(f,m,p,g),d.keywords&&r.default(f),f};i.get=(f,d="full")=>{const g=(d==="fast"?n.fastFormats:n.fullFormats)[f];if(!g)throw new Error(`Unknown format "${f}"`);return g};function l(f,d,p,g){var m,y;(m=(y=f.opts.code).formats)!==null&&m!==void 0||(y.formats=s._`require("ajv-formats/dist/formats").${g}`);for(const $ of d)f.addFormat($,p[$])}e.exports=t=i,Object.defineProperty(t,"__esModule",{value:!0}),t.default=i})(Gw,Gw.exports);var Pcn=Gw.exports;const oM=xn(Pcn),Acn={allErrors:!0,multipleOfPrecision:8,strict:!1,verbose:!0,discriminator:!1},Icn=/^(#?([0-9A-Fa-f]{3}){1,2}\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\(\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*\))|(rgb\(\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*\)))$/,Rcn=/^data:([a-z]+\/[a-z0-9-+.]+)?;(?:name=(.*);)?base64,(.*)$/;function kcn(e,t,n={},r,s=ysn){const o=new s({...Acn,...n});return r?oM(o,r):r!==!1&&oM(o),o.addFormat("data-url",Rcn),o.addFormat("color",Icn),o.addKeyword(tf),o.addKeyword(yS),Array.isArray(e)&&o.addMetaSchema(e),ln(t)&&Object.keys(t).forEach(a=>{o.addFormat(a,t[a])}),o}function Dcn(e=[],t){return e.map(n=>{var r;const{instancePath:s,keyword:o,params:a,schemaPath:i,parentSchema:l,...f}=n;let{message:d=""}=f,p=s.replace(/\//g,"."),g=`${p} ${d}`.trim();const m=[...((r=a.deps)===null||r===void 0?void 0:r.split(", "))||[],a.missingProperty,a.property].filter(y=>y);if(m.length>0)m.forEach(y=>{const $=p?`${p}.${y}`:y;let E=At(We(t,`${$.replace(/^\./,"")}`)).title;if(E===void 0){const v=i.replace(/\/properties\//g,"/").split("/").slice(1,-1).concat([y]);E=At(We(t,v)).title}if(E)d=d.replace(`'${y}'`,`'${E}'`);else{const v=We(l,[In,y,"title"]);v&&(d=d.replace(`'${y}'`,`'${v}'`))}}),g=d;else{const y=At(We(t,`${p.replace(/^\./,"")}`)).title;if(y)g=`'${y}' ${d}`.trim();else{const $=l?.title;$&&(g=`'${$}' ${d}`.trim())}}return"missingProperty"in a&&(p=p?`${p}.${a.missingProperty}`:a.missingProperty),{name:o,property:p,message:d,params:a,stack:g,schemaPath:i}})}function Mcn(e,t,n,r,s,o,a){const{validationError:i}=t;let l=Dcn(t.errors,a);i&&(l=[...l,{stack:i.message}]),typeof o=="function"&&(l=o(l,a));let f=rKt(l);if(i&&(f={...f,$schema:{__errors:[i.message]}}),typeof s!="function")return{errors:l,errorSchema:f};const d=o6(e,r,n,r,!0),p=s(d,wv(d),a),g=uC(p);return Cg({errors:l,errorSchema:f},g)}class Lcn{constructor(t,n){const{additionalMetaSchemas:r,customFormats:s,ajvOptionsOverrides:o,ajvFormatOptions:a,AjvClass:i}=t;this.ajv=kcn(r,s,o,a,i),this.localizer=n}reset(){this.ajv.removeSchema()}toErrorList(t,n=[]){return hh(t,n)}rawValidation(t,n){var r,s;let o,a;t[Ai]&&(a=this.ajv.getSchema(t[Ai]));try{a===void 0&&(a=this.ajv.compile(t)),a(n)}catch(l){o=l}let i;return a&&(typeof this.localizer=="function"&&(((r=a.errors)!==null&&r!==void 0?r:[]).forEach(l=>{var f;["missingProperty","property"].forEach(d=>{var p;!((p=l.params)===null||p===void 0)&&p[d]&&(l.params[d]=`'${l.params[d]}'`)}),!((f=l.params)===null||f===void 0)&&f.deps&&(l.params.deps=l.params.deps.split(", ").map(d=>`'${d}'`).join(", "))}),this.localizer(a.errors),((s=a.errors)!==null&&s!==void 0?s:[]).forEach(l=>{var f;["missingProperty","property"].forEach(d=>{var p;!((p=l.params)===null||p===void 0)&&p[d]&&(l.params[d]=l.params[d].slice(1,-1))}),!((f=l.params)===null||f===void 0)&&f.deps&&(l.params.deps=l.params.deps.split(", ").map(d=>d.slice(1,-1)).join(", "))})),i=a.errors||void 0,a.errors=null),{errors:i,validationError:o}}validateFormData(t,n,r,s,o){const a=this.rawValidation(n,t);return Mcn(this,a,t,n,r,s,o)}handleSchemaUpdate(t){var n,r;const s=(n=t[Ai])!==null&&n!==void 0?n:Pj;this.ajv.getSchema(s)===void 0?this.ajv.addSchema(t,s):gn(t,(r=this.ajv.getSchema(s))===null||r===void 0?void 0:r.schema)||(this.ajv.removeSchema(s),this.ajv.addSchema(t,s))}isValid(t,n,r){var s;try{this.handleSchemaUpdate(r);const o=fC(t),a=(s=o[Ai])!==null&&s!==void 0?s:ZYt(o);let i;return i=this.ajv.getSchema(a),i===void 0&&(i=this.ajv.addSchema(o,a).getSchema(a)||this.ajv.compile(o)),i(n)}catch(o){return console.warn("Error encountered compiling schema:",o),!1}}}function Fcn(e={},t){return new Lcn(e,t)}const jcn=Fcn();function t_(){return t_=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},t_.apply(null,arguments)}const qcn=x6(xQt),n_={CONTENT:"col-9",TOOLBAR:"col-3",ADD_BUTTON_CONTAINER:"col-3 offset-9"},Rs={BTN_INFO:"btn btn-info",BTN_OUTLINE_DARK:"btn btn-outline-dark",BTN_DANGER:"btn btn-danger",ARRAY_ITEM:"row array-item",ARRAY_ITEM_TOOLBOX:"array-item-toolbox",ARRAY_ITEM_LIST:"array-item-list",ARRAY_ITEM_ADD:"row",FIELD_DESCRIPTION:"field-description"},Ucn=e=>{if(!e||typeof e!="string")return!1;const t=e.split("_");return t.length>2&&/^\d+$/.test(t[t.length-1])},lg=(e,t,n,r,s,o=0)=>c.createElement("button",{type:"button",className:e,onClick:t,disabled:n,tabIndex:o,style:r},s),Bcn=e=>{const{children:t,disabled:n,hasToolbar:r,hasMoveUp:s,hasMoveDown:o,hasRemove:a,index:i,onDropIndexClick:l,onReorderClick:f,readonly:d,registry:p,uiSchema:g}=e,{MoveUpButton:m,MoveDownButton:y,RemoveButton:$}=p.templates.ButtonTemplates;return c.createElement("div",{className:Rs.ARRAY_ITEM},c.createElement("div",{className:n_.CONTENT},t),c.createElement("div",{className:`${n_.TOOLBAR} ${Rs.ARRAY_ITEM_TOOLBOX}`},r&&c.createElement("div",{className:"btn-group btn-group-flex"},(s||o)&&c.createElement(m,{className:"array-item-move-up array-button-style",disabled:n||d||!s,onClick:f(i,i-1),uiSchema:g,registry:p}),(s||o)&&c.createElement(y,{className:"array-item-move-down array-button-style",disabled:n||d||!o,onClick:f(i,i+1),uiSchema:g,registry:p}),a&&c.createElement($,{className:"array-item-remove array-button-style",disabled:n||d,onClick:l(i),uiSchema:g,registry:p}))))},Vcn=e=>{const{id:t,classNames:n,style:r,label:s,help:o,required:a,description:i,errors:l,children:f,displayLabel:d,schema:p}=e,g=p.type==="boolean",m=p.type==="object";return c.createElement("div",{className:n,style:r},d&&s&&!g&&c.createElement("label",{htmlFor:t},s,a&&c.createElement("span",{className:"required"},"*")),i&&!m&&c.createElement("p",{id:`${t}__description`,className:Rs.FIELD_DESCRIPTION},i),f,l,o)},Hcn=e=>{const{title:t,description:n,properties:r,idSchema:s}=e,o=Ucn(s.$id);return c.createElement("fieldset",{id:s.$id},t&&!o&&c.createElement("legend",{id:`${s.$id}__title`},t),n&&c.createElement("p",{id:`${s.$id}__description`,className:Rs.FIELD_DESCRIPTION},n),r.map(a=>a.content))},zcn=e=>{const{canAdd:t,disabled:n,idSchema:r,uiSchema:s,items:o,onAddClick:a,readonly:i,registry:l,schema:f,title:d}=e,p=At(s),g=Tt("ArrayFieldItemTemplate",l,p),{ButtonTemplates:{AddButton:m}}=l.templates;return c.createElement("fieldset",{className:"field field-array field-array-of-object",id:r.$id},(p.title||d)&&c.createElement("legend",{id:`${r.$id}__title`},p.title||d),(p.description||f.description)&&c.createElement("div",{className:Rs.FIELD_DESCRIPTION},p.description||f.description),c.createElement("div",{className:Rs.ARRAY_ITEM_LIST},o?.map(({key:y,...$})=>c.createElement(g,t_({key:y},$)))),t&&c.createElement("div",{className:Rs.ARRAY_ITEM_ADD},c.createElement("p",{className:`${n_.ADD_BUTTON_CONTAINER} text-right array-item-add`},c.createElement(m,{className:"btn-add col-12",onClick:a,disabled:n||i,uiSchema:s,registry:l}))))},Gcn={FieldTemplate:Vcn,ObjectFieldTemplate:Hcn,ArrayFieldTemplate:zcn,ArrayFieldItemTemplate:Bcn,ButtonTemplates:{AddButton:e=>lg(`${Rs.BTN_INFO} ${e.className||""}`,e.onClick,e.disabled,void 0,c.createElement("i",{className:"fas fa-plus"}),0),MoveUpButton:e=>lg(`${Rs.BTN_OUTLINE_DARK} ${e.className||""}`,e.onClick,e.disabled,void 0,c.createElement("i",{className:"fas fa-arrow-up"}),-1),MoveDownButton:e=>lg(`${Rs.BTN_OUTLINE_DARK} ${e.className||""}`,e.onClick,e.disabled,void 0,c.createElement("i",{className:"fas fa-arrow-down"}),-1),RemoveButton:e=>lg(`${Rs.BTN_DANGER} ${e.className||""}`,e.onClick,e.disabled,void 0,c.createElement("i",{className:"fas fa-times"}),-1),SubmitButton:e=>{const{submitText:t}=e.uiSchema?.["ui:submitButtonOptions"]||{};return c.createElement("div",null,c.createElement("button",{type:"submit",className:Rs.BTN_INFO},t||"Submit"))}}},Wcn=({plugin:e,onSubmit:t})=>{const{enabled:n,enableLogging:r,enableDebug:s}=e.data;return c.createElement(qcn,{validator:jcn,schema:{type:"object",...e.statusMessage&&{description:`Status: ${e.statusMessage}`},properties:{configuration:{type:"object",title:" ",description:e.schema.description,properties:e.schema.properties}}},uiSchema:e.uiSchema?{configuration:e.uiSchema}:{},formData:e.data||{},templates:Gcn,onSubmit:({formData:o})=>{t({...o,enabled:n,enableLogging:r,enableDebug:s})}},c.createElement("button",{type:"submit",className:"btn btn-primary"},c.createElement("i",{className:"fa fa-save",style:{marginRight:"8px"}}),"Save Configuration"))};class Ycn extends J.Component{constructor(t){super(t),this.state={component:fy(t.plugin.packageName,TQ),configuration:this.props.plugin.data.configuration}}render(){return c.createElement("div",null,c.createElement(J.Suspense,{fallback:"Loading..."},c.createElement(this.state.component,{configuration:this.state.configuration,save:t=>{this.props.saveData({...this.props.plugin.data,configuration:t}),this.setState({configuration:t})}})))}}const aM="admin.v1.plugins.search",cE="admin.v1.plugins.openPlugin",iM="admin.v1.plugins.statusFilter";class Kcn extends J.Component{constructor(t){super(t),this.state={plugins:[],search:localStorage.getItem(aM)||"",statusFilter:localStorage.getItem(iM)||"all",searchResults:null,selectedPlugin:null,wasmEnabled:!0},this.lastOpenedPlugin="--",this.handleSearch=this.handleSearch.bind(this),this.handleStatusFilter=this.handleStatusFilter.bind(this),this.selectPlugin=this.selectPlugin.bind(this),this.handlePluginClick=this.handlePluginClick.bind(this)}searchPlugins(t,n){const r=n.toLowerCase();return t.filter(s=>s.id.toLowerCase().includes(r)||s.packageName.toLowerCase().includes(r)||s.description&&s.description.toLowerCase().includes(r)||s.name.toLowerCase().includes(r))}filterPluginsByStatus(t,n){return n==="all"?t:t.filter(r=>{const s=r.schema&&r.schema.properties&&Object.keys(r.schema?.properties).length!==0&&(r.data.configuration===null||r.data.configuration===void 0);switch(n){case"enabled":return!s&&r.data.enabled;case"disabled":return s||!r.data.enabled;default:return!0}})}getFilteredPlugins(){let t=this.state.plugins;return t=this.filterPluginsByStatus(t,this.state.statusFilter),this.state.search.length>0&&(t=this.searchPlugins(t,this.state.search)),t}handleSearch(t){const n=t.target.value;this.setState({search:n}),localStorage.setItem(aM,n)}handleStatusFilter(t){const n=t.target.value;this.setState({statusFilter:n}),localStorage.setItem(iM,n)}handlePluginClick(t){const n=t.currentTarget.getAttribute("data-plugin-id"),r=this.state.plugins.find(s=>s.id===n);if(r){const s=this.state.selectedPlugin&&this.state.selectedPlugin.id===r.id;this.selectPlugin(s?null:r)}}selectPlugin(t){const n=t?t.id:null;n?(localStorage.setItem(cE,n),this.setState({selectedPlugin:t})):(localStorage.removeItem(cE),this.setState({selectedPlugin:null}))}scrollToSelectedPlugin(t){if(!this.tableContainer||!t)return;const n=this.tableContainer.querySelector(`[data-plugin-id="${t}"]`);if(!n)return;const r=this.tableContainer.getBoundingClientRect(),s=n.getBoundingClientRect();if(s.bottom>r.bottom||s.top<r.top){const o=n.offsetTop,a=this.tableContainer.clientHeight,i=n.clientHeight,l=o-a/2+i/2;this.tableContainer.scrollTo({top:Math.max(0,l),behavior:"smooth"})}}componentDidMount(){Promise.all([fetch(`${window.serverRoutesPrefix}/plugins`,{credentials:"same-origin"}).then(t=>{if(t.status===200)return t.json();throw new Error("/plugins request failed:"+t.status)}),fetch(`${window.serverRoutesPrefix}/settings`,{credentials:"same-origin"}).then(t=>t.status===200?t.json():{interfaces:{wasm:!0}}).catch(()=>({interfaces:{wasm:!0}}))]).then(([t,n])=>{const r=n?.interfaces?.wasm!==!1,s=this.props.match.params.pluginid,o=localStorage.getItem(cE);let a=null;s&&s!=="-"?a=t.find(i=>i.id===s):o&&(a=t.find(i=>i.id===o)),this.setState({plugins:t,selectedPlugin:a,wasmEnabled:r}),a&&requestAnimationFrame(()=>{this.scrollToSelectedPlugin(a.id)})}).catch(t=>{console.error(t),alert("Could not fetch plugins list")})}render(){const t=this.getFilteredPlugins(),n=this.state.selectedPlugin?this.state.selectedPlugin.id:null;return c.createElement("div",null,c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),c.createElement("strong",null,"Plugin Configuration")),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal",onSubmit:r=>{r.preventDefault()}},c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"1",className:"col-form-label"},c.createElement(ve,{htmlFor:"search"},"Search")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"search",id:"search",onChange:this.handleSearch,value:this.state.search,placeholder:"Search plugins..."})),c.createElement(Y,{xs:"3",md:"2",className:"col-form-label"},c.createElement(ve,{htmlFor:"statusFilter"},"Filter by Status")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",name:"statusFilter",id:"statusFilter",onChange:this.handleStatusFilter,value:this.state.statusFilter},c.createElement("option",{value:"all"},"All Plugins"),c.createElement("option",{value:"enabled"},"Enabled"),c.createElement("option",{value:"disabled"},"Disabled"))))),c.createElement("div",{ref:r=>{this.tableContainer=r},style:{maxHeight:"400px",overflowY:"auto",border:"1px solid #dee2e6"}},c.createElement(Jr,{responsive:!0,bordered:!0,striped:!0,size:"sm",hover:!0,className:"mb-0"},c.createElement("thead",{style:{position:"sticky",top:0,backgroundColor:"#f8f9fa",zIndex:1}},c.createElement("tr",null,c.createElement("th",{style:{width:"30%"}},"Plugin Name"),c.createElement("th",{style:{width:"15%"}},"Status"),c.createElement("th",{style:{width:"55%"}},"Description"))),c.createElement("tbody",null,t.map(r=>{const s=n===r.id,o=r.schema&&r.schema.properties&&Object.keys(r.schema?.properties).length!==0&&(r.data.configuration===null||r.data.configuration===void 0),i=r.type==="wasm"&&!this.state.wasmEnabled;let l="badge-secondary",f="Disabled";return i?(l="badge-danger",f="WASM disabled"):r.data.enabled&&!o&&(l="badge-success",f="Enabled"),c.createElement("tr",{key:r.id,"data-plugin-id":r.id,onClick:this.handlePluginClick,style:{cursor:"pointer"},className:s?"table-active":""},c.createElement("td",null,c.createElement("strong",null,r.name)),c.createElement("td",null,c.createElement("div",{className:"d-flex align-items-center justify-content-between"},c.createElement("div",{className:`badge ${l}`},f),c.createElement("i",{className:"fa fa-cog text-muted",style:{fontSize:"16px"},title:"Click to configure"}))),c.createElement("td",null,c.createElement("small",null,r.description||"No description available")))})))))),this.state.selectedPlugin&&c.createElement(Xcn,{plugin:this.state.selectedPlugin,isConfigurator:Jcn(this.state.selectedPlugin),onClose:()=>this.selectPlugin(null),saveData:r=>(this.state.selectedPlugin.data.enabled===void 0&&r.enabled===void 0&&(r.enabled=!0),this.saveData(this.state.selectedPlugin.id,r))}))}saveData(t,n){return fetch(`${window.serverRoutesPrefix}/plugins/${t}/config`,{method:"POST",body:JSON.stringify(n),headers:new Headers({"Content-Type":"application/json"}),credentials:"same-origin"}).then(r=>{if(r.status!==200)throw console.error(r),alert("Saving plugin settings failed"),new Error("Save failed");{const s=[...this.state.plugins],o=s.findIndex(a=>a.id===t);if(o!==-1){s[o].data=n;const a=this.state.selectedPlugin&&this.state.selectedPlugin.id===t?{...this.state.selectedPlugin,data:n}:this.state.selectedPlugin;this.setState({plugins:s,selectedPlugin:a})}return!0}})}}const Jcn=e=>e.keywords.includes("signalk-plugin-configurator");class Xcn extends J.Component{constructor(t){super(t),this.state={showSaveSuccess:!1}}showSuccessMessage=()=>{this.setState({showSaveSuccess:!0}),setTimeout(()=>{this.setState({showSaveSuccess:!1})},3e3)};render(){const t={marginLeft:"10px",marginBottom:"0px"},{schema:n}=this.props.plugin,r=n&&n.properties&&Object.keys(n?.properties).length!==0&&(this.props.plugin.data.configuration===null||this.props.plugin.data.configuration===void 0);return c.createElement("div",null,this.state.showSaveSuccess&&c.createElement("div",{style:{position:"fixed",top:"20px",right:"20px",zIndex:9999,maxWidth:"300px"}},c.createElement("div",{className:"alert alert-success mb-0",role:"alert",style:{boxShadow:"0 4px 12px rgba(0,0,0,0.3)"}},c.createElement("i",{className:"fa fa-check"})," Configuration saved successfully!")),c.createElement(ft,{className:"mt-3 plugin-config-card",ref:s=>{this.configCard=s}},c.createElement(xt,{id:"plugin-config-header"},c.createElement(cn,{className:"mb-2"},c.createElement(Y,{className:"align-self-center"},c.createElement("h5",{className:"mb-0"},c.createElement("i",{className:"fa fa-cog",style:{marginRight:"10px"}}),"Configure: ",this.props.plugin.name),c.createElement("small",{className:"text-muted"},this.props.plugin.packageName))),!r&&c.createElement(cn,null,c.createElement(Y,{lg:4,className:"mt-2 mt-lg-0"},c.createElement(ve,{style:t,className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"enabled",className:"switch-input",onChange:()=>{this.props.saveData({...this.props.plugin.data,enabled:!this.props.plugin.data.enabled})},checked:this.props.plugin.data.enabled}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})),c.createElement("span",{className:"ml-1"},"Enabled")),c.createElement(Y,{lg:4,className:"mt-2 mt-lg-0"},c.createElement(ve,{style:t,className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"enableLogging",className:"switch-input",onChange:()=>{this.props.saveData({...this.props.plugin.data,enableLogging:!this.props.plugin.data.enableLogging})},checked:this.props.plugin.data.enableLogging}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})),c.createElement("span",{className:"ml-1"},"Data logging")),c.createElement(Y,{lg:4,className:"mt-2 mt-lg-0"},c.createElement(ve,{style:t,className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"enableDebug",className:"switch-input ",onChange:()=>{this.props.saveData({...this.props.plugin.data,enableDebug:!this.props.plugin.data.enableDebug})},checked:this.props.plugin.data.enableDebug}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})),c.createElement("span",{className:"ml-1"},"Enable debug log")))),c.createElement(pt,null,!this.props.isConfigurator&&c.createElement("div",null,c.createElement(Wcn,{plugin:this.props.plugin,onSubmit:s=>{this.props.saveData(s).then(()=>{this.showSuccessMessage()}).catch(()=>{})}}),c.createElement("div",{style:{position:"fixed",bottom:"20px",right:"20px",zIndex:1e3,backgroundColor:"#fff",padding:"10px",borderRadius:"5px",boxShadow:"0 4px 12px rgba(0,0,0,0.2)",border:"1px solid #dee2e6"}},c.createElement("button",{type:"button",className:"btn btn-primary",onClick:()=>{const s=document.querySelector('.plugin-config-card form button[type="submit"]');s&&s.click()},style:{minWidth:"140px"}},c.createElement("i",{className:"fa fa-save",style:{marginRight:"8px"}}),"Save Configuration"))),this.props.isConfigurator&&c.createElement(Ycn,this.props))))}}class Zcn extends J.Component{constructor(t){super(t),this.state={hasData:!1,isOpen:!1,isSaving:!1,isTesting:!1,testResult:null,saveResult:null,enabled:!1,issuer:"",clientId:"",clientSecret:"",clientSecretSet:!1,providerName:"SSO Login",defaultPermission:"readonly",autoCreateUsers:!0,autoLogin:!1,adminGroups:"",readwriteGroups:"",groupsAttribute:"groups",scope:"openid email profile",envOverrides:{}},this.handleChange=this.handleChange.bind(this),this.handleSaveConfig=this.handleSaveConfig.bind(this),this.handleTestConnection=this.handleTestConnection.bind(this),this.toggle=this.toggle.bind(this)}componentDidMount(){this.props.loginStatus.authenticationRequired&&this.fetchOIDCConfig()}componentDidUpdate(t){this.props.loginStatus.authenticationRequired!==t.loginStatus.authenticationRequired&&this.fetchOIDCConfig()}fetchOIDCConfig(){fetch(`${window.serverRoutesPrefix}/security/oidc`,{credentials:"include"}).then(t=>t.json()).then(t=>{this.setState({hasData:!0,enabled:t.enabled||!1,issuer:t.issuer||"",clientId:t.clientId||"",clientSecret:"",clientSecretSet:t.clientSecretSet||!1,providerName:t.providerName||"SSO Login",defaultPermission:t.defaultPermission||"readonly",autoCreateUsers:t.autoCreateUsers!==void 0?t.autoCreateUsers:!0,autoLogin:t.autoLogin||!1,adminGroups:Array.isArray(t.adminGroups)?t.adminGroups.join(", "):t.adminGroups||"",readwriteGroups:Array.isArray(t.readwriteGroups)?t.readwriteGroups.join(", "):t.readwriteGroups||"",groupsAttribute:t.groupsAttribute||"groups",scope:t.scope||"openid email profile",envOverrides:t.envOverrides||{}})}).catch(t=>{console.error("Failed to fetch OIDC config:",t)})}handleChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.setState({[t.target.name]:n})}handleSaveConfig(){this.setState({isSaving:!0,saveResult:null});const t={enabled:this.state.enabled,issuer:this.state.issuer,clientId:this.state.clientId,clientSecret:this.state.clientSecret,providerName:this.state.providerName,defaultPermission:this.state.defaultPermission,autoCreateUsers:this.state.autoCreateUsers,autoLogin:this.state.autoLogin,adminGroups:this.state.adminGroups,readwriteGroups:this.state.readwriteGroups,groupsAttribute:this.state.groupsAttribute,scope:this.state.scope};fetch(`${window.serverRoutesPrefix}/security/oidc`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),credentials:"include"}).then(n=>n.ok?n.json():n.json().then(r=>{throw new Error(r.error||"Failed to save configuration")})).then(()=>{this.setState({isSaving:!1,saveResult:{success:!0,message:"OIDC configuration saved"},clientSecret:"",clientSecretSet:!0}),this.fetchOIDCConfig()}).catch(n=>{this.setState({isSaving:!1,saveResult:{success:!1,message:n.message}})})}handleTestConnection(){if(!this.state.issuer){this.setState({testResult:{success:!1,message:"Issuer URL is required"}});return}this.setState({isTesting:!0,testResult:null}),fetch(`${window.serverRoutesPrefix}/security/oidc/test`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({issuer:this.state.issuer}),credentials:"include"}).then(t=>t.ok?t.json():t.json().then(n=>{throw new Error(n.error||"Connection test failed")})).then(t=>{this.setState({isTesting:!1,testResult:{success:!0,message:`Connected to ${t.issuer}`,endpoints:{authorization:t.authorization_endpoint,token:t.token_endpoint}}})}).catch(t=>{this.setState({isTesting:!1,testResult:{success:!1,message:t.message}})})}toggle(){this.setState({isOpen:!this.state.isOpen})}isFieldDisabled(t){return this.state.envOverrides[t]===!0}renderEnvBadge(t){return this.state.envOverrides[t]?c.createElement(Sr,{color:"warning",className:"ml-2",title:"Set via environment variable"},"ENV"):null}render(){return!this.state.hasData||!this.props.loginStatus.authenticationRequired?null:c.createElement(ft,null,c.createElement(xt,{onClick:this.toggle,style:{cursor:"pointer"}},c.createElement("i",{className:"fa fa-openid"})," OIDC / SSO Authentication",c.createElement("span",{className:"float-right"},this.state.enabled&&c.createElement(Sr,{color:"success",className:"mr-2"},"Enabled"),c.createElement("i",{className:`fa fa-chevron-${this.state.isOpen?"up":"down"}`}))),c.createElement(uy,{isOpen:this.state.isOpen},c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal"},c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Enable OIDC"),this.renderEnvBadge("enabled")),c.createElement(Y,{md:"9"},c.createElement(xe,{check:!0},c.createElement("div",null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"enabled",className:"switch-input",onChange:this.handleChange,checked:this.state.enabled,disabled:this.isFieldDisabled("enabled")}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))),c.createElement(st,{color:"muted"},"Enable OpenID Connect authentication"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"issuer"},"Issuer URL"),this.renderEnvBadge("issuer")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(cn,null,c.createElement(Y,{md:"8"},c.createElement(Ee,{type:"text",name:"issuer",placeholder:"https://auth.example.com",onChange:this.handleChange,value:this.state.issuer,disabled:this.isFieldDisabled("issuer")})),c.createElement(Y,{md:"4"},c.createElement(it,{color:"secondary",onClick:this.handleTestConnection,disabled:this.state.isTesting||!this.state.issuer},c.createElement("i",{className:`fa fa-${this.state.isTesting?"spinner fa-spin":"plug"}`})," ","Test Connection"))),c.createElement(st,{color:"muted"},"The OIDC provider's issuer URL (e.g., Keycloak, Authentik)"),this.state.testResult&&c.createElement(Rc,{color:this.state.testResult.success?"success":"danger",className:"mt-2"},this.state.testResult.message))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"clientId"},"Client ID"),this.renderEnvBadge("clientId")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"clientId",placeholder:"signalk-server",onChange:this.handleChange,value:this.state.clientId,disabled:this.isFieldDisabled("clientId")}),c.createElement(st,{color:"muted"},"Client ID from your OIDC provider"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"clientSecret"},"Client Secret"),this.renderEnvBadge("clientSecret")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"password",name:"clientSecret",placeholder:this.state.clientSecretSet?"••••••••••••••••":"Enter client secret",onChange:this.handleChange,value:this.state.clientSecret,disabled:this.isFieldDisabled("clientSecret")}),c.createElement(st,{color:"muted"},this.state.clientSecretSet?"Leave empty to keep existing secret":"Client secret from your OIDC provider"),c.createElement(st,null,c.createElement("strong",null,"Recommended:")," Set via environment variable"," ",c.createElement("code",null,"SIGNALK_OIDC_CLIENT_SECRET")," instead of storing in configuration."))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"providerName"},"Provider Display Name"),this.renderEnvBadge("providerName")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"providerName",placeholder:"SSO Login",onChange:this.handleChange,value:this.state.providerName,disabled:this.isFieldDisabled("providerName")}),c.createElement(st,{color:"muted"},"Text shown on the SSO login button"))),c.createElement("hr",null),c.createElement("h5",null,"Permission Mapping"),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"defaultPermission"},"Default Permission"),this.renderEnvBadge("defaultPermission")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"select",name:"defaultPermission",value:this.state.defaultPermission,onChange:this.handleChange,disabled:this.isFieldDisabled("defaultPermission")},c.createElement("option",{value:"readonly"},"Read Only"),c.createElement("option",{value:"readwrite"},"Read/Write"),c.createElement("option",{value:"admin"},"Admin")),c.createElement(st,{color:"muted"},"Permission for users not matching any group mapping"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"adminGroups"},"Admin Groups"),this.renderEnvBadge("adminGroups")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"adminGroups",placeholder:"admins, sk-admin",onChange:this.handleChange,value:this.state.adminGroups,disabled:this.isFieldDisabled("adminGroups")}),c.createElement(st,{color:"muted"},"Comma-separated list of groups that grant admin permission"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"readwriteGroups"},"Read/Write Groups"),this.renderEnvBadge("readwriteGroups")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"readwriteGroups",placeholder:"users, operators",onChange:this.handleChange,value:this.state.readwriteGroups,disabled:this.isFieldDisabled("readwriteGroups")}),c.createElement(st,{color:"muted"},"Comma-separated list of groups that grant read/write permission"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"groupsAttribute"},"Groups Attribute"),this.renderEnvBadge("groupsAttribute")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"groupsAttribute",placeholder:"groups",onChange:this.handleChange,value:this.state.groupsAttribute,disabled:this.isFieldDisabled("groupsAttribute")}),c.createElement(st,{color:"muted"},"ID token claim containing user groups (e.g., groups, roles, memberOf)"))),c.createElement("hr",null),c.createElement("h5",null,"User Settings"),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Auto-Create Users"),this.renderEnvBadge("autoCreateUsers")),c.createElement(Y,{md:"9"},c.createElement(xe,{check:!0},c.createElement("div",null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"autoCreateUsers",className:"switch-input",onChange:this.handleChange,checked:this.state.autoCreateUsers,disabled:this.isFieldDisabled("autoCreateUsers")}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))),c.createElement(st,{color:"muted"},"Automatically create local user on first OIDC login"))),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Auto-Login"),this.renderEnvBadge("autoLogin")),c.createElement(Y,{md:"9"},c.createElement(xe,{check:!0},c.createElement("div",null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"autoLogin",className:"switch-input",onChange:this.handleChange,checked:this.state.autoLogin,disabled:this.isFieldDisabled("autoLogin")}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))),c.createElement(st,{color:"muted"},"Automatically redirect to OIDC login when not authenticated"))),c.createElement("hr",null),c.createElement("h5",null,"Advanced"),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"scope"},"Scope"),this.renderEnvBadge("scope")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"scope",placeholder:"openid email profile",onChange:this.handleChange,value:this.state.scope,disabled:this.isFieldDisabled("scope")}),c.createElement(st,{color:"muted"},"Space-separated OAuth scopes (must include 'openid')"))))),c.createElement(tr,null,this.state.saveResult&&c.createElement(Rc,{color:this.state.saveResult.success?"success":"danger",className:"mb-2"},this.state.saveResult.message),c.createElement(it,{size:"sm",color:"primary",onClick:this.handleSaveConfig,disabled:this.state.isSaving},c.createElement("i",{className:`fa fa-${this.state.isSaving?"spinner fa-spin":"dot-circle-o"}`})," ","Save"))))}}const Qcn=({loginStatus:e})=>({loginStatus:e}),eln=tn(Qcn)(Zcn);function tln(){fetch(`${window.serverRoutesPrefix}/security/config`,{credentials:"include"}).then(e=>e.json()).then(e=>{this.setState({...e,hasData:!0})})}const nln=`${window.location.protocol}//${window.location.host}`;let rln=class extends J.Component{constructor(t){super(t),this.state={hasData:!1},this.handleChange=this.handleChange.bind(this),this.handleSaveConfig=this.handleSaveConfig.bind(this),this.fetchSecurityConfig=tln.bind(this)}componentDidMount(){this.props.loginStatus.authenticationRequired&&this.fetchSecurityConfig()}componentDidUpdate(t){this.props.loginStatus.authenticationRequired!==t.loginStatus.authenticationRequired&&this.fetchSecurityConfig()}handleChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.setState({[t.target.name]:n})}handleSaveConfig(){var t={allow_readonly:this.state.allow_readonly,expiration:this.state.expiration,allowNewUserRegistration:this.state.allowNewUserRegistration,allowDeviceAccessRequests:this.state.allowDeviceAccessRequests,allowedCorsOrigins:this.state.allowedCorsOrigins,adminUIOrigin:nln};fetch(`${window.serverRoutesPrefix}/security/config`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),credentials:"include"}).then(n=>n.text()).then(n=>{this.fetchSecurityConfig(),alert(n)})}render(){return c.createElement("div",{className:"animated fadeIn"},this.props.loginStatus.authenticationRequired===!1&&c.createElement(Ih,null),this.state.hasData&&this.props.loginStatus.authenticationRequired&&c.createElement("div",null,c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"Settings"),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal"},c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Allow Readonly Access")),c.createElement(Y,{md:"9"},c.createElement(xe,{check:!0},c.createElement("div",null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"allow_readonly",className:"switch-input",onChange:this.handleChange,checked:this.state.allow_readonly}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))))),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Allow New User Registration")),c.createElement(Y,{md:"9"},c.createElement(xe,{check:!0},c.createElement("div",null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"allowNewUserRegistration",className:"switch-input",onChange:this.handleChange,checked:this.state.allowNewUserRegistration}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))))),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Allow New Device Registration")),c.createElement(Y,{md:"9"},c.createElement(xe,{check:!0},c.createElement("div",null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"allowDeviceAccessRequests",className:"switch-input",onChange:this.handleChange,checked:this.state.allowDeviceAccessRequests}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"text-input"},"Remember Me timeout")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"text",name:"expiration",onChange:this.handleChange,value:this.state.expiration}),c.createElement(st,{color:"muted"},"Examples: 60s, 1m, 1h, 1d")),c.createElement(Y,{md:"6"},c.createElement(st,{color:"muted"},"How long server keeps you logged when Remember Me is checked in login."))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"12"},c.createElement(ve,null,"With no configuration all CORS origins are accepted, but client requests with credentials:include do not work. Add a single * origin to allow all origins with credentials. You can also restrict CORS requests to specific origins. The origin that this UI was loaded from is automatically added to the allowed origins so that requests from the UI work. Changes to the Allowed CORS origins requires a server restart.")))," ",c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"text-input"},"Allowed CORS origins")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"text",name:"allowedCorsOrigins",onChange:this.handleChange,value:this.state.allowedCorsOrigins}),c.createElement(st,{color:"muted"},"Use either * or a comma delimited list of origins, example: http://host1.name.com:3000,http://host2.name.com:3000"))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",onClick:this.handleSaveConfig},c.createElement("i",{className:"fa fa-dot-circle-o"})," Save"))),c.createElement(eln,null)))}};const sln=({loginStatus:e})=>({loginStatus:e}),oln=tn(sln)(rln);function aln(){fetch(`${window.serverRoutesPrefix}/security/users`,{credentials:"include"}).then(e=>e.json()).then(e=>{this.setState({users:e})})}class iln extends J.Component{constructor(t){super(t),this.state={},this.handleAddUser=this.handleAddUser.bind(this),this.fetchSecurityUsers=aln.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleApply=this.handleApply.bind(this),this.handleUserChange=this.handleUserChange.bind(this),this.deleteUser=this.deleteUser.bind(this)}componentDidMount(){this.props.loginStatus.authenticationRequired&&this.fetchSecurityUsers()}componentDidUpdate(t){this.props.loginStatus.authenticationRequired!==t.loginStatus.authenticationRequired&&this.fetchSecurityUsers()}handleUserChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.selectedUser[t.target.name]=n,this.setState({selectedUser:this.state.selectedUser})}handleAddUser(){var t={type:"readonly",isNew:!0};this.setState({selectedUser:t,selectedIndex:this.state.users.length-1},()=>{this.refs.selectedUser.scrollIntoView()})}handleApply(t){if(t.preventDefault(),!this.state.selectedUser.userId||this.state.selectedUser.userId.length===0){alert("Please specify a User Id");return}if(this.state.selectedUser.password&&this.state.selectedUser.password!==this.state.selectedUser.confirmPassword){alert("Passwords do not match");return}var n=this.state.selectedUser.isNew,r={password:this.state.selectedUser.password,type:this.state.selectedUser.type||"readonly"};fetch(`${window.serverRoutesPrefix}/security/users/${this.state.selectedUser.userId}`,{method:n?"POST":"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(r),credentials:"include"}).then(s=>s.text()).then(s=>{this.setState({selectedUser:null,selectedIndex:-1}),alert(s),this.fetchSecurityUsers()})}deleteUser(){fetch(`${window.serverRoutesPrefix}/security/users/${this.state.selectedUser.userId}`,{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include"}).then(t=>t.text()).then(t=>{this.setState({selectedUser:null,selectedIndex:-1}),alert(t),this.fetchSecurityUsers()})}userClicked(t,n){this.setState({selectedUser:JSON.parse(JSON.stringify(t)),selectedIndex:n},()=>{this.refs.selectedUser.scrollIntoView()})}handleCancel(){this.setState({selectedUser:null})}render(){return c.createElement("div",{className:"animated fadeIn"},this.props.loginStatus.authenticationRequired===!1&&c.createElement(Ih,null),this.state.users&&this.props.loginStatus.authenticationRequired&&c.createElement("div",null,c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"Users"),c.createElement(pt,null,c.createElement(Jr,{hover:!0,responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",null,"User ID"),c.createElement("th",null,"Type"),c.createElement("th",null,"Auth"))),c.createElement("tbody",null,(this.state.users||[]).map((t,n)=>c.createElement("tr",{key:t.userId,onClick:this.userClicked.bind(this,t,n)},c.createElement("td",null,t.userId,t.email&&c.createElement("small",{className:"text-muted ml-2"},"(",t.email,")")),c.createElement("td",null,uln(t.type)),c.createElement("td",null,t.isOIDC?c.createElement(Sr,{color:"info",title:"Authenticated via SSO"},"SSO"):c.createElement(Sr,{color:"secondary"},"Local"))))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",onClick:this.handleAddUser},c.createElement("i",{className:"fa fa-plus-circle"})," Add"))),this.state.selectedUser&&c.createElement("div",{ref:"selectedUser"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"User",this.state.selectedUser.isOIDC&&c.createElement(Sr,{color:"info",className:"ml-2"},"SSO User")),c.createElement(pt,null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"userid"},"User ID")),c.createElement(Y,{xs:"12",md:"9"},this.state.selectedUser.isNew&&c.createElement(Ee,{type:"text",name:"userId",value:this.state.selectedUser.userId,onChange:this.handleUserChange}),!this.state.selectedUser.isNew&&c.createElement(ve,null,this.state.selectedUser.userId))),this.state.selectedUser.email&&c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,null,"Email")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(ve,null,this.state.selectedUser.email))),this.state.selectedUser.isOIDC?c.createElement(xe,{row:!0},c.createElement(Y,{md:"12"},c.createElement(st,{color:"muted"},c.createElement("i",{className:"fa fa-info-circle"})," This user authenticates via Single Sign-On. Password cannot be set for SSO users."))):c.createElement(c.Fragment,null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"password"},"Password")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"password",name:"password",value:this.state.selectedUser.password,onChange:this.handleUserChange}))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"text-input"},"Confirm Password")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{type:"password",name:"confirmPassword",value:this.state.selectedUser.confirmPassword,onChange:this.handleUserChange})))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"select"},"Permissions")),c.createElement(Y,{xs:"12",md:"2"},c.createElement(Ee,{type:"select",name:"type",value:this.state.selectedUser.type,onChange:this.handleUserChange},c.createElement("option",{value:"readonly"},"Read Only"),c.createElement("option",{value:"readwrite"},"Read/Write"),c.createElement("option",{value:"admin"},"Admin"))))),c.createElement(tr,null,c.createElement(cn,null,c.createElement(Y,{xs:"4",md:"1"},c.createElement(it,{size:"sm",color:"primary",onClick:this.handleApply},c.createElement("i",{className:"fa fa-dot-circle-o"})," Apply")),c.createElement(Y,{xs:"4",md:"1"},c.createElement(it,{size:"sm",color:"secondary",onClick:this.handleCancel},c.createElement("i",{className:"fa fa-ban"})," Cancel")),c.createElement(Y,{xs:"4",md:"10",className:"text-right"},c.createElement(it,{size:"sm",color:"danger",onClick:this.deleteUser},c.createElement("i",{className:"fa fa-ban"})," Delete"))))))))}}const cln=({loginStatus:e})=>({loginStatus:e}),lln=tn(cln)(iln);function uln(e){if(e==="readonly")return"Read Only";if(e==="readwrite")return"Read/Write";if(e==="admin")return"Admin"}function fln(){fetch(`${window.serverRoutesPrefix}/security/devices`,{credentials:"include"}).then(e=>e.json()).then(e=>{this.setState({devices:e})})}class dln extends J.Component{constructor(t){super(t),this.state={devices:[]},this.fetchSecurityDevices=fln.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleApply=this.handleApply.bind(this),this.handleDeviceChange=this.handleDeviceChange.bind(this),this.deleteDevice=this.deleteDevice.bind(this)}componentDidMount(){this.props.loginStatus.authenticationRequired&&this.fetchSecurityDevices()}handleDeviceChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.selectedDevice[t.target.name]=n,this.setState({selectedDevice:this.state.selectedDevice})}handleApply(t){t.preventDefault();var n={permissions:this.state.selectedDevice.permissions||"readonly",description:this.state.selectedDevice.description};fetch(`${window.serverRoutesPrefix}/security/devices/${this.state.selectedDevice.clientId}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(n),credentials:"include"}).then(r=>r.text()).then(r=>{this.setState({selectedDevice:null,selectedIndex:-1}),alert(r),this.fetchSecurityDevices()})}deleteDevice(){fetch(`${window.serverRoutesPrefix}/security/devices/${this.state.selectedDevice.clientId}`,{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include"}).then(t=>t.text()).then(t=>{this.setState({selectedDevice:null,selectedIndex:-1}),alert(t),this.fetchSecurityDevices()})}deviceClicked(t,n){this.setState({selectedDevice:JSON.parse(JSON.stringify(t)),selectedIndex:n},()=>{this.refs.selectedDevice.scrollIntoView()})}handleCancel(){this.setState({selectedDevice:null})}render(){return c.createElement("div",{className:"animated fadeIn"},this.props.loginStatus.authenticationRequired===!1&&c.createElement(Ih,null),this.props.loginStatus.authenticationRequired&&c.createElement("div",null,c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"Devices"),c.createElement(pt,null,c.createElement(Jr,{hover:!0,responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",null,"Client ID"),c.createElement("th",null,"Description"),c.createElement("th",null,"Type"))),c.createElement("tbody",null,(this.state.devices||[]).map((t,n)=>c.createElement("tr",{key:t.clientId,onClick:this.deviceClicked.bind(this,t,n)},c.createElement("td",null,t.clientId),c.createElement("td",null,t.description),c.createElement("td",null,cM(t.permissions))))))),c.createElement(tr,null)),this.state.selectedDevice&&c.createElement("div",{ref:"selectedDevice"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"Device"),c.createElement(pt,null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"clientId"},"Client ID")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(ve,null,this.state.selectedDevice.clientId))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"description"},"Description")),c.createElement(Y,{xs:"12",md:"9"},c.createElement(Ee,{size:"60",style:{width:"auto"},type:"text",name:"description",onChange:this.handleDeviceChange,value:this.state.selectedDevice.description}))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"select"},"Permissions")),c.createElement(Y,{xs:"12",md:"2"},!this.state.selectedDevice.requestedPermissions&&c.createElement(Ee,{type:"select",name:"permissions",value:this.state.selectedDevice.permissions,onChange:this.handleDeviceChange},c.createElement("option",{value:"readonly"},"Read Only"),c.createElement("option",{value:"readwrite"},"Read/Write"),c.createElement("option",{value:"admin"},"Admin")),this.state.selectedDevice.requestedPermissions&&c.createElement(ve,null,cM(this.state.selectedDevice.permissions))))),c.createElement(tr,null,c.createElement(cn,null,c.createElement(Y,{xs:"4",md:"1"},c.createElement(it,{size:"sm",color:"primary",onClick:this.handleApply},c.createElement("i",{className:"fa fa-dot-circle-o"})," Apply")),c.createElement(Y,{xs:"4",md:"1"},c.createElement(it,{size:"sm",color:"secondary",onClick:this.handleCancel},c.createElement("i",{className:"fa fa-ban"})," Cancel")),c.createElement(Y,{xs:"4",md:"10",className:"text-right"},c.createElement(it,{size:"sm",color:"danger",onClick:this.deleteDevice},c.createElement("i",{className:"fa fa-ban"})," Delete"))))))))}}const hln=({securityDevices:e})=>({securityDevices:e}),pln=tn(hln)(dln);function cM(e){if(e==="readonly")return"Read Only";if(e==="readwrite")return"Read/Write";if(e==="admin")return"Admin"}class mln extends J.Component{constructor(t){super(t),this.state={errorMessage:null,email:"",password:"",confirmPassword:"",registrationSent:!1},this.handleInputChange=this.handleInputChange.bind(this),this.handleCreate=this.handleCreate.bind(this)}handleInputChange(t){var n=t.target.name;this.setState({[t.target.name]:t.target.value},()=>{n==="password"||n==="confirmPassword"&&this.state.password!==this.state.confirmPassword?this.setState({errorMessage:"Passwords do not match"}):this.setState({errorMessage:null})})}handleCreate(){if(this.state.email.length===0)this.setState({errorMessage:"Please enter an email address"});else if(this.state.password.length===0&&this.state.confirmPassword.length===0)this.setState({errorMessage:"Please enter and conform your password"});else{if(this.state.password!==this.state.confirmPassword)return;var t={userId:this.state.email,password:this.state.password};fetch("/signalk/v1/access/requests",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),credentials:"include"}).then(n=>{n.status!==202?n.json().then(r=>{this.setState({errorMessage:r.message?r.message:r.result})}):this.setState({registrationSent:!0})})}}render(){return c.createElement("div",null,c.createElement(Hu,null,c.createElement(cn,{className:"justify-content-center"},c.createElement(Y,{md:"6"},c.createElement(ft,{className:"mx-4"},c.createElement(pt,{className:"p-4"},c.createElement("h1",null,"Register"),this.state.registrationSent&&c.createElement("p",{className:"text-muted"},"Your registration has been sent"),!this.state.registrationSent&&c.createElement(xr,null,c.createElement("p",{className:"text-muted"},"Create your account"),c.createElement(Bo,{className:"mb-3"},c.createElement(Oa,{addonType:"prepend"},c.createElement(Vo,null,"@")),c.createElement(Ee,{name:"email",type:"text",placeholder:"Email",onChange:this.handleInputChange})),c.createElement(Bo,{className:"mb-3"},c.createElement(Oa,{addonType:"prepend"},c.createElement(Vo,null,c.createElement("i",{className:"icon-lock"}))),c.createElement(Ee,{name:"password",type:"password",placeholder:"Password",onChange:this.handleInputChange})),c.createElement(Bo,{className:"mb-0"},c.createElement(Oa,{addonType:"prepend"},c.createElement(Vo,null,c.createElement("i",{className:"icon-lock"}))),c.createElement(Ee,{name:"confirmPassword",type:"password",placeholder:"Repeat password",onChange:this.handleInputChange})),this.state.errorMessage&&c.createElement("p",{className:"text-danger mt-3 mb-0"},this.state.errorMessage))),!this.state.registrationSent&&c.createElement(tr,{className:"p-4"},c.createElement(cn,null,c.createElement(Y,{xs:"12",sm:"12"},c.createElement(it,{color:"success",block:!0,onClick:this.handleCreate},"Create Account")))))))))}}class gln extends J.Component{constructor(t){super(t),this.state={selectedRequest:null,accessRequestsApproving:[],accessRequestsDenying:[]},this.handleRequestChange=this.handleRequestChange.bind(this)}handleAccessRequest(t,n){var r=n?"accessRequestsApproving":"accessRequestsDenying";this.state[r].push(t),this.setState({stateKey:this.state});var s={permissions:this.state.selectedRequest.permissions||"readonly",config:this.state.selectedRequest.config,expiration:this.state.selectedRequest.expiration||"1y"};fetch(`${window.serverRoutesPrefix}/security/access/requests/${t}/${n?"approved":"denied"}`,{method:"PUT",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)}).then(o=>o.text()).then(()=>{this.state[r]=this.state[r].filter(o=>o!==t),this.setState({stateKey:this.state[r],selectedRequest:null})})}requestClicked(t,n,r){this.setState({selectedRequest:JSON.parse(JSON.stringify(n)),selectedIndex:r},()=>{this.refs.selectedRequest.scrollIntoView()})}handleRequestChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.selectedRequest[t.target.name]=n,this.setState({selectedRequest:this.state.selectedRequest})}handleCancel(){this.setState({selectedRequest:null})}render(){return c.createElement("div",{className:"animated fadeIn"},this.props.loginStatus.authenticationRequired===!1&&c.createElement(Ih,null),this.props.loginStatus.authenticationRequired&&c.createElement("div",null,c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"Access Requests"),c.createElement(pt,null,c.createElement(Jr,{hover:!0,responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",null,"Permissions"),c.createElement("th",null,"Identifier"),c.createElement("th",null,"Description"),c.createElement("th",null,"Source IP"))),c.createElement("tbody",null,(this.props.accessRequests||[]).map((t,n)=>c.createElement("tr",{key:t.accessIdentifier,onClick:this.requestClicked.bind(this,event,t,n)},c.createElement("td",null,t.permissions==="admin"?c.createElement(Sr,{color:"danger"},"Admin"):t.permissions==="readwrite"?c.createElement(Sr,{color:"warning"},"Read/Write"):c.createElement(Sr,{color:"secondary"},"Read Only")),c.createElement("td",null,t.accessIdentifier),c.createElement("td",null,t.accessDescription),c.createElement("td",null,t.ip))))))),this.state.selectedRequest&&c.createElement("div",{ref:"selectedRequest"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),"Request"),c.createElement(pt,null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"4",lg:"2"},c.createElement(ve,null,"Identifier")),c.createElement(Y,{xs:"12",md:"8"},c.createElement(ve,null,this.state.selectedRequest.accessIdentifier))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"4",lg:"2"},c.createElement(ve,null,"Description")),c.createElement(Y,{xs:"12",md:"8"},c.createElement(ve,null,this.state.selectedRequest.accessDescription))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"4",lg:"2"},c.createElement(ve,{htmlFor:"text-input"},"Authentication Timeout")),c.createElement(Y,{xs:"12",md:"8",lg:"3"},c.createElement(Ee,{type:"text",name:"expiration",onChange:this.handleRequestChange,value:this.state.selectedRequest.expiration}),c.createElement(st,{color:"muted"},"Examples: 60s, 1m, 1h, 1d, NEVER"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"4",lg:"2"},c.createElement(ve,{htmlFor:"select"},"Permissions")),c.createElement(Y,{xs:"12",md:"8",lg:"3"},!this.state.selectedRequest.requestedPermissions&&c.createElement(Ee,{type:"select",name:"permissions",value:this.state.selectedRequest.permissions,onChange:this.handleRequestChange},c.createElement("option",{value:"readonly"},"Read Only"),c.createElement("option",{value:"readwrite"},"Read/Write"),c.createElement("option",{value:"admin"},"Admin")),this.state.selectedRequest.requestedPermissions&&c.createElement(ve,null,this.state.selectedRequest.permissions==="admin"?c.createElement(Sr,{color:"danger",style:{fontSize:"large"}},"Admin"):this.state.selectedRequest.permissions==="readwrite"?c.createElement(Sr,{color:"warning",style:{fontSize:"large"}},"Read/Write"):c.createElement(Sr,{color:"secondary",style:{fontSize:"large"}},"Read Only"))))),c.createElement(tr,null,c.createElement(cn,{className:"ml-0 mr-0 d-flex justify-content-between justify-content-sm-start"},c.createElement(Y,{xs:"4",md:"4",lg:"2",className:"pl-0 pr-0 pr-md-2"},c.createElement(it,{size:"md",color:"success",onClick:this.handleAccessRequest.bind(this,this.state.selectedRequest.accessIdentifier,!0)},c.createElement("i",{className:this.state.accessRequestsApproving.indexOf(this.state.selectedRequest.accessIdentifier)!==-1?"fa fa-spinner fa-spin":"fa fa-check"})," ","Approve")),c.createElement(Y,{xs:"4",md:"8",lg:"3",className:"pl-2 pl-lg-1 pr-0 pr-md-2"},c.createElement(it,{size:"md",color:"danger",className:"float-right float-sm-left",onClick:this.handleAccessRequest.bind(this,this.state.selectedRequest.accessIdentifier,!1)},c.createElement("i",{className:this.state.accessRequestsDenying.indexOf(this.state.selectedRequest.accessIdentifier)!==-1?"fa fa-spinner fa-spin":"fa fa-ban"})," ","Deny"))))))))}}const vln=({accessRequests:e,loginStatus:t})=>({accessRequests:e,loginStatus:t}),yln=tn(vln)(gln);class bln extends J.Component{constructor(){super(),this.handleAddFilter=this.handleAddFilter.bind(this),this.handleEnabledChange=this.handleEnabledChange.bind(this)}filterChanged(t,n){t[n.target.name]=n.target.value,this.props.onChange(n)}deleteFilter(t,n){this.props.value.options.filters.splice(t,1),this.props.onChange(n)}handleEnabledChange(t){this.props.value.options.filtersEnabled=t.target.checked,this.props.onChange(t)}handleAddFilter(t){this.props.value.options.filters||(this.props.value.options.filters=[]),this.props.value.options.filters.push({source:"",pgn:""}),this.props.onChange(t)}render(){const t=this.props.value.options.useCanName?"Can NAME":"Address";return c.createElement("div",null,c.createElement(ft,null,c.createElement(xt,null,"Filters"),c.createElement(pt,null,c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"filtersEnabled",className:"switch-input",checked:this.props.value.options.filtersEnabled,onChange:this.handleEnabledChange}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})),"  Enabled ",c.createElement("br",null),c.createElement("br",null),"Filter out all messages from a specific ",t," by entering just the ",t,".",c.createElement("br",null),"Filter out a specific PGN from all devices by entering just the PGN.",c.createElement("br",null),"Filter out a specific PGN from a specific ",t," by entering both.",c.createElement("br",null),c.createElement("br",null),this.props.value.options.filters&&this.props.value.options.filters.length>0&&c.createElement(Jr,{responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",null,t),c.createElement("th",null,"PGN"),c.createElement("th",null))),c.createElement("tbody",null,this.props.value.options.filters.map((n,r)=>c.createElement("tr",{key:r},c.createElement("td",null,c.createElement(Ee,{type:"text",name:"source",value:n.source,onChange:this.filterChanged.bind(this,n)})),c.createElement("td",null,c.createElement(Ee,{type:"text",name:"pgn",value:n.pgn,onChange:this.filterChanged.bind(this,n)})),c.createElement("td",null,c.createElement(it,{color:"link",className:"text-danger",onClick:this.deleteFilter.bind(this,r)},c.createElement("i",{className:"fas fa-trash"}))))))),c.createElement(it,{size:"sm",color:"primary",onClick:this.handleAddFilter},c.createElement("i",{className:"fa fa-plus-circle"})," Add"))))}}class $ln extends J.Component{constructor(){super(),this.state={hasAnalyzer:!1}}componentDidMount(){fetch(`${window.serverRoutesPrefix}/hasAnalyzer`,{credentials:"include"}).then(t=>t.json()).then(t=>{this.setState({hasAnalyzer:t})})}render(){let n={NMEA2000:Fln,NMEA0183:jln,SignalK:qln,Seatalk:Uln,FileStream:Bln}[this.props.value.type]||(()=>null);return c.createElement("div",null,c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,{htmlFor:"select"},"Data Type")),c.createElement(Y,{xs:"6",md:"3"},this.props.value.isNew?c.createElement(Ee,{type:"select",value:this.props.value.type,name:"type",onChange:r=>this.props.onChange(r)},c.createElement("option",{value:"NMEA2000"},"NMEA 2000"),c.createElement("option",{value:"NMEA0183"},"NMEA 0183"),c.createElement("option",{value:"SignalK"},"Signal K"),c.createElement("option",{value:"Seatalk"},"Seatalk (GPIO)"),c.createElement("option",{value:"FileStream"},"File Stream")):this.props.value.type)),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Enabled")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"enabled",className:"switch-input",onChange:r=>this.props.onChange(r),checked:this.props.value.enabled}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))),this.props.value.type!=="FileStream"&&c.createElement(Sln,{value:this.props.value,onChange:this.props.onChange}),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"id"},"ID")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"text",name:"id",value:this.props.value.id,disabled:!this.props.value.isNew,onChange:r=>{const s={target:{name:r.target.name,type:r.target.type,value:(r.target.value||"").replace(/[^a-zA-Z\d-_]/g,"")}};this.props.onChange(s)}}))),c.createElement(n,{value:this.props.value,onChange:this.props.onChange,hasAnalyzer:this.state.hasAnalyzer}),c.createElement(xln,{value:this.props.value.options,onChange:this.props.onChange}),this.props.value.type==="NMEA2000"&&c.createElement(bln,{value:this.props.value,onChange:this.props.onPropChange}))}}class hs extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:this.props.name},this.props.title)),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"text",name:this.props.name,value:this.props.value,onChange:t=>this.props.onChange(t)}),this.props.helpText&&c.createElement(st,{color:"muted"},this.props.helpText)))}}class Eln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:this.props.name},this.props.title)),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"textarea",name:this.props.name,value:this.props.value,rows:this.props.rows,onChange:t=>this.props.onChange(t)}),this.props.helpText&&c.createElement(st,{color:"muted"},this.props.helpText)))}}class C8 extends J.Component{constructor(){super(),this.state={devices:{}}}componentDidMount(){fetch(`${window.serverRoutesPrefix}/serialports`,{credentials:"include"}).then(t=>t.json()).then(t=>{t.serialports=t.serialports.map(n=>n.path),this.setState({devices:t})})}render(){const t=!wln(this.props.value.device,this.state.devices);let n=t?this.props.value.device==="Enter manually"?"":this.props.value.device:"";return c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"serialportselect"},"Serial port")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",name:"options.device",id:"serialportselect",onChange:this.props.onChange,helpText:"help me",value:t?"Enter manually":this.props.value.device},c.createElement("option",{key:"enterManually"},"Enter manually"),_ln(["byOpenPlotter","byId","byPath","serialports"],["OpenPlotter managed:","by-id:","by-path:","Listed:"],this.state.devices))),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"text",name:"options.device",disabled:!t,value:n||"",onChange:r=>this.props.onChange(r)})))}}const wln=(e,t)=>Object.keys(t).reduce((r,s)=>r.concat(t[s]),[]).includes(e),_ln=(e,t,n)=>e.reduce((r,s,o)=>(n[s]&&n[s].length>0&&(r.push(c.createElement("option",{disabled:"true",key:s},t[o])),n[s].forEach((a,i)=>{r.push(c.createElement("option",{key:`${s}${i}`},a))})),r),[]);class Sln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Data Logging")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"logging",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.logging}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}class Cln extends J.Component{constructor(t){super(t),this.props.value.validateChecksum=typeof this.props.value.validateChecksum>"u"||this.props.value.validateChecksum}render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Validate Checksum")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.validateChecksum",className:"switch-input",onChange:t=>{this.props.onChange(t),this.props.value.validateChecksum&&(this.props.value.appendChecksum=!1)},checked:this.props.value.validateChecksum}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}class xln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Override timestamps")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.overrideTimestamp",className:"switch-input",onChange:this.props.onChange,checked:this.props.value.overrideTimestamp}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}class Tln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Remove NULL characters")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.removeNulls",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.removeNulls}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}class Oln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Append Checksum")),c.createElement(Y,{xs:"2",md:"1"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.appendChecksum",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.appendChecksum&&!this.props.value.validateChecksum,disabled:!!this.props.value.validateChecksum}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))),c.createElement(Y,{xs:"12",md:"6"},this.props.value.validateChecksum&&c.createElement("label",{className:"text-muted small"},"Turn Validate Checksum OFF to enable appending the checksum")))}}class Nln extends J.Component{render(){return c.createElement(hs,{title:"Input Event",name:"options.sentenceEvent",helpText:"Additional event name for incoming sentences. Example: nmea1data",value:this.props.value.sentenceEvent,onChange:this.props.onChange})}}class Pln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"dataType"},"Data Type")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"select",value:this.props.value.options.dataType,name:"options.dataType",onChange:t=>this.props.onChange(t)},!this.props.value.options.dataType&&c.createElement("option",{value:""},"Select data type"),c.createElement("option",{value:"SignalK"},"Signal K"),c.createElement("option",{value:"NMEA2000JS"},"Actisense NMEA 2000 (canboatjs)"),c.createElement("option",{value:"NMEA2000IK"},"iKonvert NMEA 2000 (canboatjs)"),c.createElement("option",{value:"NMEA2000YD"},"Yacht Devices YDGW-02 NMEA 2000 (canboatjs)"),c.createElement("option",{value:"NMEA2000",disabled:!this.props.hasAnalyzer},"NMEA 2000 (canboat)"),c.createElement("option",{value:"NMEA0183"},"NMEA 0183"),this.props.value.type==="FileStream"&&c.createElement("option",{value:"Multiplexed"},"Multiplexed Log"))))}}class Aln extends J.Component{render(){return c.createElement(hs,{title:"Baud Rate",name:"options.baudrate",helpText:"Example: 4800",value:this.props.value.baudrate,onChange:t=>this.props.onChange(t,"number")})}}class Iln extends J.Component{constructor(t){super(t),this.props.value.baudrate=this.props.value.baudrate||(this.props.value.type==="ikonvert-canboatjs"?230400:115200)}render(){return c.createElement(hs,{title:"Baud Rate",name:"options.baudrate",value:this.props.value.baudrate,onChange:t=>this.props.onChange(t,"number")})}}class Fb extends J.Component{constructor(t){super(),this.state=Fb.getDerivedStateFromProps(t),this.onChange=this.onChange.bind(this)}static getDerivedStateFromProps(t){let n=t.value.toStdout;return Array.isArray(n)&&(n=n.join(",")),{value:n}}onChange(t){this.setState({value:t.target.value}),this.props.onChange({target:{type:t.target.type,name:t.target.name,value:t.target.value.split(",")}})}render(){return c.createElement(hs,{title:"Output Events",name:"options.toStdout",helpText:"Events that should be written as output to this connection. Example: nmea0183,nmea0183out",value:this.state.value,onChange:this.onChange})}}class rT extends J.Component{constructor(t){super(),this.onChange=this.onChange.bind(this),this.state=rT.getDerivedStateFromProps(t)}static getDerivedStateFromProps(t){let n=t.value.ignoredSentences;return Array.isArray(n)&&(n=n.join(",")),{value:n}}onChange(t){this.setState({value:t.target.value}),this.props.onChange({target:{type:t.target.type,name:t.target.name,value:t.target.value.split(",")}})}render(){return c.createElement(hs,{title:"Ignored Sentences",name:"options.ignoredSentences",helpText:"NMEA0183 sentences to throw away from the input data. Example: RMC,ROT",value:this.state.value,onChange:this.onChange})}}class ki extends J.Component{render(){return c.createElement(hs,{title:"Port",name:"options.port",helpText:"Example: 4123",value:this.props.value.port,onChange:this.props.onChange})}}class lu extends J.Component{render(){return c.createElement(hs,{title:"Host",name:"options.host",helpText:"Example: localhost",value:this.props.value.host,onChange:this.props.onChange})}}class Lg extends J.Component{render(){return c.createElement(hs,{title:"No data timeout",name:"options.noDataReceivedTimeout",helpText:"Timeout for no data received in seconds. Socket is disconnected and reconnection attempted if timeout is reached. Leave empty or 0 to disable.",value:this.props.value.noDataReceivedTimeout,onChange:this.props.onChange})}}class Rln extends J.Component{render(){return c.createElement(hs,{title:"Remote 'self' to use",name:"options.remoteSelf",helpText:"like vessels.urn:mrn:signalk:uuid:f6d9f041-4e61-4335-82c0-7a51fb10ae86 OR vessels.urn:mrn:imo:mmsi:230099999",value:this.props.value.remoteSelf,onChange:this.props.onChange})}}class kln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Suppress nmea0183 event")),c.createElement(Y,{xs:"1",md:"1"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.suppress0183event",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.suppress0183event}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))),c.createElement(Y,{xs:"12",md:"6"},c.createElement("label",{className:"text-muted small"},"Supress sending the default nmea0183 event for incoming sentences")))}}class Dln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Use Can NAME in source data")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.useCanName",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.useCanName}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}class Mln extends J.Component{render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"CamcelCase Compat (for legacy N2K plugins)")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.useCamelCompat",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.useCamelCompat!==void 0?this.props.value.useCamelCompat:!0}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}class Lln extends J.Component{constructor(t){super(t)}render(){return c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"3"},c.createElement(ve,null,"Collect Network Statistics")),c.createElement(Y,{xs:"2",md:"3"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"options.sendNetworkStats",className:"switch-input",onChange:t=>this.props.onChange(t),checked:this.props.value.sendNetworkStats}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))}}const Fln=e=>c.createElement("div",null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"options.type"},"NMEA 2000 Source")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",value:e.value.options.type||"none",name:"options.type",onChange:t=>e.onChange(t)},c.createElement("option",{value:"none"},"Select a source"),c.createElement("option",{value:"ngt-1-canboatjs"},"Actisense NGT-1 (canboatjs)"),c.createElement("option",{value:"ngt-1",disabled:!e.hasAnalyzer},"Actisense NGT-1 (canboat)"),c.createElement("option",{value:"ikonvert-canboatjs"},"iKonvert (canboatjs)"),c.createElement("option",{value:"navlink2-tcp-canboatjs"},"NavLink2 (canboatjs)"),c.createElement("option",{value:"ydwg02-canboatjs"},"Yacht Devices RAW TCP (canboatjs)"),c.createElement("option",{value:"ydwg02-udp-canboatjs"},"Yacht Devices RAW UDP (canboatjs)"),c.createElement("option",{value:"ydwg02-usb-canboatjs"},"Yacht Devices RAW USB (canboatjs)"),c.createElement("option",{value:"canbus-canboatjs"},"Canbus (canboatjs)"),c.createElement("option",{value:"w2k-1-n2k-ascii-canboatjs"},"W2K-1 N2K ASCII (canboatjs)"),c.createElement("option",{value:"w2k-1-n2k-actisense-canboatjs"},"W2K-1 N2K ACTISENSE (canboatjs)"),c.createElement("option",{value:"canbus",disabled:!e.hasAnalyzer},"Canbus (canboat)")))),(e.value.options.type==="ngt-1"||e.value.options.type==="ngt-1-canboatjs"||e.value.options.type==="ydwg02-usb-canboatjs"||e.value.options.type==="ikonvert-canboatjs")&&c.createElement("div",null,c.createElement(C8,{value:e.value.options,onChange:e.onChange}),c.createElement(Iln,{value:e.value.options,onChange:e.onChange})),e.value.options.type==="ydwg02-canboatjs"&&c.createElement("div",null,c.createElement(lu,{value:e.value.options,onChange:e.onChange}),c.createElement(ki,{value:e.value.options,onChange:e.onChange}),c.createElement(Lg,{value:e.value.options,onChange:e.onChange})),e.value.options.type==="ydwg02-udp-canboatjs"&&c.createElement("div",null,c.createElement(lu,{value:e.value.options,onChange:e.onChange}),c.createElement(ki,{value:e.value.options,onChange:e.onChange})),e.value.options.type==="navlink2-tcp-canboatjs"&&c.createElement("div",null,c.createElement(lu,{value:e.value.options,onChange:e.onChange}),c.createElement(ki,{value:e.value.options,onChange:e.onChange}),c.createElement(Lg,{value:e.value.options,onChange:e.onChange})),(e.value.options.type==="canbus"||e.value.options.type==="canbus-canboatjs")&&c.createElement("div",null,c.createElement(hs,{title:"Interface",name:"options.interface",helpText:"Example: can0",value:e.value.options.interface,onChange:e.onChange}),c.createElement(hs,{title:"UniqueNumber",name:"options.uniqueNumber",helpText:"Example: any number from 1 to 2097151, will be equal to SerialNumber of a SignalK NMEA2000 device. Leave empty for random (default). Set a fixed value if you have problem with source identification on some B&G MFD's after SignalK restart.",value:e.value.options.uniqueNumber,onChange:e.onChange}),c.createElement(hs,{title:"ManufacturerCode",name:"options.mfgCode",helpText:"Example: 999 - Unknown (default), 0 - Internal, or any other mabufacturer code to emulate. Leave empty for default 999. Set to 0 if you have problem with source identification on some B&G MFD's after SignalK restart.",value:e.value.options.mfgCode,onChange:e.onChange})),(e.value.options.type==="ngt-1-canboatjs"||e.value.options.type==="ikonvert-canboatjs"||e.value.options.type==="navlink2-tcp-canboatjs")&&c.createElement(Lln,{value:e.value.options,onChange:e.onChange}),(e.value.options.type==="w2k-1-n2k-ascii-canboatjs"||e.value.options.type==="w2k-1-n2k-actisense-canboatjs")&&c.createElement("div",null,c.createElement(lu,{value:e.value.options,onChange:e.onChange}),c.createElement(ki,{value:e.value.options,onChange:e.onChange}),c.createElement(Lg,{value:e.value.options,onChange:e.onChange})),c.createElement(Dln,{value:e.value.options,onChange:e.onChange}),e.value.options.type!==void 0&&e.value.options.type.indexOf("canboatjs")!==-1&&c.createElement(Mln,{value:e.value.options,onChange:e.onChange})),jln=e=>c.createElement("div",null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"options.type"},"NMEA 0183 Source")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",value:e.value.options.type,name:"options.type",onChange:t=>e.onChange(t)},c.createElement("option",null,"Select a source"),c.createElement("option",{value:"serial"},"Serial"),c.createElement("option",{value:"tcp"},"TCP Client"),c.createElement("option",{value:"tcpserver"},"TCP Server on port 10110"),c.createElement("option",{value:"udp"},"UDP"),c.createElement("option",{value:"gpsd"},"GPSD"))),e.value.options.type==="serial"&&c.createElement(Y,{xs:"12",md:"6"},"Serial ports are bidirectional. Input from the connection is parsed as NMEA0183. Configure Output Events below to connect server's NMEA0183 data for output."),e.value.options.type==="tcpserver"&&c.createElement(Y,{xs:"12",md:"6"},"Accept input from clients connected to the default TCP/10110 NMEA0183 server")),x8(e),(e.value.options.type==="tcp"||e.value.options.type==="gpsd")&&c.createElement("div",null,c.createElement(lu,{value:e.value.options,onChange:e.onChange}),c.createElement(ki,{value:e.value.options,onChange:e.onChange}),c.createElement(Fb,{value:e.value.options,onChange:e.onChange}),c.createElement(Lg,{value:e.value.options,onChange:e.onChange})),c.createElement("div",null,c.createElement(kln,{value:e.value.options,onChange:e.onChange})),e.value.options.type==="udp"&&c.createElement(ki,{value:e.value.options,onChange:e.onChange}),c.createElement(Nln,{value:e.value.options,onChange:e.onChange}),c.createElement(Cln,{value:e.value.options,onChange:e.onChange}),c.createElement(Oln,{value:e.value.options,onChange:e.onChange}),c.createElement(Tln,{value:e.value.options,onChange:e.onChange}),c.createElement(rT,{value:e.value.options,onChange:e.onChange})),qln=e=>c.createElement("div",null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"options.type"},"SignalK Source")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",value:e.value.options.type,name:"options.type",onChange:t=>e.onChange(t),disabled:e.value.options.useDiscovery,helpText:"afoo"},c.createElement("option",null,"Select a source"),c.createElement("option",{value:"serial"},"Serial"),c.createElement("option",{value:"ws"},"WebSocket"),c.createElement("option",{value:"wss"},"WebSocket SSL"),c.createElement("option",{value:"tcp"},"TCP"),c.createElement("option",{value:"udp"},"UDP")))),e.value.options.useDiscovery&&c.createElement("p",{className:"text-danger"},"This connection is deprecated, please delete it and recreate it with the connection automatically discovered at the top of the page."),!e.value.options.useDiscovery&&(e.value.options.type==="ws"||e.value.options.type==="wss"||e.value.options.type==="tcp")&&c.createElement("div",null,c.createElement(lu,{value:e.value.options,onChange:e.onChange}),c.createElement(ki,{value:e.value.options,onChange:e.onChange}),e.value.options.type==="wss"&&c.createElement(xe,{row:!0},c.createElement(Y,{xs:"0",md:"3"},c.createElement(ve,null,"Allow self signed certificates")),c.createElement(Y,{xs:"12",md:"8"},c.createElement("div",{key:name},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:"options.selfsignedcert",name:"options.selfsignedcert",className:"switch-input",onChange:e.onChange,checked:e.value.options.selfsignedcert,disabled:e.value.options.type!=="wss"}),c.createElement("span",{className:"switch-label","data-on":"On","data-off":"Off"}),c.createElement("span",{className:"switch-handle"}))))),(e.value.options.type==="ws"||e.value.options.type==="wss")&&c.createElement("div",null,c.createElement(Eln,{title:"Subscription",name:"options.subscription",rows:"6",value:e.value.options.subscription,onChange:t=>e.onChange(t,"jsonstring"),helpText:"Defaults to all. This can be an array of subscriptions."}))),e.value.options.type==="udp"&&c.createElement(ki,{value:e.value.options,onChange:e.onChange}),x8(e),!e.value.options.useDiscovery&&c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"options.type"},"'self' handling")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",value:e.value.options.selfHandling||"noSelf",name:"options.selfHandling",onChange:t=>e.onChange(t)},c.createElement("option",{value:"useRemoteSelf"},"Map remote 'self' to local 'self'"),c.createElement("option",{value:"manualSelf"},"Manual mapping"),c.createElement("option",{value:"noSelf"},"No 'self' mapping")))),!e.value.options.useDiscovery&&e.value.options.selfHandling==="manualSelf"&&c.createElement(Rln,{value:e.value.options,onChange:e.onChange})),lM=[4,5,6,12,13,16,17,18,19,20,21,22,23,24,25,26,27].map(e=>`0${e}`.slice(-2)),Uln=e=>c.createElement("span",null,c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"options.type"},"GPIO Library")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",value:e.value.options.type||"none",name:"options.type",onChange:t=>e.onChange(t)},c.createElement("option",{value:"none"},"Select a library"),c.createElement("option",{value:"gpiod"},"gpiod"),c.createElement("option",{value:"pigpio"},"pigpio (legacy)")))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"gpio"},"GPIO Pin")),c.createElement(Y,{xs:"12",md:"3"},c.createElement(Ee,{type:"select",name:"options.gpio",id:"gpio",onChange:e.onChange,value:e.value.options.gpio||lM[0]},lM.map(t=>c.createElement("option",{key:t},`GPIO${t}`))))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"3"},c.createElement(ve,{htmlFor:"gpioInvert"},"Invert signal")),c.createElement(Y,{xs:"12",md:"10"},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:"gpioInvert",name:"options.gpioInvert",className:"switch-input",onChange:e.onChange,checked:e.value.options.gpioInvert}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))))),Bln=e=>c.createElement("div",null,c.createElement(Pln,{hasAnalyzer:e.hasAnalyzer,value:e.value,onChange:e.onChange}),c.createElement(hs,{title:"File Name",name:"options.filename",value:e.value.options.filename,onChange:e.onChange})),x8=e=>e.value.options.type==="serial"&&c.createElement("div",null,c.createElement(C8,{value:e.value.options,onChange:e.onChange}),c.createElement(Aln,{value:e.value.options,onChange:e.onChange}),c.createElement(Fb,{value:e.value.options,onChange:e.onChange}));function Vln(e){var t=Hln();return function(){var r=ir(e),s;if(t){var o=ir(this).constructor;s=Reflect.construct(r,arguments,o)}else s=r.apply(this,arguments);return Ji(this,s)}}function Hln(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function uM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function zln(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?uM(Object(n),!0).forEach(function(r){hr(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):uM(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}var fM=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0,r=String(t).toLowerCase(),s=String(n.value).toLowerCase(),o=String(n.label).toLowerCase();return s===r||o===r},Gln={formatCreateLabel:function(t){return'Create "'.concat(t,'"')},isValidNewOption:function(t,n,r){return!(!t||n.some(function(s){return fM(t,s)})||r.some(function(s){return fM(t,s)}))},getNewOptionData:function(t,n){return{label:n,value:t,__isNew__:!0}}},Wln=zln({allowCreateWhileLoading:!1,createOptionPosition:"last"},Gln),Yln=function(t){var n,r;return r=n=(function(s){Ja(a,s);var o=Vln(a);function a(i){var l;Ya(this,a),l=o.call(this,i),l.select=void 0,l.onChange=function(d,p){var g=l.props,m=g.getNewOptionData,y=g.inputValue,$=g.isMulti,E=g.onChange,v=g.onCreateOption,w=g.value,C=g.name;if(p.action!=="select-option")return E(d,p);var N=l.state.newOption,T=Array.isArray(d)?d:[d];if(T[T.length-1]===N){if(v)v(y);else{var j=m(y,y),U={action:"create-option",name:C};E($?[].concat(mg(uv(w)),[j]):j,U)}return}E(d,p)};var f=i.options||[];return l.state={newOption:void 0,options:f},l}return Ka(a,[{key:"UNSAFE_componentWillReceiveProps",value:function(l){var f=l.allowCreateWhileLoading,d=l.createOptionPosition,p=l.formatCreateLabel,g=l.getNewOptionData,m=l.inputValue,y=l.isLoading,$=l.isValidNewOption,E=l.value,v=l.options||[],w=this.state.newOption;$(m,uv(E),v)?w=g(m,p(m)):w=void 0,this.setState({newOption:w,options:(f||!y)&&w?d==="first"?[w].concat(mg(v)):[].concat(mg(v),[w]):v})}},{key:"focus",value:function(){this.select.focus()}},{key:"blur",value:function(){this.select.blur()}},{key:"render",value:function(){var l=this,f=this.state.options;return c.createElement(t,Ie({},this.props,{ref:function(p){l.select=p},options:f,onChange:this.onChange}))}}]),a})(J.Component),n.defaultProps=Wln,r},Kln=Yln(p2),sT=M4(Kln),Uv={exports:{}};Uv.exports;(function(e,t){var n=200,r="Expected a function",s="__lodash_hash_undefined__",o=1,a=2,i=9007199254740991,l="[object Arguments]",f="[object Array]",d="[object Boolean]",p="[object Date]",g="[object Error]",m="[object Function]",y="[object GeneratorFunction]",$="[object Map]",E="[object Number]",v="[object Object]",w="[object Promise]",C="[object RegExp]",N="[object Set]",T="[object String]",j="[object Symbol]",U="[object WeakMap]",te="[object ArrayBuffer]",Q="[object DataView]",oe="[object Float32Array]",fe="[object Float64Array]",le="[object Int8Array]",de="[object Int16Array]",ae="[object Int32Array]",K="[object Uint8Array]",ie="[object Uint8ClampedArray]",ce="[object Uint16Array]",ye="[object Uint32Array]",pe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,V=/^\w*$/,I=/^\./,F=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,k=/[\\^$.*+?()[\]{}|]/g,S=/\\(\\)?/g,P=/^\[object .+?Constructor\]$/,D=/^(?:0|[1-9]\d*)$/,ne={};ne[oe]=ne[fe]=ne[le]=ne[de]=ne[ae]=ne[K]=ne[ie]=ne[ce]=ne[ye]=!0,ne[l]=ne[f]=ne[te]=ne[d]=ne[Q]=ne[p]=ne[g]=ne[m]=ne[$]=ne[E]=ne[v]=ne[C]=ne[N]=ne[T]=ne[U]=!1;var Z=typeof Cn=="object"&&Cn&&Cn.Object===Object&&Cn,Pe=typeof self=="object"&&self&&self.Object===Object&&self,_e=Z||Pe||Function("return this")(),Fe=t&&!t.nodeType&&t,He=Fe&&!0&&e&&!e.nodeType&&e,Ot=He&&He.exports===Fe,Rt=Ot&&Z.process,Xe=(function(){try{return Rt&&Rt.binding("util")}catch{}})(),B=Xe&&Xe.isTypedArray;function O(M,G){for(var he=-1,Se=M?M.length:0;++he<Se;)if(G(M[he],he,M))return!0;return!1}function A(M){return function(G){return G?.[M]}}function H(M,G){for(var he=-1,Se=Array(M);++he<M;)Se[he]=G(he);return Se}function ee(M){return function(G){return M(G)}}function me(M,G){return M?.[G]}function we(M){var G=!1;if(M!=null&&typeof M.toString!="function")try{G=!!(M+"")}catch{}return G}function Ke(M){var G=-1,he=Array(M.size);return M.forEach(function(Se,Ge){he[++G]=[Ge,Se]}),he}function Ae(M,G){return function(he){return M(G(he))}}function ze(M){var G=-1,he=Array(M.size);return M.forEach(function(Se){he[++G]=Se}),he}var Dt=Array.prototype,mt=Function.prototype,Ht=Object.prototype,vr=_e["__core-js_shared__"],es=(function(){var M=/[^.]+$/.exec(vr&&vr.keys&&vr.keys.IE_PROTO||"");return M?"Symbol(src)_1."+M:""})(),ul=mt.toString,ts=Ht.hasOwnProperty,wo=Ht.toString,_f=RegExp("^"+ul.call(ts).replace(k,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),fl=_e.Symbol,dl=_e.Uint8Array,Sf=Ht.propertyIsEnumerable,bp=Dt.splice,Gb=Ae(Object.keys,Object),Cf=Qo(_e,"DataView"),ti=Qo(_e,"Map"),hl=Qo(_e,"Promise"),xf=Qo(_e,"Set"),Tf=Qo(_e,"WeakMap"),Zi=Qo(Object,"create"),Wb=ea(Cf),$p=ea(ti),Yb=ea(hl),Kb=ea(xf),Jb=ea(Tf),ni=fl?fl.prototype:void 0,Of=ni?ni.valueOf:void 0,pl=ni?ni.toString:void 0;function Zo(M){var G=-1,he=M?M.length:0;for(this.clear();++G<he;){var Se=M[G];this.set(Se[0],Se[1])}}function Xb(){this.__data__=Zi?Zi(null):{}}function Zb(M){return this.has(M)&&delete this.__data__[M]}function Qb(M){var G=this.__data__;if(Zi){var he=G[M];return he===s?void 0:he}return ts.call(G,M)?G[M]:void 0}function e$(M){var G=this.__data__;return Zi?G[M]!==void 0:ts.call(G,M)}function t$(M,G){var he=this.__data__;return he[M]=Zi&&G===void 0?s:G,this}Zo.prototype.clear=Xb,Zo.prototype.delete=Zb,Zo.prototype.get=Qb,Zo.prototype.has=e$,Zo.prototype.set=t$;function Bs(M){var G=-1,he=M?M.length:0;for(this.clear();++G<he;){var Se=M[G];this.set(Se[0],Se[1])}}function n$(){this.__data__=[]}function Ep(M){var G=this.__data__,he=Qi(G,M);if(he<0)return!1;var Se=G.length-1;return he==Se?G.pop():bp.call(G,he,1),!0}function r$(M){var G=this.__data__,he=Qi(G,M);return he<0?void 0:G[he][1]}function s$(M){return Qi(this.__data__,M)>-1}function o$(M,G){var he=this.__data__,Se=Qi(he,M);return Se<0?he.push([M,G]):he[Se][1]=G,this}Bs.prototype.clear=n$,Bs.prototype.delete=Ep,Bs.prototype.get=r$,Bs.prototype.has=s$,Bs.prototype.set=o$;function Vs(M){var G=-1,he=M?M.length:0;for(this.clear();++G<he;){var Se=M[G];this.set(Se[0],Se[1])}}function a$(){this.__data__={hash:new Zo,map:new(ti||Bs),string:new Zo}}function i$(M){return ec(this,M).delete(M)}function ml(M){return ec(this,M).get(M)}function c$(M){return ec(this,M).has(M)}function gl(M,G){return ec(this,M).set(M,G),this}Vs.prototype.clear=a$,Vs.prototype.delete=i$,Vs.prototype.get=ml,Vs.prototype.has=c$,Vs.prototype.set=gl;function vl(M){var G=-1,he=M?M.length:0;for(this.__data__=new Vs;++G<he;)this.add(M[G])}function l$(M){return this.__data__.set(M,s),this}function u$(M){return this.__data__.has(M)}vl.prototype.add=vl.prototype.push=l$,vl.prototype.has=u$;function $s(M){this.__data__=new Bs(M)}function wp(){this.__data__=new Bs}function _p(M){return this.__data__.delete(M)}function f$(M){return this.__data__.get(M)}function d$(M){return this.__data__.has(M)}function h$(M,G){var he=this.__data__;if(he instanceof Bs){var Se=he.__data__;if(!ti||Se.length<n-1)return Se.push([M,G]),this;he=this.__data__=new Vs(Se)}return he.set(M,G),this}$s.prototype.clear=wp,$s.prototype.delete=_p,$s.prototype.get=f$,$s.prototype.has=d$,$s.prototype.set=h$;function p$(M,G){var he=ta(M)||kp(M)?H(M.length,String):[],Se=he.length,Ge=!!Se;for(var De in M)ts.call(M,De)&&!(Ge&&(De=="length"||Df(De,Se)))&&he.push(De);return he}function Qi(M,G){for(var he=M.length;he--;)if(Rp(M[he][0],G))return he;return-1}function yl(M,G){G=si(G,M)?[G]:$l(G);for(var he=0,Se=G.length;M!=null&&he<Se;)M=M[oi(G[he++])];return he&&he==Se?M:void 0}function Sp(M){return wo.call(M)}function Nf(M,G){return M!=null&&G in Object(M)}function Pf(M,G,he,Se,Ge){return M===G?!0:M==null||G==null||!_l(M)&&!Nn(G)?M!==M&&G!==G:Cp(M,G,Pf,he,Se,Ge)}function Cp(M,G,he,Se,Ge,De){var gt=ta(M),Tn=ta(G),en=f,Rn=f;gt||(en=_o(M),en=en==l?v:en),Tn||(Rn=_o(G),Rn=Rn==l?v:Rn);var nr=en==v&&!we(M),St=Rn==v&&!we(G),_n=en==Rn;if(_n&&!nr)return De||(De=new $s),gt||na(M)?kf(M,G,he,Se,Ge,De):v$(M,G,en,he,Se,Ge,De);if(!(Ge&a)){var yr=nr&&ts.call(M,"__wrapped__"),jr=St&&ts.call(G,"__wrapped__");if(yr||jr){var Es=yr?M.value():M,Hs=jr?G.value():G;return De||(De=new $s),he(Es,Hs,Se,Ge,De)}}return _n?(De||(De=new $s),Pp(M,G,he,Se,Ge,De)):!1}function bl(M,G,he,Se){var Ge=he.length,De=Ge;if(M==null)return!De;for(M=Object(M);Ge--;){var gt=he[Ge];if(gt[2]?gt[1]!==M[gt[0]]:!(gt[0]in M))return!1}for(;++Ge<De;){gt=he[Ge];var Tn=gt[0],en=M[Tn],Rn=gt[1];if(gt[2]){if(en===void 0&&!(Tn in M))return!1}else{var nr=new $s,St;if(!(St===void 0?Pf(Rn,en,Se,o|a,nr):St))return!1}}return!0}function xp(M){if(!_l(M)||$$(M))return!1;var G=Mp(M)||we(M)?_f:P;return G.test(ea(M))}function m$(M){return Nn(M)&&wl(M.length)&&!!ne[wo.call(M)]}function Tp(M){return typeof M=="function"?M:M==null?Fp:typeof M=="object"?ta(M)?g$(M[0],M[1]):Af(M):jp(M)}function Op(M){if(!E$(M))return Gb(M);var G=[];for(var he in Object(M))ts.call(M,he)&&he!="constructor"&&G.push(he);return G}function Af(M){var G=Ap(M);return G.length==1&&G[0][2]?El(G[0][0],G[0][1]):function(he){return he===M||bl(he,M,G)}}function g$(M,G){return si(M)&&Ip(G)?El(oi(M),G):function(he){var Se=Mf(he,M);return Se===void 0&&Se===G?Fr(he,M):Pf(G,Se,void 0,o|a)}}function Np(M){return function(G){return yl(G,M)}}function If(M,G){for(var he=M?G.length:0,Se=he-1;he--;){var Ge=G[he];if(he==Se||Ge!==De){var De=Ge;if(Df(Ge))bp.call(M,Ge,1);else if(si(Ge,M))delete M[oi(Ge)];else{var gt=$l(Ge),Tn=w$(M,gt);Tn!=null&&delete Tn[oi(S$(gt))]}}}return M}function Rf(M,G,he){var Se=-1,Ge=M.length;G<0&&(G=-G>Ge?0:Ge+G),he=he>Ge?Ge:he,he<0&&(he+=Ge),Ge=G>he?0:he-G>>>0,G>>>=0;for(var De=Array(Ge);++Se<Ge;)De[Se]=M[Se+G];return De}function ri(M){if(typeof M=="string")return M;if(tc(M))return pl?pl.call(M):"";var G=M+"";return G=="0"&&1/M==-1/0?"-0":G}function $l(M){return ta(M)?M:_$(M)}function kf(M,G,he,Se,Ge,De){var gt=Ge&a,Tn=M.length,en=G.length;if(Tn!=en&&!(gt&&en>Tn))return!1;var Rn=De.get(M);if(Rn&&De.get(G))return Rn==G;var nr=-1,St=!0,_n=Ge&o?new vl:void 0;for(De.set(M,G),De.set(G,M);++nr<Tn;){var yr=M[nr],jr=G[nr];if(Se)var Es=gt?Se(jr,yr,nr,G,M,De):Se(yr,jr,nr,M,G,De);if(Es!==void 0){if(Es)continue;St=!1;break}if(_n){if(!O(G,function(Hs,ra){if(!_n.has(ra)&&(yr===Hs||he(yr,Hs,Se,Ge,De)))return _n.add(ra)})){St=!1;break}}else if(!(yr===jr||he(yr,jr,Se,Ge,De))){St=!1;break}}return De.delete(M),De.delete(G),St}function v$(M,G,he,Se,Ge,De,gt){switch(he){case Q:if(M.byteLength!=G.byteLength||M.byteOffset!=G.byteOffset)return!1;M=M.buffer,G=G.buffer;case te:return!(M.byteLength!=G.byteLength||!Se(new dl(M),new dl(G)));case d:case p:case E:return Rp(+M,+G);case g:return M.name==G.name&&M.message==G.message;case C:case T:return M==G+"";case $:var Tn=Ke;case N:var en=De&a;if(Tn||(Tn=ze),M.size!=G.size&&!en)return!1;var Rn=gt.get(M);if(Rn)return Rn==G;De|=o,gt.set(M,G);var nr=kf(Tn(M),Tn(G),Se,Ge,De,gt);return gt.delete(M),nr;case j:if(Of)return Of.call(M)==Of.call(G)}return!1}function Pp(M,G,he,Se,Ge,De){var gt=Ge&a,Tn=Sl(M),en=Tn.length,Rn=Sl(G),nr=Rn.length;if(en!=nr&&!gt)return!1;for(var St=en;St--;){var _n=Tn[St];if(!(gt?_n in G:ts.call(G,_n)))return!1}var yr=De.get(M);if(yr&&De.get(G))return yr==G;var jr=!0;De.set(M,G),De.set(G,M);for(var Es=gt;++St<en;){_n=Tn[St];var Hs=M[_n],ra=G[_n];if(Se)var qp=gt?Se(ra,Hs,_n,G,M,De):Se(Hs,ra,_n,M,G,De);if(!(qp===void 0?Hs===ra||he(Hs,ra,Se,Ge,De):qp)){jr=!1;break}Es||(Es=_n=="constructor")}if(jr&&!Es){var nc=M.constructor,sa=G.constructor;nc!=sa&&"constructor"in M&&"constructor"in G&&!(typeof nc=="function"&&nc instanceof nc&&typeof sa=="function"&&sa instanceof sa)&&(jr=!1)}return De.delete(M),De.delete(G),jr}function ec(M,G){var he=M.__data__;return b$(G)?he[typeof G=="string"?"string":"hash"]:he.map}function Ap(M){for(var G=Sl(M),he=G.length;he--;){var Se=G[he],Ge=M[Se];G[he]=[Se,Ge,Ip(Ge)]}return G}function Qo(M,G){var he=me(M,G);return xp(he)?he:void 0}var _o=Sp;(Cf&&_o(new Cf(new ArrayBuffer(1)))!=Q||ti&&_o(new ti)!=$||hl&&_o(hl.resolve())!=w||xf&&_o(new xf)!=N||Tf&&_o(new Tf)!=U)&&(_o=function(M){var G=wo.call(M),he=G==v?M.constructor:void 0,Se=he?ea(he):void 0;if(Se)switch(Se){case Wb:return Q;case $p:return $;case Yb:return w;case Kb:return N;case Jb:return U}return G});function y$(M,G,he){G=si(G,M)?[G]:$l(G);for(var Se,Ge=-1,gt=G.length;++Ge<gt;){var De=oi(G[Ge]);if(!(Se=M!=null&&he(M,De)))break;M=M[De]}if(Se)return Se;var gt=M?M.length:0;return!!gt&&wl(gt)&&Df(De,gt)&&(ta(M)||kp(M))}function Df(M,G){return G=G??i,!!G&&(typeof M=="number"||D.test(M))&&M>-1&&M%1==0&&M<G}function si(M,G){if(ta(M))return!1;var he=typeof M;return he=="number"||he=="symbol"||he=="boolean"||M==null||tc(M)?!0:V.test(M)||!pe.test(M)||G!=null&&M in Object(G)}function b$(M){var G=typeof M;return G=="string"||G=="number"||G=="symbol"||G=="boolean"?M!=="__proto__":M===null}function $$(M){return!!es&&es in M}function E$(M){var G=M&&M.constructor,he=typeof G=="function"&&G.prototype||Ht;return M===he}function Ip(M){return M===M&&!_l(M)}function El(M,G){return function(he){return he==null?!1:he[M]===G&&(G!==void 0||M in Object(he))}}function w$(M,G){return G.length==1?M:yl(M,Rf(G,0,-1))}var _$=Wt(function(M){M=Lp(M);var G=[];return I.test(M)&&G.push(""),M.replace(F,function(he,Se,Ge,De){G.push(Ge?De.replace(S,"$1"):Se||he)}),G});function oi(M){if(typeof M=="string"||tc(M))return M;var G=M+"";return G=="0"&&1/M==-1/0?"-0":G}function ea(M){if(M!=null){try{return ul.call(M)}catch{}try{return M+""}catch{}}return""}function S$(M){var G=M?M.length:0;return G?M[G-1]:void 0}function rn(M,G){var he=[];if(!(M&&M.length))return he;var Se=-1,Ge=[],De=M.length;for(G=Tp(G);++Se<De;){var gt=M[Se];G(gt,Se,M)&&(he.push(gt),Ge.push(Se))}return If(M,Ge),he}function Wt(M,G){if(typeof M!="function"||G&&typeof G!="function")throw new TypeError(r);var he=function(){var Se=arguments,Ge=G?G.apply(this,Se):Se[0],De=he.cache;if(De.has(Ge))return De.get(Ge);var gt=M.apply(this,Se);return he.cache=De.set(Ge,gt),gt};return he.cache=new(Wt.Cache||Vs),he}Wt.Cache=Vs;function Rp(M,G){return M===G||M!==M&&G!==G}function kp(M){return C$(M)&&ts.call(M,"callee")&&(!Sf.call(M,"callee")||wo.call(M)==l)}var ta=Array.isArray;function Dp(M){return M!=null&&wl(M.length)&&!Mp(M)}function C$(M){return Nn(M)&&Dp(M)}function Mp(M){var G=_l(M)?wo.call(M):"";return G==m||G==y}function wl(M){return typeof M=="number"&&M>-1&&M%1==0&&M<=i}function _l(M){var G=typeof M;return!!M&&(G=="object"||G=="function")}function Nn(M){return!!M&&typeof M=="object"}function tc(M){return typeof M=="symbol"||Nn(M)&&wo.call(M)==j}var na=B?ee(B):m$;function Lp(M){return M==null?"":ri(M)}function Mf(M,G,he){var Se=M==null?void 0:yl(M,G);return Se===void 0?he:Se}function Fr(M,G){return M!=null&&y$(M,G,Nf)}function Sl(M){return Dp(M)?p$(M):Op(M)}function Fp(M){return M}function jp(M){return si(M)?A(oi(M)):Np(M)}e.exports=rn})(Uv,Uv.exports);var Jln=Uv.exports;const r_=xn(Jln);var Xln=200,oT="__lodash_hash_undefined__",Zln=1/0,Qln="[object Function]",eun="[object GeneratorFunction]",tun=/[\\^$.*+?()[\]{}|]/g,nun=/^\[object .+?Constructor\]$/,run=typeof Cn=="object"&&Cn&&Cn.Object===Object&&Cn,sun=typeof self=="object"&&self&&self.Object===Object&&self,aT=run||sun||Function("return this")();function oun(e,t){var n=e?e.length:0;return!!n&&iun(e,t,0)>-1}function aun(e,t,n,r){for(var s=e.length,o=n+-1;++o<s;)if(t(e[o],o,e))return o;return-1}function iun(e,t,n){if(t!==t)return aun(e,cun,n);for(var r=n-1,s=e.length;++r<s;)if(e[r]===t)return r;return-1}function cun(e){return e!==e}function lun(e,t){return e.has(t)}function uun(e,t){return e?.[t]}function fun(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}function T8(e){var t=-1,n=Array(e.size);return e.forEach(function(r){n[++t]=r}),n}var dun=Array.prototype,hun=Function.prototype,O8=Object.prototype,lE=aT["__core-js_shared__"],dM=(function(){var e=/[^.]+$/.exec(lE&&lE.keys&&lE.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})(),N8=hun.toString,iT=O8.hasOwnProperty,pun=O8.toString,mun=RegExp("^"+N8.call(iT).replace(tun,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),gun=dun.splice,vun=cT(aT,"Map"),uE=cT(aT,"Set"),vh=cT(Object,"create");function Vc(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function yun(){this.__data__=vh?vh(null):{}}function bun(e){return this.has(e)&&delete this.__data__[e]}function $un(e){var t=this.__data__;if(vh){var n=t[e];return n===oT?void 0:n}return iT.call(t,e)?t[e]:void 0}function Eun(e){var t=this.__data__;return vh?t[e]!==void 0:iT.call(t,e)}function wun(e,t){var n=this.__data__;return n[e]=vh&&t===void 0?oT:t,this}Vc.prototype.clear=yun;Vc.prototype.delete=bun;Vc.prototype.get=$un;Vc.prototype.has=Eun;Vc.prototype.set=wun;function $f(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function _un(){this.__data__=[]}function Sun(e){var t=this.__data__,n=jb(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():gun.call(t,n,1),!0}function Cun(e){var t=this.__data__,n=jb(t,e);return n<0?void 0:t[n][1]}function xun(e){return jb(this.__data__,e)>-1}function Tun(e,t){var n=this.__data__,r=jb(n,e);return r<0?n.push([e,t]):n[r][1]=t,this}$f.prototype.clear=_un;$f.prototype.delete=Sun;$f.prototype.get=Cun;$f.prototype.has=xun;$f.prototype.set=Tun;function Ef(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Oun(){this.__data__={hash:new Vc,map:new(vun||$f),string:new Vc}}function Nun(e){return qb(this,e).delete(e)}function Pun(e){return qb(this,e).get(e)}function Aun(e){return qb(this,e).has(e)}function Iun(e,t){return qb(this,e).set(e,t),this}Ef.prototype.clear=Oun;Ef.prototype.delete=Nun;Ef.prototype.get=Pun;Ef.prototype.has=Aun;Ef.prototype.set=Iun;function Bv(e){var t=-1,n=e?e.length:0;for(this.__data__=new Ef;++t<n;)this.add(e[t])}function Run(e){return this.__data__.set(e,oT),this}function kun(e){return this.__data__.has(e)}Bv.prototype.add=Bv.prototype.push=Run;Bv.prototype.has=kun;function jb(e,t){for(var n=e.length;n--;)if(Bun(e[n][0],t))return n;return-1}function Dun(e){if(!P8(e)||jun(e))return!1;var t=Vun(e)||fun(e)?mun:nun;return t.test(qun(e))}function Mun(e,t,n){var r=-1,s=oun,o=e.length,a=!0,i=[],l=i;if(o>=Xln){var f=Lun(e);if(f)return T8(f);a=!1,s=lun,l=new Bv}else l=i;e:for(;++r<o;){var d=e[r],p=d;if(d=d!==0?d:0,a&&p===p){for(var g=l.length;g--;)if(l[g]===p)continue e;i.push(d)}else s(l,p,n)||(l!==i&&l.push(p),i.push(d))}return i}var Lun=uE&&1/T8(new uE([,-0]))[1]==Zln?function(e){return new uE(e)}:Hun;function qb(e,t){var n=e.__data__;return Fun(t)?n[typeof t=="string"?"string":"hash"]:n.map}function cT(e,t){var n=uun(e,t);return Dun(n)?n:void 0}function Fun(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function jun(e){return!!dM&&dM in e}function qun(e){if(e!=null){try{return N8.call(e)}catch{}try{return e+""}catch{}}return""}function Uun(e){return e&&e.length?Mun(e):[]}function Bun(e,t){return e===t||e!==e&&t!==t}function Vun(e){var t=P8(e)?pun.call(e):"";return t==Qln||t==eun}function P8(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function Hun(){}var zun=Uun;const Gun=xn(zun),s_="SOURCEPRIOS_PPRIO_CHANGED",A8="SOURCEPRIOS_PRIO_DELETED",o_="SOURCEPRIOS_PRIO_MOVED",I8="SOURCEPRIOS_PATH_CHANGED",R8="SOURCEPRIOS_PATH_DELETED",k8="SOURCEPRIOS_SAVING",D8="SOURCEPRIOS_SAVED",M8="SOURCEPRIOS_SAVE_FAILED",L8="SOURCEPRIOS_SAVE_FAILED_OVER";function hM(e){return e.reduce((t,n,r)=>{const{timeout:s}=n;if(!t)return t;if(r===0)return!0;const o=Number(s);return Number.isNaN(o)||o<=0?!1:r===1?!0:o>Number(e[r-1].timeout)},!0)}const Wun=(e,t)=>{const n=JSON.parse(JSON.stringify(e.sourcePriorities));let r={...e.saveState};const{path:s,index:o,pathIndex:a,sourceRef:i,timeout:l,change:f}=t.data||{},d=a!==void 0?n[a].priorities:void 0;switch(t.type){case I8:o===n.length&&n.push({path:"",priorities:[]}),n[o].path=s,r.dirty=!0;break;case R8:r_(n,(g,m)=>m===o),r.dirty=!0;break;case s_:a===n.length&&n.push({path:"",priorities:[]}),o===d.length&&d.push({sourceRef:"",timeout:""}),d[o]={sourceRef:i,timeout:l},r.dirty=!0,r.timeoutsOk=hM(d);break;case A8:r_(d,(g,m)=>m===o),r.dirty=!0;break;case o_:const p=d[o];d[o]=d[o+f],d[o+f]=p,r.dirty=!0,r.timeoutsOk=hM(d);break;case k8:r={...r,isSaving:!0,saveFailed:!1};break;case D8:r={...r,dirty:!1,isSaving:!1,saveFailed:!1};break;case M8:r={...r,isSaving:!1,saveFailed:!0};break;case L8:r={...r,saveFailed:!1};break;default:return e}return{sourcePriorities:n,saveState:r}};function pM(e,t){fetch(`/signalk/v1/api/vessels/self/${e.replace(/\./g,"/")}`,{credentials:"include"}).then(n=>n.json()).then(n=>{let r=[n.$source];return n.values&&(r=r.concat(Object.keys(n.values))),Gun(r)}).then(t)}class Yun extends J.Component{constructor(t){super(t),this.state={isOpen:!1,sourceRefs:[]},pM(this.props.path,n=>{this.setState({sourceRefs:n})})}componentDidUpdate(t){this.props.path!==t.path&&pM(this.props.path,n=>{this.setState({sourceRefs:n})})}render(){const t=()=>this.setState(n=>({isOpen:!n.isOpen}));return c.createElement("div",null,!this.state.isOpen&&c.createElement("div",{onClick:t},"..."),c.createElement(uy,{isOpen:this.state.isOpen},c.createElement(Jr,null,c.createElement("thead",{onClick:t},c.createElement("tr",null,c.createElement("td",{style:{width:"30px"}},"#"),c.createElement("td",null,"Source Reference (see DataBrowser for details)"),c.createElement("td",{style:{width:"120px"}},"Timeout (ms)"),c.createElement("td",{style:{Width:"80px"}},"Order"),c.createElement("td",null))),c.createElement("tbody",null,[...this.props.priorities,{sourceRef:"",timeout:""}].map(({sourceRef:n,timeout:r},s)=>{const o=this.state.sourceRefs.map(a=>({label:a,value:a}));return c.createElement("tr",{key:s},c.createElement("td",null,s+1,"."),c.createElement("td",null,c.createElement(sT,{menuPortalTarget:document.body,options:o,value:{value:n,label:n},onChange:a=>{this.props.dispatch({type:s_,data:{pathIndex:this.props.pathIndex,sourceRef:a.value,timeout:r,index:s}})}})),c.createElement("td",null,s>0&&c.createElement(Ee,{type:"number",name:"timeout",onChange:a=>this.props.dispatch({type:s_,data:{pathIndex:this.props.pathIndex,sourceRef:n,timeout:a.target.value,index:s}}),value:r})),c.createElement("td",null,s>0&&s<this.props.priorities.length&&c.createElement("button",{onClick:()=>!this.props.isSaving&&this.props.dispatch({type:o_,data:{pathIndex:this.props.pathIndex,index:s,change:-1}})},c.createElement("i",{className:"fas fa-arrow-up"})),s<this.props.priorities.length-1&&c.createElement("button",{onClick:()=>!this.props.isSaving&&this.props.dispatch({type:o_,data:{pathIndex:this.props.pathIndex,index:s,change:1}})},c.createElement("i",{className:"fas fa-arrow-down"}))),c.createElement("td",null,s<this.props.priorities.length&&c.createElement("i",{className:"fas fa-trash",onClick:()=>!this.props.isSaving&&this.props.dispatch({type:A8,data:{pathIndex:this.props.pathIndex,index:s}})})))})))))}}const Kun=e=>t=>{t({type:k8}),fetch(`${window.serverRoutesPrefix}/sourcePriorities`,{method:"PUT",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(e.reduce((n,r)=>(n[r.path]=r.priorities,n),{}))}).then(n=>{if(n.status===200)t({type:D8});else throw new Error}).catch(()=>{t({type:M8}),setTimeout(()=>t({type:L8}),5*1e3)})};function Jun(e){fetch(`${window.serverRoutesPrefix}/availablePaths`,{credentials:"include"}).then(t=>t.json()).then(e)}class Xun extends J.Component{constructor(t){super(t),this.state={availablePaths:[]},Jun(n=>{this.setState({availablePaths:n.map(r=>({value:r,label:r}))})})}render(){const t=[].concat(this.props.sourcePriorities);return t.push({path:"",priorities:[]}),c.createElement(ft,null,c.createElement(xt,null,"Source Priorities Settings"),c.createElement(pt,null,c.createElement(Rc,null,c.createElement("p",null,"Use Source Priorities to filter incoming data so that data from lower priority sources is discarded when there is fresh data from some higher priority source."),c.createElement("p",null,"Incoming data is not handled if the"," ",c.createElement("b",null,"latest value for a path is from a higher priority source and it is not older than the timeout")," ","specified for the source of the incoming data. Timeout for data from unlisted sources is 10 seconds."),c.createElement("p",null,"You can debug the settings by saving them and activating debug key"," ",c.createElement("b",null,"signalk-server:sourcepriorities")," in"," ",c.createElement("a",{href:"./#/serverConfiguration/log"},"Server Log"))),c.createElement(Jr,{responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",{style:{width:"40%"}},"Path"),c.createElement("th",null,"Priorities"),c.createElement("th",null))),c.createElement("tbody",null,t.map(({path:n,priorities:r},s)=>c.createElement("tr",{key:s},c.createElement("td",null,c.createElement(sT,{menuPortalTarget:document.body,options:this.state.availablePaths,value:{value:n,label:n},onChange:o=>{this.props.dispatch({type:I8,data:{path:o.value,index:s}})}})),c.createElement("td",null,c.createElement(Yun,{key:n,path:n,priorities:r,dispatch:this.props.dispatch,isSaving:this.props.saveState.isSaving,pathIndex:s})),c.createElement("td",{style:{border:"none"}},s<this.props.sourcePriorities.length&&c.createElement("i",{className:"fas fa-trash",onClick:()=>this.props.dispatch({type:R8,data:{index:s}})}))))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",disabled:!this.props.saveState.dirty||this.props.saveState.isSaving||!this.props.saveState.timeoutsOk,onClick:n=>{n.preventDefault(),this.props.dispatch(Kun(this.props.sourcePriorities))}},c.createElement("i",{className:"fa fa-save"})," Save"),this.props.saveState.saveFailed&&"Saving priorities settings failed!",!this.props.saveState.timeoutsOk&&c.createElement("span",{style:{paddingLeft:"10px"}},c.createElement(Sr,{color:"danger"},"Error"),"The timeout values need to be numbers in ascending order, please fix.")))}}const Zun=({sourcePrioritiesData:e})=>({sourcePriorities:e.sourcePriorities,saveState:e.saveState}),Qun=tn(Zun)(Xun);var efn="Expected a function",F8="__lodash_hash_undefined__",tfn=9007199254740991,nfn="[object Function]",rfn="[object GeneratorFunction]",sfn="[object Symbol]",ofn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,afn=/^\w*$/,ifn=/^\./,cfn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,lfn=/[\\^$.*+?()[\]{}|]/g,ufn=/\\(\\)?/g,ffn=/^\[object .+?Constructor\]$/,dfn=/^(?:0|[1-9]\d*)$/,hfn=typeof Cn=="object"&&Cn&&Cn.Object===Object&&Cn,pfn=typeof self=="object"&&self&&self.Object===Object&&self,lT=hfn||pfn||Function("return this")();function mfn(e,t){return e?.[t]}function gfn(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}var vfn=Array.prototype,yfn=Function.prototype,j8=Object.prototype,fE=lT["__core-js_shared__"],mM=(function(){var e=/[^.]+$/.exec(fE&&fE.keys&&fE.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})(),q8=yfn.toString,Ub=j8.hasOwnProperty,U8=j8.toString,bfn=RegExp("^"+q8.call(Ub).replace(lfn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),gM=lT.Symbol,$fn=vfn.splice,Efn=B8(lT,"Map"),yh=B8(Object,"create"),vM=gM?gM.prototype:void 0,yM=vM?vM.toString:void 0;function Hc(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function wfn(){this.__data__=yh?yh(null):{}}function _fn(e){return this.has(e)&&delete this.__data__[e]}function Sfn(e){var t=this.__data__;if(yh){var n=t[e];return n===F8?void 0:n}return Ub.call(t,e)?t[e]:void 0}function Cfn(e){var t=this.__data__;return yh?t[e]!==void 0:Ub.call(t,e)}function xfn(e,t){var n=this.__data__;return n[e]=yh&&t===void 0?F8:t,this}Hc.prototype.clear=wfn;Hc.prototype.delete=_fn;Hc.prototype.get=Sfn;Hc.prototype.has=Cfn;Hc.prototype.set=xfn;function wf(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Tfn(){this.__data__=[]}function Ofn(e){var t=this.__data__,n=Bb(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():$fn.call(t,n,1),!0}function Nfn(e){var t=this.__data__,n=Bb(t,e);return n<0?void 0:t[n][1]}function Pfn(e){return Bb(this.__data__,e)>-1}function Afn(e,t){var n=this.__data__,r=Bb(n,e);return r<0?n.push([e,t]):n[r][1]=t,this}wf.prototype.clear=Tfn;wf.prototype.delete=Ofn;wf.prototype.get=Nfn;wf.prototype.has=Pfn;wf.prototype.set=Afn;function ll(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Ifn(){this.__data__={hash:new Hc,map:new(Efn||wf),string:new Hc}}function Rfn(e){return Vb(this,e).delete(e)}function kfn(e){return Vb(this,e).get(e)}function Dfn(e){return Vb(this,e).has(e)}function Mfn(e,t){return Vb(this,e).set(e,t),this}ll.prototype.clear=Ifn;ll.prototype.delete=Rfn;ll.prototype.get=kfn;ll.prototype.has=Dfn;ll.prototype.set=Mfn;function Lfn(e,t,n){var r=e[t];(!(Ub.call(e,t)&&V8(r,n))||n===void 0&&!(t in e))&&(e[t]=n)}function Bb(e,t){for(var n=e.length;n--;)if(V8(e[n][0],t))return n;return-1}function Ffn(e){if(!Vv(e)||zfn(e))return!1;var t=Kfn(e)||gfn(e)?bfn:ffn;return t.test(Yfn(e))}function jfn(e,t,n,r){if(!Vv(e))return e;t=Vfn(t,e)?[t]:Ufn(t);for(var s=-1,o=t.length,a=o-1,i=e;i!=null&&++s<o;){var l=Wfn(t[s]),f=n;if(s!=a){var d=i[l];f=void 0,f===void 0&&(f=Vv(d)?d:Bfn(t[s+1])?[]:{})}Lfn(i,l,f),i=i[l]}return e}function qfn(e){if(typeof e=="string")return e;if(fT(e))return yM?yM.call(e):"";var t=e+"";return t=="0"&&1/e==-1/0?"-0":t}function Ufn(e){return H8(e)?e:Gfn(e)}function Vb(e,t){var n=e.__data__;return Hfn(t)?n[typeof t=="string"?"string":"hash"]:n.map}function B8(e,t){var n=mfn(e,t);return Ffn(n)?n:void 0}function Bfn(e,t){return t=t??tfn,!!t&&(typeof e=="number"||dfn.test(e))&&e>-1&&e%1==0&&e<t}function Vfn(e,t){if(H8(e))return!1;var n=typeof e;return n=="number"||n=="symbol"||n=="boolean"||e==null||fT(e)?!0:afn.test(e)||!ofn.test(e)||t!=null&&e in Object(t)}function Hfn(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function zfn(e){return!!mM&&mM in e}var Gfn=uT(function(e){e=Xfn(e);var t=[];return ifn.test(e)&&t.push(""),e.replace(cfn,function(n,r,s,o){t.push(s?o.replace(ufn,"$1"):r||n)}),t});function Wfn(e){if(typeof e=="string"||fT(e))return e;var t=e+"";return t=="0"&&1/e==-1/0?"-0":t}function Yfn(e){if(e!=null){try{return q8.call(e)}catch{}try{return e+""}catch{}}return""}function uT(e,t){if(typeof e!="function"||t&&typeof t!="function")throw new TypeError(efn);var n=function(){var r=arguments,s=t?t.apply(this,r):r[0],o=n.cache;if(o.has(s))return o.get(s);var a=e.apply(this,r);return n.cache=o.set(s,a),a};return n.cache=new(uT.Cache||ll),n}uT.Cache=ll;function V8(e,t){return e===t||e!==e&&t!==t}var H8=Array.isArray;function Kfn(e){var t=Vv(e)?U8.call(e):"";return t==nfn||t==rfn}function Vv(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function Jfn(e){return!!e&&typeof e=="object"}function fT(e){return typeof e=="symbol"||Jfn(e)&&U8.call(e)==sfn}function Xfn(e){return e==null?"":qfn(e)}function Zfn(e,t,n){return e==null?e:jfn(e,t,n)}var Qfn=Zfn;const edn=xn(Qfn);function tdn(){fetch(`${window.serverRoutesPrefix}/providers`,{credentials:"include"}).then(e=>e.json()).then(e=>{let t,n;this.state.selectedProviderId&&(t=e.find(r=>r.id===this.state.selectedProviderId),n=e.findIndex(r=>r.id===this.state.selectedProviderId)),t&&(t.originalId=t.id),this.setState({providers:e,selectedProvider:t?JSON.parse(JSON.stringify(t)):void 0,selectedIndex:n})})}function ndn(){fetch(`${window.serverRoutesPrefix}/runDiscovery`,{method:"PUT",credentials:"include"})}class rdn extends J.Component{constructor(t){super(t),this.state={activeTab:"1",providers:[],selectedProviderId:this.props.match.params.providerId},this.fetchProviders=tdn.bind(this),this.runDiscovery=ndn.bind(this),this.handleProviderChange=this.handleProviderChange.bind(this),this.handleProviderPropChange=this.handleProviderChange.bind(this),this.handleAddProvider=this.handleAddProvider.bind(this),this.handleCancel=this.handleCancel.bind(this),this.toggle=this.toggle.bind(this),this.handleApply=this.handleApply.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleDelete=this.handleDelete.bind(this)}componentDidMount(){this.fetchProviders(),this.runDiscovery()}handleProviderChange(t,n){var r=t.target.type==="checkbox"?t.target.checked:t.target.value;n==="number"&&(r=Number(r)),edn(this.state.selectedProvider,t.target.name,r),this.setState({selectedProvider:this.state.selectedProvider})}handleProviderPropChange(){this.setState({selectedProvider:this.state.selectedProvider})}handleAddProvider(){var t={type:"NMEA2000",logging:!1,isNew:!0,id:"",enabled:!0,options:{},editable:!0};this.setState({selectedProvider:JSON.parse(JSON.stringify(t)),selectedIndex:this.state.providers.length-1},()=>{this.refs.selectedProvider.scrollIntoView()})}handleApply(){var t=this.state.selectedProvider.isNew,n=this.state.selectedProvider.wasDiscovered;delete this.state.selectedProvider.json;var r=this.state.selectedProvider.originalId;fetch(`${window.serverRoutesPrefix}/providers/${r&&!t?r:""}`,{method:t?"POST":"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.state.selectedProvider),credentials:"include"}).then(s=>{if(s.ok){var o=JSON.parse(JSON.stringify(this.state.selectedProvider));delete o.isNew,delete o.wasDiscovered,delete this.state.selectedProvider.isNew,t?this.state.providers.push(o):this.state.providers[this.state.selectedIndex]=o,n&&this.props.discoveredProviders.splice(this.state.selectedIndex,1),this.setState({providers:this.state.providers,selectedProvider:null,selectedIndex:-1},()=>{this.props.history.push("/serverConfiguration/connections/-")})}return s.text()}).then(s=>{alert(s)})}handleCancel(){this.setState({selectedProvider:null})}handleDelete(){fetch(`${window.serverRoutesPrefix}/providers/${this.state.selectedProvider.id}`,{method:"DELETE",headers:{"Content-Type":"application/json"},credentials:"include"}).then(t=>t.text()).then(t=>{this.state.providers.splice(this.state.selectedIndex,1),this.setState({providers:this.state.providers,selectedProvider:null,selectedIndex:-1}),alert(t)})}providerClicked(t,n){this.setState({selectedProvider:{...JSON.parse(JSON.stringify(t)),originalId:t.id},selectedIndex:n},()=>{this.refs.selectedProvider.scrollIntoView()})}toggle(t){this.state.activeTab!==t&&this.setState({activeTab:t})}render(){return c.createElement("div",{className:"animated fadeIn"},this.props.discoveredProviders&&this.props.discoveredProviders.length>0&&c.createElement(ft,null,c.createElement(xt,null,"Discovered Connections"),c.createElement(pt,null,c.createElement(Jr,{hover:!0,responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",null,"ID"),c.createElement("th",null,"Data Type"),c.createElement("th",null,"Enabled"),c.createElement("th",null,"Data Logging"))),c.createElement("tbody",null,(this.props.discoveredProviders||[]).map((t,n)=>c.createElement("tr",{onClick:this.providerClicked.bind(this,t,n),key:t.id},c.createElement("td",null,t.id),c.createElement("td",null,c.createElement(bM,{provider:t})),c.createElement("td",null,c.createElement(ug,{applicable:t.editable,toggle:t.enabled})),c.createElement("td",null,c.createElement(ug,{applicable:t.editable,toggle:t.logging})))))))),c.createElement(ft,null,c.createElement(xt,null,"Connections"),c.createElement(pt,null,c.createElement(Jr,{hover:!0,responsive:!0,bordered:!0,striped:!0,size:"sm"},c.createElement("thead",null,c.createElement("tr",null,c.createElement("th",null,"ID"),c.createElement("th",null,"Data Type"),c.createElement("th",null,"Enabled"),c.createElement("th",null,"Data Logging"))),c.createElement("tbody",null,(this.state.providers||[]).map((t,n)=>c.createElement("tr",{onClick:this.providerClicked.bind(this,t,n),key:t.id},c.createElement("td",null,t.id),c.createElement("td",null,c.createElement(bM,{provider:t})),c.createElement("td",null,c.createElement(ug,{applicable:t.editable,toggle:t.enabled})),c.createElement("td",null,c.createElement(ug,{applicable:t.editable,toggle:t.logging}))))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",onClick:this.handleAddProvider},c.createElement("i",{className:"fa fa-plus-circle"})," Add"))),this.state.selectedProvider&&c.createElement("div",{ref:"selectedProvider",style:{scrollMarginTop:"54px"}},c.createElement(ft,null,c.createElement(pt,null,this.state.selectedProvider.editable?c.createElement($ln,{value:this.state.selectedProvider,onChange:this.handleProviderChange,onPropChange:this.handleProviderPropChange}):c.createElement(Ee,{type:"textarea",name:"json",id:"json",rows:"20",value:this.state.selectedProvider.json,readOnly:"true"})),c.createElement(tr,null,this.state.selectedProvider.editable?c.createElement(cn,null,c.createElement(Y,{xs:"4",md:"1"},c.createElement(it,{size:"sm",color:"primary",onClick:this.handleApply},c.createElement("i",{className:"fa fa-dot-circle-o"})," Apply")),c.createElement(Y,{xs:"4",md:"1"},c.createElement(it,{size:"sm",color:"secondary",onClick:this.handleCancel},c.createElement("i",{className:"fa fa-ban"})," Cancel")),c.createElement(Y,{xs:"4",md:"10",className:"text-right"},c.createElement(it,{size:"sm",color:"danger",onClick:this.handleDelete},c.createElement("i",{className:"fa fa-ban"})," Delete"))):c.createElement(cn,null,c.createElement(Y,{xs:"4",md:"12",className:"text-right"},c.createElement(it,{size:"sm",color:"danger",onClick:this.handleDelete},c.createElement("i",{className:"fa fa-ban"})," Delete")))))),c.createElement(Qun,null))}}const ug=e=>c.createElement("div",null,e.applicable?e.toggle?"Yes":"No":"N/A"),bM=e=>c.createElement("div",null,e.provider.type,e.provider.type==="FileStream"?`/${e.provider.options.dataType}`:""),sdn=({discoveredProviders:e})=>({discoveredProviders:e}),odn=tn(sdn)(rdn);function adn(){fetch(`${window.serverRoutesPrefix}/vessel`,{credentials:"include"}).then(e=>e.json()).then(e=>{this.setState({...e,hasData:!0})})}class idn extends J.Component{constructor(t){super(t),this.state={hasData:!1},this.fetchVessel=adn.bind(this),this.handleChange=this.handleChange.bind(this),this.handleSaveVessel=this.handleSaveVessel.bind(this)}componentDidMount(){this.fetchVessel()}handleChange(t){console.log(t);const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.setState({[t.target.name]:n})}handleSaveVessel(){fetch(`${window.serverRoutesPrefix}/vessel`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.state),credentials:"include"}).then(t=>t.text()).then(t=>{alert(t)})}render(){return this.state.hasData&&c.createElement("div",{className:"animated fadeIn"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),c.createElement("strong",null,"Vessel Base Data")),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal"},c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"name"},"Name")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"name",onChange:this.handleChange,value:this.state.name}),c.createElement(st,{color:"muted"},"The name of the vessel"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"mmsi"},"MMSI")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"mmsi",onChange:this.handleChange,value:this.state.mmsi}),c.createElement(st,{color:"muted"},"Leave blank if there is no mmsi"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"callsignVhf"},"Call Sign")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"callsignVhf",onChange:this.handleChange,value:this.state.callsignVhf}),c.createElement(st,{color:"muted"},"Leave blank if there is no call sign"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"uuid"},"UUID")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"uuid",onChange:this.handleChange,value:this.state.uuid}),c.createElement(st,{color:"muted"},"Ignored if MMSI is set"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"aisShipType"},"Ship Type")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"select",name:"aisShipType",value:this.state.aisShipType,onChange:this.handleChange},c.createElement("option",{value:"20"},"Wing In Ground"),c.createElement("option",{value:"29"},"Wing In Ground (no other information)"),c.createElement("option",{value:"30"},"Fishing"),c.createElement("option",{value:"31"},"Towing"),c.createElement("option",{value:"32"},"Towing exceeds 200m or wider than 25m"),c.createElement("option",{value:"33"},"Engaged in dredging or underwater operations"),c.createElement("option",{value:"34"},"Engaged in diving operations"),c.createElement("option",{value:"35"},"Engaged in military operations"),c.createElement("option",{value:"36"},"Sailing"),c.createElement("option",{value:"37"},"Pleasure"),c.createElement("option",{value:"40"},"High speed craft"),c.createElement("option",{value:"41"},"High speed craft carrying dangerous goods"),c.createElement("option",{value:"42"},"High speed craft hazard cat B"),c.createElement("option",{value:"43"},"High speed craft hazard cat C"),c.createElement("option",{value:"44"},"High speed craft hazard cat D"),c.createElement("option",{value:"49"},"High speed craft (no additional information)"),c.createElement("option",{value:"50"},"Pilot vessel"),c.createElement("option",{value:"51"},"SAR"),c.createElement("option",{value:"52"},"Tug"),c.createElement("option",{value:"53"},"Port tender"),c.createElement("option",{value:"54"},"Anti-pollution"),c.createElement("option",{value:"55"},"Law enforcement"),c.createElement("option",{value:"56"},"Spare"),c.createElement("option",{value:"57"},"Spare #2"),c.createElement("option",{value:"58"},"Medical"),c.createElement("option",{value:"59"},"RR Resolution No.1"),c.createElement("option",{value:"60"},"Passenger ship"),c.createElement("option",{value:"69"},"Passenger ship (no additional information)"),c.createElement("option",{value:"70"},"Cargo ship"),c.createElement("option",{value:"71"},"Cargo ship carrying dangerous goods"),c.createElement("option",{value:"72"},"Cargo ship hazard cat B"),c.createElement("option",{value:"73"},"Cargo ship hazard cat C"),c.createElement("option",{value:"74"},"Cargo ship hazard cat D"),c.createElement("option",{value:"79"},"Cargo ship (no additional information)"),c.createElement("option",{value:"80"},"Tanker"),c.createElement("option",{value:"81"},"Tanker carrying dangerous goods"),c.createElement("option",{value:"82"},"Tanker hazard cat B"),c.createElement("option",{value:"83"},"Tanker hazard cat C"),c.createElement("option",{value:"84"},"Tanker hazard cat D"),c.createElement("option",{value:"89"},"Tanker (no additional information)"),c.createElement("option",{value:"90"},"Other"),c.createElement("option",{value:"91"},"Other carrying dangerous goods"),c.createElement("option",{value:"92"},"Other hazard cat B"),c.createElement("option",{value:"93"},"Other hazard cat C"),c.createElement("option",{value:"94"},"Other hazard cat D"),c.createElement("option",{value:"99"},"Other (no additional information)")))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"draft"},"Draft")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"draft",onChange:this.handleChange,value:this.state.draft}),c.createElement(st,{color:"muted"},"The maximum draft in meters of the vessel"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"length"},"Length")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"length",onChange:this.handleChange,value:this.state.length}),c.createElement(st,{color:"muted"},"The overall length of the vessel in meters"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"beam"},"Beam")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"beam",onChange:this.handleChange,value:this.state.beam}),c.createElement(st,{color:"muted"},"The beam of the vessel in meters"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"height"},"Height")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"height",onChange:this.handleChange,value:this.state.height}),c.createElement(st,{color:"muted"},"The total height of the vessel in meters"," "))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"gpsFromBow"},"GPS Distance From Bow")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"gpsFromBow",onChange:this.handleChange,value:this.state.gpsFromBow}),c.createElement(st,{color:"muted"},"The distance of the gps receiver from the bow in meters"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"gpsFromCenter"},"GPS Distance From Center")),c.createElement(Y,{xs:"12",md:"4"},c.createElement(Ee,{type:"text",name:"gpsFromCenter",onChange:this.handleChange,value:this.state.gpsFromCenter}),c.createElement(st,{color:"muted"},"The distance from the center of vessel of the gps receiver in meters"))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",onClick:this.handleSaveVessel},c.createElement("i",{className:"fa fa-dot-circle-o"})," Save"))))}}const cdn=tn()(idn);function ldn(){const e=fetch(`${window.serverRoutesPrefix}/logfiles/`,{credentials:"include"}).then(t=>t.ok?t:(this.setState({authorized:!1}),!1));e&&e.then(t=>t.json()).then(t=>{t.sort(),this.setState({logfileslist:t,hasData:!0,authorized:!0})})}let udn=class extends J.Component{constructor(t){super(t),this.state={hasData:!1,authorized:!0},this.fetchLogfileList=ldn.bind(this)}componentDidMount(){this.fetchLogfileList()}render(){return this.state.authorized?this.state.hasData&&c.createElement("div",{className:"animated fadeIn"},c.createElement(cn,null,c.createElement(Y,{sm:"12",xl:"12"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),c.createElement("strong",null,"Data Logfiles")),c.createElement(pt,null,c.createElement(Ph,null,this.logfilesToRows(this.state.logfileslist))),c.createElement(tr,null,c.createElement("small",{className:"text-muted"},"Click button to download each logfile or"),c.createElement("a",{href:`${window.serverRoutesPrefix}/ziplogs`},c.createElement(it,{className:"m-2"},"Get all logs in one ZIP file"))))))):c.createElement("div",{className:"animated fadeIn"},"Not Authorized")}logfilesToRows(t){const n=t.reduce((r,s)=>{const o=s.substr(13,10),a=s.substr(24,2);return r[o]||(r[o]=[]),r[o].push(a),r},{});return Object.keys(n).map((r,s)=>c.createElement(Ah,{key:s},r,n[r].map((o,a)=>c.createElement("span",{key:a},c.createElement("a",{href:`${window.serverRoutesPrefix}/logfiles/skserver-raw_${r}T${o}.log`},c.createElement(it,{className:"m-2"},o))))))}};const z8=tn()(udn);function fdn(){fetch(`${window.serverRoutesPrefix}/settings`,{credentials:"include"}).then(e=>e.json()).then(e=>{this.setState({...e,hasData:!0})})}class ddn extends J.Component{constructor(t){super(t),this.state={hasData:!1},this.fetchSettings=fdn.bind(this),this.handleChange=this.handleChange.bind(this),this.handleCourseApiChange=this.handleCourseApiChange.bind(this),this.handleOptionChange=this.handleOptionChange.bind(this),this.handleInterfaceChange=this.handleInterfaceChange.bind(this),this.handleSaveSettings=this.handleSaveSettings.bind(this)}componentDidMount(){this.fetchSettings()}handleChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.setState({[t.target.name]:n})}handleCourseApiChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.courseApi[t.target.name]=n,this.setState({courseApi:this.state.courseApi})}handleOptionChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.options[t.target.name]=n,this.setState({options:this.state.options})}handleInterfaceChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.interfaces[t.target.name]=n,this.setState({interfaces:this.state.interfaces})}handleSaveSettings(){fetch(`${window.serverRoutesPrefix}/settings`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.state),credentials:"include"}).then(t=>t.text()).then(t=>{alert(t)})}render(){return this.state.hasData&&c.createElement("div",{className:"animated fadeIn"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),c.createElement("strong",null,"Server Settings")),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal"},!this.state.runFromSystemd&&c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"port"},"HTTP Port")),c.createElement(Y,{xs:"12",md:10},c.createElement(Ee,{size:"5",style:{width:"auto"},type:"text",name:"port",onChange:this.handleChange,value:this.state.port}),c.createElement(st,{color:"muted"},"Saving a new value here will not have effect if overridden by environment variable PORT"))),this.state.runFromSystemd&&c.createElement(xe,{row:!0},c.createElement(Y,{xs:"12",md:10},c.createElement(st,null,"The server was started by systemd, run signalk-server-setup to change ports and ssl configuration."))),this.state.options.ssl&&!this.state.runFromSystemd&&c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"sslport"},"SSL Port")),c.createElement(Y,{xs:"12",md:10},c.createElement(Ee,{size:"5",style:{width:"auto"},type:"text",name:"sslport",onChange:this.handleChange,value:this.state.sslport}),c.createElement(st,{color:"muted"},"Saving a new value here will not have effect if overridden by environment variable SSLPORT"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,null,"Options")),c.createElement(Y,{md:10},c.createElement(xe,{check:!0},Object.keys(this.state.options).map(n=>c.createElement("div",{key:n},c.createElement(ve,{style:{marginRight:"15px"},className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:n,name:n,className:"switch-input",onChange:this.handleOptionChange,checked:this.state.options[n]}),c.createElement("span",{className:"switch-label","data-on":"On","data-off":"Off"}),c.createElement("span",{className:"switch-handle"})),c.createElement("span",{style:{lineHeight:"23px"}},n)))))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,null,"Interfaces")),c.createElement(Y,{md:10},c.createElement(xe,{check:!0},Object.keys($M).map(n=>c.createElement("div",{key:n},c.createElement(ve,{style:{marginRight:"15px"},className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:n,name:n,className:"switch-input",onChange:this.handleInterfaceChange,checked:this.state.interfaces[n]}),c.createElement("span",{className:"switch-label","data-on":"On","data-off":"Off"}),c.createElement("span",{className:"switch-handle"})),c.createElement("span",{style:{lineHeight:"24px"}},$M[n])))))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"pruneContextsMinutes"},"Maximum age of inactive vessels' data")),c.createElement(Y,{xs:"12",md:10},c.createElement(Ee,{type:"text",name:"pruneContextsMinutes",onChange:this.handleChange,value:this.state.pruneContextsMinutes}),c.createElement(st,{color:"muted"},"Vessels that have not been updated after this many minutes will be removed"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,{htmlFor:"loggingDirectory"},"Data Logging Directory")),c.createElement(Y,{xs:"12",md:10},c.createElement(Ee,{type:"text",name:"loggingDirectory",onChange:this.handleChange,value:this.state.loggingDirectory}),c.createElement(st,{color:"muted"},"Connections that have logging enabled create hourly log files in Multiplexed format in this directory"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,null,"Keep only most recent data log files")),c.createElement(Y,null,c.createElement(xe,{check:!0},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"keepMostRecentLogsOnly",id:"keepMostRecentLogsOnly",className:"switch-input",onChange:this.handleChange,checked:this.state.keepMostRecentLogsOnly}),c.createElement("span",{className:"switch-label","data-on":"On","data-off":"Off"}),c.createElement("span",{className:"switch-handle"})))),c.createElement(Y,null,c.createElement(Ee,{type:"text",name:"logCountToKeep",onChange:this.handleChange,value:this.state.logCountToKeep}),c.createElement(st,{color:"muted"},"How many hourly files to keep"))),c.createElement(xe,{row:!0},c.createElement(Y,{md:"2"},c.createElement(ve,null,"API Only Mode",c.createElement("br",null),c.createElement("i",null,"(Course API)"))),c.createElement(Y,null,c.createElement(xe,{check:!0},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"apiOnly",id:"apiOnly",className:"switch-input",onChange:this.handleCourseApiChange,checked:this.state.courseApi.apiOnly}),c.createElement("span",{className:"switch-label","data-on":"On","data-off":"Off"}),c.createElement("span",{className:"switch-handle"})),c.createElement(st,{color:"muted"},"Accept course operations only via HTTP requests. Destination data from NMEA sources is not used.")))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",onClick:this.handleSaveSettings},c.createElement("i",{className:"fa fa-dot-circle-o"})," Save")," ",c.createElement(Sr,{color:"danger",className:"float-right"},"Restart Required"))))}}const $M={applicationData:"Application Data Storage",logfiles:"Data log files access","nmea-tcp":"NMEA 0183 over TCP (10110)",tcp:"Signal K over TCP (8375)",wasm:"WebAssembly Runtime"},hdn=tn()(ddn);class pdn extends J.Component{render(){return c.createElement("div",null,c.createElement(cdn,null),c.createElement(hdn,null),c.createElement(z8,null))}}const wi=0,mdn=1,dE=2,gdn=3;class vdn extends J.Component{constructor(t){super(t),this.state={restoreFile:null,restoreState:wi,includePlugins:!1},this.fileChanged=this.fileChanged.bind(this),this.handleRestoreFileChange=this.handleRestoreFileChange.bind(this),this.includePluginsChange=this.includePluginsChange.bind(this),this.backup=this.backup.bind(this),this.validate=this.validate.bind(this),this.restore=this.restore.bind(this),this.restart=this.restart.bind(this),this.cancelRestore=this.cancelRestore.bind(this)}cancelRestore(){this.setState({restoreState:wi})}fileChanged(t){this.setState({...this.state,restoreFile:t.target.files[0]})}backup(){const t=`${window.serverRoutesPrefix}/backup?includePlugins=${this.state.includePlugins}`;window.location=t}restore(){fetch(`${window.serverRoutesPrefix}/restore`,{credentials:"include",method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.state.restoreContents)}).then(t=>{if(!t.ok)return t.text()}).then(t=>{typeof t=="string"?(alert(t),this.setState({restoreState:wi,restoreFile:null})):this.setState({restoreState:gdn})}).catch(t=>{alert(t.message)})}restart(){this.props.restart(),this.setState({restoreState:wi}),window.location="/admin/#/dashboard"}validate(){if(!this.state.restoreFile){alert("Please choose a file");return}const t=new FormData;t.append("file",this.state.restoreFile),this.setState({restoreState:mdn}),fetch(`${window.serverRoutesPrefix}/validateBackup`,{credentials:"include",method:"POST",headers:{Accept:"application/json"},body:t}).then(n=>n.ok?n.json():n.text()).then(n=>{if(typeof n=="string")alert(n),this.setState({restoreState:wi,restoreFile:null});else{const r={};n.forEach(s=>{r[s]=!0}),this.setState({restoreState:dE,restoreContents:r})}}).catch(n=>{alert(n.message)})}handleRestoreFileChange(t){const n=t.target.type==="checkbox"?t.target.checked:t.target.value;this.state.restoreContents[t.target.name]=n,this.setState({restoreContents:this.state.restoreContents})}includePluginsChange(t){this.state.includePlugins=t.target.checked,this.setState({includePlugins:this.state.includePlugins})}render(){return c.createElement("div",null,this.state.restoreState===wi&&!this.props.restoreStatus.state&&c.createElement(ft,null,c.createElement(xt,null,"Backup Settings"),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal"},c.createElement(st,{color:"muted"},"This will backup your server and plugin settings."),c.createElement("br",null),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"3",md:"2"},c.createElement(ve,null,"Include Plugins")),c.createElement(Y,{xs:"2",md:10},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",name:"enabled",className:"switch-input",onChange:n=>this.includePluginsChange(n),checked:this.state.includePlugins}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})),c.createElement(st,{color:"muted"},"Selecting Yes will increase the size of the backup, but will allow for offline restore."))))),c.createElement(tr,null,c.createElement(it,{size:"sm",color:"primary",onClick:this.backup},c.createElement("i",{className:"fa fa-dot-circle-o"})," Backup")," ")),c.createElement(ft,null,c.createElement(xt,null,"Restore Settings"),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal"},this.state.restoreState===wi&&!this.props.restoreStatus.state&&c.createElement("div",null,c.createElement(st,{color:"muted"},"Please select the backup file from your device to use in restoring the settings. Your existing settings will be overwritten."),c.createElement("br",null),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"12",md:10},c.createElement(Ee,{type:"file",name:"backupFile",onChange:this.fileChanged})))),this.state.restoreState===dE&&c.createElement(xe,{check:!0},c.createElement(Y,{xs:"12",md:10},Object.keys(this.state.restoreContents).map(n=>c.createElement("div",{key:n},c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:n,name:n,className:"switch-input",onChange:this.handleRestoreFileChange,checked:this.state.restoreContents[n]}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))," ",n)))),this.props.restoreStatus&&this.props.restoreStatus.state&&this.props.restoreStatus.state!=="Complete"&&c.createElement("div",null,c.createElement(xe,{row:!0},c.createElement(Y,{xs:"12",md:10},c.createElement(st,null,this.props.restoreStatus.state," :"," ",this.props.restoreStatus.message))),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"12",md:10},c.createElement(Nh,{animated:!0,color:"success",value:this.props.restoreStatus.percentComplete})))),this.props.restoreStatus.state&&this.props.restoreStatus.state==="Complete"&&c.createElement("div",null,c.createElement(xe,{row:!0},c.createElement(Y,{xs:"12",md:10},c.createElement(st,null,"Please Restart"))),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"12",md:10},c.createElement(it,{size:"sm",color:"danger",onClick:this.restart},this.props.restarting?c.createElement("i",{className:"fa fa-circle-o-notch fa-spin"}):c.createElement("i",{className:"fa fa-circle-o-notch"})," ","Restart")))))),c.createElement(tr,null,this.state.restoreState===wi&&!this.props.restoreStatus.state&&c.createElement("div",null,c.createElement(it,{size:"sm",color:"danger",onClick:this.validate,disabled:this.state.restoreFile===null},c.createElement("i",{className:"fa fa-dot-circle-o"})," Restore")," "),this.state.restoreState===dE&&c.createElement("div",null,c.createElement(it,{size:"sm",color:"primary",onClick:this.cancelRestore},c.createElement("i",{className:"fa fa-dot-circle-o"})," Cancel")," ",c.createElement(it,{size:"sm",color:"danger",onClick:this.restore},c.createElement("i",{className:"fa fa-dot-circle-o"})," Confirm")))))}}const ydn=tn(({restoreStatus:e,restarting:t})=>({restoreStatus:e,restarting:t}),{restart:H3})(vdn);class bdn extends J.Component{constructor(t){super(t),this.state={hasData:!0,webSocket:null,didSubScribe:!1,pause:!1,debugKeys:[]},this.handleDebug=this.handleDebug.bind(this),this.handlePause=this.handlePause.bind(this),this.fetchDebugKeys=this.fetchDebugKeys.bind(this)}subscribeToLogsIfNeeded(){if(!this.state.pause&&this.props.webSocket&&(this.props.webSocket!==this.state.webSocket||this.state.didSubScribe===!1)){const t={context:"vessels.self",subscribe:[{path:"log"}]};this.props.webSocket.send(JSON.stringify(t)),this.state.webSocket=this.props.webSocket,this.state.didSubScribe=!0}}unsubscribeToLogs(){if(this.props.webSocket){const t={context:"vessels.self",unsubscribe:[{path:"log"}]};this.props.webSocket.send(JSON.stringify(t)),this.state.didSubScribe=!1}}fetchDebugKeys(){fetch(`${window.serverRoutesPrefix}/debugKeys`,{credentials:"include"}).then(t=>t.json()).then(t=>{this.setState({debugKeys:t.sort()})})}componentDidMount(){this.subscribeToLogsIfNeeded(),this.fetchDebugKeys()}componentDidUpdate(){this.subscribeToLogsIfNeeded()}componentWillUnmount(){this.unsubscribeToLogs()}handleDebug(t){this.doHandleDebug(t.target.value)}handleDebugCheckbox(t,n){const r=this.props.log.debugEnabled.length>0?this.props.log.debugEnabled.split(","):[];n?r.push(t):r_(r,s=>s===t),this.doHandleDebug(r.toString())}doHandleDebug(t){fetch(`${window.serverRoutesPrefix}/debug`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:t}),credentials:"include"}).then(n=>n.text())}handleRememberDebug(t){fetch(`${window.serverRoutesPrefix}/rememberDebug`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:t.target.checked}),credentials:"include"}).then(n=>n.text())}handlePause(t){this.state.pause=t.target.checked,this.setState(this.state),this.state.pause?this.unsubscribeToLogs():this.subscribeToLogsIfNeeded()}render(){return this.state.hasData&&c.createElement("div",{className:"animated fadeIn"},c.createElement(ft,null,c.createElement(xt,null,c.createElement("i",{className:"fa fa-align-justify"}),c.createElement("strong",null,"Server Log")),c.createElement(pt,null,c.createElement(xr,{action:"",method:"post",encType:"multipart/form-data",className:"form-horizontal",onSubmit:t=>{t.preventDefault()}},c.createElement(xe,{row:!0},c.createElement(Y,null,c.createElement(sT,{isMulti:!0,options:this.state.debugKeys.map(t=>({label:t,value:t})),value:this.props.log.debugEnabled?this.props.log.debugEnabled.split(",").map(t=>({label:t,value:t})):null,onChange:t=>{const n=t!==null?t.map(({value:r})=>r).join(","):"";this.doHandleDebug(n)}}),c.createElement(st,{color:"muted",style:{marginBottom:"15px"}},"Select the appropriate debug keys to activate debug logging for various components on the server."))),c.createElement(xe,{row:!0},c.createElement(Y,{xs:"6",md:"6"},"Persist debug settings over server restarts"," ",c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:"Enabled",name:"debug",className:"switch-input",onChange:this.handleRememberDebug,checked:this.props.log.rememberDebug}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"}))),c.createElement(Y,{xs:"6",md:"6"},"Pause the log window"," ",c.createElement(ve,{className:"switch switch-text switch-primary"},c.createElement(Ee,{type:"checkbox",id:"Pause",name:"pause",className:"switch-input",onChange:this.handlePause,checked:this.state.pause}),c.createElement("span",{className:"switch-label","data-on":"Yes","data-off":"No"}),c.createElement("span",{className:"switch-handle"})))),c.createElement($dn,{value:this.props.log})))),c.createElement(z8,null))}}class $dn extends J.Component{componentDidMount(){this.end.scrollIntoView()}render(){return c.createElement("div",{style:{overflowY:"scroll",maxHeight:"60vh",border:"1px solid",padding:"5px",fontFamily:"monospace"}},this.props.value.entries&&this.props.value.entries.map(t=>c.createElement(Edn,{key:t.i,log:t.d})),c.createElement("div",{ref:t=>{this.end=t}}," "))}}class Edn extends c.PureComponent{render(){return c.createElement("span",null,pj(this.props.log),c.createElement("br",null))}}const wdn=tn(({log:e,webSocket:t})=>({log:e,webSocket:t}))(bdn);class _dn extends J.Component{constructor(t){super(t),this.state={chanelog:null},this.handleUpdate=this.handleUpdate.bind(this),this.fetchChangelog=this.fetchChangelog.bind(this),this.fetchChangelog()}fetchChangelog(){fetch("https://raw.githubusercontent.com/SignalK/signalk-server-node/master/CHANGELOG.md").then(t=>t.text()).then(t=>{this.setState({changelog:t})})}handleUpdate(){console.log("handleUpdate"),confirm("Are you sure you want to update the server?'")&&(this.props.history.push("/appstore/updates"),fetch(`${window.serverRoutesPrefix}/appstore/install/signalk-server/${this.props.appStore.serverUpdate}`,{method:"POST",credentials:"include"}).then(()=>{this.history.pushState(null,"appstore/updates")}))}render(){if(!this.props.appStore.storeAvailable)return c.createElement("div",{className:"animated fadeIn"},c.createElement(ft,null,c.createElement(xt,null,"Waiting for App store data to load...")));let t=!1,n=!1,r=this.props.appStore.installing.find(s=>s.name==="signalk-server");return r&&(r.isWaiting||r.isInstalling?t=!0:n=!0),c.createElement("div",{className:"animated fadeIn"},!this.props.appStore.canUpdateServer&&c.createElement(ft,{className:"border-warning"},c.createElement(xt,null,"Server Update"),c.createElement(pt,null,"This installation is not updatable from the admin user interface.")),this.props.appStore.isInDocker&&c.createElement(ft,{className:"border-warning"},c.createElement(xt,null,"Running as a Docker container"),c.createElement(pt,null,c.createElement("p",null,"The server is running as a Docker container. You need to pull a new server version from Container registry to update.",c.createElement("ul",null,c.createElement("code",null,"docker pull cr.signalk.io/signalk/signalk-server"))),c.createElement("p",null,"More info about running Signal K in Docker can be found at"," ",c.createElement("a",{href:"https://github.com/SignalK/signalk-server/blob/master/docker/README.md",target:"_blank",rel:"noopener noreferrer"},"Docker README")," ","."))),this.props.appStore.canUpdateServer&&this.props.appStore.serverUpdate&&!t&&!n&&c.createElement(ft,null,c.createElement(xt,null,"Server version ",this.props.appStore.serverUpdate," is available"),c.createElement(pt,null,c.createElement("a",{href:"https://github.com/SignalK/signalk-server/releases/"},"Release Notes for latest releases."),c.createElement("br",null),c.createElement("br",null),c.createElement(it,{className:"btn btn-danger",size:"sm",color:"primary",onClick:this.handleUpdate},"Update"))),t&&c.createElement(ft,null,c.createElement(xt,null,"Server Update"),c.createElement(pt,null,"The update is being installed")),n&&c.createElement(ft,null,c.createElement(xt,null,"Server Update"),c.createElement(pt,null,"The update has been installed, please restart the Signal K server.")),this.props.appStore.canUpdateServer&&!this.props.appStore.serverUpdate&&c.createElement(ft,null,c.createElement(xt,null,"Server Update"),c.createElement(pt,null,"Your server is up to date.")),c.createElement(ft,null,c.createElement(xt,null,"Sponsoring"),c.createElement(pt,null,c.createElement("p",null,"If you find Signal K valuable to you consider sponsoring our work on developing it further."),c.createElement("p",null,"Your support allows us to do things like",c.createElement("ul",null,c.createElement("li",null,"travel to meet in person and push things forward"),c.createElement("li",null,"purchase equipment to develop on"),c.createElement("li",null,"upgrade our cloud resources beyond the free tiers"))),c.createElement("p",null,"See"," ",c.createElement("a",{href:"https://opencollective.com/signalk"},"Signal K in Open Collective")," ","for details."))))}}const Sdn=tn(({appStore:e})=>({appStore:e}))(qM(_dn));class Cdn extends J.Component{componentDidMount(){const{dispatch:t}=this.props;z3(t),EE(t)}render(){const t=this.props.location.pathname.indexOf("/e/")===0||this.props.location.pathname.indexOf("/documentation")===0?{padding:"0px"}:{};return c.createElement("div",{className:"app"},c.createElement(fQ,null),c.createElement("div",{className:"app-body"},c.createElement(yQ,this.props),c.createElement("main",{className:"main"},c.createElement(Hu,{fluid:!0,style:t},c.createElement(Gv,null,c.createElement(hn,{path:"/dashboard",name:"Dashboard",component:_r(G3,!0)}),c.createElement(hn,{path:"/webapps",name:"Webapps",component:_r(zQ,!0)}),c.createElement(hn,{path:"/e/:moduleId",name:"Embedded Webapps",component:_r(qQ,!0)}),c.createElement(hn,{path:"/databrowser",name:"DataBrowser",component:_r(Vkt,!0)}),c.createElement(hn,{path:"/serverConfiguration/datafiddler",name:"DataFiddler",component:_r(Wkt,!0)}),c.createElement(hn,{path:"/appstore",name:"Appstore",component:_r(Q3t)}),c.createElement(hn,{path:"/serverConfiguration/plugins/:pluginid",component:_r(Kcn)}),c.createElement(hn,{path:"/serverConfiguration/settings",component:_r(pdn)}),c.createElement(hn,{path:"/serverConfiguration/backuprestore",component:_r(ydn)}),c.createElement(hn,{path:"/serverConfiguration/connections/:providerId",component:_r(odn)}),c.createElement(hn,{path:"/serverConfiguration/log",component:_r(wdn)}),c.createElement(hn,{path:"/serverConfiguration/update",component:_r(Sdn)}),c.createElement(hn,{path:"/security/settings",component:_r(oln)}),c.createElement(hn,{path:"/security/users",component:_r(lln)}),c.createElement(hn,{path:"/security/devices",component:_r(pln)}),c.createElement(hn,{path:"/security/access/requests",component:_r(yln)}),c.createElement(hn,{path:"/documentation",name:"Documentation",component:UQ}),c.createElement(hn,{path:"/login",component:dy}),c.createElement(hn,{path:"/register",component:mln}),c.createElement(zv,{from:"/",to:"/dashboard"})))),c.createElement(bQ,null)),c.createElement(EQ,null))}}const xdn=tn()(Cdn),_r=(e,t)=>{class n extends J.Component{constructor(s){super(s),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}render(){return Tdn(this.props.loginStatus,t)?c.createElement(dy,null):this.state.hasError?c.createElement("span",null,"Something went wrong."):c.createElement(e,this.props)}}return tn(({loginStatus:r})=>({loginStatus:r}))(qM(n))};function Tdn(e,t){return t&&e.readOnlyAccess?!1:e.authenticationRequired&&e.status==="notLoggedIn"}/*!
745
745
  * escape-html
746
746
  * Copyright(c) 2012-2013 TJ Holowaychuk
747
747
  * Copyright(c) 2015 Andreas Lubbe
@@ -750,4 +750,4 @@ and limitations under the License.
750
750
  */var Odn=/["'&<>]/,Ndn=Pdn;function Pdn(e){var t=""+e,n=Odn.exec(t);if(!n)return t;var r,s="",o=0,a=0;for(o=n.index;o<t.length;o++){switch(t.charCodeAt(o)){case 34:r="&quot;";break;case 38:r="&amp;";break;case 39:r="&#39;";break;case 60:r="&lt;";break;case 62:r="&gt;";break;default:continue}a!==o&&(s+=t.substring(a,o)),a=o+1,s+=r}return a!==o?s+t.substring(a,o):s}const Adn=xn(Ndn);var G8={},ho={};const Idn="Á",Rdn="á",kdn="Ă",Ddn="ă",Mdn="∾",Ldn="∿",Fdn="∾̳",jdn="Â",qdn="â",Udn="´",Bdn="А",Vdn="а",Hdn="Æ",zdn="æ",Gdn="⁡",Wdn="𝔄",Ydn="𝔞",Kdn="À",Jdn="à",Xdn="ℵ",Zdn="ℵ",Qdn="Α",ehn="α",thn="Ā",nhn="ā",rhn="⨿",shn="&",ohn="&",ahn="⩕",ihn="⩓",chn="∧",lhn="⩜",uhn="⩘",fhn="⩚",dhn="∠",hhn="⦤",phn="∠",mhn="⦨",ghn="⦩",vhn="⦪",yhn="⦫",bhn="⦬",$hn="⦭",Ehn="⦮",whn="⦯",_hn="∡",Shn="∟",Chn="⊾",xhn="⦝",Thn="∢",Ohn="Å",Nhn="⍼",Phn="Ą",Ahn="ą",Ihn="𝔸",Rhn="𝕒",khn="⩯",Dhn="≈",Mhn="⩰",Lhn="≊",Fhn="≋",jhn="'",qhn="⁡",Uhn="≈",Bhn="≊",Vhn="Å",Hhn="å",zhn="𝒜",Ghn="𝒶",Whn="≔",Yhn="*",Khn="≈",Jhn="≍",Xhn="Ã",Zhn="ã",Qhn="Ä",epn="ä",tpn="∳",npn="⨑",rpn="≌",spn="϶",opn="‵",apn="∽",ipn="⋍",cpn="∖",lpn="⫧",upn="⊽",fpn="⌅",dpn="⌆",hpn="⌅",ppn="⎵",mpn="⎶",gpn="≌",vpn="Б",ypn="б",bpn="„",$pn="∵",Epn="∵",wpn="∵",_pn="⦰",Spn="϶",Cpn="ℬ",xpn="ℬ",Tpn="Β",Opn="β",Npn="ℶ",Ppn="≬",Apn="𝔅",Ipn="𝔟",Rpn="⋂",kpn="◯",Dpn="⋃",Mpn="⨀",Lpn="⨁",Fpn="⨂",jpn="⨆",qpn="★",Upn="▽",Bpn="△",Vpn="⨄",Hpn="⋁",zpn="⋀",Gpn="⤍",Wpn="⧫",Ypn="▪",Kpn="▴",Jpn="▾",Xpn="◂",Zpn="▸",Qpn="␣",emn="▒",tmn="░",nmn="▓",rmn="█",smn="=⃥",omn="≡⃥",amn="⫭",imn="⌐",cmn="𝔹",lmn="𝕓",umn="⊥",fmn="⊥",dmn="⋈",hmn="⧉",pmn="┐",mmn="╕",gmn="╖",vmn="╗",ymn="┌",bmn="╒",$mn="╓",Emn="╔",wmn="─",_mn="═",Smn="┬",Cmn="╤",xmn="╥",Tmn="╦",Omn="┴",Nmn="╧",Pmn="╨",Amn="╩",Imn="⊟",Rmn="⊞",kmn="⊠",Dmn="┘",Mmn="╛",Lmn="╜",Fmn="╝",jmn="└",qmn="╘",Umn="╙",Bmn="╚",Vmn="│",Hmn="║",zmn="┼",Gmn="╪",Wmn="╫",Ymn="╬",Kmn="┤",Jmn="╡",Xmn="╢",Zmn="╣",Qmn="├",egn="╞",tgn="╟",ngn="╠",rgn="‵",sgn="˘",ogn="˘",agn="¦",ign="𝒷",cgn="ℬ",lgn="⁏",ugn="∽",fgn="⋍",dgn="⧅",hgn="\\",pgn="⟈",mgn="•",ggn="•",vgn="≎",ygn="⪮",bgn="≏",$gn="≎",Egn="≏",wgn="Ć",_gn="ć",Sgn="⩄",Cgn="⩉",xgn="⩋",Tgn="∩",Ogn="⋒",Ngn="⩇",Pgn="⩀",Agn="ⅅ",Ign="∩︀",Rgn="⁁",kgn="ˇ",Dgn="ℭ",Mgn="⩍",Lgn="Č",Fgn="č",jgn="Ç",qgn="ç",Ugn="Ĉ",Bgn="ĉ",Vgn="∰",Hgn="⩌",zgn="⩐",Ggn="Ċ",Wgn="ċ",Ygn="¸",Kgn="¸",Jgn="⦲",Xgn="¢",Zgn="·",Qgn="·",evn="𝔠",tvn="ℭ",nvn="Ч",rvn="ч",svn="✓",ovn="✓",avn="Χ",ivn="χ",cvn="ˆ",lvn="≗",uvn="↺",fvn="↻",dvn="⊛",hvn="⊚",pvn="⊝",mvn="⊙",gvn="®",vvn="Ⓢ",yvn="⊖",bvn="⊕",$vn="⊗",Evn="○",wvn="⧃",_vn="≗",Svn="⨐",Cvn="⫯",xvn="⧂",Tvn="∲",Ovn="”",Nvn="’",Pvn="♣",Avn="♣",Ivn=":",Rvn="∷",kvn="⩴",Dvn="≔",Mvn="≔",Lvn=",",Fvn="@",jvn="∁",qvn="∘",Uvn="∁",Bvn="ℂ",Vvn="≅",Hvn="⩭",zvn="≡",Gvn="∮",Wvn="∯",Yvn="∮",Kvn="𝕔",Jvn="ℂ",Xvn="∐",Zvn="∐",Qvn="©",eyn="©",tyn="℗",nyn="∳",ryn="↵",syn="✗",oyn="⨯",ayn="𝒞",iyn="𝒸",cyn="⫏",lyn="⫑",uyn="⫐",fyn="⫒",dyn="⋯",hyn="⤸",pyn="⤵",myn="⋞",gyn="⋟",vyn="↶",yyn="⤽",byn="⩈",$yn="⩆",Eyn="≍",wyn="∪",_yn="⋓",Syn="⩊",Cyn="⊍",xyn="⩅",Tyn="∪︀",Oyn="↷",Nyn="⤼",Pyn="⋞",Ayn="⋟",Iyn="⋎",Ryn="⋏",kyn="¤",Dyn="↶",Myn="↷",Lyn="⋎",Fyn="⋏",jyn="∲",qyn="∱",Uyn="⌭",Byn="†",Vyn="‡",Hyn="ℸ",zyn="↓",Gyn="↡",Wyn="⇓",Yyn="‐",Kyn="⫤",Jyn="⊣",Xyn="⤏",Zyn="˝",Qyn="Ď",ebn="ď",tbn="Д",nbn="д",rbn="‡",sbn="⇊",obn="ⅅ",abn="ⅆ",ibn="⤑",cbn="⩷",lbn="°",ubn="∇",fbn="Δ",dbn="δ",hbn="⦱",pbn="⥿",mbn="𝔇",gbn="𝔡",vbn="⥥",ybn="⇃",bbn="⇂",$bn="´",Ebn="˙",wbn="˝",_bn="`",Sbn="˜",Cbn="⋄",xbn="⋄",Tbn="⋄",Obn="♦",Nbn="♦",Pbn="¨",Abn="ⅆ",Ibn="ϝ",Rbn="⋲",kbn="÷",Dbn="÷",Mbn="⋇",Lbn="⋇",Fbn="Ђ",jbn="ђ",qbn="⌞",Ubn="⌍",Bbn="$",Vbn="𝔻",Hbn="𝕕",zbn="¨",Gbn="˙",Wbn="⃜",Ybn="≐",Kbn="≑",Jbn="≐",Xbn="∸",Zbn="∔",Qbn="⊡",e$n="⌆",t$n="∯",n$n="¨",r$n="⇓",s$n="⇐",o$n="⇔",a$n="⫤",i$n="⟸",c$n="⟺",l$n="⟹",u$n="⇒",f$n="⊨",d$n="⇑",h$n="⇕",p$n="∥",m$n="⤓",g$n="↓",v$n="↓",y$n="⇓",b$n="⇵",$$n="̑",E$n="⇊",w$n="⇃",_$n="⇂",S$n="⥐",C$n="⥞",x$n="⥖",T$n="↽",O$n="⥟",N$n="⥗",P$n="⇁",A$n="↧",I$n="⊤",R$n="⤐",k$n="⌟",D$n="⌌",M$n="𝒟",L$n="𝒹",F$n="Ѕ",j$n="ѕ",q$n="⧶",U$n="Đ",B$n="đ",V$n="⋱",H$n="▿",z$n="▾",G$n="⇵",W$n="⥯",Y$n="⦦",K$n="Џ",J$n="џ",X$n="⟿",Z$n="É",Q$n="é",e0n="⩮",t0n="Ě",n0n="ě",r0n="Ê",s0n="ê",o0n="≖",a0n="≕",i0n="Э",c0n="э",l0n="⩷",u0n="Ė",f0n="ė",d0n="≑",h0n="ⅇ",p0n="≒",m0n="𝔈",g0n="𝔢",v0n="⪚",y0n="È",b0n="è",$0n="⪖",E0n="⪘",w0n="⪙",_0n="∈",S0n="⏧",C0n="ℓ",x0n="⪕",T0n="⪗",O0n="Ē",N0n="ē",P0n="∅",A0n="∅",I0n="◻",R0n="∅",k0n="▫",D0n=" ",M0n=" ",L0n=" ",F0n="Ŋ",j0n="ŋ",q0n=" ",U0n="Ę",B0n="ę",V0n="𝔼",H0n="𝕖",z0n="⋕",G0n="⧣",W0n="⩱",Y0n="ε",K0n="Ε",J0n="ε",X0n="ϵ",Z0n="≖",Q0n="≕",e1n="≂",t1n="⪖",n1n="⪕",r1n="⩵",s1n="=",o1n="≂",a1n="≟",i1n="⇌",c1n="≡",l1n="⩸",u1n="⧥",f1n="⥱",d1n="≓",h1n="ℯ",p1n="ℰ",m1n="≐",g1n="⩳",v1n="≂",y1n="Η",b1n="η",$1n="Ð",E1n="ð",w1n="Ë",_1n="ë",S1n="€",C1n="!",x1n="∃",T1n="∃",O1n="ℰ",N1n="ⅇ",P1n="ⅇ",A1n="≒",I1n="Ф",R1n="ф",k1n="♀",D1n="ffi",M1n="ff",L1n="ffl",F1n="𝔉",j1n="𝔣",q1n="fi",U1n="◼",B1n="▪",V1n="fj",H1n="♭",z1n="fl",G1n="▱",W1n="ƒ",Y1n="𝔽",K1n="𝕗",J1n="∀",X1n="∀",Z1n="⋔",Q1n="⫙",eEn="ℱ",tEn="⨍",nEn="½",rEn="⅓",sEn="¼",oEn="⅕",aEn="⅙",iEn="⅛",cEn="⅔",lEn="⅖",uEn="¾",fEn="⅗",dEn="⅜",hEn="⅘",pEn="⅚",mEn="⅝",gEn="⅞",vEn="⁄",yEn="⌢",bEn="𝒻",$En="ℱ",EEn="ǵ",wEn="Γ",_En="γ",SEn="Ϝ",CEn="ϝ",xEn="⪆",TEn="Ğ",OEn="ğ",NEn="Ģ",PEn="Ĝ",AEn="ĝ",IEn="Г",REn="г",kEn="Ġ",DEn="ġ",MEn="≥",LEn="≧",FEn="⪌",jEn="⋛",qEn="≥",UEn="≧",BEn="⩾",VEn="⪩",HEn="⩾",zEn="⪀",GEn="⪂",WEn="⪄",YEn="⋛︀",KEn="⪔",JEn="𝔊",XEn="𝔤",ZEn="≫",QEn="⋙",ewn="⋙",twn="ℷ",nwn="Ѓ",rwn="ѓ",swn="⪥",own="≷",awn="⪒",iwn="⪤",cwn="⪊",lwn="⪊",uwn="⪈",fwn="≩",dwn="⪈",hwn="≩",pwn="⋧",mwn="𝔾",gwn="𝕘",vwn="`",ywn="≥",bwn="⋛",$wn="≧",Ewn="⪢",wwn="≷",_wn="⩾",Swn="≳",Cwn="𝒢",xwn="ℊ",Twn="≳",Own="⪎",Nwn="⪐",Pwn="⪧",Awn="⩺",Iwn=">",Rwn=">",kwn="≫",Dwn="⋗",Mwn="⦕",Lwn="⩼",Fwn="⪆",jwn="⥸",qwn="⋗",Uwn="⋛",Bwn="⪌",Vwn="≷",Hwn="≳",zwn="≩︀",Gwn="≩︀",Wwn="ˇ",Ywn=" ",Kwn="½",Jwn="ℋ",Xwn="Ъ",Zwn="ъ",Qwn="⥈",e_n="↔",t_n="⇔",n_n="↭",r_n="^",s_n="ℏ",o_n="Ĥ",a_n="ĥ",i_n="♥",c_n="♥",l_n="…",u_n="⊹",f_n="𝔥",d_n="ℌ",h_n="ℋ",p_n="⤥",m_n="⤦",g_n="⇿",v_n="∻",y_n="↩",b_n="↪",$_n="𝕙",E_n="ℍ",w_n="―",__n="─",S_n="𝒽",C_n="ℋ",x_n="ℏ",T_n="Ħ",O_n="ħ",N_n="≎",P_n="≏",A_n="⁃",I_n="‐",R_n="Í",k_n="í",D_n="⁣",M_n="Î",L_n="î",F_n="И",j_n="и",q_n="İ",U_n="Е",B_n="е",V_n="¡",H_n="⇔",z_n="𝔦",G_n="ℑ",W_n="Ì",Y_n="ì",K_n="ⅈ",J_n="⨌",X_n="∭",Z_n="⧜",Q_n="℩",e2n="IJ",t2n="ij",n2n="Ī",r2n="ī",s2n="ℑ",o2n="ⅈ",a2n="ℐ",i2n="ℑ",c2n="ı",l2n="ℑ",u2n="⊷",f2n="Ƶ",d2n="⇒",h2n="℅",p2n="∞",m2n="⧝",g2n="ı",v2n="⊺",y2n="∫",b2n="∬",$2n="ℤ",E2n="∫",w2n="⊺",_2n="⋂",S2n="⨗",C2n="⨼",x2n="⁣",T2n="⁢",O2n="Ё",N2n="ё",P2n="Į",A2n="į",I2n="𝕀",R2n="𝕚",k2n="Ι",D2n="ι",M2n="⨼",L2n="¿",F2n="𝒾",j2n="ℐ",q2n="∈",U2n="⋵",B2n="⋹",V2n="⋴",H2n="⋳",z2n="∈",G2n="⁢",W2n="Ĩ",Y2n="ĩ",K2n="І",J2n="і",X2n="Ï",Z2n="ï",Q2n="Ĵ",eSn="ĵ",tSn="Й",nSn="й",rSn="𝔍",sSn="𝔧",oSn="ȷ",aSn="𝕁",iSn="𝕛",cSn="𝒥",lSn="𝒿",uSn="Ј",fSn="ј",dSn="Є",hSn="є",pSn="Κ",mSn="κ",gSn="ϰ",vSn="Ķ",ySn="ķ",bSn="К",$Sn="к",ESn="𝔎",wSn="𝔨",_Sn="ĸ",SSn="Х",CSn="х",xSn="Ќ",TSn="ќ",OSn="𝕂",NSn="𝕜",PSn="𝒦",ASn="𝓀",ISn="⇚",RSn="Ĺ",kSn="ĺ",DSn="⦴",MSn="ℒ",LSn="Λ",FSn="λ",jSn="⟨",qSn="⟪",USn="⦑",BSn="⟨",VSn="⪅",HSn="ℒ",zSn="«",GSn="⇤",WSn="⤟",YSn="←",KSn="↞",JSn="⇐",XSn="⤝",ZSn="↩",QSn="↫",eCn="⤹",tCn="⥳",nCn="↢",rCn="⤙",sCn="⤛",oCn="⪫",aCn="⪭",iCn="⪭︀",cCn="⤌",lCn="⤎",uCn="❲",fCn="{",dCn="[",hCn="⦋",pCn="⦏",mCn="⦍",gCn="Ľ",vCn="ľ",yCn="Ļ",bCn="ļ",$Cn="⌈",ECn="{",wCn="Л",_Cn="л",SCn="⤶",CCn="“",xCn="„",TCn="⥧",OCn="⥋",NCn="↲",PCn="≤",ACn="≦",ICn="⟨",RCn="⇤",kCn="←",DCn="←",MCn="⇐",LCn="⇆",FCn="↢",jCn="⌈",qCn="⟦",UCn="⥡",BCn="⥙",VCn="⇃",HCn="⌊",zCn="↽",GCn="↼",WCn="⇇",YCn="↔",KCn="↔",JCn="⇔",XCn="⇆",ZCn="⇋",QCn="↭",exn="⥎",txn="↤",nxn="⊣",rxn="⥚",sxn="⋋",oxn="⧏",axn="⊲",ixn="⊴",cxn="⥑",lxn="⥠",uxn="⥘",fxn="↿",dxn="⥒",hxn="↼",pxn="⪋",mxn="⋚",gxn="≤",vxn="≦",yxn="⩽",bxn="⪨",$xn="⩽",Exn="⩿",wxn="⪁",_xn="⪃",Sxn="⋚︀",Cxn="⪓",xxn="⪅",Txn="⋖",Oxn="⋚",Nxn="⪋",Pxn="⋚",Axn="≦",Ixn="≶",Rxn="≶",kxn="⪡",Dxn="≲",Mxn="⩽",Lxn="≲",Fxn="⥼",jxn="⌊",qxn="𝔏",Uxn="𝔩",Bxn="≶",Vxn="⪑",Hxn="⥢",zxn="↽",Gxn="↼",Wxn="⥪",Yxn="▄",Kxn="Љ",Jxn="љ",Xxn="⇇",Zxn="≪",Qxn="⋘",eTn="⌞",tTn="⇚",nTn="⥫",rTn="◺",sTn="Ŀ",oTn="ŀ",aTn="⎰",iTn="⎰",cTn="⪉",lTn="⪉",uTn="⪇",fTn="≨",dTn="⪇",hTn="≨",pTn="⋦",mTn="⟬",gTn="⇽",vTn="⟦",yTn="⟵",bTn="⟵",$Tn="⟸",ETn="⟷",wTn="⟷",_Tn="⟺",STn="⟼",CTn="⟶",xTn="⟶",TTn="⟹",OTn="↫",NTn="↬",PTn="⦅",ATn="𝕃",ITn="𝕝",RTn="⨭",kTn="⨴",DTn="∗",MTn="_",LTn="↙",FTn="↘",jTn="◊",qTn="◊",UTn="⧫",BTn="(",VTn="⦓",HTn="⇆",zTn="⌟",GTn="⇋",WTn="⥭",YTn="‎",KTn="⊿",JTn="‹",XTn="𝓁",ZTn="ℒ",QTn="↰",eOn="↰",tOn="≲",nOn="⪍",rOn="⪏",sOn="[",oOn="‘",aOn="‚",iOn="Ł",cOn="ł",lOn="⪦",uOn="⩹",fOn="<",dOn="<",hOn="≪",pOn="⋖",mOn="⋋",gOn="⋉",vOn="⥶",yOn="⩻",bOn="◃",$On="⊴",EOn="◂",wOn="⦖",_On="⥊",SOn="⥦",COn="≨︀",xOn="≨︀",TOn="¯",OOn="♂",NOn="✠",POn="✠",AOn="↦",IOn="↦",ROn="↧",kOn="↤",DOn="↥",MOn="▮",LOn="⨩",FOn="М",jOn="м",qOn="—",UOn="∺",BOn="∡",VOn=" ",HOn="ℳ",zOn="𝔐",GOn="𝔪",WOn="℧",YOn="µ",KOn="*",JOn="⫰",XOn="∣",ZOn="·",QOn="⊟",eNn="−",tNn="∸",nNn="⨪",rNn="∓",sNn="⫛",oNn="…",aNn="∓",iNn="⊧",cNn="𝕄",lNn="𝕞",uNn="∓",fNn="𝓂",dNn="ℳ",hNn="∾",pNn="Μ",mNn="μ",gNn="⊸",vNn="⊸",yNn="∇",bNn="Ń",$Nn="ń",ENn="∠⃒",wNn="≉",_Nn="⩰̸",SNn="≋̸",CNn="ʼn",xNn="≉",TNn="♮",ONn="ℕ",NNn="♮",PNn=" ",ANn="≎̸",INn="≏̸",RNn="⩃",kNn="Ň",DNn="ň",MNn="Ņ",LNn="ņ",FNn="≇",jNn="⩭̸",qNn="⩂",UNn="Н",BNn="н",VNn="–",HNn="⤤",zNn="↗",GNn="⇗",WNn="↗",YNn="≠",KNn="≐̸",JNn="​",XNn="​",ZNn="​",QNn="​",ePn="≢",tPn="⤨",nPn="≂̸",rPn="≫",sPn="≪",oPn=`
751
751
  `,aPn="∄",iPn="∄",cPn="𝔑",lPn="𝔫",uPn="≧̸",fPn="≱",dPn="≱",hPn="≧̸",pPn="⩾̸",mPn="⩾̸",gPn="⋙̸",vPn="≵",yPn="≫⃒",bPn="≯",$Pn="≯",EPn="≫̸",wPn="↮",_Pn="⇎",SPn="⫲",CPn="∋",xPn="⋼",TPn="⋺",OPn="∋",NPn="Њ",PPn="њ",APn="↚",IPn="⇍",RPn="‥",kPn="≦̸",DPn="≰",MPn="↚",LPn="⇍",FPn="↮",jPn="⇎",qPn="≰",UPn="≦̸",BPn="⩽̸",VPn="⩽̸",HPn="≮",zPn="⋘̸",GPn="≴",WPn="≪⃒",YPn="≮",KPn="⋪",JPn="⋬",XPn="≪̸",ZPn="∤",QPn="⁠",eAn=" ",tAn="𝕟",nAn="ℕ",rAn="⫬",sAn="¬",oAn="≢",aAn="≭",iAn="∦",cAn="∉",lAn="≠",uAn="≂̸",fAn="∄",dAn="≯",hAn="≱",pAn="≧̸",mAn="≫̸",gAn="≹",vAn="⩾̸",yAn="≵",bAn="≎̸",$An="≏̸",EAn="∉",wAn="⋵̸",_An="⋹̸",SAn="∉",CAn="⋷",xAn="⋶",TAn="⧏̸",OAn="⋪",NAn="⋬",PAn="≮",AAn="≰",IAn="≸",RAn="≪̸",kAn="⩽̸",DAn="≴",MAn="⪢̸",LAn="⪡̸",FAn="∌",jAn="∌",qAn="⋾",UAn="⋽",BAn="⊀",VAn="⪯̸",HAn="⋠",zAn="∌",GAn="⧐̸",WAn="⋫",YAn="⋭",KAn="⊏̸",JAn="⋢",XAn="⊐̸",ZAn="⋣",QAn="⊂⃒",eIn="⊈",tIn="⊁",nIn="⪰̸",rIn="⋡",sIn="≿̸",oIn="⊃⃒",aIn="⊉",iIn="≁",cIn="≄",lIn="≇",uIn="≉",fIn="∤",dIn="∦",hIn="∦",pIn="⫽⃥",mIn="∂̸",gIn="⨔",vIn="⊀",yIn="⋠",bIn="⊀",$In="⪯̸",EIn="⪯̸",wIn="⤳̸",_In="↛",SIn="⇏",CIn="↝̸",xIn="↛",TIn="⇏",OIn="⋫",NIn="⋭",PIn="⊁",AIn="⋡",IIn="⪰̸",RIn="𝒩",kIn="𝓃",DIn="∤",MIn="∦",LIn="≁",FIn="≄",jIn="≄",qIn="∤",UIn="∦",BIn="⋢",VIn="⋣",HIn="⊄",zIn="⫅̸",GIn="⊈",WIn="⊂⃒",YIn="⊈",KIn="⫅̸",JIn="⊁",XIn="⪰̸",ZIn="⊅",QIn="⫆̸",eRn="⊉",tRn="⊃⃒",nRn="⊉",rRn="⫆̸",sRn="≹",oRn="Ñ",aRn="ñ",iRn="≸",cRn="⋪",lRn="⋬",uRn="⋫",fRn="⋭",dRn="Ν",hRn="ν",pRn="#",mRn="№",gRn=" ",vRn="≍⃒",yRn="⊬",bRn="⊭",$Rn="⊮",ERn="⊯",wRn="≥⃒",_Rn=">⃒",SRn="⤄",CRn="⧞",xRn="⤂",TRn="≤⃒",ORn="<⃒",NRn="⊴⃒",PRn="⤃",ARn="⊵⃒",IRn="∼⃒",RRn="⤣",kRn="↖",DRn="⇖",MRn="↖",LRn="⤧",FRn="Ó",jRn="ó",qRn="⊛",URn="Ô",BRn="ô",VRn="⊚",HRn="О",zRn="о",GRn="⊝",WRn="Ő",YRn="ő",KRn="⨸",JRn="⊙",XRn="⦼",ZRn="Œ",QRn="œ",ekn="⦿",tkn="𝔒",nkn="𝔬",rkn="˛",skn="Ò",okn="ò",akn="⧁",ikn="⦵",ckn="Ω",lkn="∮",ukn="↺",fkn="⦾",dkn="⦻",hkn="‾",pkn="⧀",mkn="Ō",gkn="ō",vkn="Ω",ykn="ω",bkn="Ο",$kn="ο",Ekn="⦶",wkn="⊖",_kn="𝕆",Skn="𝕠",Ckn="⦷",xkn="“",Tkn="‘",Okn="⦹",Nkn="⊕",Pkn="↻",Akn="⩔",Ikn="∨",Rkn="⩝",kkn="ℴ",Dkn="ℴ",Mkn="ª",Lkn="º",Fkn="⊶",jkn="⩖",qkn="⩗",Ukn="⩛",Bkn="Ⓢ",Vkn="𝒪",Hkn="ℴ",zkn="Ø",Gkn="ø",Wkn="⊘",Ykn="Õ",Kkn="õ",Jkn="⨶",Xkn="⨷",Zkn="⊗",Qkn="Ö",eDn="ö",tDn="⌽",nDn="‾",rDn="⏞",sDn="⎴",oDn="⏜",aDn="¶",iDn="∥",cDn="∥",lDn="⫳",uDn="⫽",fDn="∂",dDn="∂",hDn="П",pDn="п",mDn="%",gDn=".",vDn="‰",yDn="⊥",bDn="‱",$Dn="𝔓",EDn="𝔭",wDn="Φ",_Dn="φ",SDn="ϕ",CDn="ℳ",xDn="☎",TDn="Π",ODn="π",NDn="⋔",PDn="ϖ",ADn="ℏ",IDn="ℎ",RDn="ℏ",kDn="⨣",DDn="⊞",MDn="⨢",LDn="+",FDn="∔",jDn="⨥",qDn="⩲",UDn="±",BDn="±",VDn="⨦",HDn="⨧",zDn="±",GDn="ℌ",WDn="⨕",YDn="𝕡",KDn="ℙ",JDn="£",XDn="⪷",ZDn="⪻",QDn="≺",eMn="≼",tMn="⪷",nMn="≺",rMn="≼",sMn="≺",oMn="⪯",aMn="≼",iMn="≾",cMn="⪯",lMn="⪹",uMn="⪵",fMn="⋨",dMn="⪯",hMn="⪳",pMn="≾",mMn="′",gMn="″",vMn="ℙ",yMn="⪹",bMn="⪵",$Mn="⋨",EMn="∏",wMn="∏",_Mn="⌮",SMn="⌒",CMn="⌓",xMn="∝",TMn="∝",OMn="∷",NMn="∝",PMn="≾",AMn="⊰",IMn="𝒫",RMn="𝓅",kMn="Ψ",DMn="ψ",MMn=" ",LMn="𝔔",FMn="𝔮",jMn="⨌",qMn="𝕢",UMn="ℚ",BMn="⁗",VMn="𝒬",HMn="𝓆",zMn="ℍ",GMn="⨖",WMn="?",YMn="≟",KMn='"',JMn='"',XMn="⇛",ZMn="∽̱",QMn="Ŕ",e3n="ŕ",t3n="√",n3n="⦳",r3n="⟩",s3n="⟫",o3n="⦒",a3n="⦥",i3n="⟩",c3n="»",l3n="⥵",u3n="⇥",f3n="⤠",d3n="⤳",h3n="→",p3n="↠",m3n="⇒",g3n="⤞",v3n="↪",y3n="↬",b3n="⥅",$3n="⥴",E3n="⤖",w3n="↣",_3n="↝",S3n="⤚",C3n="⤜",x3n="∶",T3n="ℚ",O3n="⤍",N3n="⤏",P3n="⤐",A3n="❳",I3n="}",R3n="]",k3n="⦌",D3n="⦎",M3n="⦐",L3n="Ř",F3n="ř",j3n="Ŗ",q3n="ŗ",U3n="⌉",B3n="}",V3n="Р",H3n="р",z3n="⤷",G3n="⥩",W3n="”",Y3n="”",K3n="↳",J3n="ℜ",X3n="ℛ",Z3n="ℜ",Q3n="ℝ",eLn="ℜ",tLn="▭",nLn="®",rLn="®",sLn="∋",oLn="⇋",aLn="⥯",iLn="⥽",cLn="⌋",lLn="𝔯",uLn="ℜ",fLn="⥤",dLn="⇁",hLn="⇀",pLn="⥬",mLn="Ρ",gLn="ρ",vLn="ϱ",yLn="⟩",bLn="⇥",$Ln="→",ELn="→",wLn="⇒",_Ln="⇄",SLn="↣",CLn="⌉",xLn="⟧",TLn="⥝",OLn="⥕",NLn="⇂",PLn="⌋",ALn="⇁",ILn="⇀",RLn="⇄",kLn="⇌",DLn="⇉",MLn="↝",LLn="↦",FLn="⊢",jLn="⥛",qLn="⋌",ULn="⧐",BLn="⊳",VLn="⊵",HLn="⥏",zLn="⥜",GLn="⥔",WLn="↾",YLn="⥓",KLn="⇀",JLn="˚",XLn="≓",ZLn="⇄",QLn="⇌",e4n="‏",t4n="⎱",n4n="⎱",r4n="⫮",s4n="⟭",o4n="⇾",a4n="⟧",i4n="⦆",c4n="𝕣",l4n="ℝ",u4n="⨮",f4n="⨵",d4n="⥰",h4n=")",p4n="⦔",m4n="⨒",g4n="⇉",v4n="⇛",y4n="›",b4n="𝓇",$4n="ℛ",E4n="↱",w4n="↱",_4n="]",S4n="’",C4n="’",x4n="⋌",T4n="⋊",O4n="▹",N4n="⊵",P4n="▸",A4n="⧎",I4n="⧴",R4n="⥨",k4n="℞",D4n="Ś",M4n="ś",L4n="‚",F4n="⪸",j4n="Š",q4n="š",U4n="⪼",B4n="≻",V4n="≽",H4n="⪰",z4n="⪴",G4n="Ş",W4n="ş",Y4n="Ŝ",K4n="ŝ",J4n="⪺",X4n="⪶",Z4n="⋩",Q4n="⨓",e5n="≿",t5n="С",n5n="с",r5n="⊡",s5n="⋅",o5n="⩦",a5n="⤥",i5n="↘",c5n="⇘",l5n="↘",u5n="§",f5n=";",d5n="⤩",h5n="∖",p5n="∖",m5n="✶",g5n="𝔖",v5n="𝔰",y5n="⌢",b5n="♯",$5n="Щ",E5n="щ",w5n="Ш",_5n="ш",S5n="↓",C5n="←",x5n="∣",T5n="∥",O5n="→",N5n="↑",P5n="­",A5n="Σ",I5n="σ",R5n="ς",k5n="ς",D5n="∼",M5n="⩪",L5n="≃",F5n="≃",j5n="⪞",q5n="⪠",U5n="⪝",B5n="⪟",V5n="≆",H5n="⨤",z5n="⥲",G5n="←",W5n="∘",Y5n="∖",K5n="⨳",J5n="⧤",X5n="∣",Z5n="⌣",Q5n="⪪",eFn="⪬",tFn="⪬︀",nFn="Ь",rFn="ь",sFn="⌿",oFn="⧄",aFn="/",iFn="𝕊",cFn="𝕤",lFn="♠",uFn="♠",fFn="∥",dFn="⊓",hFn="⊓︀",pFn="⊔",mFn="⊔︀",gFn="√",vFn="⊏",yFn="⊑",bFn="⊏",$Fn="⊑",EFn="⊐",wFn="⊒",_Fn="⊐",SFn="⊒",CFn="□",xFn="□",TFn="⊓",OFn="⊏",NFn="⊑",PFn="⊐",AFn="⊒",IFn="⊔",RFn="▪",kFn="□",DFn="▪",MFn="→",LFn="𝒮",FFn="𝓈",jFn="∖",qFn="⌣",UFn="⋆",BFn="⋆",VFn="☆",HFn="★",zFn="ϵ",GFn="ϕ",WFn="¯",YFn="⊂",KFn="⋐",JFn="⪽",XFn="⫅",ZFn="⊆",QFn="⫃",ejn="⫁",tjn="⫋",njn="⊊",rjn="⪿",sjn="⥹",ojn="⊂",ajn="⋐",ijn="⊆",cjn="⫅",ljn="⊆",ujn="⊊",fjn="⫋",djn="⫇",hjn="⫕",pjn="⫓",mjn="⪸",gjn="≻",vjn="≽",yjn="≻",bjn="⪰",$jn="≽",Ejn="≿",wjn="⪰",_jn="⪺",Sjn="⪶",Cjn="⋩",xjn="≿",Tjn="∋",Ojn="∑",Njn="∑",Pjn="♪",Ajn="¹",Ijn="²",Rjn="³",kjn="⊃",Djn="⋑",Mjn="⪾",Ljn="⫘",Fjn="⫆",jjn="⊇",qjn="⫄",Ujn="⊃",Bjn="⊇",Vjn="⟉",Hjn="⫗",zjn="⥻",Gjn="⫂",Wjn="⫌",Yjn="⊋",Kjn="⫀",Jjn="⊃",Xjn="⋑",Zjn="⊇",Qjn="⫆",eqn="⊋",tqn="⫌",nqn="⫈",rqn="⫔",sqn="⫖",oqn="⤦",aqn="↙",iqn="⇙",cqn="↙",lqn="⤪",uqn="ß",fqn=" ",dqn="⌖",hqn="Τ",pqn="τ",mqn="⎴",gqn="Ť",vqn="ť",yqn="Ţ",bqn="ţ",$qn="Т",Eqn="т",wqn="⃛",_qn="⌕",Sqn="𝔗",Cqn="𝔱",xqn="∴",Tqn="∴",Oqn="∴",Nqn="Θ",Pqn="θ",Aqn="ϑ",Iqn="ϑ",Rqn="≈",kqn="∼",Dqn="  ",Mqn=" ",Lqn=" ",Fqn="≈",jqn="∼",qqn="Þ",Uqn="þ",Bqn="˜",Vqn="∼",Hqn="≃",zqn="≅",Gqn="≈",Wqn="⨱",Yqn="⊠",Kqn="×",Jqn="⨰",Xqn="∭",Zqn="⤨",Qqn="⌶",e6n="⫱",t6n="⊤",n6n="𝕋",r6n="𝕥",s6n="⫚",o6n="⤩",a6n="‴",i6n="™",c6n="™",l6n="▵",u6n="▿",f6n="◃",d6n="⊴",h6n="≜",p6n="▹",m6n="⊵",g6n="◬",v6n="≜",y6n="⨺",b6n="⃛",$6n="⨹",E6n="⧍",w6n="⨻",_6n="⏢",S6n="𝒯",C6n="𝓉",x6n="Ц",T6n="ц",O6n="Ћ",N6n="ћ",P6n="Ŧ",A6n="ŧ",I6n="≬",R6n="↞",k6n="↠",D6n="Ú",M6n="ú",L6n="↑",F6n="↟",j6n="⇑",q6n="⥉",U6n="Ў",B6n="ў",V6n="Ŭ",H6n="ŭ",z6n="Û",G6n="û",W6n="У",Y6n="у",K6n="⇅",J6n="Ű",X6n="ű",Z6n="⥮",Q6n="⥾",eUn="𝔘",tUn="𝔲",nUn="Ù",rUn="ù",sUn="⥣",oUn="↿",aUn="↾",iUn="▀",cUn="⌜",lUn="⌜",uUn="⌏",fUn="◸",dUn="Ū",hUn="ū",pUn="¨",mUn="_",gUn="⏟",vUn="⎵",yUn="⏝",bUn="⋃",$Un="⊎",EUn="Ų",wUn="ų",_Un="𝕌",SUn="𝕦",CUn="⤒",xUn="↑",TUn="↑",OUn="⇑",NUn="⇅",PUn="↕",AUn="↕",IUn="⇕",RUn="⥮",kUn="↿",DUn="↾",MUn="⊎",LUn="↖",FUn="↗",jUn="υ",qUn="ϒ",UUn="ϒ",BUn="Υ",VUn="υ",HUn="↥",zUn="⊥",GUn="⇈",WUn="⌝",YUn="⌝",KUn="⌎",JUn="Ů",XUn="ů",ZUn="◹",QUn="𝒰",e8n="𝓊",t8n="⋰",n8n="Ũ",r8n="ũ",s8n="▵",o8n="▴",a8n="⇈",i8n="Ü",c8n="ü",l8n="⦧",u8n="⦜",f8n="ϵ",d8n="ϰ",h8n="∅",p8n="ϕ",m8n="ϖ",g8n="∝",v8n="↕",y8n="⇕",b8n="ϱ",$8n="ς",E8n="⊊︀",w8n="⫋︀",_8n="⊋︀",S8n="⫌︀",C8n="ϑ",x8n="⊲",T8n="⊳",O8n="⫨",N8n="⫫",P8n="⫩",A8n="В",I8n="в",R8n="⊢",k8n="⊨",D8n="⊩",M8n="⊫",L8n="⫦",F8n="⊻",j8n="∨",q8n="⋁",U8n="≚",B8n="⋮",V8n="|",H8n="‖",z8n="|",G8n="‖",W8n="∣",Y8n="|",K8n="❘",J8n="≀",X8n=" ",Z8n="𝔙",Q8n="𝔳",e9n="⊲",t9n="⊂⃒",n9n="⊃⃒",r9n="𝕍",s9n="𝕧",o9n="∝",a9n="⊳",i9n="𝒱",c9n="𝓋",l9n="⫋︀",u9n="⊊︀",f9n="⫌︀",d9n="⊋︀",h9n="⊪",p9n="⦚",m9n="Ŵ",g9n="ŵ",v9n="⩟",y9n="∧",b9n="⋀",$9n="≙",E9n="℘",w9n="𝔚",_9n="𝔴",S9n="𝕎",C9n="𝕨",x9n="℘",T9n="≀",O9n="≀",N9n="𝒲",P9n="𝓌",A9n="⋂",I9n="◯",R9n="⋃",k9n="▽",D9n="𝔛",M9n="𝔵",L9n="⟷",F9n="⟺",j9n="Ξ",q9n="ξ",U9n="⟵",B9n="⟸",V9n="⟼",H9n="⋻",z9n="⨀",G9n="𝕏",W9n="𝕩",Y9n="⨁",K9n="⨂",J9n="⟶",X9n="⟹",Z9n="𝒳",Q9n="𝓍",eBn="⨆",tBn="⨄",nBn="△",rBn="⋁",sBn="⋀",oBn="Ý",aBn="ý",iBn="Я",cBn="я",lBn="Ŷ",uBn="ŷ",fBn="Ы",dBn="ы",hBn="¥",pBn="𝔜",mBn="𝔶",gBn="Ї",vBn="ї",yBn="𝕐",bBn="𝕪",$Bn="𝒴",EBn="𝓎",wBn="Ю",_Bn="ю",SBn="ÿ",CBn="Ÿ",xBn="Ź",TBn="ź",OBn="Ž",NBn="ž",PBn="З",ABn="з",IBn="Ż",RBn="ż",kBn="ℨ",DBn="​",MBn="Ζ",LBn="ζ",FBn="𝔷",jBn="ℨ",qBn="Ж",UBn="ж",BBn="⇝",VBn="𝕫",HBn="ℤ",zBn="𝒵",GBn="𝓏",WBn="‍",YBn="‌",W8={Aacute:Idn,aacute:Rdn,Abreve:kdn,abreve:Ddn,ac:Mdn,acd:Ldn,acE:Fdn,Acirc:jdn,acirc:qdn,acute:Udn,Acy:Bdn,acy:Vdn,AElig:Hdn,aelig:zdn,af:Gdn,Afr:Wdn,afr:Ydn,Agrave:Kdn,agrave:Jdn,alefsym:Xdn,aleph:Zdn,Alpha:Qdn,alpha:ehn,Amacr:thn,amacr:nhn,amalg:rhn,amp:shn,AMP:ohn,andand:ahn,And:ihn,and:chn,andd:lhn,andslope:uhn,andv:fhn,ang:dhn,ange:hhn,angle:phn,angmsdaa:mhn,angmsdab:ghn,angmsdac:vhn,angmsdad:yhn,angmsdae:bhn,angmsdaf:$hn,angmsdag:Ehn,angmsdah:whn,angmsd:_hn,angrt:Shn,angrtvb:Chn,angrtvbd:xhn,angsph:Thn,angst:Ohn,angzarr:Nhn,Aogon:Phn,aogon:Ahn,Aopf:Ihn,aopf:Rhn,apacir:khn,ap:Dhn,apE:Mhn,ape:Lhn,apid:Fhn,apos:jhn,ApplyFunction:qhn,approx:Uhn,approxeq:Bhn,Aring:Vhn,aring:Hhn,Ascr:zhn,ascr:Ghn,Assign:Whn,ast:Yhn,asymp:Khn,asympeq:Jhn,Atilde:Xhn,atilde:Zhn,Auml:Qhn,auml:epn,awconint:tpn,awint:npn,backcong:rpn,backepsilon:spn,backprime:opn,backsim:apn,backsimeq:ipn,Backslash:cpn,Barv:lpn,barvee:upn,barwed:fpn,Barwed:dpn,barwedge:hpn,bbrk:ppn,bbrktbrk:mpn,bcong:gpn,Bcy:vpn,bcy:ypn,bdquo:bpn,becaus:$pn,because:Epn,Because:wpn,bemptyv:_pn,bepsi:Spn,bernou:Cpn,Bernoullis:xpn,Beta:Tpn,beta:Opn,beth:Npn,between:Ppn,Bfr:Apn,bfr:Ipn,bigcap:Rpn,bigcirc:kpn,bigcup:Dpn,bigodot:Mpn,bigoplus:Lpn,bigotimes:Fpn,bigsqcup:jpn,bigstar:qpn,bigtriangledown:Upn,bigtriangleup:Bpn,biguplus:Vpn,bigvee:Hpn,bigwedge:zpn,bkarow:Gpn,blacklozenge:Wpn,blacksquare:Ypn,blacktriangle:Kpn,blacktriangledown:Jpn,blacktriangleleft:Xpn,blacktriangleright:Zpn,blank:Qpn,blk12:emn,blk14:tmn,blk34:nmn,block:rmn,bne:smn,bnequiv:omn,bNot:amn,bnot:imn,Bopf:cmn,bopf:lmn,bot:umn,bottom:fmn,bowtie:dmn,boxbox:hmn,boxdl:pmn,boxdL:mmn,boxDl:gmn,boxDL:vmn,boxdr:ymn,boxdR:bmn,boxDr:$mn,boxDR:Emn,boxh:wmn,boxH:_mn,boxhd:Smn,boxHd:Cmn,boxhD:xmn,boxHD:Tmn,boxhu:Omn,boxHu:Nmn,boxhU:Pmn,boxHU:Amn,boxminus:Imn,boxplus:Rmn,boxtimes:kmn,boxul:Dmn,boxuL:Mmn,boxUl:Lmn,boxUL:Fmn,boxur:jmn,boxuR:qmn,boxUr:Umn,boxUR:Bmn,boxv:Vmn,boxV:Hmn,boxvh:zmn,boxvH:Gmn,boxVh:Wmn,boxVH:Ymn,boxvl:Kmn,boxvL:Jmn,boxVl:Xmn,boxVL:Zmn,boxvr:Qmn,boxvR:egn,boxVr:tgn,boxVR:ngn,bprime:rgn,breve:sgn,Breve:ogn,brvbar:agn,bscr:ign,Bscr:cgn,bsemi:lgn,bsim:ugn,bsime:fgn,bsolb:dgn,bsol:hgn,bsolhsub:pgn,bull:mgn,bullet:ggn,bump:vgn,bumpE:ygn,bumpe:bgn,Bumpeq:$gn,bumpeq:Egn,Cacute:wgn,cacute:_gn,capand:Sgn,capbrcup:Cgn,capcap:xgn,cap:Tgn,Cap:Ogn,capcup:Ngn,capdot:Pgn,CapitalDifferentialD:Agn,caps:Ign,caret:Rgn,caron:kgn,Cayleys:Dgn,ccaps:Mgn,Ccaron:Lgn,ccaron:Fgn,Ccedil:jgn,ccedil:qgn,Ccirc:Ugn,ccirc:Bgn,Cconint:Vgn,ccups:Hgn,ccupssm:zgn,Cdot:Ggn,cdot:Wgn,cedil:Ygn,Cedilla:Kgn,cemptyv:Jgn,cent:Xgn,centerdot:Zgn,CenterDot:Qgn,cfr:evn,Cfr:tvn,CHcy:nvn,chcy:rvn,check:svn,checkmark:ovn,Chi:avn,chi:ivn,circ:cvn,circeq:lvn,circlearrowleft:uvn,circlearrowright:fvn,circledast:dvn,circledcirc:hvn,circleddash:pvn,CircleDot:mvn,circledR:gvn,circledS:vvn,CircleMinus:yvn,CirclePlus:bvn,CircleTimes:$vn,cir:Evn,cirE:wvn,cire:_vn,cirfnint:Svn,cirmid:Cvn,cirscir:xvn,ClockwiseContourIntegral:Tvn,CloseCurlyDoubleQuote:Ovn,CloseCurlyQuote:Nvn,clubs:Pvn,clubsuit:Avn,colon:Ivn,Colon:Rvn,Colone:kvn,colone:Dvn,coloneq:Mvn,comma:Lvn,commat:Fvn,comp:jvn,compfn:qvn,complement:Uvn,complexes:Bvn,cong:Vvn,congdot:Hvn,Congruent:zvn,conint:Gvn,Conint:Wvn,ContourIntegral:Yvn,copf:Kvn,Copf:Jvn,coprod:Xvn,Coproduct:Zvn,copy:Qvn,COPY:eyn,copysr:tyn,CounterClockwiseContourIntegral:nyn,crarr:ryn,cross:syn,Cross:oyn,Cscr:ayn,cscr:iyn,csub:cyn,csube:lyn,csup:uyn,csupe:fyn,ctdot:dyn,cudarrl:hyn,cudarrr:pyn,cuepr:myn,cuesc:gyn,cularr:vyn,cularrp:yyn,cupbrcap:byn,cupcap:$yn,CupCap:Eyn,cup:wyn,Cup:_yn,cupcup:Syn,cupdot:Cyn,cupor:xyn,cups:Tyn,curarr:Oyn,curarrm:Nyn,curlyeqprec:Pyn,curlyeqsucc:Ayn,curlyvee:Iyn,curlywedge:Ryn,curren:kyn,curvearrowleft:Dyn,curvearrowright:Myn,cuvee:Lyn,cuwed:Fyn,cwconint:jyn,cwint:qyn,cylcty:Uyn,dagger:Byn,Dagger:Vyn,daleth:Hyn,darr:zyn,Darr:Gyn,dArr:Wyn,dash:Yyn,Dashv:Kyn,dashv:Jyn,dbkarow:Xyn,dblac:Zyn,Dcaron:Qyn,dcaron:ebn,Dcy:tbn,dcy:nbn,ddagger:rbn,ddarr:sbn,DD:obn,dd:abn,DDotrahd:ibn,ddotseq:cbn,deg:lbn,Del:ubn,Delta:fbn,delta:dbn,demptyv:hbn,dfisht:pbn,Dfr:mbn,dfr:gbn,dHar:vbn,dharl:ybn,dharr:bbn,DiacriticalAcute:$bn,DiacriticalDot:Ebn,DiacriticalDoubleAcute:wbn,DiacriticalGrave:_bn,DiacriticalTilde:Sbn,diam:Cbn,diamond:xbn,Diamond:Tbn,diamondsuit:Obn,diams:Nbn,die:Pbn,DifferentialD:Abn,digamma:Ibn,disin:Rbn,div:kbn,divide:Dbn,divideontimes:Mbn,divonx:Lbn,DJcy:Fbn,djcy:jbn,dlcorn:qbn,dlcrop:Ubn,dollar:Bbn,Dopf:Vbn,dopf:Hbn,Dot:zbn,dot:Gbn,DotDot:Wbn,doteq:Ybn,doteqdot:Kbn,DotEqual:Jbn,dotminus:Xbn,dotplus:Zbn,dotsquare:Qbn,doublebarwedge:e$n,DoubleContourIntegral:t$n,DoubleDot:n$n,DoubleDownArrow:r$n,DoubleLeftArrow:s$n,DoubleLeftRightArrow:o$n,DoubleLeftTee:a$n,DoubleLongLeftArrow:i$n,DoubleLongLeftRightArrow:c$n,DoubleLongRightArrow:l$n,DoubleRightArrow:u$n,DoubleRightTee:f$n,DoubleUpArrow:d$n,DoubleUpDownArrow:h$n,DoubleVerticalBar:p$n,DownArrowBar:m$n,downarrow:g$n,DownArrow:v$n,Downarrow:y$n,DownArrowUpArrow:b$n,DownBreve:$$n,downdownarrows:E$n,downharpoonleft:w$n,downharpoonright:_$n,DownLeftRightVector:S$n,DownLeftTeeVector:C$n,DownLeftVectorBar:x$n,DownLeftVector:T$n,DownRightTeeVector:O$n,DownRightVectorBar:N$n,DownRightVector:P$n,DownTeeArrow:A$n,DownTee:I$n,drbkarow:R$n,drcorn:k$n,drcrop:D$n,Dscr:M$n,dscr:L$n,DScy:F$n,dscy:j$n,dsol:q$n,Dstrok:U$n,dstrok:B$n,dtdot:V$n,dtri:H$n,dtrif:z$n,duarr:G$n,duhar:W$n,dwangle:Y$n,DZcy:K$n,dzcy:J$n,dzigrarr:X$n,Eacute:Z$n,eacute:Q$n,easter:e0n,Ecaron:t0n,ecaron:n0n,Ecirc:r0n,ecirc:s0n,ecir:o0n,ecolon:a0n,Ecy:i0n,ecy:c0n,eDDot:l0n,Edot:u0n,edot:f0n,eDot:d0n,ee:h0n,efDot:p0n,Efr:m0n,efr:g0n,eg:v0n,Egrave:y0n,egrave:b0n,egs:$0n,egsdot:E0n,el:w0n,Element:_0n,elinters:S0n,ell:C0n,els:x0n,elsdot:T0n,Emacr:O0n,emacr:N0n,empty:P0n,emptyset:A0n,EmptySmallSquare:I0n,emptyv:R0n,EmptyVerySmallSquare:k0n,emsp13:D0n,emsp14:M0n,emsp:L0n,ENG:F0n,eng:j0n,ensp:q0n,Eogon:U0n,eogon:B0n,Eopf:V0n,eopf:H0n,epar:z0n,eparsl:G0n,eplus:W0n,epsi:Y0n,Epsilon:K0n,epsilon:J0n,epsiv:X0n,eqcirc:Z0n,eqcolon:Q0n,eqsim:e1n,eqslantgtr:t1n,eqslantless:n1n,Equal:r1n,equals:s1n,EqualTilde:o1n,equest:a1n,Equilibrium:i1n,equiv:c1n,equivDD:l1n,eqvparsl:u1n,erarr:f1n,erDot:d1n,escr:h1n,Escr:p1n,esdot:m1n,Esim:g1n,esim:v1n,Eta:y1n,eta:b1n,ETH:$1n,eth:E1n,Euml:w1n,euml:_1n,euro:S1n,excl:C1n,exist:x1n,Exists:T1n,expectation:O1n,exponentiale:N1n,ExponentialE:P1n,fallingdotseq:A1n,Fcy:I1n,fcy:R1n,female:k1n,ffilig:D1n,fflig:M1n,ffllig:L1n,Ffr:F1n,ffr:j1n,filig:q1n,FilledSmallSquare:U1n,FilledVerySmallSquare:B1n,fjlig:V1n,flat:H1n,fllig:z1n,fltns:G1n,fnof:W1n,Fopf:Y1n,fopf:K1n,forall:J1n,ForAll:X1n,fork:Z1n,forkv:Q1n,Fouriertrf:eEn,fpartint:tEn,frac12:nEn,frac13:rEn,frac14:sEn,frac15:oEn,frac16:aEn,frac18:iEn,frac23:cEn,frac25:lEn,frac34:uEn,frac35:fEn,frac38:dEn,frac45:hEn,frac56:pEn,frac58:mEn,frac78:gEn,frasl:vEn,frown:yEn,fscr:bEn,Fscr:$En,gacute:EEn,Gamma:wEn,gamma:_En,Gammad:SEn,gammad:CEn,gap:xEn,Gbreve:TEn,gbreve:OEn,Gcedil:NEn,Gcirc:PEn,gcirc:AEn,Gcy:IEn,gcy:REn,Gdot:kEn,gdot:DEn,ge:MEn,gE:LEn,gEl:FEn,gel:jEn,geq:qEn,geqq:UEn,geqslant:BEn,gescc:VEn,ges:HEn,gesdot:zEn,gesdoto:GEn,gesdotol:WEn,gesl:YEn,gesles:KEn,Gfr:JEn,gfr:XEn,gg:ZEn,Gg:QEn,ggg:ewn,gimel:twn,GJcy:nwn,gjcy:rwn,gla:swn,gl:own,glE:awn,glj:iwn,gnap:cwn,gnapprox:lwn,gne:uwn,gnE:fwn,gneq:dwn,gneqq:hwn,gnsim:pwn,Gopf:mwn,gopf:gwn,grave:vwn,GreaterEqual:ywn,GreaterEqualLess:bwn,GreaterFullEqual:$wn,GreaterGreater:Ewn,GreaterLess:wwn,GreaterSlantEqual:_wn,GreaterTilde:Swn,Gscr:Cwn,gscr:xwn,gsim:Twn,gsime:Own,gsiml:Nwn,gtcc:Pwn,gtcir:Awn,gt:Iwn,GT:Rwn,Gt:kwn,gtdot:Dwn,gtlPar:Mwn,gtquest:Lwn,gtrapprox:Fwn,gtrarr:jwn,gtrdot:qwn,gtreqless:Uwn,gtreqqless:Bwn,gtrless:Vwn,gtrsim:Hwn,gvertneqq:zwn,gvnE:Gwn,Hacek:Wwn,hairsp:Ywn,half:Kwn,hamilt:Jwn,HARDcy:Xwn,hardcy:Zwn,harrcir:Qwn,harr:e_n,hArr:t_n,harrw:n_n,Hat:r_n,hbar:s_n,Hcirc:o_n,hcirc:a_n,hearts:i_n,heartsuit:c_n,hellip:l_n,hercon:u_n,hfr:f_n,Hfr:d_n,HilbertSpace:h_n,hksearow:p_n,hkswarow:m_n,hoarr:g_n,homtht:v_n,hookleftarrow:y_n,hookrightarrow:b_n,hopf:$_n,Hopf:E_n,horbar:w_n,HorizontalLine:__n,hscr:S_n,Hscr:C_n,hslash:x_n,Hstrok:T_n,hstrok:O_n,HumpDownHump:N_n,HumpEqual:P_n,hybull:A_n,hyphen:I_n,Iacute:R_n,iacute:k_n,ic:D_n,Icirc:M_n,icirc:L_n,Icy:F_n,icy:j_n,Idot:q_n,IEcy:U_n,iecy:B_n,iexcl:V_n,iff:H_n,ifr:z_n,Ifr:G_n,Igrave:W_n,igrave:Y_n,ii:K_n,iiiint:J_n,iiint:X_n,iinfin:Z_n,iiota:Q_n,IJlig:e2n,ijlig:t2n,Imacr:n2n,imacr:r2n,image:s2n,ImaginaryI:o2n,imagline:a2n,imagpart:i2n,imath:c2n,Im:l2n,imof:u2n,imped:f2n,Implies:d2n,incare:h2n,in:"∈",infin:p2n,infintie:m2n,inodot:g2n,intcal:v2n,int:y2n,Int:b2n,integers:$2n,Integral:E2n,intercal:w2n,Intersection:_2n,intlarhk:S2n,intprod:C2n,InvisibleComma:x2n,InvisibleTimes:T2n,IOcy:O2n,iocy:N2n,Iogon:P2n,iogon:A2n,Iopf:I2n,iopf:R2n,Iota:k2n,iota:D2n,iprod:M2n,iquest:L2n,iscr:F2n,Iscr:j2n,isin:q2n,isindot:U2n,isinE:B2n,isins:V2n,isinsv:H2n,isinv:z2n,it:G2n,Itilde:W2n,itilde:Y2n,Iukcy:K2n,iukcy:J2n,Iuml:X2n,iuml:Z2n,Jcirc:Q2n,jcirc:eSn,Jcy:tSn,jcy:nSn,Jfr:rSn,jfr:sSn,jmath:oSn,Jopf:aSn,jopf:iSn,Jscr:cSn,jscr:lSn,Jsercy:uSn,jsercy:fSn,Jukcy:dSn,jukcy:hSn,Kappa:pSn,kappa:mSn,kappav:gSn,Kcedil:vSn,kcedil:ySn,Kcy:bSn,kcy:$Sn,Kfr:ESn,kfr:wSn,kgreen:_Sn,KHcy:SSn,khcy:CSn,KJcy:xSn,kjcy:TSn,Kopf:OSn,kopf:NSn,Kscr:PSn,kscr:ASn,lAarr:ISn,Lacute:RSn,lacute:kSn,laemptyv:DSn,lagran:MSn,Lambda:LSn,lambda:FSn,lang:jSn,Lang:qSn,langd:USn,langle:BSn,lap:VSn,Laplacetrf:HSn,laquo:zSn,larrb:GSn,larrbfs:WSn,larr:YSn,Larr:KSn,lArr:JSn,larrfs:XSn,larrhk:ZSn,larrlp:QSn,larrpl:eCn,larrsim:tCn,larrtl:nCn,latail:rCn,lAtail:sCn,lat:oCn,late:aCn,lates:iCn,lbarr:cCn,lBarr:lCn,lbbrk:uCn,lbrace:fCn,lbrack:dCn,lbrke:hCn,lbrksld:pCn,lbrkslu:mCn,Lcaron:gCn,lcaron:vCn,Lcedil:yCn,lcedil:bCn,lceil:$Cn,lcub:ECn,Lcy:wCn,lcy:_Cn,ldca:SCn,ldquo:CCn,ldquor:xCn,ldrdhar:TCn,ldrushar:OCn,ldsh:NCn,le:PCn,lE:ACn,LeftAngleBracket:ICn,LeftArrowBar:RCn,leftarrow:kCn,LeftArrow:DCn,Leftarrow:MCn,LeftArrowRightArrow:LCn,leftarrowtail:FCn,LeftCeiling:jCn,LeftDoubleBracket:qCn,LeftDownTeeVector:UCn,LeftDownVectorBar:BCn,LeftDownVector:VCn,LeftFloor:HCn,leftharpoondown:zCn,leftharpoonup:GCn,leftleftarrows:WCn,leftrightarrow:YCn,LeftRightArrow:KCn,Leftrightarrow:JCn,leftrightarrows:XCn,leftrightharpoons:ZCn,leftrightsquigarrow:QCn,LeftRightVector:exn,LeftTeeArrow:txn,LeftTee:nxn,LeftTeeVector:rxn,leftthreetimes:sxn,LeftTriangleBar:oxn,LeftTriangle:axn,LeftTriangleEqual:ixn,LeftUpDownVector:cxn,LeftUpTeeVector:lxn,LeftUpVectorBar:uxn,LeftUpVector:fxn,LeftVectorBar:dxn,LeftVector:hxn,lEg:pxn,leg:mxn,leq:gxn,leqq:vxn,leqslant:yxn,lescc:bxn,les:$xn,lesdot:Exn,lesdoto:wxn,lesdotor:_xn,lesg:Sxn,lesges:Cxn,lessapprox:xxn,lessdot:Txn,lesseqgtr:Oxn,lesseqqgtr:Nxn,LessEqualGreater:Pxn,LessFullEqual:Axn,LessGreater:Ixn,lessgtr:Rxn,LessLess:kxn,lesssim:Dxn,LessSlantEqual:Mxn,LessTilde:Lxn,lfisht:Fxn,lfloor:jxn,Lfr:qxn,lfr:Uxn,lg:Bxn,lgE:Vxn,lHar:Hxn,lhard:zxn,lharu:Gxn,lharul:Wxn,lhblk:Yxn,LJcy:Kxn,ljcy:Jxn,llarr:Xxn,ll:Zxn,Ll:Qxn,llcorner:eTn,Lleftarrow:tTn,llhard:nTn,lltri:rTn,Lmidot:sTn,lmidot:oTn,lmoustache:aTn,lmoust:iTn,lnap:cTn,lnapprox:lTn,lne:uTn,lnE:fTn,lneq:dTn,lneqq:hTn,lnsim:pTn,loang:mTn,loarr:gTn,lobrk:vTn,longleftarrow:yTn,LongLeftArrow:bTn,Longleftarrow:$Tn,longleftrightarrow:ETn,LongLeftRightArrow:wTn,Longleftrightarrow:_Tn,longmapsto:STn,longrightarrow:CTn,LongRightArrow:xTn,Longrightarrow:TTn,looparrowleft:OTn,looparrowright:NTn,lopar:PTn,Lopf:ATn,lopf:ITn,loplus:RTn,lotimes:kTn,lowast:DTn,lowbar:MTn,LowerLeftArrow:LTn,LowerRightArrow:FTn,loz:jTn,lozenge:qTn,lozf:UTn,lpar:BTn,lparlt:VTn,lrarr:HTn,lrcorner:zTn,lrhar:GTn,lrhard:WTn,lrm:YTn,lrtri:KTn,lsaquo:JTn,lscr:XTn,Lscr:ZTn,lsh:QTn,Lsh:eOn,lsim:tOn,lsime:nOn,lsimg:rOn,lsqb:sOn,lsquo:oOn,lsquor:aOn,Lstrok:iOn,lstrok:cOn,ltcc:lOn,ltcir:uOn,lt:fOn,LT:dOn,Lt:hOn,ltdot:pOn,lthree:mOn,ltimes:gOn,ltlarr:vOn,ltquest:yOn,ltri:bOn,ltrie:$On,ltrif:EOn,ltrPar:wOn,lurdshar:_On,luruhar:SOn,lvertneqq:COn,lvnE:xOn,macr:TOn,male:OOn,malt:NOn,maltese:POn,Map:"⤅",map:AOn,mapsto:IOn,mapstodown:ROn,mapstoleft:kOn,mapstoup:DOn,marker:MOn,mcomma:LOn,Mcy:FOn,mcy:jOn,mdash:qOn,mDDot:UOn,measuredangle:BOn,MediumSpace:VOn,Mellintrf:HOn,Mfr:zOn,mfr:GOn,mho:WOn,micro:YOn,midast:KOn,midcir:JOn,mid:XOn,middot:ZOn,minusb:QOn,minus:eNn,minusd:tNn,minusdu:nNn,MinusPlus:rNn,mlcp:sNn,mldr:oNn,mnplus:aNn,models:iNn,Mopf:cNn,mopf:lNn,mp:uNn,mscr:fNn,Mscr:dNn,mstpos:hNn,Mu:pNn,mu:mNn,multimap:gNn,mumap:vNn,nabla:yNn,Nacute:bNn,nacute:$Nn,nang:ENn,nap:wNn,napE:_Nn,napid:SNn,napos:CNn,napprox:xNn,natural:TNn,naturals:ONn,natur:NNn,nbsp:PNn,nbump:ANn,nbumpe:INn,ncap:RNn,Ncaron:kNn,ncaron:DNn,Ncedil:MNn,ncedil:LNn,ncong:FNn,ncongdot:jNn,ncup:qNn,Ncy:UNn,ncy:BNn,ndash:VNn,nearhk:HNn,nearr:zNn,neArr:GNn,nearrow:WNn,ne:YNn,nedot:KNn,NegativeMediumSpace:JNn,NegativeThickSpace:XNn,NegativeThinSpace:ZNn,NegativeVeryThinSpace:QNn,nequiv:ePn,nesear:tPn,nesim:nPn,NestedGreaterGreater:rPn,NestedLessLess:sPn,NewLine:oPn,nexist:aPn,nexists:iPn,Nfr:cPn,nfr:lPn,ngE:uPn,nge:fPn,ngeq:dPn,ngeqq:hPn,ngeqslant:pPn,nges:mPn,nGg:gPn,ngsim:vPn,nGt:yPn,ngt:bPn,ngtr:$Pn,nGtv:EPn,nharr:wPn,nhArr:_Pn,nhpar:SPn,ni:CPn,nis:xPn,nisd:TPn,niv:OPn,NJcy:NPn,njcy:PPn,nlarr:APn,nlArr:IPn,nldr:RPn,nlE:kPn,nle:DPn,nleftarrow:MPn,nLeftarrow:LPn,nleftrightarrow:FPn,nLeftrightarrow:jPn,nleq:qPn,nleqq:UPn,nleqslant:BPn,nles:VPn,nless:HPn,nLl:zPn,nlsim:GPn,nLt:WPn,nlt:YPn,nltri:KPn,nltrie:JPn,nLtv:XPn,nmid:ZPn,NoBreak:QPn,NonBreakingSpace:eAn,nopf:tAn,Nopf:nAn,Not:rAn,not:sAn,NotCongruent:oAn,NotCupCap:aAn,NotDoubleVerticalBar:iAn,NotElement:cAn,NotEqual:lAn,NotEqualTilde:uAn,NotExists:fAn,NotGreater:dAn,NotGreaterEqual:hAn,NotGreaterFullEqual:pAn,NotGreaterGreater:mAn,NotGreaterLess:gAn,NotGreaterSlantEqual:vAn,NotGreaterTilde:yAn,NotHumpDownHump:bAn,NotHumpEqual:$An,notin:EAn,notindot:wAn,notinE:_An,notinva:SAn,notinvb:CAn,notinvc:xAn,NotLeftTriangleBar:TAn,NotLeftTriangle:OAn,NotLeftTriangleEqual:NAn,NotLess:PAn,NotLessEqual:AAn,NotLessGreater:IAn,NotLessLess:RAn,NotLessSlantEqual:kAn,NotLessTilde:DAn,NotNestedGreaterGreater:MAn,NotNestedLessLess:LAn,notni:FAn,notniva:jAn,notnivb:qAn,notnivc:UAn,NotPrecedes:BAn,NotPrecedesEqual:VAn,NotPrecedesSlantEqual:HAn,NotReverseElement:zAn,NotRightTriangleBar:GAn,NotRightTriangle:WAn,NotRightTriangleEqual:YAn,NotSquareSubset:KAn,NotSquareSubsetEqual:JAn,NotSquareSuperset:XAn,NotSquareSupersetEqual:ZAn,NotSubset:QAn,NotSubsetEqual:eIn,NotSucceeds:tIn,NotSucceedsEqual:nIn,NotSucceedsSlantEqual:rIn,NotSucceedsTilde:sIn,NotSuperset:oIn,NotSupersetEqual:aIn,NotTilde:iIn,NotTildeEqual:cIn,NotTildeFullEqual:lIn,NotTildeTilde:uIn,NotVerticalBar:fIn,nparallel:dIn,npar:hIn,nparsl:pIn,npart:mIn,npolint:gIn,npr:vIn,nprcue:yIn,nprec:bIn,npreceq:$In,npre:EIn,nrarrc:wIn,nrarr:_In,nrArr:SIn,nrarrw:CIn,nrightarrow:xIn,nRightarrow:TIn,nrtri:OIn,nrtrie:NIn,nsc:PIn,nsccue:AIn,nsce:IIn,Nscr:RIn,nscr:kIn,nshortmid:DIn,nshortparallel:MIn,nsim:LIn,nsime:FIn,nsimeq:jIn,nsmid:qIn,nspar:UIn,nsqsube:BIn,nsqsupe:VIn,nsub:HIn,nsubE:zIn,nsube:GIn,nsubset:WIn,nsubseteq:YIn,nsubseteqq:KIn,nsucc:JIn,nsucceq:XIn,nsup:ZIn,nsupE:QIn,nsupe:eRn,nsupset:tRn,nsupseteq:nRn,nsupseteqq:rRn,ntgl:sRn,Ntilde:oRn,ntilde:aRn,ntlg:iRn,ntriangleleft:cRn,ntrianglelefteq:lRn,ntriangleright:uRn,ntrianglerighteq:fRn,Nu:dRn,nu:hRn,num:pRn,numero:mRn,numsp:gRn,nvap:vRn,nvdash:yRn,nvDash:bRn,nVdash:$Rn,nVDash:ERn,nvge:wRn,nvgt:_Rn,nvHarr:SRn,nvinfin:CRn,nvlArr:xRn,nvle:TRn,nvlt:ORn,nvltrie:NRn,nvrArr:PRn,nvrtrie:ARn,nvsim:IRn,nwarhk:RRn,nwarr:kRn,nwArr:DRn,nwarrow:MRn,nwnear:LRn,Oacute:FRn,oacute:jRn,oast:qRn,Ocirc:URn,ocirc:BRn,ocir:VRn,Ocy:HRn,ocy:zRn,odash:GRn,Odblac:WRn,odblac:YRn,odiv:KRn,odot:JRn,odsold:XRn,OElig:ZRn,oelig:QRn,ofcir:ekn,Ofr:tkn,ofr:nkn,ogon:rkn,Ograve:skn,ograve:okn,ogt:akn,ohbar:ikn,ohm:ckn,oint:lkn,olarr:ukn,olcir:fkn,olcross:dkn,oline:hkn,olt:pkn,Omacr:mkn,omacr:gkn,Omega:vkn,omega:ykn,Omicron:bkn,omicron:$kn,omid:Ekn,ominus:wkn,Oopf:_kn,oopf:Skn,opar:Ckn,OpenCurlyDoubleQuote:xkn,OpenCurlyQuote:Tkn,operp:Okn,oplus:Nkn,orarr:Pkn,Or:Akn,or:Ikn,ord:Rkn,order:kkn,orderof:Dkn,ordf:Mkn,ordm:Lkn,origof:Fkn,oror:jkn,orslope:qkn,orv:Ukn,oS:Bkn,Oscr:Vkn,oscr:Hkn,Oslash:zkn,oslash:Gkn,osol:Wkn,Otilde:Ykn,otilde:Kkn,otimesas:Jkn,Otimes:Xkn,otimes:Zkn,Ouml:Qkn,ouml:eDn,ovbar:tDn,OverBar:nDn,OverBrace:rDn,OverBracket:sDn,OverParenthesis:oDn,para:aDn,parallel:iDn,par:cDn,parsim:lDn,parsl:uDn,part:fDn,PartialD:dDn,Pcy:hDn,pcy:pDn,percnt:mDn,period:gDn,permil:vDn,perp:yDn,pertenk:bDn,Pfr:$Dn,pfr:EDn,Phi:wDn,phi:_Dn,phiv:SDn,phmmat:CDn,phone:xDn,Pi:TDn,pi:ODn,pitchfork:NDn,piv:PDn,planck:ADn,planckh:IDn,plankv:RDn,plusacir:kDn,plusb:DDn,pluscir:MDn,plus:LDn,plusdo:FDn,plusdu:jDn,pluse:qDn,PlusMinus:UDn,plusmn:BDn,plussim:VDn,plustwo:HDn,pm:zDn,Poincareplane:GDn,pointint:WDn,popf:YDn,Popf:KDn,pound:JDn,prap:XDn,Pr:ZDn,pr:QDn,prcue:eMn,precapprox:tMn,prec:nMn,preccurlyeq:rMn,Precedes:sMn,PrecedesEqual:oMn,PrecedesSlantEqual:aMn,PrecedesTilde:iMn,preceq:cMn,precnapprox:lMn,precneqq:uMn,precnsim:fMn,pre:dMn,prE:hMn,precsim:pMn,prime:mMn,Prime:gMn,primes:vMn,prnap:yMn,prnE:bMn,prnsim:$Mn,prod:EMn,Product:wMn,profalar:_Mn,profline:SMn,profsurf:CMn,prop:xMn,Proportional:TMn,Proportion:OMn,propto:NMn,prsim:PMn,prurel:AMn,Pscr:IMn,pscr:RMn,Psi:kMn,psi:DMn,puncsp:MMn,Qfr:LMn,qfr:FMn,qint:jMn,qopf:qMn,Qopf:UMn,qprime:BMn,Qscr:VMn,qscr:HMn,quaternions:zMn,quatint:GMn,quest:WMn,questeq:YMn,quot:KMn,QUOT:JMn,rAarr:XMn,race:ZMn,Racute:QMn,racute:e3n,radic:t3n,raemptyv:n3n,rang:r3n,Rang:s3n,rangd:o3n,range:a3n,rangle:i3n,raquo:c3n,rarrap:l3n,rarrb:u3n,rarrbfs:f3n,rarrc:d3n,rarr:h3n,Rarr:p3n,rArr:m3n,rarrfs:g3n,rarrhk:v3n,rarrlp:y3n,rarrpl:b3n,rarrsim:$3n,Rarrtl:E3n,rarrtl:w3n,rarrw:_3n,ratail:S3n,rAtail:C3n,ratio:x3n,rationals:T3n,rbarr:O3n,rBarr:N3n,RBarr:P3n,rbbrk:A3n,rbrace:I3n,rbrack:R3n,rbrke:k3n,rbrksld:D3n,rbrkslu:M3n,Rcaron:L3n,rcaron:F3n,Rcedil:j3n,rcedil:q3n,rceil:U3n,rcub:B3n,Rcy:V3n,rcy:H3n,rdca:z3n,rdldhar:G3n,rdquo:W3n,rdquor:Y3n,rdsh:K3n,real:J3n,realine:X3n,realpart:Z3n,reals:Q3n,Re:eLn,rect:tLn,reg:nLn,REG:rLn,ReverseElement:sLn,ReverseEquilibrium:oLn,ReverseUpEquilibrium:aLn,rfisht:iLn,rfloor:cLn,rfr:lLn,Rfr:uLn,rHar:fLn,rhard:dLn,rharu:hLn,rharul:pLn,Rho:mLn,rho:gLn,rhov:vLn,RightAngleBracket:yLn,RightArrowBar:bLn,rightarrow:$Ln,RightArrow:ELn,Rightarrow:wLn,RightArrowLeftArrow:_Ln,rightarrowtail:SLn,RightCeiling:CLn,RightDoubleBracket:xLn,RightDownTeeVector:TLn,RightDownVectorBar:OLn,RightDownVector:NLn,RightFloor:PLn,rightharpoondown:ALn,rightharpoonup:ILn,rightleftarrows:RLn,rightleftharpoons:kLn,rightrightarrows:DLn,rightsquigarrow:MLn,RightTeeArrow:LLn,RightTee:FLn,RightTeeVector:jLn,rightthreetimes:qLn,RightTriangleBar:ULn,RightTriangle:BLn,RightTriangleEqual:VLn,RightUpDownVector:HLn,RightUpTeeVector:zLn,RightUpVectorBar:GLn,RightUpVector:WLn,RightVectorBar:YLn,RightVector:KLn,ring:JLn,risingdotseq:XLn,rlarr:ZLn,rlhar:QLn,rlm:e4n,rmoustache:t4n,rmoust:n4n,rnmid:r4n,roang:s4n,roarr:o4n,robrk:a4n,ropar:i4n,ropf:c4n,Ropf:l4n,roplus:u4n,rotimes:f4n,RoundImplies:d4n,rpar:h4n,rpargt:p4n,rppolint:m4n,rrarr:g4n,Rrightarrow:v4n,rsaquo:y4n,rscr:b4n,Rscr:$4n,rsh:E4n,Rsh:w4n,rsqb:_4n,rsquo:S4n,rsquor:C4n,rthree:x4n,rtimes:T4n,rtri:O4n,rtrie:N4n,rtrif:P4n,rtriltri:A4n,RuleDelayed:I4n,ruluhar:R4n,rx:k4n,Sacute:D4n,sacute:M4n,sbquo:L4n,scap:F4n,Scaron:j4n,scaron:q4n,Sc:U4n,sc:B4n,sccue:V4n,sce:H4n,scE:z4n,Scedil:G4n,scedil:W4n,Scirc:Y4n,scirc:K4n,scnap:J4n,scnE:X4n,scnsim:Z4n,scpolint:Q4n,scsim:e5n,Scy:t5n,scy:n5n,sdotb:r5n,sdot:s5n,sdote:o5n,searhk:a5n,searr:i5n,seArr:c5n,searrow:l5n,sect:u5n,semi:f5n,seswar:d5n,setminus:h5n,setmn:p5n,sext:m5n,Sfr:g5n,sfr:v5n,sfrown:y5n,sharp:b5n,SHCHcy:$5n,shchcy:E5n,SHcy:w5n,shcy:_5n,ShortDownArrow:S5n,ShortLeftArrow:C5n,shortmid:x5n,shortparallel:T5n,ShortRightArrow:O5n,ShortUpArrow:N5n,shy:P5n,Sigma:A5n,sigma:I5n,sigmaf:R5n,sigmav:k5n,sim:D5n,simdot:M5n,sime:L5n,simeq:F5n,simg:j5n,simgE:q5n,siml:U5n,simlE:B5n,simne:V5n,simplus:H5n,simrarr:z5n,slarr:G5n,SmallCircle:W5n,smallsetminus:Y5n,smashp:K5n,smeparsl:J5n,smid:X5n,smile:Z5n,smt:Q5n,smte:eFn,smtes:tFn,SOFTcy:nFn,softcy:rFn,solbar:sFn,solb:oFn,sol:aFn,Sopf:iFn,sopf:cFn,spades:lFn,spadesuit:uFn,spar:fFn,sqcap:dFn,sqcaps:hFn,sqcup:pFn,sqcups:mFn,Sqrt:gFn,sqsub:vFn,sqsube:yFn,sqsubset:bFn,sqsubseteq:$Fn,sqsup:EFn,sqsupe:wFn,sqsupset:_Fn,sqsupseteq:SFn,square:CFn,Square:xFn,SquareIntersection:TFn,SquareSubset:OFn,SquareSubsetEqual:NFn,SquareSuperset:PFn,SquareSupersetEqual:AFn,SquareUnion:IFn,squarf:RFn,squ:kFn,squf:DFn,srarr:MFn,Sscr:LFn,sscr:FFn,ssetmn:jFn,ssmile:qFn,sstarf:UFn,Star:BFn,star:VFn,starf:HFn,straightepsilon:zFn,straightphi:GFn,strns:WFn,sub:YFn,Sub:KFn,subdot:JFn,subE:XFn,sube:ZFn,subedot:QFn,submult:ejn,subnE:tjn,subne:njn,subplus:rjn,subrarr:sjn,subset:ojn,Subset:ajn,subseteq:ijn,subseteqq:cjn,SubsetEqual:ljn,subsetneq:ujn,subsetneqq:fjn,subsim:djn,subsub:hjn,subsup:pjn,succapprox:mjn,succ:gjn,succcurlyeq:vjn,Succeeds:yjn,SucceedsEqual:bjn,SucceedsSlantEqual:$jn,SucceedsTilde:Ejn,succeq:wjn,succnapprox:_jn,succneqq:Sjn,succnsim:Cjn,succsim:xjn,SuchThat:Tjn,sum:Ojn,Sum:Njn,sung:Pjn,sup1:Ajn,sup2:Ijn,sup3:Rjn,sup:kjn,Sup:Djn,supdot:Mjn,supdsub:Ljn,supE:Fjn,supe:jjn,supedot:qjn,Superset:Ujn,SupersetEqual:Bjn,suphsol:Vjn,suphsub:Hjn,suplarr:zjn,supmult:Gjn,supnE:Wjn,supne:Yjn,supplus:Kjn,supset:Jjn,Supset:Xjn,supseteq:Zjn,supseteqq:Qjn,supsetneq:eqn,supsetneqq:tqn,supsim:nqn,supsub:rqn,supsup:sqn,swarhk:oqn,swarr:aqn,swArr:iqn,swarrow:cqn,swnwar:lqn,szlig:uqn,Tab:fqn,target:dqn,Tau:hqn,tau:pqn,tbrk:mqn,Tcaron:gqn,tcaron:vqn,Tcedil:yqn,tcedil:bqn,Tcy:$qn,tcy:Eqn,tdot:wqn,telrec:_qn,Tfr:Sqn,tfr:Cqn,there4:xqn,therefore:Tqn,Therefore:Oqn,Theta:Nqn,theta:Pqn,thetasym:Aqn,thetav:Iqn,thickapprox:Rqn,thicksim:kqn,ThickSpace:Dqn,ThinSpace:Mqn,thinsp:Lqn,thkap:Fqn,thksim:jqn,THORN:qqn,thorn:Uqn,tilde:Bqn,Tilde:Vqn,TildeEqual:Hqn,TildeFullEqual:zqn,TildeTilde:Gqn,timesbar:Wqn,timesb:Yqn,times:Kqn,timesd:Jqn,tint:Xqn,toea:Zqn,topbot:Qqn,topcir:e6n,top:t6n,Topf:n6n,topf:r6n,topfork:s6n,tosa:o6n,tprime:a6n,trade:i6n,TRADE:c6n,triangle:l6n,triangledown:u6n,triangleleft:f6n,trianglelefteq:d6n,triangleq:h6n,triangleright:p6n,trianglerighteq:m6n,tridot:g6n,trie:v6n,triminus:y6n,TripleDot:b6n,triplus:$6n,trisb:E6n,tritime:w6n,trpezium:_6n,Tscr:S6n,tscr:C6n,TScy:x6n,tscy:T6n,TSHcy:O6n,tshcy:N6n,Tstrok:P6n,tstrok:A6n,twixt:I6n,twoheadleftarrow:R6n,twoheadrightarrow:k6n,Uacute:D6n,uacute:M6n,uarr:L6n,Uarr:F6n,uArr:j6n,Uarrocir:q6n,Ubrcy:U6n,ubrcy:B6n,Ubreve:V6n,ubreve:H6n,Ucirc:z6n,ucirc:G6n,Ucy:W6n,ucy:Y6n,udarr:K6n,Udblac:J6n,udblac:X6n,udhar:Z6n,ufisht:Q6n,Ufr:eUn,ufr:tUn,Ugrave:nUn,ugrave:rUn,uHar:sUn,uharl:oUn,uharr:aUn,uhblk:iUn,ulcorn:cUn,ulcorner:lUn,ulcrop:uUn,ultri:fUn,Umacr:dUn,umacr:hUn,uml:pUn,UnderBar:mUn,UnderBrace:gUn,UnderBracket:vUn,UnderParenthesis:yUn,Union:bUn,UnionPlus:$Un,Uogon:EUn,uogon:wUn,Uopf:_Un,uopf:SUn,UpArrowBar:CUn,uparrow:xUn,UpArrow:TUn,Uparrow:OUn,UpArrowDownArrow:NUn,updownarrow:PUn,UpDownArrow:AUn,Updownarrow:IUn,UpEquilibrium:RUn,upharpoonleft:kUn,upharpoonright:DUn,uplus:MUn,UpperLeftArrow:LUn,UpperRightArrow:FUn,upsi:jUn,Upsi:qUn,upsih:UUn,Upsilon:BUn,upsilon:VUn,UpTeeArrow:HUn,UpTee:zUn,upuparrows:GUn,urcorn:WUn,urcorner:YUn,urcrop:KUn,Uring:JUn,uring:XUn,urtri:ZUn,Uscr:QUn,uscr:e8n,utdot:t8n,Utilde:n8n,utilde:r8n,utri:s8n,utrif:o8n,uuarr:a8n,Uuml:i8n,uuml:c8n,uwangle:l8n,vangrt:u8n,varepsilon:f8n,varkappa:d8n,varnothing:h8n,varphi:p8n,varpi:m8n,varpropto:g8n,varr:v8n,vArr:y8n,varrho:b8n,varsigma:$8n,varsubsetneq:E8n,varsubsetneqq:w8n,varsupsetneq:_8n,varsupsetneqq:S8n,vartheta:C8n,vartriangleleft:x8n,vartriangleright:T8n,vBar:O8n,Vbar:N8n,vBarv:P8n,Vcy:A8n,vcy:I8n,vdash:R8n,vDash:k8n,Vdash:D8n,VDash:M8n,Vdashl:L8n,veebar:F8n,vee:j8n,Vee:q8n,veeeq:U8n,vellip:B8n,verbar:V8n,Verbar:H8n,vert:z8n,Vert:G8n,VerticalBar:W8n,VerticalLine:Y8n,VerticalSeparator:K8n,VerticalTilde:J8n,VeryThinSpace:X8n,Vfr:Z8n,vfr:Q8n,vltri:e9n,vnsub:t9n,vnsup:n9n,Vopf:r9n,vopf:s9n,vprop:o9n,vrtri:a9n,Vscr:i9n,vscr:c9n,vsubnE:l9n,vsubne:u9n,vsupnE:f9n,vsupne:d9n,Vvdash:h9n,vzigzag:p9n,Wcirc:m9n,wcirc:g9n,wedbar:v9n,wedge:y9n,Wedge:b9n,wedgeq:$9n,weierp:E9n,Wfr:w9n,wfr:_9n,Wopf:S9n,wopf:C9n,wp:x9n,wr:T9n,wreath:O9n,Wscr:N9n,wscr:P9n,xcap:A9n,xcirc:I9n,xcup:R9n,xdtri:k9n,Xfr:D9n,xfr:M9n,xharr:L9n,xhArr:F9n,Xi:j9n,xi:q9n,xlarr:U9n,xlArr:B9n,xmap:V9n,xnis:H9n,xodot:z9n,Xopf:G9n,xopf:W9n,xoplus:Y9n,xotime:K9n,xrarr:J9n,xrArr:X9n,Xscr:Z9n,xscr:Q9n,xsqcup:eBn,xuplus:tBn,xutri:nBn,xvee:rBn,xwedge:sBn,Yacute:oBn,yacute:aBn,YAcy:iBn,yacy:cBn,Ycirc:lBn,ycirc:uBn,Ycy:fBn,ycy:dBn,yen:hBn,Yfr:pBn,yfr:mBn,YIcy:gBn,yicy:vBn,Yopf:yBn,yopf:bBn,Yscr:$Bn,yscr:EBn,YUcy:wBn,yucy:_Bn,yuml:SBn,Yuml:CBn,Zacute:xBn,zacute:TBn,Zcaron:OBn,zcaron:NBn,Zcy:PBn,zcy:ABn,Zdot:IBn,zdot:RBn,zeetrf:kBn,ZeroWidthSpace:DBn,Zeta:MBn,zeta:LBn,zfr:FBn,Zfr:jBn,ZHcy:qBn,zhcy:UBn,zigrarr:BBn,zopf:VBn,Zopf:HBn,Zscr:zBn,zscr:GBn,zwj:WBn,zwnj:YBn},KBn="Á",JBn="á",XBn="Â",ZBn="â",QBn="´",eVn="Æ",tVn="æ",nVn="À",rVn="à",sVn="&",oVn="&",aVn="Å",iVn="å",cVn="Ã",lVn="ã",uVn="Ä",fVn="ä",dVn="¦",hVn="Ç",pVn="ç",mVn="¸",gVn="¢",vVn="©",yVn="©",bVn="¤",$Vn="°",EVn="÷",wVn="É",_Vn="é",SVn="Ê",CVn="ê",xVn="È",TVn="è",OVn="Ð",NVn="ð",PVn="Ë",AVn="ë",IVn="½",RVn="¼",kVn="¾",DVn=">",MVn=">",LVn="Í",FVn="í",jVn="Î",qVn="î",UVn="¡",BVn="Ì",VVn="ì",HVn="¿",zVn="Ï",GVn="ï",WVn="«",YVn="<",KVn="<",JVn="¯",XVn="µ",ZVn="·",QVn=" ",e7n="¬",t7n="Ñ",n7n="ñ",r7n="Ó",s7n="ó",o7n="Ô",a7n="ô",i7n="Ò",c7n="ò",l7n="ª",u7n="º",f7n="Ø",d7n="ø",h7n="Õ",p7n="õ",m7n="Ö",g7n="ö",v7n="¶",y7n="±",b7n="£",$7n='"',E7n='"',w7n="»",_7n="®",S7n="®",C7n="§",x7n="­",T7n="¹",O7n="²",N7n="³",P7n="ß",A7n="Þ",I7n="þ",R7n="×",k7n="Ú",D7n="ú",M7n="Û",L7n="û",F7n="Ù",j7n="ù",q7n="¨",U7n="Ü",B7n="ü",V7n="Ý",H7n="ý",z7n="¥",G7n="ÿ",W7n={Aacute:KBn,aacute:JBn,Acirc:XBn,acirc:ZBn,acute:QBn,AElig:eVn,aelig:tVn,Agrave:nVn,agrave:rVn,amp:sVn,AMP:oVn,Aring:aVn,aring:iVn,Atilde:cVn,atilde:lVn,Auml:uVn,auml:fVn,brvbar:dVn,Ccedil:hVn,ccedil:pVn,cedil:mVn,cent:gVn,copy:vVn,COPY:yVn,curren:bVn,deg:$Vn,divide:EVn,Eacute:wVn,eacute:_Vn,Ecirc:SVn,ecirc:CVn,Egrave:xVn,egrave:TVn,ETH:OVn,eth:NVn,Euml:PVn,euml:AVn,frac12:IVn,frac14:RVn,frac34:kVn,gt:DVn,GT:MVn,Iacute:LVn,iacute:FVn,Icirc:jVn,icirc:qVn,iexcl:UVn,Igrave:BVn,igrave:VVn,iquest:HVn,Iuml:zVn,iuml:GVn,laquo:WVn,lt:YVn,LT:KVn,macr:JVn,micro:XVn,middot:ZVn,nbsp:QVn,not:e7n,Ntilde:t7n,ntilde:n7n,Oacute:r7n,oacute:s7n,Ocirc:o7n,ocirc:a7n,Ograve:i7n,ograve:c7n,ordf:l7n,ordm:u7n,Oslash:f7n,oslash:d7n,Otilde:h7n,otilde:p7n,Ouml:m7n,ouml:g7n,para:v7n,plusmn:y7n,pound:b7n,quot:$7n,QUOT:E7n,raquo:w7n,reg:_7n,REG:S7n,sect:C7n,shy:x7n,sup1:T7n,sup2:O7n,sup3:N7n,szlig:P7n,THORN:A7n,thorn:I7n,times:R7n,Uacute:k7n,uacute:D7n,Ucirc:M7n,ucirc:L7n,Ugrave:F7n,ugrave:j7n,uml:q7n,Uuml:U7n,uuml:B7n,Yacute:V7n,yacute:H7n,yen:z7n,yuml:G7n},Y7n="&",K7n="'",J7n=">",X7n="<",Z7n='"',Y8={amp:Y7n,apos:K7n,gt:J7n,lt:X7n,quot:Z7n};var bh={};const Q7n={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};var eHn=bh&&bh.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bh,"__esModule",{value:!0});var EM=eHn(Q7n),tHn=String.fromCodePoint||function(e){var t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023),t+=String.fromCharCode(e),t};function nHn(e){return e>=55296&&e<=57343||e>1114111?"�":(e in EM.default&&(e=EM.default[e]),tHn(e))}bh.default=nHn;var Hb=ho&&ho.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ho,"__esModule",{value:!0});ho.decodeHTML=ho.decodeHTMLStrict=ho.decodeXML=void 0;var a_=Hb(W8),rHn=Hb(W7n),sHn=Hb(Y8),wM=Hb(bh),oHn=/&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;ho.decodeXML=K8(sHn.default);ho.decodeHTMLStrict=K8(a_.default);function K8(e){var t=J8(e);return function(n){return String(n).replace(oHn,t)}}var _M=function(e,t){return e<t?1:-1};ho.decodeHTML=(function(){for(var e=Object.keys(rHn.default).sort(_M),t=Object.keys(a_.default).sort(_M),n=0,r=0;n<t.length;n++)e[r]===t[n]?(t[n]+=";?",r++):t[n]+=";";var s=new RegExp("&(?:"+t.join("|")+"|#[xX][\\da-fA-F]+;?|#\\d+;?)","g"),o=J8(a_.default);function a(i){return i.substr(-1)!==";"&&(i+=";"),o(i)}return function(i){return String(i).replace(s,a)}})();function J8(e){return function(n){if(n.charAt(1)==="#"){var r=n.charAt(2);return r==="X"||r==="x"?wM.default(parseInt(n.substr(3),16)):wM.default(parseInt(n.substr(2),10))}return e[n.slice(1,-1)]||n}}var Mr={},X8=Mr&&Mr.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Mr,"__esModule",{value:!0});Mr.escapeUTF8=Mr.escape=Mr.encodeNonAsciiHTML=Mr.encodeHTML=Mr.encodeXML=void 0;var aHn=X8(Y8),Z8=e9(aHn.default),Q8=t9(Z8);Mr.encodeXML=s9(Z8);var iHn=X8(W8),dT=e9(iHn.default),cHn=t9(dT);Mr.encodeHTML=uHn(dT,cHn);Mr.encodeNonAsciiHTML=s9(dT);function e9(e){return Object.keys(e).sort().reduce(function(t,n){return t[e[n]]="&"+n+";",t},{})}function t9(e){for(var t=[],n=[],r=0,s=Object.keys(e);r<s.length;r++){var o=s[r];o.length===1?t.push("\\"+o):n.push(o)}t.sort();for(var a=0;a<t.length-1;a++){for(var i=a;i<t.length-1&&t[i].charCodeAt(1)+1===t[i+1].charCodeAt(1);)i+=1;var l=1+i-a;l<3||t.splice(a,l,t[a]+"-"+t[i])}return n.unshift("["+t.join("")+"]"),new RegExp(n.join("|"),"g")}var n9=/(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,lHn=String.prototype.codePointAt!=null?function(e){return e.codePointAt(0)}:function(e){return(e.charCodeAt(0)-55296)*1024+e.charCodeAt(1)-56320+65536};function zb(e){return"&#x"+(e.length>1?lHn(e):e.charCodeAt(0)).toString(16).toUpperCase()+";"}function uHn(e,t){return function(n){return n.replace(t,function(r){return e[r]}).replace(n9,zb)}}var r9=new RegExp(Q8.source+"|"+n9.source,"g");function fHn(e){return e.replace(r9,zb)}Mr.escape=fHn;function dHn(e){return e.replace(Q8,zb)}Mr.escapeUTF8=dHn;function s9(e){return function(t){return t.replace(r9,function(n){return e[n]||zb(n)})}}(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.decodeXMLStrict=e.decodeHTML5Strict=e.decodeHTML4Strict=e.decodeHTML5=e.decodeHTML4=e.decodeHTMLStrict=e.decodeHTML=e.decodeXML=e.encodeHTML5=e.encodeHTML4=e.escapeUTF8=e.escape=e.encodeNonAsciiHTML=e.encodeHTML=e.encodeXML=e.encode=e.decodeStrict=e.decode=void 0;var t=ho,n=Mr;function r(l,f){return(!f||f<=0?t.decodeXML:t.decodeHTML)(l)}e.decode=r;function s(l,f){return(!f||f<=0?t.decodeXML:t.decodeHTMLStrict)(l)}e.decodeStrict=s;function o(l,f){return(!f||f<=0?n.encodeXML:n.encodeHTML)(l)}e.encode=o;var a=Mr;Object.defineProperty(e,"encodeXML",{enumerable:!0,get:function(){return a.encodeXML}}),Object.defineProperty(e,"encodeHTML",{enumerable:!0,get:function(){return a.encodeHTML}}),Object.defineProperty(e,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return a.encodeNonAsciiHTML}}),Object.defineProperty(e,"escape",{enumerable:!0,get:function(){return a.escape}}),Object.defineProperty(e,"escapeUTF8",{enumerable:!0,get:function(){return a.escapeUTF8}}),Object.defineProperty(e,"encodeHTML4",{enumerable:!0,get:function(){return a.encodeHTML}}),Object.defineProperty(e,"encodeHTML5",{enumerable:!0,get:function(){return a.encodeHTML}});var i=ho;Object.defineProperty(e,"decodeXML",{enumerable:!0,get:function(){return i.decodeXML}}),Object.defineProperty(e,"decodeHTML",{enumerable:!0,get:function(){return i.decodeHTML}}),Object.defineProperty(e,"decodeHTMLStrict",{enumerable:!0,get:function(){return i.decodeHTMLStrict}}),Object.defineProperty(e,"decodeHTML4",{enumerable:!0,get:function(){return i.decodeHTML}}),Object.defineProperty(e,"decodeHTML5",{enumerable:!0,get:function(){return i.decodeHTML}}),Object.defineProperty(e,"decodeHTML4Strict",{enumerable:!0,get:function(){return i.decodeHTMLStrict}}),Object.defineProperty(e,"decodeHTML5Strict",{enumerable:!0,get:function(){return i.decodeHTMLStrict}}),Object.defineProperty(e,"decodeXMLStrict",{enumerable:!0,get:function(){return i.decodeXML}})})(G8);function hHn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function pHn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function mHn(e,t,n){return t&&pHn(e.prototype,t),e}function o9(e){if(typeof Symbol>"u"||e[Symbol.iterator]==null){if(Array.isArray(e)||(e=gHn(e))){var t=0,n=function(){};return{s:n,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(l){throw l},f:n}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
752
752
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var r,s=!0,o=!1,a;return{s:function(){r=e[Symbol.iterator]()},n:function(){var l=r.next();return s=l.done,l},e:function(l){o=!0,a=l},f:function(){try{!s&&r.return!=null&&r.return()}finally{if(o)throw a}}}}function gHn(e,t){if(e){if(typeof e=="string")return SM(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return SM(e,t)}}function SM(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var vHn=G8,CM={fg:"#FFF",bg:"#000",newline:!1,escapeXML:!1,stream:!1,colors:yHn()};function yHn(){var e={0:"#000",1:"#A00",2:"#0A0",3:"#A50",4:"#00A",5:"#A0A",6:"#0AA",7:"#AAA",8:"#555",9:"#F55",10:"#5F5",11:"#FF5",12:"#55F",13:"#F5F",14:"#5FF",15:"#FFF"};return fg(0,5).forEach(function(t){fg(0,5).forEach(function(n){fg(0,5).forEach(function(r){return bHn(t,n,r,e)})})}),fg(0,23).forEach(function(t){var n=t+232,r=a9(t*10+8);e[n]="#"+r+r+r}),e}function bHn(e,t,n,r){var s=16+e*36+t*6+n,o=e>0?e*40+55:0,a=t>0?t*40+55:0,i=n>0?n*40+55:0;r[s]=$Hn([o,a,i])}function a9(e){for(var t=e.toString(16);t.length<2;)t="0"+t;return t}function $Hn(e){var t=[],n=o9(e),r;try{for(n.s();!(r=n.n()).done;){var s=r.value;t.push(a9(s))}}catch(o){n.e(o)}finally{n.f()}return"#"+t.join("")}function xM(e,t,n,r){var s;return t==="text"?s=SHn(n,r):t==="display"?s=wHn(e,n,r):t==="xterm256"?s=jg(e,r.colors[n]):t==="rgb"&&(s=EHn(e,n)),s}function EHn(e,t){t=t.substring(2).slice(0,-1);var n=+t.substr(0,2),r=t.substring(5).split(";"),s=r.map(function(o){return("0"+Number(o).toString(16)).substr(-2)}).join("");return Fg(e,(n===38?"color:#":"background-color:#")+s)}function wHn(e,t,n){t=parseInt(t,10);var r={"-1":function(){return"<br/>"},0:function(){return e.length&&i9(e)},1:function(){return xi(e,"b")},3:function(){return xi(e,"i")},4:function(){return xi(e,"u")},8:function(){return Fg(e,"display:none")},9:function(){return xi(e,"strike")},22:function(){return Fg(e,"font-weight:normal;text-decoration:none;font-style:normal")},23:function(){return OM(e,"i")},24:function(){return OM(e,"u")},39:function(){return jg(e,n.fg)},49:function(){return hE(e,n.bg)},53:function(){return Fg(e,"text-decoration:overline")}},s;return r[t]?s=r[t]():4<t&&t<7?s=xi(e,"blink"):29<t&&t<38?s=jg(e,n.colors[t-30]):39<t&&t<48?s=hE(e,n.colors[t-40]):89<t&&t<98?s=jg(e,n.colors[8+(t-90)]):99<t&&t<108&&(s=hE(e,n.colors[8+(t-100)])),s}function i9(e){var t=e.slice(0);return e.length=0,t.reverse().map(function(n){return"</"+n+">"}).join("")}function fg(e,t){for(var n=[],r=e;r<=t;r++)n.push(r);return n}function _Hn(e){return function(t){return(e===null||t.category!==e)&&e!=="all"}}function TM(e){e=parseInt(e,10);var t=null;return e===0?t="all":e===1?t="bold":2<e&&e<5?t="underline":4<e&&e<7?t="blink":e===8?t="hide":e===9?t="strike":29<e&&e<38||e===39||89<e&&e<98?t="foreground-color":(39<e&&e<48||e===49||99<e&&e<108)&&(t="background-color"),t}function SHn(e,t){return t.escapeXML?vHn.encodeXML(e):e}function xi(e,t,n){return n||(n=""),e.push(t),"<".concat(t).concat(n?' style="'.concat(n,'"'):"",">")}function Fg(e,t){return xi(e,"span",t)}function jg(e,t){return xi(e,"span","color:"+t)}function hE(e,t){return xi(e,"span","background-color:"+t)}function OM(e,t){var n;if(e.slice(-1)[0]===t&&(n=e.pop()),n)return"</"+t+">"}function CHn(e,t,n){var r=!1,s=3;function o(){return""}function a(N,T){return n("xterm256",T),""}function i(N){return t.newline?n("display",-1):n("text",N),""}function l(N,T){r=!0,T.trim().length===0&&(T="0"),T=T.trimRight(";").split(";");var j=o9(T),U;try{for(j.s();!(U=j.n()).done;){var te=U.value;n("display",te)}}catch(Q){j.e(Q)}finally{j.f()}return""}function f(N){return n("text",N),""}function d(N){return n("rgb",N),""}var p=[{pattern:/^\x08+/,sub:o},{pattern:/^\x1b\[[012]?K/,sub:o},{pattern:/^\x1b\[\(B/,sub:o},{pattern:/^\x1b\[[34]8;2;\d+;\d+;\d+m/,sub:d},{pattern:/^\x1b\[38;5;(\d+)m/,sub:a},{pattern:/^\n/,sub:i},{pattern:/^\r+\n/,sub:i},{pattern:/^\x1b\[((?:\d{1,3};?)+|)m/,sub:l},{pattern:/^\x1b\[\d?J/,sub:o},{pattern:/^\x1b\[\d{0,3};\d{0,3}f/,sub:o},{pattern:/^\x1b\[?[\d;]{0,3}/,sub:o},{pattern:/^(([^\x1b\x08\r\n])+)/,sub:f}];function g(N,T){T>s&&r||(r=!1,e=e.replace(N.pattern,N.sub))}var m=[],y=e,$=y.length;e:for(;$>0;){for(var E=0,v=0,w=p.length;v<w;E=++v){var C=p[E];if(g(C,E),e.length!==$){$=e.length;continue e}}if(e.length===$)break;m.push(0),$=e.length}return m}function xHn(e,t,n){return t!=="text"&&(e=e.filter(_Hn(TM(n))),e.push({token:t,data:n,category:TM(n)})),e}var THn=(function(){function e(t){hHn(this,e),t=t||{},t.colors&&(t.colors=Object.assign({},CM.colors,t.colors)),this.options=Object.assign({},CM,t),this.stack=[],this.stickyStack=[]}return mHn(e,[{key:"toHtml",value:function(n){var r=this;n=typeof n=="string"?[n]:n;var s=this.stack,o=this.options,a=[];return this.stickyStack.forEach(function(i){var l=xM(s,i.token,i.data,o);l&&a.push(l)}),CHn(n.join(""),o,function(i,l){var f=xM(s,i,l,o);f&&a.push(f),o.stream&&(r.stickyStack=xHn(r.stickyStack,i,l))}),s.length&&a.push(i9(s)),a.join("")}}]),e})(),OHn=THn;const NHn=xn(OHn),PHn=new NHn,c9=[];let l9=0;for(let e=0;e<100;e++)c9[e]={i:l9++,d:""};const AHn={plugins:[],webapps:[],addons:[],appStore:{updates:[],installed:[],available:[],installing:[]},loginStatus:{},serverSpecification:{},websocketStatus:"initial",webSocket:null,restarting:!1,accessRequests:[],discoveredProviders:[],log:{entries:c9,debugEnabled:"",rememberDebug:!1},restoreStatus:{},vesselInfo:{},sourcePrioritiesData:{sourcePriorities:[],saveState:{dirty:!1,timeoutsOk:!0}},backpressureWarning:null};let i_=XM((e,t)=>{if(t.type==="RECEIVE_PLUGIN_LIST")return{...e,plugins:t.data};if(t.type==="RECEIVE_WEBAPPS_LIST")return{...e,webapps:t.data};if(t.type==="RECEIVE_ADDONS_LIST")return{...e,addons:t.data};if(t.type==="RECEIVE_APPSTORE_LIST"||t.type==="APP_STORE_CHANGED"){var n=t.data;return n.installing.sort(dg),n.available.sort(dg),n.installed.sort(dg),n.updates.sort(dg),{...e,appStore:n}}if(t.type==="SERVERSTATISTICS")return{...e,serverStatistics:t.data};if(t.type==="PROVIDERSTATUS")return t.data.sort((r,s)=>r.id>s.id),{...e,providerStatus:t.data};if(t.type==="RECEIVE_LOGIN_STATUS")return{...e,loginStatus:t.data};if(t.type==="RECEIVE_SERVER_SPEC")return{...e,serverSpecification:t.data};if(t.type==="WEBSOCKET_CONNECTED")return{...e,websocketStatus:"connected"};if(t.type==="WEBSOCKET_OPEN")return e.webSocketTimer&&(clearInterval(e.webSocketTimer),delete e.webSocketTimer),e.restarting&&(e.restarting=!1),{...e,websocketStatus:"open",webSocket:t.data};if(t.type==="VESSEL_INFO")return t.data.name&&(document.title=t.data.name),{...e,vesselInfo:t.data};if(t.type==="WEBSOCKET_ERROR")return{...e,websocketStatus:"error"};if(t.type==="WEBSOCKET_CLOSE")return e.webSocketTimer||(e.webSocketTimer=setInterval(()=>{console.log("retry..."),EE(i_.dispatch,!0)},5*1e3)),{...e,websocketStatus:"closed",webSocket:null};if(t.type==="LOGIN_SUCCESS")return e.webSocket&&(e.webSocket.onclose=void 0,e.webSocket.close()),EE(i_.dispatch),e;if(t.type==="SERVER_RESTART")return{...e,restarting:!0};if(t.data==="SERVER_UP")return{...e,restarting:!1};if(t.type==="LOGOUT_REQUESTED"&&e.webSocket&&e.webSocket.close(),t.type==="ACCESS_REQUEST")return{...e,accessRequests:t.data};if(t.type==="DISCOVERY_CHANGED")return{...e,discoveredProviders:t.data};if(t.type==="DEBUG_SETTINGS")return{...e,log:{...e.log,...t.data}};if(t.type==="LOG"){const s=`<span style="${t.data.isError?"color:red":"font-weight:lighter"}">`+t.data.ts+"</span> "+PHn.toHtml(Adn(t.data.row));return e.log.entries.push({i:l9++,d:s}),e.log.entries.length>100&&e.log.entries.shift(),{...e,log:{...e.log,entries:e.log.entries}}}if(t.type==="RESTORESTATUS")return{...e,restoreStatus:t.data};if(t.type==="SOURCEPRIORITIES"){const r=t.data,s=Object.keys(r).map(o=>({path:o,priorities:r[o]}));return s.state={},{...e,sourcePrioritiesData:{sourcePriorities:s,saveState:{dirty:!1,timeoutsOk:!0}}}}return t.type==="BACKPRESSURE_WARNING"?{...e,backpressureWarning:t.data}:t.type==="BACKPRESSURE_WARNING_CLEAR"?{...e,backpressureWarning:null}:{...e,sourcePrioritiesData:Wun(e.sourcePrioritiesData,t)}},AHn,BY(e3));function dg(e,t){return e.name<t.name?-1:e.name>t.name?1:0}window.serverRoutesPrefix="/skServer";xa.render(c.createElement(RM,null,c.createElement(Gv,null,c.createElement(tY,{store:i_},c.createElement(hn,{path:"/",name:"Home",component:xdn})))),document.getElementById("root"));
753
- //# sourceMappingURL=bootstrap-6CM60CZx.js.map
753
+ //# sourceMappingURL=bootstrap-Dl8NOv2y.js.map