homematic-manager 3.1.5 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node_modules/@homematic-manager/backend/dist/api/backend.js +5 -1
- package/node_modules/@homematic-manager/backend/package.json +1 -1
- package/node_modules/@homematic-manager/core/package.json +1 -1
- package/package.json +3 -3
- package/ui/assets/index-B-JQT0d_.js +21 -0
- package/ui/assets/index-D_4x0bdd.css +1 -0
- package/ui/index.html +2 -2
- package/ui/assets/index-B0Xq7dVp.css +0 -1
- package/ui/assets/index-Bg15IzY0.js +0 -21
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))a(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&a(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function a(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();const Bu=!1;var pi=Array.isArray,Om=Array.prototype.indexOf,Zi=Array.prototype.includes,mo=Array.from,Hu=Object.defineProperty,ps=Object.getOwnPropertyDescriptor,Vu=Object.getOwnPropertyDescriptors,zu=Object.prototype,Lm=Array.prototype,vo=Object.getPrototypeOf,Xd=Object.isExtensible;const Wn=()=>{};function Fm(r){for(var e=0;e<r.length;e++)r[e]()}function ju(){var r,e,n=new Promise((a,s)=>{r=a,e=s});return{promise:n,resolve:r,reject:e}}function Qd(r,e){if(Array.isArray(r))return r;if(!(Symbol.iterator in r))return Array.from(r);const n=[];for(const a of r)if(n.push(a),n.length===e)break;return n}const er=2,ys=4,po=8,Wu=1<<24,ra=16,Qr=32,Da=64,ul=128,ed=256,$r=512,jn=1024,Gn=2048,ia=4096,yr=8192,Ir=16384,Ps=32768,Ji=1<<25,ls=65536,eo=1<<17,Gm=1<<18,Ms=1<<19,Um=1<<20,pa=1<<25,ds=65536,to=1<<21,gs=1<<22,Ba=1<<23,Ta=Symbol("$state"),Ku=Symbol("component"),Bm=Symbol("legacy props"),Hm=Symbol(""),Yu=Symbol("attributes"),fl=Symbol("class"),hl=Symbol("style"),ml=Symbol("text"),Gi=Symbol("form reset"),gi=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},Vm=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml"),zm=1,jm=2,qu=4,Wm=8,Km=16,Ym=1,qm=4,$m=8,Xm=16,$u=1,Qm=2,zn=Symbol("uninitialized"),Zm="http://www.w3.org/1999/xhtml";function Jm(){console.warn("https://svelte.dev/e/derived_inert")}function ev(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function tv(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function Xu(r){return r===this.v}function Qu(r,e){return r!=r?e==e:r!==e||r!==null&&typeof r=="object"||typeof r=="function"}function Zu(r){return!Qu(r,this.v)}function td(r){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function nv(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function rv(r,e,n){throw new Error("https://svelte.dev/e/each_key_duplicate")}function av(r){throw new Error("https://svelte.dev/e/effect_in_teardown")}function sv(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function iv(r){throw new Error("https://svelte.dev/e/effect_orphan")}function ov(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function lv(r){throw new Error("https://svelte.dev/e/props_invalid_value")}function dv(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function cv(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function uv(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function fv(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}let hv=!1;const mv=[];function Ui(r,e=!1,n=!1){return Bi(r,new Map,"",mv,null,n)}function Bi(r,e,n,a,s=null,i=!1){if(typeof r=="object"&&r!==null){var o=e.get(r);if(o!==void 0)return o;if(r instanceof Map)return new Map(r);if(r instanceof Set)return new Set(r);if(pi(r)){var l=Array(r.length);e.set(r,l),s!==null&&e.set(s,l);for(var f=0;f<r.length;f+=1){var p=r[f];f in r&&(l[f]=Bi(p,e,n,a,null,i))}return l}if(vo(r)===zu){l={},e.set(r,l),s!==null&&e.set(s,l);for(var b of Object.keys(r))l[b]=Bi(r[b],e,n,a,null,i);return l}if(r instanceof Date)return r.getTime(),structuredClone(r);if(typeof r.toJSON=="function"&&!i)return Bi(r.toJSON(),e,n,a,r)}if(r instanceof EventTarget)return r;try{return structuredClone(r)}catch{return r}}function vv(r){let e=r.p;for(;e!==null&&e.c===null;)e=e.p;return e?.c??null}function nd(r,e){return r===null&&td(),r.c??=new Map(vv(r)||void 0)}let Un=null;function Ss(r){Un=r}function Ju(r){return nd(Un).get(r)}function ef(r,e){return nd(Un).set(r,e),e}function tf(r){return nd(Un).has(r)}function dt(r,e=!1,n){Un={p:Un,i:!1,c:null,e:null,s:r,x:null,r:zt,l:null}}function ct(r){var e=Un,n=e.e;if(n!==null){e.e=null;for(var a of n)yf(a)}return r!==void 0&&(e.x=r),e.i=!0,Un=e.p,rd(r)}function rd(r={}){return Hu(r,Ku,{value:!0}),r}function nf(){return!0}let ns=[];function rf(){var r=ns;ns=[],Fm(r)}function Aa(r){if(ns.length===0&&!Zs){var e=ns;queueMicrotask(()=>{e===ns&&rf()})}ns.push(r)}function pv(){for(;ns.length>0;)rf()}const gv=-7169;function Pn(r,e){r.f=r.f&gv|e}function ad(r){(r.f&$r)!==0||r.deps===null?Pn(r,jn):Pn(r,ia)}function af(r){if(r!==null)for(const e of r)(e.f&er)===0||(e.f&ds)===0||(e.f^=ds,af(e.deps))}function sf(r,e,n){(r.f&Gn)!==0?e.add(r):(r.f&ia)!==0&&n.add(r),af(r.deps),Pn(r,jn)}let Ni=!1;function bv(r){var e=Ni;try{return Ni=!1,[r(),Ni]}finally{Ni=e}}let Zd=!1;function _v(){Zd||(Zd=!0,document.addEventListener("reset",r=>{Promise.resolve().then(()=>{if(!r.defaultPrevented)for(const e of r.target.elements)e[Gi]?.()})},{capture:!0}))}function Os(r){var e=Kt,n=zt;Zr(null),Ea(null);try{return r()}finally{Zr(e),Ea(n)}}function sd(r,e,n,a=n){r.addEventListener(e,()=>Os(n));const s=r[Gi];s?r[Gi]=()=>{s(),a(!0)}:r[Gi]=()=>a(!0),_v()}function Ev(r,e,n,a){const s=ni;var i=r.filter(y=>!y.settled),o=e.map(s);if(n.length===0&&i.length===0){a(o);return}var l=zt,f=yv(),p=i.length===1?i[0].promise:i.length>1?Promise.all(i.map(y=>y.promise)):null;function b(y){if((l.f&Ir)===0){f();try{a([...o,...y])}catch(S){va(S,l)}no()}}var g=of();if(n.length===0){p.then(()=>b([])).finally(g);return}function k(){Promise.all(n.map(y=>Sv(y))).then(b).catch(y=>va(y,l)).finally(g)}p?p.then(()=>{f(),k(),no()}):k()}function yv(){var r=zt,e=Kt,n=Un,a=Pt;return function(i=!0){Ea(r),Zr(e),Ss(n),i&&(r.f&Ir)===0&&(a?.activate(),a?.apply())}}function no(r=!0){Ea(null),Zr(null),Ss(null),r&&Pt?.deactivate()}function of(){var r=zt,e=r.b,n=Pt,a=!!e?.is_rendered();return e?.update_pending_count(1,n),n.increment(a,r),()=>{e?.update_pending_count(-1,n),n.decrement(a,r)}}function ni(r){var e=er|Gn;return zt!==null&&(zt.f|=Ms),{ctx:Un,deps:null,effects:null,equals:Xu,f:e,fn:r,reactions:null,rv:0,v:zn,wv:0,parent:zt,ac:null}}const qs=Symbol("obsolete");function Sv(r,e,n){let a=zt;a===null&&nv();var s=void 0,i=za(zn),o=!Kt,l=new Set;return Fv(()=>{var f=zt,p=ju();s=p.promise;try{Promise.resolve(r()).then(p.resolve,y=>{y!==gi&&p.reject(y)}).finally(no)}catch(y){p.reject(y),no()}var b=Pt;if(o){if((f.f&Ps)!==0)var g=of();if(a.b?.is_rendered())b.async_deriveds.get(f)?.reject(qs);else for(const y of l.values())y.reject(qs);l.add(p),b.async_deriveds.set(f,p)}const k=(y,S=void 0)=>{g?.(),l.delete(p),S!==qs&&(b.activate(),S?(i.f|=Ba,ks(i,S)):((i.f&Ba)!==0&&(i.f^=Ba),ks(i,y)),b.deactivate())};p.promise.then(k,y=>k(null,y||"unknown"))}),cd(()=>{for(const f of l)f.reject(qs)}),new Promise(f=>{function p(b){function g(){b===s?f(i):p(s)}b.then(g,g)}p(s)})}function c(r){const e=ni(r);return Tf(e),e}function lf(r){const e=ni(r);return e.equals=Zu,e}function kv(r){var e=r.effects;if(e!==null){r.effects=null;for(var n=0;n<e.length;n+=1)Dr(e[n])}}function id(r){var e,n=zt,a=r.parent;if(!Na&&a!==null&&r.v!==zn&&(a.f&(Ir|yr))!==0)return Jm(),r.v;Ea(a);try{r.f&=~ds,kv(r),e=Df(r)}finally{Ea(n)}return e}function df(r){var e=id(r);if(!r.equals(e)&&(r.wv=xf(),(!Pt?.is_fork||r.deps===null)&&(Pt!==null?(Pt.capture(r,e,!0),vl?.capture(r,e,!0)):r.v=e,r.deps===null))){Pn(r,jn);return}Na||(aa!==null?(dd()||Pt?.is_fork)&&aa.set(r,e):ad(r))}function wv(r){if(r.effects!==null)for(const e of r.effects)(e.teardown||e.ac)&&(e.teardown?.(),e.ac!==null&&Os(()=>{e.ac.abort(gi),e.ac=null}),e.fn!==null&&(e.teardown=Wn),ri(e,0),ud(e))}function cf(r){if(r.effects!==null)for(const e of r.effects)e.teardown&&e.fn!==null&&ws(e)}let Oo=null,hs=null,Pt=null,vl=null,aa=null,pl=null,Zs=!1,Lo=!1,ms=null,Hi=null;var Jd=0;let Av=1;class Va{id=Av++;#e=!1;linked=!0;#n=null;#t=null;async_deriveds=new Map;current=new Map;previous=new Map;#a=new Set;#s=new Set;#r=0;#i=new Map;#l=null;#o=[];#d=[];#c=new Set;#u=new Set;#f=new Map;#h=new Set;is_fork=!1;#m=!1;constructor(){hs===null?Oo=hs=this:(hs.#t=this,this.#n=hs),hs=this}#p(){if(this.is_fork)return!0;for(const a of this.#i.keys()){for(var e=a,n=!1;e.parent!==null;){if(this.#f.has(e)){n=!0;break}e=e.parent}if(!n)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#h.delete(e)}unskip_effect(e,n=a=>this.schedule(a)){var a=this.#f.get(e);if(a){this.#f.delete(e);for(var s of a.d)Pn(s,Gn),n(s);for(s of a.m)Pn(s,ia),n(s)}this.#h.add(e)}#_(){this.#e=!0,Jd++>1e3&&(this.#E(),Rv());for(const f of this.#c)this.#u.delete(f),Pn(f,Gn),this.schedule(f);for(const f of this.#u)Pn(f,ia),this.schedule(f);const e=this.#o;this.#o=[],this.apply();var n=ms=[],a=[],s=Hi=[];for(const f of e)try{this.#v(f,n,a)}catch(p){throw hf(f),this.#p()||this.discard(),p}if(Pt=null,s.length>0){var i=Va.ensure();for(const f of s)i.schedule(f)}if(ms=null,Hi=null,this.#p()){this.#g(a),this.#g(n);for(const[f,p]of this.#f)ff(f,p);s.length>0&&Pt.#_();return}const o=this.#b();if(o){this.#g(a),this.#g(n),o.#y(this);return}this.#c.clear(),this.#u.clear();for(const f of this.#a)f(this);this.#a.clear(),vl=this,ec(a),ec(n),vl=null,this.#l?.resolve();var l=Pt;if(this.#r===0&&(this.#o.length===0||l!==null)&&this.#E(),this.#o.length>0)if(l!==null){const f=l;f.#o.push(...this.#o.filter(p=>!f.#o.includes(p)))}else l=this;l!==null&&(ga.clear(),l.#_())}#v(e,n,a){e.f^=jn;for(var s=e.first;s!==null;){var i=s.f,o=(i&(Qr|Da))!==0,l=o&&(i&jn)!==0,f=l||(i&yr)!==0||this.#f.has(s);if(!f&&s.fn!==null){o?s.f^=jn:(i&ys)!==0?n.push(s):yi(s)&&((i&ra)!==0&&this.#u.add(s),ws(s));var p=s.first;if(p!==null){s=p;continue}}for(;s!==null;){var b=s.next;if(b!==null){s=b;break}s=s.parent}}}#b(){for(var e=this.#n;e!==null;){if(!e.is_fork){for(const[n,[,a]]of this.current)if(e.current.has(n)&&!a)return e}e=e.#n}return null}#y(e){for(const[a,s]of e.current)!this.previous.has(a)&&e.previous.has(a)&&this.previous.set(a,e.previous.get(a)),this.current.set(a,s);for(const[a,s]of e.async_deriveds){const i=this.async_deriveds.get(a);i&&s.promise.then(i.resolve).catch(i.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#c,e.#u);const n=a=>{var s=a.reactions;if(s!==null&&!((a.f&er)!==0&&(a.f&(Gn|ia))===0))for(const l of s){var i=l.f;if((i&er)!==0)n(l);else{var o=l;i&(gs|ra)&&!this.async_deriveds.has(o)&&(this.#u.delete(o),Pn(o,Gn),this.schedule(o))}}};for(const a of this.current.keys())n(a);this.oncommit(()=>e.discard()),e.#E(),Pt=this,this.#_()}#g(e){for(var n=0;n<e.length;n+=1)sf(e[n],this.#c,this.#u)}capture(e,n,a=!1){e.v!==zn&&!this.previous.has(e)&&this.previous.set(e,e.v),(e.f&Ba)===0&&(this.current.set(e,[n,a]),aa?.set(e,n)),this.is_fork||(e.v=n)}activate(){Pt=this}deactivate(){Pt=null,aa=null}flush(){try{Lo=!0,Pt=this,this.#_()}finally{Jd=0,pl=null,ms=null,Hi=null,Lo=!1,Pt=null,aa=null,ga.clear()}}discard(){for(const e of this.#s)e(this);this.#s.clear();for(const e of this.async_deriveds.values())e.reject(qs);this.#E(),this.#l?.resolve()}register_created_effect(e){this.#d.push(e)}#S(){for(let g=Oo;g!==null;g=g.#t){var e=g.id<this.id,n=[];for(const[k,[y,S]]of this.current){if(g.current.has(k)){var a=g.current.get(k)[0];if(e&&y!==a)g.current.set(k,[y,S]);else continue}n.push(k)}if(e)for(const[k,y]of this.async_deriveds){const S=g.async_deriveds.get(k);S&&y.promise.then(S.resolve).catch(S.reject)}var s=[...g.current.keys()].filter(k=>!g.current.get(k)[1]);if(!(!g.#e||s.length===0)){var i=s.filter(k=>!this.current.has(k));if(i.length===0)e&&g.discard();else if(n.length>0){if(e)for(const k of this.#h)g.unskip_effect(k,y=>{(y.f&(ra|gs))!==0?g.schedule(y):g.#g([y])});g.activate();var o=new Set,l=new Map;for(var f of n)uf(f,i,o,l);l=new Map;var p=[...g.current].filter(([k,y])=>{const S=this.current.get(k);return S?S[0]!==y[0]||S[1]!==y[1]:!0}).map(([k])=>k);if(p.length>0)for(const k of this.#d)(k.f&(Ir|yr|eo))===0&&od(k,p,l)&&((k.f&(gs|ra))!==0?(Pn(k,Gn),g.schedule(k)):g.#c.add(k));if(g.#o.length>0&&!g.#m){g.apply();for(var b of g.#o)g.#v(b,[],[]);g.#o=[]}g.deactivate()}}}}increment(e,n){if(this.#r+=1,e){let a=this.#i.get(n)??0;this.#i.set(n,a+1)}}decrement(e,n){if(this.#r-=1,e){let a=this.#i.get(n)??0;a===1?this.#i.delete(n):this.#i.set(n,a-1)}this.#m||(this.#m=!0,Aa(()=>{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,n){for(const a of e)this.#c.add(a);for(const a of n)this.#u.add(a);e.clear(),n.clear()}oncommit(e){this.#a.add(e)}ondiscard(e){this.#s.add(e)}settled(){return(this.#l??=ju()).promise}static ensure(){if(Pt===null){const e=Pt=new Va;!Lo&&!Zs&&Aa(()=>{e.#e||e.flush()})}return Pt}apply(){{aa=null;return}}schedule(e){if(pl=e,e.b?.is_pending&&(e.f&(ys|po|Wu))!==0&&(e.f&Ps)===0){e.b.defer_effect(e);return}for(var n=e;n.parent!==null;){n=n.parent;var a=n.f;if(ms!==null&&n===zt&&(Kt===null||(Kt.f&er)===0))return;if((a&(Da|Qr))!==0){if((a&jn)===0)return;n.f^=jn}}this.#o.push(n)}#E(){if(this.linked){var e=this.#n,n=this.#t;e===null?Oo=n:e.#t=n,n===null?hs=e:n.#n=e,this.linked=!1}}}function Tv(r){var e=Zs;Zs=!0;try{for(var n;;){if(pv(),Pt===null)return n;Pt.flush()}}finally{Zs=e}}function Rv(){try{ov()}catch(r){va(r,pl)}}let ka=null;function ec(r){var e=r.length;if(e!==0){for(var n=0;n<e;){var a=r[n++];if((a.f&(Ir|yr))===0&&yi(a)&&(ka=new Set,ws(a),a.deps===null&&a.first===null&&a.nodes===null&&a.teardown===null&&a.ac===null&&kf(a),ka?.size>0)){ga.clear();for(const s of ka){if((s.f&(Ir|yr))!==0)continue;const i=[s];let o=s.parent;for(;o!==null;)ka.has(o)&&(ka.delete(o),i.push(o)),o=o.parent;for(let l=i.length-1;l>=0;l--){const f=i[l];(f.f&(Ir|yr))===0&&ws(f)}}ka.clear()}}ka=null}}function uf(r,e,n,a){if(!n.has(r)&&(n.add(r),r.reactions!==null))for(const s of r.reactions){const i=s.f;(i&er)!==0?uf(s,e,n,a):(i&(gs|ra))!==0&&(i&Gn)===0&&od(s,e,a)&&(Pn(s,Gn),ld(s))}}function od(r,e,n){const a=n.get(r);if(a!==void 0)return a;if(r.deps!==null)for(const s of r.deps){if(Zi.call(e,s))return!0;if((s.f&er)!==0&&od(s,e,n))return n.set(s,!0),!0}return n.set(r,!1),!1}function ld(r){Pt.schedule(r)}function ff(r,e){if(!((r.f&Qr)!==0&&(r.f&jn)!==0)){(r.f&Gn)!==0?e.d.push(r):(r.f&ia)!==0&&e.m.push(r),Pn(r,jn);for(var n=r.first;n!==null;)ff(n,e),n=n.next}}function hf(r){Pn(r,jn);for(var e=r.first;e!==null;)hf(e),e=e.next}let ro=new Set;const ga=new Map;let mf=!1;function za(r,e){var n={f:0,v:r,reactions:null,equals:Xu,rv:0,wv:0};return n}function N(r,e){const n=za(r);return Tf(n),n}function xv(r,e=!1,n=!0){const a=za(r);return e||(a.equals=Zu),a}function u(r,e,n=!1){Kt!==null&&(!sa||(Kt.f&eo)!==0)&&nf()&&(Kt.f&(er|ra|gs|eo))!==0&&(ba===null||!ba.has(r))&&uv();let a=n?He(e):e;return ks(r,a,Hi)}function ks(r,e,n=null){if(!r.equals(e)){Na?ga.set(r,e):ga.has(r)||ga.set(r,r.v);var a=Va.ensure();if(a.capture(r,e),(r.f&er)!==0){const s=r;(r.f&Gn)!==0&&id(s),aa===null&&ad(s)}r.wv=xf(),vf(r,Gn,n),zt!==null&&(zt.f&jn)!==0&&(zt.f&(Qr|Da))===0&&(Kr===null?Bv([r]):Kr.push(r)),!a.is_fork&&ro.size>0&&!mf&&Iv()}return e}function Iv(){mf=!1;for(const r of ro){(r.f&jn)!==0&&Pn(r,ia);let e;try{e=yi(r)}catch{e=!0}e&&ws(r)}ro.clear()}function ha(r){u(r,r.v+1)}function vf(r,e,n){var a=r.reactions;if(a!==null)for(var s=a.length,i=0;i<s;i++){var o=a[i],l=o.f,f=(l&Gn)===0;if(f&&Pn(o,e),(l&eo)!==0)ro.add(o);else if((l&er)!==0){var p=o;aa?.delete(p),(l&ds)===0&&(l&$r&&(zt===null||(zt.f&to)===0)&&(o.f|=ds),vf(p,ia,n))}else if(f){var b=o;(l&ra)!==0&&ka!==null&&ka.add(b),n!==null?n.push(b):ld(b)}}}function He(r){if(typeof r!="object"||r===null||Ta in r||Ku in r)return r;const e=vo(r);if(e!==zu&&e!==Lm)return r;var n=new Map,a=pi(r),s=N(0),i=xa,o=l=>{if(xa===i)return l();var f=Kt,p=xa;Zr(null),rc(i);var b=l();return Zr(f),rc(p),b};return a&&n.set("length",N(r.length)),new Proxy(r,{defineProperty(l,f,p){(!("value"in p)||p.configurable===!1||p.enumerable===!1||p.writable===!1)&&dv();var b=n.get(f);return b===void 0?o(()=>{var g=N(p.value);return n.set(f,g),g}):u(b,p.value,!0),!0},deleteProperty(l,f){var p=n.get(f);if(p===void 0){if(f in l){const b=o(()=>N(zn));n.set(f,b),ha(s)}}else u(p,zn),ha(s);return!0},get(l,f,p){if(f===Ta)return r;var b=n.get(f),g=f in l;if(b===void 0&&(!g||ps(l,f)?.writable)&&(b=o(()=>{var y=He(g?l[f]:zn),S=N(y);return S}),n.set(f,b)),b!==void 0){var k=t(b);return k===zn?void 0:k}return Reflect.get(l,f,p)},getOwnPropertyDescriptor(l,f){var p=Reflect.getOwnPropertyDescriptor(l,f);if(p&&"value"in p){var b=n.get(f);b&&(p.value=t(b))}else if(p===void 0){var g=n.get(f),k=g?.v;if(g!==void 0&&k!==zn)return{enumerable:!0,configurable:!0,value:k,writable:!0}}return p},has(l,f){if(f===Ta)return!0;var p=n.get(f),b=p!==void 0&&p.v!==zn||Reflect.has(l,f);if(p!==void 0||zt!==null&&(!b||ps(l,f)?.writable)){p===void 0&&(p=o(()=>{var k=b?He(l[f]):zn,y=N(k);return y}),n.set(f,p));var g=t(p);if(g===zn)return!1}return b},set(l,f,p,b){var g=n.get(f),k=f in l;if(a&&f==="length")for(var y=p;y<g.v;y+=1){var S=n.get(y+"");S!==void 0?u(S,zn):y in l&&(S=o(()=>N(zn)),n.set(y+"",S))}if(g===void 0)(!k||ps(l,f)?.writable)&&(g=o(()=>N(void 0)),u(g,He(p)),n.set(f,g));else{k=g.v!==zn;var T=o(()=>He(p));u(g,T)}var I=Reflect.getOwnPropertyDescriptor(l,f);if(I?.set&&I.set.call(b,p),!k){if(a&&typeof f=="string"){var C=n.get("length"),D=Number(f);Number.isInteger(D)&&D>=C.v&&u(C,D+1)}ha(s)}return!0},ownKeys(l){t(s);var f=Reflect.ownKeys(l).filter(g=>{var k=n.get(g);return k===void 0||k.v!==zn});for(var[p,b]of n)b.v!==zn&&!(p in l)&&f.push(p);return f},setPrototypeOf(){cv()}})}function tc(r){try{if(r!==null&&typeof r=="object"&&Ta in r)return r[Ta]}catch{}return r}function pf(r,e){return Object.is(tc(r),tc(e))}var cs,gf,bf,_f;function Dv(){if(cs===void 0){cs=window,gf=/Firefox/.test(navigator.userAgent);var r=Element.prototype,e=Node.prototype,n=Text.prototype;bf=ps(e,"firstChild").get,_f=ps(e,"nextSibling").get,Xd(r)&&(r[fl]=void 0,r[Yu]=null,r[hl]=void 0,r.__e=void 0),Xd(n)&&(n[ml]=void 0)}}function Ra(r=""){return document.createTextNode(r)}function ma(r){return bf.call(r)}function bi(r){return _f.call(r)}function w(r,e){return ma(r)}function De(r,e=!1){{var n=ma(r);return n instanceof Comment&&n.data===""?bi(n):n}}function m(r,e=!1){return ma(r)}function d(r,e=1,n=!1){let a=r;for(;e--;)a=bi(a);return a}function Nv(r){r.textContent=""}function Ef(){return!1}function Cv(r,e,n){return n?document.createElement(r,{is:n}):document.createElement(r)}function Pv(r){var e=zt;if(e===null)return Kt.f|=Ba,r;if((e.f&Ps)===0&&(e.f&ys)===0)throw r;va(r,e)}function va(r,e){if(!(e!==null&&(e.f&Ir)!==0)){for(;e!==null;){if((e.f&ul)!==0&&(e.f&(Ir|Ji))===0){if((e.f&Ps)===0)throw r;try{e.b.error(r);return}catch(n){r=n}}e=e.parent}throw r}}function Mv(r){zt===null&&(Kt===null&&iv(),sv()),Na&&av()}function Ov(r,e){var n=e.last;n===null?e.last=e.first=r:(n.next=r,r.prev=n,e.last=r)}function Ca(r,e){var n=zt;n!==null&&(n.f&yr)!==0&&(r|=yr);var a={ctx:Un,deps:null,nodes:null,f:r|Gn|$r,first:null,fn:e,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};Pt?.register_created_effect(a);var s=a;if((r&ys)!==0)ms!==null?ms.push(a):Va.ensure().schedule(a);else if(e!==null){try{ws(a)}catch(o){throw Dr(a),o}s.deps===null&&s.teardown===null&&s.nodes===null&&s.first===s.last&&(s.f&Ms)===0&&(s=s.first,(r&ra)!==0&&(r&ls)!==0&&s!==null&&(s.f|=ls))}if(s!==null&&(s.parent=n,n!==null&&Ov(s,n),Kt!==null&&(Kt.f&er)!==0&&(r&Da)===0)){var i=Kt;(i.effects??=[]).push(s)}return a}function dd(){return Kt!==null&&!sa}function cd(r){const e=Ca(po,null);return Pn(e,jn),e.teardown=r,e}function st(r){Mv();var e=zt.f,n=!Kt&&(e&Qr)!==0&&Un!==null&&!Un.i;if(n){var a=Un;(a.e??=[]).push(r)}else return yf(r)}function yf(r){return Ca(ys|Um,r)}function Lv(r){Va.ensure();const e=Ca(Da|Ms,r);return(n={})=>new Promise(a=>{n.outro?ss(e,()=>{Dr(e),a(void 0)}):(Dr(e),a(void 0))})}function go(r){return Ca(ys,r)}function Fv(r){return Ca(gs|Ms,r)}function _i(r,e=0){return Ca(po|e,r)}function E(r,e=[],n=[],a=[]){Ev(a,e,n,s=>{Ca(po,()=>{r(...s.map(t))})})}function Ei(r,e=0){var n=Ca(ra|e,r);return n}function Yr(r){return Ca(Qr|Ms,r)}function Sf(r){var e=r.teardown;if(e!==null){const n=Na,a=Kt;nc(!0),Zr(null);try{e.call(null)}catch(s){va(s,r.parent)}finally{nc(n),Zr(a)}}}function ud(r,e=!1){var n=r.first;for(r.first=r.last=null;n!==null;){const s=n.ac;s!==null&&Os(()=>{s.abort(gi)});var a=n.next;(n.f&Da)!==0?n.parent=null:Dr(n,e),n=a}}function Gv(r){for(var e=r.first;e!==null;){var n=e.next;(e.f&Qr)===0&&Dr(e),e=n}}function Dr(r,e=!0){var n=!1;(e||(r.f&Gm)!==0)&&r.nodes!==null&&r.nodes.end!==null&&(Uv(r.nodes.start,r.nodes.end),n=!0),r.f|=Ji,ud(r,e&&!n),ri(r,0);var a=r.nodes&&r.nodes.t;if(a!==null)for(const i of a)i.stop();Sf(r),r.f^=Ji,r.f|=Ir;var s=r.parent;s!==null&&s.first!==null&&kf(r),r.next=r.prev=r.teardown=r.ctx=r.deps=r.fn=r.nodes=r.ac=r.b=null}function Uv(r,e){for(;r!==null;){var n=r===e?null:bi(r);r.remove(),r=n}}function kf(r){var e=r.parent,n=r.prev,a=r.next;n!==null&&(n.next=a),a!==null&&(a.prev=n),e!==null&&(e.first===r&&(e.first=a),e.last===r&&(e.last=n))}function ss(r,e,n=!0){var a=[];r.f|=ed,wf(r,a,!0);var s=()=>{n&&Dr(r),e&&e()},i=a.length;if(i>0){var o=()=>--i||s();for(var l of a)l.out(o)}else s()}function wf(r,e,n){if((r.f&yr)===0){r.f^=yr;var a=r.nodes&&r.nodes.t;if(a!==null)for(const l of a)(l.is_global||n)&&e.push(l);for(var s=r.first;s!==null;){var i=s.next;if((s.f&Da)===0){var o=(s.f&ls)!==0||(s.f&Qr)!==0&&(r.f&ra)!==0;wf(s,e,o?n:!1)}s=i}}}function ao(r){r.f&=~ed,Af(r,!0)}function Af(r,e){if((r.f&ed)===0&&(r.f&yr)!==0){r.f^=yr,(r.f&jn)===0&&(Pn(r,Gn),Va.ensure().schedule(r));for(var n=r.first;n!==null;){var a=n.next,s=(n.f&ls)!==0||(n.f&Qr)!==0;Af(n,s?e:!1),n=a}var i=r.nodes&&r.nodes.t;if(i!==null)for(const o of i)(o.is_global||e)&&o.in()}}function fd(r,e){if(r.nodes)for(var n=r.nodes.start,a=r.nodes.end;n!==null;){var s=n===a?null:bi(n);e.append(n),n=s}}let Vi=!1,Na=!1;function nc(r){Na=r}let Kt=null,sa=!1;function Zr(r){Kt=r}let zt=null;function Ea(r){zt=r}let ba=null;function Tf(r){Kt!==null&&(ba??=new Set).add(r)}let Rr=null,Ur=0,Kr=null;function Bv(r){Kr=r}let Rf=1,rs=0,xa=rs;function rc(r){xa=r}function xf(){return++Rf}function yi(r){var e=r.f;if((e&Gn)!==0)return!0;if(e&er&&(r.f&=~ds),(e&ia)!==0){for(var n=r.deps,a=n.length,s=0;s<a;s++){var i=n[s];if(yi(i)&&df(i),i.wv>r.wv)return!0}(e&$r)!==0&&aa===null&&Pn(r,jn)}return!1}function If(r,e,n=!0){var a=r.reactions;if(a!==null&&!(ba!==null&&ba.has(r)))for(var s=0;s<a.length;s++){var i=a[s];(i.f&er)!==0?If(i,e,!1):e===i&&(n?Pn(i,Gn):(i.f&jn)!==0&&Pn(i,ia),ld(i))}}function Df(r){var e=Rr,n=Ur,a=Kr,s=Kt,i=ba,o=Un,l=sa,f=xa,p=r.f;Rr=null,Ur=0,Kr=null,Kt=(p&(Qr|Da))===0?r:null,ba=null,Ss(r.ctx),sa=!1,xa=++rs,r.ac!==null&&(Os(()=>{r.ac.abort(gi)}),r.ac=null);try{r.f|=to;var b=r.fn,g=b();r.f|=Ps;var k=ac(r);if(nf()&&Kr!==null&&!sa&&k!==null&&(r.f&(er|ia|Gn))===0)for(var y=0;y<Kr.length;y++)If(Kr[y],r);if(s!==null&&s!==r){if(rs++,s.deps!==null)for(let S=0;S<n;S+=1)s.deps[S].rv=rs;if(e!==null)for(const S of e)S.rv=rs;Kr!==null&&(a===null?a=Kr:a.push(...Kr))}return(r.f&Ba)!==0&&(r.f^=Ba),g}catch(S){return ac(r),Pv(S)}finally{r.f^=to,Rr=e,Ur=n,Kr=a,Kt=s,ba=i,Ss(o),sa=l,xa=f}}function ac(r){var e=r.deps,n=Pt?.is_fork;if(Rr!==null){var a;if(n||ri(r,Ur),e!==null&&Ur>0)for(e.length=Ur+Rr.length,a=0;a<Rr.length;a++)e[Ur+a]=Rr[a];else r.deps=e=Rr;if(dd()&&(r.f&$r)!==0)for(a=Ur;a<e.length;a++)(e[a].reactions??=[]).push(r)}else!n&&e!==null&&Ur<e.length&&(ri(r,Ur),e.length=Ur);return e}function Hv(r,e){let n=e.reactions;if(n!==null){var a=Om.call(n,r);if(a!==-1){var s=n.length-1;s===0?n=e.reactions=null:(n[a]=n[s],n.pop())}}if(n===null&&(e.f&er)!==0&&(Rr===null||!Zi.call(Rr,e))){var i=e;(i.f&$r)!==0&&(i.f^=$r,i.f&=~ds),i.v!==zn&&ad(i),i.ac!==null&&Os(()=>{i.ac.abort(gi),i.ac=null,Pn(i,Gn)}),wv(i),ri(i,0)}}function ri(r,e){var n=r.deps;if(n!==null)for(var a=e;a<n.length;a++)Hv(r,n[a])}function ws(r){var e=r.f;if((e&Ir)===0){Pn(r,jn);var n=zt,a=Vi;zt=r,Vi=(e&(Qr|Da))===0;try{(e&(ra|Wu))!==0?Gv(r):ud(r),Sf(r);var s=Df(r);r.teardown=typeof s=="function"?s:null,r.wv=Rf;var i;Bu&&hv&&(r.f&Gn)!==0&&r.deps}finally{Vi=a,zt=n}}}async function As(){await Promise.resolve(),Tv()}function t(r){var e=r.f,n=(e&er)!==0;if(Kt!==null&&!sa){var a=zt!==null&&(zt.f&Ir)!==0;if(!a&&(ba===null||!ba.has(r))){var s=Kt.deps;if((Kt.f&to)!==0)r.rv<rs&&(r.rv=rs,Rr===null&&s!==null&&s[Ur]===r?Ur++:Rr===null?Rr=[r]:Rr.push(r));else{Kt.deps??=[],Zi.call(Kt.deps,r)||Kt.deps.push(r);var i=r.reactions;i===null?r.reactions=[Kt]:Zi.call(i,Kt)||i.push(Kt)}}}if(Na&&ga.has(r))return ga.get(r);if(n){var o=r;if(Na){var l=o.v;return((o.f&jn)===0&&o.reactions!==null||Cf(o))&&(l=id(o)),ga.set(o,l),l}var f=(o.f&$r)===0&&!sa&&Kt!==null&&(Vi||(Kt.f&$r)!==0),p=(o.f&Ps)===0;yi(o)&&(f&&(o.f|=$r),df(o)),f&&!p&&(cf(o),Nf(o))}if(aa?.has(r))return aa.get(r);if((r.f&Ba)!==0)throw r.v;return r.v}function Nf(r){if(r.f|=$r,r.deps!==null)for(const e of r.deps)(e.reactions??=[]).push(r),(e.f&er)!==0&&(e.f&$r)===0&&(cf(e),Nf(e))}function Cf(r){if(r.v===zn)return!0;if(r.deps===null)return!1;for(const e of r.deps)if(ga.has(e)||(e.f&er)!==0&&Cf(e))return!0;return!1}function Sr(r){var e=sa;try{return sa=!0,r()}finally{sa=e}}function Vv(r){if(!(typeof r!="object"||!r||r instanceof EventTarget)){if(Ta in r)gl(r);else if(!Array.isArray(r))for(let e in r){const n=r[e];typeof n=="object"&&n&&Ta in n&&gl(n)}}}function gl(r,e=new Set){if(typeof r=="object"&&r!==null&&!(r instanceof EventTarget)&&!e.has(r)){e.add(r),r instanceof Date&&r.getTime();for(let a in r)try{gl(r[a],e)}catch{}const n=vo(r);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){const a=Vu(n);for(let s in a){const i=a[s].get;if(i)try{i.call(r)}catch{}}}}}const zv=["touchstart","touchmove"];function jv(r){return zv.includes(r)}const $s=Symbol("events"),Pf=new Set,bl=new Set;function Wv(r,e,n,a={}){function s(i){if(a.capture||_l.call(e,i),!i.cancelBubble)return Os(()=>n?.call(this,i))}return r.startsWith("pointer")||r.startsWith("touch")||r==="wheel"?Aa(()=>{e.addEventListener(r,s,a)}):e.addEventListener(r,s,a),s}function xr(r,e,n,a,s){var i={capture:a,passive:s},o=Wv(r,e,n,i);(e===document.body||e===window||e===document||e instanceof HTMLMediaElement)&&cd(()=>{e.removeEventListener(r,o,i)})}function ne(r,e,n){(e[$s]??={})[r]=n}function St(r){for(var e=0;e<r.length;e++)Pf.add(r[e]);for(var n of bl)n(r)}let Fo=null,Go=!1;function _l(r){var e=this,n=e.ownerDocument,a=r.type,s=r.composedPath?.()||[],i=s[0]||r.target;Fo=r,Go||(Go=!0,setTimeout(()=>{Go=!1,Fo=null}));var o=0,l=Fo===r&&r[$s];if(l){var f=s.indexOf(l);if(f!==-1&&(e===document||e===window)){r[$s]=e;return}var p=s.indexOf(e);if(p===-1)return;f<=p&&(o=f)}if(i=s[o]||r.target,i!==e){Hu(r,"currentTarget",{configurable:!0,get(){return i||n}});var b=Kt,g=zt;Zr(null),Ea(null);try{for(var k,y=[];i!==null&&i!==e;){try{var S=i[$s]?.[a];S!=null&&(!i.disabled||r.target===i)&&S.call(i,r)}catch(T){k?y.push(T):k=T}if(r.cancelBubble)break;o++,i=o<s.length?s[o]:null}if(k){for(let T of y)queueMicrotask(()=>{throw T});throw k}}finally{r[$s]=e,delete r.currentTarget,Zr(b),Ea(g)}}}const Kv=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:r=>r});function Yv(r){return Kv?.createHTML(r)??r}function Mf(r){var e=Cv("template");return e.innerHTML=Yv(r.replaceAll("<!>","<!---->")),e.content}function Ts(r,e){var n=zt;n.nodes===null&&(n.nodes={start:r,end:e,a:null,t:null})}function _(r,e){var n=(e&$u)!==0,a=(e&Qm)!==0,s,i=!r.startsWith("<!>");return()=>{s===void 0&&(s=Mf(i?r:"<!>"+r),n||(s=ma(s)));var o=a||gf?document.importNode(s,!0):s.cloneNode(!0);if(n){var l=ma(o),f=o.lastChild;Ts(l,f)}else Ts(o,o);return o}}function qv(r,e,n="svg"){var a=!r.startsWith("<!>"),s=(e&$u)!==0,i=`<${n}>${a?r:"<!>"+r}</${n}>`,o;return()=>{if(!o){var l=Mf(i),f=ma(l);if(s)for(o=document.createDocumentFragment();ma(f);)o.appendChild(ma(f));else o=ma(f)}var p=o.cloneNode(!0);if(s){var b=ma(p),g=p.lastChild;Ts(b,g)}else Ts(p,p);return p}}function Pa(r,e){return qv(r,e,"svg")}function tr(r=""){{var e=Ra(r+"");return Ts(e,e),e}}function At(){var r=document.createDocumentFragment(),e=document.createComment(""),n=Ra();return r.append(e,n),Ts(e,n),r}function v(r,e){r!==null&&r.before(e)}function $v(r){let e=0,n=za(0),a;return()=>{dd()&&(t(n),_i(()=>(e===0&&(a=Sr(()=>r(()=>ha(n)))),e+=1,()=>{Aa(()=>{e-=1,e===0&&(a?.(),a=void 0,ha(n))})})))}}var Xv=ls|Ms;function Of(r,e,n,a){new Qv(r,e,n,a)}class Qv{parent;is_pending=!1;transform_error;#e;#n=null;#t;#a;#s;#r=null;#i=null;#l=null;#o=null;#d=0;#c=0;#u=!1;#f=new Set;#h=new Set;#m=null;#p=$v(()=>(this.#m=za(this.#d),()=>{this.#m=null}));constructor(e,n,a,s){this.#e=e,this.#t=n,this.#a=i=>{var o=zt;o.b=this,o.f|=ul,a(i)},this.parent=zt.b,this.transform_error=s??this.parent?.transform_error??(i=>i),this.#s=Ei(()=>{this.#g()},Xv)}#_(){try{this.#r=Yr(()=>this.#a(this.#e))}catch(e){this.error(e)}}#v(e){const n=this.#t.failed,{reset:a,invoke_onerror:s}=this.#b(e);Aa(s),n&&(this.#l=Yr(()=>{n(this.#e,()=>e,()=>a)}))}#b(e){var n=!1,a=!1;const s=()=>{if(n){tv();return}n=!0,a&&fv(),this.#l!==null&&ss(this.#l,()=>{this.#l=null}),this.#E(()=>{this.#g()})};return{reset:s,invoke_onerror:()=>{try{a=!0,this.#t.onerror?.(e,s),a=!1}catch(o){va(o,this.#s&&this.#s.parent)}}}}#y(){const e=this.#t.pending;e&&(this.is_pending=!0,this.#i=Yr(()=>e(this.#e)),Aa(()=>{var n=this.#o=document.createDocumentFragment(),a=Ra(),s=!1;if(n.append(a),this.#r=this.#E(()=>{try{return Yr(()=>this.#a(a))}catch(i){try{this.error(i),s=!0}catch(o){va(o,this.#s.parent)}return null}}),this.#r===null){this.#o=null,s&&this.#S(Pt);return}this.#c===0&&(this.#e.before(n),this.#o=null,ss(this.#i,()=>{this.#i=null}),this.#S(Pt))}))}#g(){try{if(this.is_pending=this.has_pending_snippet(),this.#c=0,this.#d=0,this.#r=Yr(()=>{this.#a(this.#e)}),this.#c>0){var e=this.#o=document.createDocumentFragment();fd(this.#r,e);const n=this.#t.pending;this.#i=Yr(()=>n(this.#e))}else this.#S(Pt)}catch(n){this.error(n)}}#S(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#h)}defer_effect(e){sf(e,this.#f,this.#h)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#t.pending}#E(e){var n=zt,a=Kt,s=Un;Ea(this.#s),Zr(this.#s),Ss(this.#s.ctx);try{return Va.ensure(),e()}finally{Ea(n),Zr(a),Ss(s)}}#k(e,n){if(!this.has_pending_snippet()){this.parent&&this.parent.#k(e,n);return}this.#c+=e,this.#c===0&&(this.#S(n),this.#i&&ss(this.#i,()=>{this.#i=null}),this.#o&&(this.#e.before(this.#o),this.#o=null))}update_pending_count(e,n){this.#k(e,n),this.#d+=e,!(!this.#m||this.#u)&&(this.#u=!0,Aa(()=>{this.#u=!1,this.#m&&ks(this.#m,this.#d)}))}get_effect_pending(){return this.#p(),t(this.#m)}error(e){if(!this.#t.onerror&&!this.#t.failed)throw e;Pt?.is_fork?(this.#r&&Pt.skip_effect(this.#r),this.#i&&Pt.skip_effect(this.#i),this.#l&&Pt.skip_effect(this.#l),Pt.oncommit(()=>{this.#w(e)})):this.#w(e)}#w(e){this.#r&&(Dr(this.#r),this.#r=null),this.#i&&(Dr(this.#i),this.#i=null),this.#l&&(Dr(this.#l),this.#l=null);let n=this.#t.failed;const a=s=>{const{reset:i,invoke_onerror:o}=this.#b(s);o(),n&&(this.#l=this.#E(()=>{try{return Yr(()=>{var l=zt;l.b=this,l.f|=ul,n(this.#e,()=>s,()=>i)})}catch(l){return va(l,this.#s.parent),null}}))};Aa(()=>{var s;try{s=this.transform_error(e)}catch(i){va(i,this.#s&&this.#s.parent);return}s!==null&&typeof s=="object"&&typeof s.then=="function"?s.then(a,i=>va(i,this.#s&&this.#s.parent)):a(s)})}}function h(r,e){var n=e==null?"":typeof e=="object"?`${e}`:e;n!==(r[ml]??=r.nodeValue)&&(r[ml]=n,r.nodeValue=`${n}`)}function Zv(r,e){return Jv(r,e)}const Ci=new Map;function Jv(r,{target:e,anchor:n,props:a={},events:s,context:i,intro:o=!0,transformError:l}){Dv();var f=void 0,p=Lv(()=>{var b=n??e.appendChild(Ra());Of(b,{pending:()=>{}},y=>{dt({});var S=Un;i&&(S.c=i),s&&(a.$$events=s),f=r(y,a)||rd(),ct()},l);var g=new Set,k=y=>{for(var S=0;S<y.length;S++){var T=y[S];if(!g.has(T)){g.add(T);var I=jv(T);for(const x of[e,document]){var C=Ci.get(x);C===void 0&&(C=new Map,Ci.set(x,C));var D=C.get(T);D===void 0?(x.addEventListener(T,_l,{passive:I}),C.set(T,1)):C.set(T,D+1)}}}};return k(mo(Pf)),bl.add(k),()=>{for(var y of g)for(const I of[e,document]){var S=Ci.get(I),T=S.get(y);--T==0?(I.removeEventListener(y,_l),S.delete(y),S.size===0&&Ci.delete(I)):S.set(y,T)}bl.delete(k),b!==n&&b.parentNode?.removeChild(b)}});return ep.set(f,p),f}let ep=new WeakMap;class hd{anchor;#e=new Map;#n=new Map;#t=new Map;#a=new Set;#s=!0;constructor(e,n=!0){this.anchor=e,this.#s=n}#r=e=>{if(this.#e.has(e)){var n=this.#e.get(e),a=this.#n.get(n);if(a)ao(a),this.#a.delete(n);else{var s=this.#t.get(n);s&&(ao(s.effect),this.#n.set(n,s.effect),this.#t.delete(n),s.fragment.lastChild.remove(),this.anchor.before(s.fragment),a=s.effect)}for(const[i,o]of this.#e){if(this.#e.delete(i),i===e)break;const l=this.#t.get(o);l&&(Dr(l.effect),this.#t.delete(o))}for(const[i,o]of this.#n){if(i===n||this.#a.has(i))continue;const l=()=>{if(Array.from(this.#e.values()).includes(i)){var p=document.createDocumentFragment();fd(o,p),p.append(Ra()),this.#t.set(i,{effect:o,fragment:p})}else Dr(o);this.#a.delete(i),this.#n.delete(i)};this.#s||!a?(this.#a.add(i),ss(o,l,!1)):l()}}};#i=e=>{this.#e.delete(e);const n=Array.from(this.#e.values());for(const[a,s]of this.#t)n.includes(a)||(Dr(s.effect),this.#t.delete(a))};ensure(e,n){var a=Pt,s=Ef();if(n&&!this.#n.has(e)&&!this.#t.has(e))if(s){var i=document.createDocumentFragment(),o=Ra();i.append(o),this.#t.set(e,{effect:Yr(()=>n(o)),fragment:i})}else this.#n.set(e,Yr(()=>n(this.anchor)));if(this.#e.set(a,e),s){for(const[l,f]of this.#n)l===e?a.unskip_effect(f):a.skip_effect(f);for(const[l,f]of this.#t)l===e?a.unskip_effect(f.effect):a.skip_effect(f.effect);a.oncommit(this.#r),a.ondiscard(this.#i)}else this.#r(a)}}function $(r,e,n=!1){var a=new hd(r),s=n?ls:0;function i(o,l){a.ensure(o,l)}Ei(()=>{var o=!1;e((l,f=0)=>{o=!0,i(f,l)}),o||i(-1,null)},s)}const tp=Symbol("NaN");function np(r,e,n){var a=new hd(r);Ei(()=>{var s=e();s!==s&&(s=tp),a.ensure(s,n)})}function so(r,e){return e}function rp(r,e,n){for(var a=[],s=e.length,i,o=e.length,l=0;l<s;l++){let g=e[l];ss(g,()=>{if(i){if(i.pending.delete(g),i.done.add(g),i.pending.size===0){var k=r.outrogroups;El(r,mo(i.done)),k.delete(i),k.size===0&&(r.outrogroups=null)}}else o-=1},!1)}if(o===0){var f=a.length===0&&n!==null&&r.pending.size===0;if(f){var p=n,b=p.parentNode;Nv(b),b.append(p),r.items.clear()}El(r,e,!f)}else i={pending:new Set(e),done:new Set},(r.outrogroups??=new Set).add(i)}function El(r,e,n=!0){var a;if(r.pending.size>0){a=new Set;for(const o of r.pending.values())for(const l of o)a.add(r.items.get(l).e)}for(var s=0;s<e.length;s++){var i=e[s];if(a?.has(i)){i.f|=pa;const o=document.createDocumentFragment();fd(i,o)}else Dr(e[s],n)}}var sc;function je(r,e,n,a,s,i=null){var o=r,l=new Map,f=(e&qu)!==0;if(f){var p=r;o=p.appendChild(Ra())}var b=null,g=lf(()=>{var x=n();return pi(x)?x:x==null?[]:mo(x)}),k,y=new Map,S=!0;function T(x){(D.effect.f&Ir)===0&&(D.pending.delete(x),D.fallback=b,ap(D,k,o,e,a),b!==null&&(k.length===0?(b.f&pa)===0?ao(b):(b.f^=pa,Xs(b,null,o)):ss(b,()=>{b=null})))}function I(x){D.pending.delete(x)}var C=Ei(()=>{k=t(g);for(var x=k.length,P=new Set,K=Pt,X=Ef(),ie=0;ie<x;ie+=1){var ue=k[ie],fe=a(ue,ie),B=S?null:l.get(fe);B?(B.v&&ks(B.v,ue),B.i&&ks(B.i,ie),X&&K.unskip_effect(B.e)):(B=sp(l,S?o:sc??=Ra(),ue,fe,ie,s,e,n),S||(B.e.f|=pa),l.set(fe,B)),P.add(fe)}if(x===0&&i&&!b&&(S?b=Yr(()=>i(o)):(b=Yr(()=>i(sc??=Ra())),b.f|=pa)),x>P.size&&rv(),!S)if(y.set(K,P),X){for(const[re,de]of l)P.has(re)||K.skip_effect(de.e);K.oncommit(T),K.ondiscard(I)}else T(K);t(g)}),D={effect:C,items:l,pending:y,outrogroups:null,fallback:b};S=!1}function Vs(r){for(;r!==null&&(r.f&Qr)===0;)r=r.next;return r}function ap(r,e,n,a,s){var i=(a&Wm)!==0,o=e.length,l=r.items,f=Vs(r.effect.first),p,b=null,g,k=[],y=[],S,T,I,C;if(i)for(C=0;C<o;C+=1)S=e[C],T=s(S,C),I=l.get(T).e,(I.f&pa)===0&&(I.nodes?.a?.measure(),(g??=new Set).add(I));for(C=0;C<o;C+=1){if(S=e[C],T=s(S,C),I=l.get(T).e,r.outrogroups!==null)for(const B of r.outrogroups)B.pending.delete(I),B.done.delete(I);if((I.f&yr)!==0&&(ao(I),i&&(I.nodes?.a?.unfix(),(g??=new Set).delete(I))),(I.f&pa)!==0)if(I.f^=pa,I===f)Xs(I,null,n);else{var D=b?b.next:f;I===r.effect.last&&(r.effect.last=I.prev),I.prev&&(I.prev.next=I.next),I.next&&(I.next.prev=I.prev),La(r,b,I),La(r,I,D),Xs(I,D,n),b=I,k=[],y=[],f=Vs(b.next);continue}if(I!==f){if(p!==void 0&&p.has(I)){if(k.length<y.length){var x=y[0],P;b=x.prev;var K=k[0],X=k[k.length-1];for(P=0;P<k.length;P+=1)Xs(k[P],x,n);for(P=0;P<y.length;P+=1)p.delete(y[P]);La(r,K.prev,X.next),La(r,b,K),La(r,X,x),f=x,b=X,C-=1,k=[],y=[]}else p.delete(I),Xs(I,f,n),La(r,I.prev,I.next),La(r,I,b===null?r.effect.first:b.next),La(r,b,I),b=I;continue}for(k=[],y=[];f!==null&&f!==I;)(p??=new Set).add(f),y.push(f),f=Vs(f.next);if(f===null)continue}(I.f&pa)===0&&k.push(I),b=I,f=Vs(I.next)}if(r.outrogroups!==null){for(const B of r.outrogroups)B.pending.size===0&&(El(r,mo(B.done)),r.outrogroups?.delete(B));r.outrogroups.size===0&&(r.outrogroups=null)}if(f!==null||p!==void 0){var ie=[];if(p!==void 0)for(I of p)(I.f&yr)===0&&ie.push(I);for(;f!==null;)(f.f&yr)===0&&f!==r.fallback&&ie.push(f),f=Vs(f.next);var ue=ie.length;if(ue>0){var fe=(a&qu)!==0&&o===0?n:null;if(i){for(C=0;C<ue;C+=1)ie[C].nodes?.a?.measure();for(C=0;C<ue;C+=1)ie[C].nodes?.a?.fix()}rp(r,ie,fe)}}i&&Aa(()=>{if(g!==void 0)for(I of g)I.nodes?.a?.apply()})}function sp(r,e,n,a,s,i,o,l){var f=(o&zm)!==0?(o&Km)===0?xv(n,!1,!1):za(n):null,p=(o&jm)!==0?za(s):null;return{v:f,i:p,e:Yr(()=>(i(e,f??n,p??s,l),()=>{r.delete(a)}))}}function Xs(r,e,n){if(r.nodes)for(var a=r.nodes.start,s=r.nodes.end,i=e&&(e.f&pa)===0?e.nodes.start:n;a!==null;){var o=bi(a);if(i.before(a),a===s)return;a=o}}function La(r,e,n){e===null?r.effect.first=n:e.next=n,n===null?r.effect.last=e:n.prev=e}function Ha(r,e,...n){var a=new hd(r);Ei(()=>{const s=e()??null;a.ensure(s,s&&(i=>s(i,...n)))},ls)}function Lf(r,e,n){go(()=>{var a=Sr(()=>e(r,n?.())||{});if(n&&a?.update){var s=!1,i={};_i(()=>{var o=n();Vv(o),s&&Qu(i,o)&&(i=o,a.update(o))}),s=!0}if(a?.destroy)return()=>a.destroy()})}function Ff(r){var e,n,a="";if(typeof r=="string"||typeof r=="number")a+=r;else if(typeof r=="object")if(Array.isArray(r)){var s=r.length;for(e=0;e<s;e++)r[e]&&(n=Ff(r[e]))&&(a&&(a+=" "),a+=n)}else for(n in r)r[n]&&(a&&(a+=" "),a+=n);return a}function ip(){for(var r,e,n=0,a="",s=arguments.length;n<s;n++)(r=arguments[n])&&(e=Ff(r))&&(a&&(a+=" "),a+=e);return a}function op(r){return typeof r=="object"?ip(r):r??""}const ic=[...`
|
|
2
|
-
\r\f \v\uFEFF`];function lp(r,e,n){var a=r==null?"":""+r;if(e&&(a=a?a+" "+e:e),n){for(var s of Object.keys(n))if(n[s])a=a?a+" "+s:s;else if(a.length)for(var i=s.length,o=0;(o=a.indexOf(s,o))>=0;){var l=o+i;(o===0||ic.includes(a[o-1]))&&(l===a.length||ic.includes(a[l]))?a=(o===0?"":a.substring(0,o))+a.substring(l+1):o=l}}return a===""?null:a}function oc(r,e=!1){var n=e?" !important;":";",a="";for(var s of Object.keys(r)){var i=r[s];i!=null&&i!==""&&(a+=" "+s+": "+i+n)}return a}function dp(r,e){if(e){var n="",a,s;return Array.isArray(e)?(a=e[0],s=e[1]):a=e,a&&(n+=oc(a)),s&&(n+=oc(s,!0)),n=n.trim(),n===""?null:n}return String(r)}function yt(r,e,n,a,s,i){var o=r[fl];if(o!==n||o===void 0){var l=lp(n,a,i);l==null?r.removeAttribute("class"):e?r.className=l:r.setAttribute("class",l),r[fl]=n}else if(i&&s!==i)for(var f in i){var p=!!i[f];(s==null||p!==!!s[f])&&r.classList.toggle(f,p)}return i}function Uo(r,e={},n,a){for(var s in n){var i=n[s];e[s]!==i&&(n[s]==null?r.style.removeProperty(s):r.style.setProperty(s,i,a))}}function On(r,e,n,a){var s=r[hl];if(s!==e){var i=dp(e,a);i==null?r.removeAttribute("style"):r.style.cssText=i,r[hl]=e}else a&&(Array.isArray(a)?(Uo(r,n?.[0],a[0]),Uo(r,n?.[1],a[1],"important")):Uo(r,n,a));return a}function cp(r,e){e?r.hasAttribute("selected")||r.setAttribute("selected",""):r.removeAttribute("selected")}function up(r,e){var n=r.__defaultValue,a=r.multiple,s=a?n??[]:null;if(!(a&&!pi(s))){r.selectedIndex;for(var i of r.options){var o=bs(i);cp(i,a?s.includes(o):pf(o,n))}}}function Ln(r,e,n=!1){if(r.multiple){if(e==null)return;if(!pi(e))return ev();for(var a of r.options)a.selected=e.includes(bs(a));return}for(a of r.options){var s=bs(a);if(pf(s,e)){a.selected=!0;return}}(!n||e!==void 0)&&(r.selectedIndex=-1)}function qt(r){var e=new MutationObserver(n=>{n.every(fp)||("__defaultValue"in r&&up(r),"__value"in r&&Ln(r,r.__value))});e.observe(r,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),cd(()=>{e.disconnect()})}function kr(r,e,n=e){var a=new WeakSet,s=!0;sd(r,"change",i=>{var o=i?"[selected]":":checked",l;if(r.multiple)l=[].map.call(r.querySelectorAll(o),bs);else{var f=r.querySelector(o)??r.querySelector("option:not([disabled])");l=f&&bs(f)}n(l),r.__value=l,Pt!==null&&a.add(Pt)}),go(()=>{var i=e();if(r===document.activeElement){var o=Pt;if(a.has(o))return}if(Ln(r,i,s),s&&i===void 0){var l=r.querySelector(":checked");l!==null&&(i=bs(l),n(i))}r.__value=i,s=!1})}function bs(r){return"__value"in r?r.__value:r.value}function fp(r){if(r.target.closest("selectedcontent")!==null)return!0;if(r.type==="childList"){var e=[...r.addedNodes,...r.removedNodes];return e.length>0&&e.every(n=>n.nodeName==="SELECTEDCONTENT")}return!1}const hp=Symbol("is custom element"),mp=Symbol("is html"),vp=Vm?"progress":"PROGRESS";function an(r,e){var n=md(r);n.value===(n.value=e??void 0)||r.value===e&&(e!==0||r.nodeName!==vp)||(r.value=e??"")}function Nr(r,e){var n=md(r);n.checked!==(n.checked=e??void 0)&&(r.checked=e)}function R(r,e,n,a){var s=md(r);s[e]!==(s[e]=n)&&(e==="loading"&&(r[Hm]=n),n==null?r.removeAttribute(e):typeof n!="string"&&pp(r).has(e)?r[e]=n:r.setAttribute(e,n))}function md(r){return r[Yu]??={[hp]:r.nodeName.includes("-"),[mp]:r.namespaceURI===Zm}}var lc=new Map;function pp(r){var e=r.getAttribute("is")||r.nodeName,n=lc.get(e);if(n)return n;lc.set(e,n=new Set);for(var a,s=r,i=Element.prototype;i!==s;){a=Vu(s);for(var o in a)a[o].set&&o!=="innerHTML"&&o!=="textContent"&&o!=="innerText"&&n.add(o);s=vo(s)}return n}function An(r,e,n=e){var a=new WeakSet;sd(r,"input",async s=>{var i=s?r.defaultValue:r.value;if(i=Bo(r)?Ho(i):i,n(i),Pt!==null&&a.add(Pt),await As(),i!==(i=e())){var o=r.selectionStart,l=r.selectionEnd,f=r.value.length;if(r.value=i??"",l!==null){var p=r.value.length;o===l&&l===f&&p>f?(r.selectionStart=p,r.selectionEnd=p):(r.selectionStart=o,r.selectionEnd=Math.min(l,p))}}}),Sr(e)==null&&r.value&&(n(Bo(r)?Ho(r.value):r.value),Pt!==null&&a.add(Pt)),_i(()=>{var s=e();if(r===document.activeElement){var i=Pt;if(a.has(i))return}Bo(r)&&s===Ho(r.value)||r.type==="date"&&!s&&!r.value||s!==r.value&&(r.value=s??"")})}function ur(r,e,n=e){sd(r,"change",a=>{var s=a?r.defaultChecked:r.checked;n(s)}),Sr(e)==null&&n(r.checked),_i(()=>{var a=e();r.checked=!!a})}function Bo(r){var e=r.type;return e==="number"||e==="range"}function Ho(r){return r===""?null:+r}function Vo(r,e){return r===e||r?.[Ta]===e}function cn(r=rd(),e,n,a){var s=Un.r,i=zt;return go(()=>{var o,l;return _i(()=>{o=l,l=a?.()||[],Sr(()=>{Vo(n(...l),r)||(e(r,...l),o&&Vo(n(...o),r)&&e(null,...o))})}),()=>{let f=i;for(;f!==s&&f.parent!==null&&f.parent.f&Ji;)f=f.parent;const p=()=>{l&&Vo(n(...l),r)&&e(null,...l)},b=f.teardown;f.teardown=()=>{p(),b?.()}}}),r}function H(r,e,n,a){var s=!0,i=(n&$m)!==0,o=(n&Xm)!==0,l=a,f=!0,p=void 0,b=()=>o&&s?(p??=ni(a),t(p)):(f&&(f=!1,l=o?Sr(a):a),l);let g;if(i){var k=Ta in r||Bm in r;g=ps(r,e)?.set??(k&&e in r?P=>r[e]=P:void 0)}var y,S=!1;i?[y,S]=bv(()=>r[e]):y=r[e],y===void 0&&a!==void 0&&(y=b(),g&&(lv(),g(y)));var T;if(T=()=>{var P=r[e];return P===void 0?b():(f=!0,P)},(n&qm)===0)return T;if(g){var I=r.$$legacy;return(function(P,K){return arguments.length>0?((!K||I||S)&&g(K?T():P),P):T()})}var C=!1,D=((n&Ym)!==0?ni:lf)(()=>(C=!1,T()));i&&t(D);var x=zt;return(function(P,K){if(arguments.length>0){const X=K?t(D):i?He(P):P;return u(D,X),C=!0,l!==void 0&&(l=X),P}return Na&&C||(x.f&Ir)!==0?D.v:t(D)})}function gp(r){Un===null&&td(),st(()=>{const e=Sr(r);if(typeof e=="function")return e})}function bp(r){Un===null&&td(),gp(()=>()=>Sr(r))}const _p="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(_p);const yl=Symbol("homematic-manager.data-table");function Ep(r){ef(yl,r)}function yp(){return tf(yl)?Ju(yl):void 0}function Sp(r,e={}){return r.replace(/\{(\w+)\}/g,(n,a)=>{const s=e[a];return s===void 0?n:String(s)})}function Gf(r,e,n){!n||r.defaultPrevented||r.button!==0||r.metaKey||r.ctrlKey||(r.preventDefault(),n(e).then(a=>{a||window.open(e,"_blank","noopener,noreferrer")}))}var kp=_(`<a class="hmm-github svelte-t2m24p" target="_blank" rel="noopener noreferrer"><svg width="16" height="16" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path fill="currentColor" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38
|
|
3
|
-
0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01
|
|
4
|
-
1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95
|
|
5
|
-
0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27
|
|
6
|
-
2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82
|
|
7
|
-
2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0
|
|
8
|
-
.21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"></path></svg></a>`);function wp(r,e){dt(e,!0);let n=H(e,"openExternal",3,void 0),a=H(e,"testId",3,void 0);function s(o){Gf(o,e.href,n())}var i=kp();E(()=>{R(i,"href",e.href),R(i,"title",e.label),R(i,"aria-label",e.label),R(i,"data-testid",a())}),ne("click",i,s),v(r,i),ct()}St(["click"]);const Uf={ok:"✔",busy:"↻",absent:"–",bad:"✕"};function Bf(r){return r.subscribing===!0||(r.waiting===!0||r.reconnecting===!0)&&!r.connected?"busy":r.connected?"ok":r.absent===!0?"absent":"bad"}function Ap(r){return r.filter(e=>!e.connected&&e.subscribing!==!0&&e.unreachable===!0).map(e=>e.name)}function Tp(r){const e=r.map(n=>Bf(n));return e.includes("bad")?"bad":e.includes("busy")?"busy":e.includes("ok")?"ok":"absent"}function Rp(r,e,n){if(r.callbackFailure!==void 0){const{port:a,inUse:s}=r.callbackFailure;return{text:s?n.portInUse(a):n.portFailed(a),bad:!0}}if(r.callbackUrl!==void 0)return{text:e?`${r.callbackUrl} · ${n.publish}`:r.callbackUrl,bad:!1}}function xp(r){return r.find(e=>e.callbackWarning!==void 0)?.callbackWarning}function Ip(r,e,n){const a=r.lite===!0?["lite-rpc",`${r.host}:${String(r.port)}`]:[r.protocol,`${n.port} ${String(r.port)}`];return r.tls===!0&&a.push(n.tls),e?.devices!==void 0&&a.push(n.devices(e.devices)),e?.dutyCycle!==void 0&&a.push(n.dutyCycle(e.dutyCycle)),a}var Dp=_('<span role="img"> </span>');function Np(r,e){dt(e,!0);let n=H(e,"backendConnected",3,!0),a=H(e,"allConnectedText",3,"Connected"),s=H(e,"someNotConnectedText",3,"Not connected"),i=H(e,"notPresentText",3,"Not present"),o=H(e,"subscribingText",3,"Subscribing"),l=H(e,"waitingText",3,"Waiting"),f=H(e,"reconnectingText",3,"Reconnecting"),p=H(e,"testId",3,void 0);const b=c(()=>Tp(e.interfaces)),g=c(()=>{if(!n())return s();switch(t(b)){case"ok":return a();case"busy":return e.interfaces.some(T=>T.subscribing===!0)?o():e.interfaces.some(T=>T.reconnecting===!0&&!T.connected)?f():l();case"absent":return i();default:return s()}});var k=Dp();let y;var S=m(k,!0);E(()=>{y=yt(k,1,`hmm-connection hmm-connection-${t(b)??""}`,"svelte-18vw5u5",y,{"hmm-connection-offline":!n()}),R(k,"aria-label",t(g)),R(k,"title",t(g)),R(k,"data-mark",t(b)),R(k,"data-testid",p()),h(S,Uf[t(b)])}),v(r,k),ct()}var Cp=_('<span class="hmm-interface-warn svelte-m4i49t" aria-hidden="true">⚠</span>'),Pp=_('<button type="button" role="option"><span class="hmm-interface-store-dot svelte-m4i49t" aria-hidden="true"></span> <span class="hmm-interface-store-label svelte-m4i49t"> </span></button>'),Mp=_('<div role="option" aria-selected="false" aria-disabled="true"><span class="hmm-interface-store-dot svelte-m4i49t" aria-hidden="true"></span> <span class="hmm-interface-store-label svelte-m4i49t"> </span></div>'),Op=_("<span> </span>"),Lp=_('<button type="button" role="option"><span class="hmm-interface-item-head svelte-m4i49t"><span class="hmm-interface-item-name svelte-m4i49t"> </span> <span><span class="hmm-interface-glyph svelte-m4i49t" aria-hidden="true"> </span> </span></span> <span class="hmm-interface-item-line svelte-m4i49t"> </span> <!></button>'),Fp=_('<button type="button" class="hmm-interface-retry svelte-m4i49t" data-testid="interface-callback-use-auto"> </button>'),Gp=_('<div class="hmm-interface-warning svelte-m4i49t" role="alert" data-testid="interface-callback-warning"><span class="svelte-m4i49t"> </span> <!></div>'),Up=_('<div class="hmm-interface-foot svelte-m4i49t"><button type="button" class="hmm-interface-retry svelte-m4i49t"> </button></div>'),Bp=_('<div class="hmm-interface-menu svelte-m4i49t"><div class="hmm-interface-head svelte-m4i49t"><span class="hmm-interface-host svelte-m4i49t" data-testid="interface-host"> </span> <span class="hmm-interface-backend svelte-m4i49t" data-testid="interface-backend"> </span></div> <div class="hmm-interface-list svelte-m4i49t" role="listbox"><!> <!></div> <!> <!></div>'),Hp=_('<div class="hmm-interface svelte-m4i49t"><button type="button" class="hmm-interface-trigger svelte-m4i49t" aria-haspopup="listbox"><!> <!> <span class="hmm-interface-trigger-name svelte-m4i49t"> </span> <span class="hmm-interface-arrow svelte-m4i49t" aria-hidden="true">▾</span></button> <!></div>');function Vp(r,e){dt(e,!0);let n=H(e,"selected",3,""),a=H(e,"host",3,""),s=H(e,"backendConnected",3,!0),i=H(e,"details",19,()=>({})),o=H(e,"label",3,"Select an interface"),l=H(e,"listLabel",3,"Interfaces"),f=H(e,"connectedText",3,"Connected"),p=H(e,"notConnectedText",3,"Not connected"),b=H(e,"notPresentText",3,"Not present"),g=H(e,"notAnsweringText",3,"Not answering"),k=H(e,"retryText",3,"Retry now"),y=H(e,"onretry",3,void 0),S=H(e,"subscribingText",3,"Subscribing"),T=H(e,"waitingText",3,"Waiting"),I=H(e,"reconnectingText",3,"Reconnecting"),C=H(e,"allConnectedText",3,"All interfaces are connected"),D=H(e,"someNotConnectedText",3,"Not every interface is connected"),x=H(e,"portLabel",3,"Port"),P=H(e,"tlsLabel",3,"TLS"),K=H(e,"devicesLabel",3,U=>`${String(U)} devices`),X=H(e,"dutyCycleLabel",3,U=>`Duty cycle ${String(U)} %`),ie=H(e,"publishCallbackPorts",3,!1),ue=H(e,"callbackPortInUseLabel",3,U=>`Callback port ${String(U)} is in use`),fe=H(e,"callbackPortFailedLabel",3,U=>`Callback port ${String(U)} cannot be opened`),B=H(e,"publishPortText",3,"Publish this port unchanged"),re=H(e,"callbackWarningLabel",3,U=>U.reason==="notLocal"?`The callback address ${U.address} is not an address of this machine; ${U.auto} is used instead`:`The callback address ${U.address} is not in the CCU's network; the CCU may not reach it and send no events`),de=H(e,"useAutomaticText",3,"Use automatic"),ee=H(e,"onuseautomatic",3,void 0),ae=H(e,"onselect",3,void 0),Y=H(e,"store",3,void 0),Z=H(e,"storeTestId",3,void 0),te=H(e,"testId",3,void 0),Re=N(!1),J=N(0),ye=N(void 0),xe=N(void 0),ge=N(void 0),V=N(void 0);const pe=c(()=>xp(e.interfaces)),ve=c(()=>[t(V),t(ge)].filter(U=>U!==void 0)),Q=c(()=>y()===void 0?[]:Ap(e.interfaces));let oe=He([]);const F=c(()=>[...Y()!==void 0&&Y().selectable?[Y().id]:[],...e.interfaces.map(U=>U.name)]),W=c(()=>t(F).indexOf(n())),O=c(()=>Y()!==void 0&&Y().id===n()?Y().label:n()),z=c(()=>Y()!==void 0&&Y().selectable?0:-1);function ce(U,Ne){if(U==="bad"&&Ne.unreachable===!0)return g();switch(U){case"ok":return f();case"busy":return Ne.subscribing===!0?S():Ne.reconnecting===!0?I():T();case"absent":return b();default:return p()}}function me(U){return Ip(U,i()[U.name],{port:x(),tls:P(),devices:K(),dutyCycle:X()}).join(" · ")}function be(){u(J,t(W)<0?0:t(W),!0),u(Re,!0)}function Ee(U){u(Re,!1),U&&t(xe)?.focus()}function le(U){Ee(!0),U!==n()&&ae()?.(U)}function G(U){t(F).length!==0&&u(J,(t(J)+U+t(F).length)%t(F).length)}st(()=>{t(Re)&&oe[t(J)]?.focus()});function L(U){if(U.key==="ArrowDown"||U.key==="ArrowUp"){U.preventDefault(),t(Re)?G(U.key==="ArrowDown"?1:-1):be();return}U.key==="Escape"&&t(Re)&&(U.preventDefault(),Ee(!0))}function A(U,Ne){switch(U.key){case"ArrowDown":{U.preventDefault(),G(1);break}case"ArrowUp":{U.preventDefault(),G(-1);break}case"Home":{U.preventDefault(),u(J,0);break}case"End":{U.preventDefault(),u(J,t(F).length-1);break}case"Enter":case" ":{U.preventDefault(),le(t(F)[Ne]??"");break}case"Escape":{U.preventDefault(),Ee(!0);break}case"Tab":{const Le=t(ve)[0];if(!U.shiftKey&&Le!==void 0){U.preventDefault(),Le.focus();break}Ee(!1);break}}}function M(U){const Ne=t(ve).findIndex(Le=>Le===U.currentTarget);if(U.key==="Escape")U.preventDefault(),Ee(!0);else if(U.key==="Tab"&&U.shiftKey)U.preventDefault(),(t(ve)[Ne-1]??oe[t(J)])?.focus();else if(U.key==="Tab"){const Le=t(ve)[Ne+1];Le===void 0?Ee(!1):(U.preventDefault(),Le.focus())}}function he(U){t(Re)&&t(ye)&&U.target instanceof Node&&!t(ye).contains(U.target)&&Ee(!1)}var Te=Hp();xr("mousedown",cs,he);var Pe=w(Te),Ve=w(Pe);{let U=c(()=>te()===void 0?void 0:`${te()}-summary`);Np(Ve,{get interfaces(){return e.interfaces},get backendConnected(){return s()},get allConnectedText(){return C()},get someNotConnectedText(){return D()},get notPresentText(){return b()},get subscribingText(){return S()},get waitingText(){return T()},get reconnectingText(){return I()},get testId(){return t(U)}})}var Ye=d(Ve,2);{var ot=U=>{var Ne=Cp();E(Le=>{R(Ne,"title",Le),R(Ne,"data-testid",te()===void 0?void 0:`${te()}-callback-warning`)},[()=>re()(t(pe))]),v(U,Ne)};$(Ye,U=>{t(pe)!==void 0&&U(ot)})}var Je=d(Ye,2),Se=m(Je,!0);cn(Pe,U=>u(xe,U),()=>t(xe));var we=d(Pe,2);{var j=U=>{var Ne=Bp(),Le=w(Ne),ze=w(Le),_e=m(ze,!0),Ie=d(ze,2),Ce=m(Ie,!0),Fe=d(Le,2),Oe=w(Fe);{var qe=vt=>{var ke=At(),Me=De(ke);{var $e=_t=>{var nt=Pp();let $t;var xt=d(w(nt),2),Ft=m(xt,!0);cn(nt,sn=>oe[t(z)]=sn,()=>oe?.[t(z)]),E(()=>{$t=yt(nt,1,`hmm-interface-store hmm-meta-${Y().mark??""}`,"svelte-m4i49t",$t,{"hmm-interface-item-current":Y().id===n()}),R(nt,"aria-selected",Y().id===n()),R(nt,"tabindex",t(z)===t(J)?0:-1),R(nt,"title",Y().title),R(nt,"data-mark",Y().mark),R(nt,"data-provider",Y().provider),R(nt,"data-testid",Z()),h(Ft,Y().label)}),ne("click",nt,()=>le(Y().id)),ne("keydown",nt,sn=>A(sn,t(z))),v(_t,nt)},ft=_t=>{var nt=Mp(),$t=d(w(nt),2),xt=m($t,!0);E(()=>{yt(nt,1,`hmm-interface-store hmm-interface-store-off hmm-meta-${Y().mark??""}`,"svelte-m4i49t"),R(nt,"title",Y().title),R(nt,"data-mark",Y().mark),R(nt,"data-provider",Y().provider),R(nt,"data-testid",Z()),h(xt,Y().label)}),v(_t,nt)};$(Me,_t=>{Y().selectable?_t($e):_t(ft,-1)})}v(vt,ke)};$(Oe,vt=>{Y()!==void 0&&vt(qe)})}var Ke=d(Oe,2);je(Ke,19,()=>e.interfaces,vt=>vt.name,(vt,ke,Me)=>{const $e=c(()=>Bf(t(ke))),ft=c(()=>t(z)+1+t(Me)),_t=c(()=>Rp(t(ke),ie(),{portInUse:ue(),portFailed:fe(),publish:B()}));var nt=Lp();let $t;var xt=w(nt),Ft=w(xt),sn=m(Ft,!0),mn=d(Ft,2),En=w(mn),Jt=m(En,!0),vn=d(En),In=d(xt,2),Kn=m(In,!0),Yn=d(In,2);{var Xt=Ot=>{var Qt=Op();let qn;var Dn=m(Qt,!0);E(()=>{qn=yt(Qt,1,"hmm-interface-item-callback svelte-m4i49t",null,qn,{"hmm-interface-item-callback-bad":t(_t).bad}),R(Qt,"data-testid",`interface-callback-${t(ke).name}`),h(Dn,t(_t).text)}),v(Ot,Qt)};$(Yn,Ot=>{t(_t)!==void 0&&Ot(Xt)})}cn(nt,(Ot,Qt)=>oe[Qt]=Ot,Ot=>oe?.[Ot],()=>[t(ft)]),E((Ot,Qt)=>{$t=yt(nt,1,"hmm-interface-item svelte-m4i49t",null,$t,{"hmm-interface-item-current":t(ke).name===n()}),R(nt,"aria-selected",t(ke).name===n()),R(nt,"tabindex",t(ft)===t(J)?0:-1),R(nt,"title",t($e)==="bad"?t(ke).error??p():void 0),R(nt,"data-testid",`interface-item-${t(ke).name}`),h(sn,t(ke).name),yt(mn,1,`hmm-interface-mark hmm-interface-mark-${t($e)??""}`,"svelte-m4i49t"),R(mn,"data-mark",t($e)),h(Jt,Uf[t($e)]),h(vn,` ${Ot??""}`),h(Kn,Qt)},[()=>ce(t($e),t(ke)),()=>me(t(ke))]),ne("click",nt,()=>le(t(ke).name)),ne("keydown",nt,Ot=>A(Ot,t(ft))),v(vt,nt)});var Xe=d(Fe,2);{var Qe=vt=>{var ke=Gp(),Me=w(ke),$e=m(Me,!0),ft=d(Me,2);{var _t=nt=>{var $t=Fp(),xt=m($t,!0);cn($t,Ft=>u(V,Ft),()=>t(V)),E(()=>h(xt,de())),ne("click",$t,()=>{Ee(!1),ee()()}),ne("keydown",$t,M),v(nt,$t)};$(ft,nt=>{ee()!==void 0&&nt(_t)})}E(nt=>h($e,nt),[()=>re()(t(pe))]),v(vt,ke)};$(Xe,vt=>{t(pe)!==void 0&&vt(Qe)})}var it=d(Xe,2);{var bt=vt=>{var ke=Up(),Me=w(ke),$e=m(Me,!0);cn(Me,ft=>u(ge,ft),()=>t(ge)),E(()=>{R(Me,"data-testid",te()===void 0?void 0:`${te()}-retry`),h($e,k())}),ne("click",Me,()=>y()?.(t(Q))),ne("keydown",Me,M),v(vt,ke)};$(it,vt=>{t(Q).length>0&&vt(bt)})}E(()=>{h(_e,a()===""?"—":a()),h(Ce,s()?f():p()),R(Fe,"aria-label",l())}),v(U,Ne)};$(we,U=>{t(Re)&&U(j)})}cn(Te,U=>u(ye,U),()=>t(ye)),E(()=>{R(Te,"data-testid",te()),R(Pe,"aria-expanded",t(Re)),R(Pe,"aria-label",o()),R(Pe,"title",o()),R(Pe,"data-testid",te()===void 0?void 0:`${te()}-trigger`),h(Se,t(O))}),ne("click",Pe,()=>t(Re)?Ee(!1):be()),ne("keydown",Pe,L),v(r,Te),ct()}St(["click","keydown"]);var zp=_('<div class="hmm-loader svelte-v1tg6x" role="status" aria-live="polite"><div class="hmm-loader-box svelte-v1tg6x"><div class="hmm-loader-spinner svelte-v1tg6x" aria-hidden="true"></div> <div class="hmm-loader-text svelte-v1tg6x"> </div></div></div>');function jp(r,e){let n=H(e,"visible",3,!1),a=H(e,"text",3,"Loading Homematic Manager..."),s=H(e,"testId",3,void 0);var i=At(),o=De(i);{var l=f=>{var p=zp(),b=w(p),g=d(w(b),2),k=m(g,!0);E(()=>{R(p,"data-testid",s()),h(k,a())}),v(f,p)};$(o,f=>{n()&&f(l)})}v(r,i)}function Wp(r){return r===void 0||!r.reachable?"bad":r.writable?"ok":"readonly"}function Kp(r,e){return r===void 0?"":[e.label,r.reachable?e.reachable:e.unreachable,r.reachable?r.writable?e.writable:e.readOnly:void 0,e.detail(r),r.implementation,r.error,r.certificate===void 0?void 0:e.certificate?.(r.certificate)??r.certificate.code].filter(a=>a!==void 0&&a!=="").join(" · ")}class _r extends Error{kind;faultCode;faultString;problems;constructor(e){super(e.message),this.name="ApiRequestError",this.kind=e.kind,e.faultCode!==void 0&&(this.faultCode=e.faultCode),e.faultString!==void 0&&(this.faultString=e.faultString),e.problems!==void 0&&(this.problems=e.problems)}toApiError(){return{...{message:this.message,kind:this.kind},...this.faultCode===void 0?{}:{faultCode:this.faultCode},...this.faultString===void 0?{}:{faultString:this.faultString},...this.problems===void 0?{}:{problems:this.problems}}}}function Hf(r){if(typeof r!="object"||r===null)return!1;const e=r;return typeof e.message=="string"&&typeof e.kind=="string"}function Si(r,e="internal"){return r instanceof _r?r:Hf(r)?new _r(r):r instanceof Error?new _r({message:r.message,kind:e}):new _r({message:String(r),kind:e})}const Sl=5,Yp=5e3,qp=15e3;class $p{#e=N(He([]));get items(){return t(this.#e)}set items(e){u(this.#e,e,!0)}#n;#t;#a;#s;#r;#i=new Set;#l;#o=new Map;#d=1;constructor(e,n={}){this.#n=n.max??20,this.#t=n.now??(()=>Date.now()),this.#a=n.infoTtlMs??Yp,this.#s=n.warnTtlMs??qp,this.#r=n.hintFor,this.#l=e.on("notice",a=>{a.level!=="debug"&&this.push(a.level,a.message,a.interfaceName)})}get visible(){return this.items.slice(Math.max(0,this.items.length-Sl))}get hidden(){return Math.max(0,this.items.length-Sl)}push(e,n,a){const s=this.#d;this.#d+=1;const i={id:s,level:e,message:n,timestamp:this.#t(),...a===void 0?{}:{interfaceName:a}},o=[...this.items,i],l=o.length>this.#n?o.slice(0,o.length-this.#n):[];for(const f of l)this.#h(f.id);return this.items=l.length>0?o.slice(l.length):o,this.#f(s,e),e!=="info"&&this.#c(n),s}#c(e){const n=this.#r?.(e);n===void 0||n===""||this.#i.has(n)||(this.#i.add(n),this.push("error",n))}fromError(e,n){const a=Si(e),s=a.faultCode===void 0?"":` (${a.faultString??a.message}, ${String(a.faultCode)})`,i=`${n===void 0?"":`${n}: `}${a.message}${s}`;return this.push("error",i)}dismiss(e){this.#h(e),this.items=this.items.filter(n=>n.id!==e)}clear(){for(const e of[...this.#o.keys()])this.#h(e);this.items=[]}dispose(){this.clear(),this.#l()}#u(e){return e==="info"?this.#a:e==="warn"?this.#s:0}#f(e,n){const a=this.#u(n);if(a<=0)return;const s=setTimeout(()=>{this.#o.delete(e),this.items=this.items.filter(i=>i.id!==e)},a);s.unref?.(),this.#o.set(e,s)}#h(e){const n=this.#o.get(e);n!==void 0&&(clearTimeout(n),this.#o.delete(e))}}var Xp=_('<button type="button" class="hmm-notices-more svelte-1pqi0mh"> </button>'),Qp=_("<strong> </strong>"),Zp=_('<div><span class="hmm-notice-text svelte-1pqi0mh"><!> </span> <button type="button" class="hmm-notice-close svelte-1pqi0mh">✕</button></div>'),Jp=_('<div class="hmm-notices svelte-1pqi0mh" role="log" aria-live="polite"><!> <!></div>');function eg(r,e){dt(e,!0);let n=H(e,"ondismiss",3,void 0),a=H(e,"dismissLabel",3,"Dismiss"),s=H(e,"visibleCount",3,Sl),i=H(e,"moreLabel",3,T=>`${T} more`),o=H(e,"lessLabel",3,"Show fewer"),l=H(e,"testId",3,void 0),f=N(!1);const p=c(()=>Math.max(0,e.notices.length-s())),b=c(()=>t(f)?e.notices:e.notices.slice(e.notices.length-Math.min(e.notices.length,s())));st(()=>{t(p)===0&&t(f)&&u(f,!1)});var g=Jp(),k=w(g);{var y=T=>{var I=Xp(),C=m(I,!0);E(D=>{R(I,"data-testid",l()===void 0?void 0:`${l()}-more`),R(I,"aria-expanded",t(f)),h(C,D)},[()=>t(f)?o():i()(t(p))]),ne("click",I,()=>u(f,!t(f))),v(T,I)};$(k,T=>{t(p)>0&&T(y)})}var S=d(k,2);je(S,17,()=>t(b),T=>T.id,(T,I)=>{var C=Zp();let D;var x=w(C),P=w(x);{var K=ue=>{var fe=Qp(),B=m(fe,!0);E(()=>h(B,t(I).interfaceName)),v(ue,fe)};$(P,ue=>{t(I).interfaceName!==void 0&&ue(K)})}var X=d(P),ie=d(x,2);E(()=>{D=yt(C,1,"hmm-notice svelte-1pqi0mh",null,D,{"hmm-notice-warn":t(I).level==="warn","hmm-notice-error":t(I).level==="error"}),h(X,` ${t(I).message??""}`),R(ie,"aria-label",a())}),ne("click",ie,()=>n()?.(t(I).id)),v(T,C)}),E(()=>R(g,"data-testid",l())),v(r,g),ct()}St(["click"]);function io(r){return r===void 0?"":typeof r=="string"?r:typeof r=="number"||typeof r=="boolean"?String(r):JSON.stringify(r)}function Vf(r,e){return new Date(r).toLocaleTimeString(e,{hour12:!1})}function Js(r,e){const n=new Date(r);return`${n.toLocaleDateString(e)} ${n.toLocaleTimeString(e,{hour12:!1})}`}function tg(r){return r<1e3?`${Math.round(r)} ms`:`${(r/1e3).toFixed(2)} s`}function dc(r){return r.map(e=>typeof e=="string"?e:JSON.stringify(e)).join(", ")}const zi={minWidth:320,minHeight:160},kl=32;function ng(r,e){return{...r,minHeight:Math.max(0,Math.min(r.minHeight,e.height-kl))}}function Rs(r,e,n){return Math.min(Math.max(r,e),Math.max(e,n))}function zf(r,e){return{...r,left:Math.round(Rs(r.left,0,e.width-r.width)),top:Math.round(Rs(r.top,0,e.height-r.height))}}function rg(r,e,n,a){return zf({...r,left:r.left+e,top:r.top+n},a)}function ag(r,e,n,a,s,i=zi){const o=r.left+r.width,l=r.top+r.height,f=e==="w",p=e==="n",b=f||e==="e"||e==="se",g=p||e==="s"||e==="se",k=Math.max(i.minWidth,f?o:s.width-r.left),y=Math.max(i.minHeight,p?l:s.height-r.top),S=b?Math.round(Rs(r.width+(f?-n:n),i.minWidth,Math.min(k,s.width))):r.width,T=g?Math.round(Rs(r.height+(p?-a:a),i.minHeight,Math.min(y,s.height))):r.height;return zf({left:f?o-S:r.left,top:p?l-T:r.top,width:S,height:T},s)}const sg=.5,oo=120;function vd(r,e){return{min:oo,max:Math.max(oo,r-e)}}function zo(r,e){const{min:n,max:a}=vd(r,e);return Math.round(Rs(r*sg,n,a))}function cc(r,e,n,a){const{min:s,max:i}=vd(n,a);return Math.round(Rs(r-e,s,i))}const jf=new Map;function uc(r,e){jf.set(r,e)}function ig(r){return jf.get(r)}const Wf=new Map;function og(r,e){Wf.set(r,e)}function lg(r){return Wf.get(r)}var dg=_('<li class="hmm-rpclog-entry hmm-rpclog-pending svelte-7sszxb"><span class="hmm-rpclog-spinner svelte-7sszxb" aria-hidden="true"></span> <span class="hmm-rpclog-origin svelte-7sszxb"> </span> <span class="hmm-rpclog-method hmm-mono svelte-7sszxb"> </span> <span class="hmm-rpclog-params hmm-mono svelte-7sszxb"> </span> <span class="hmm-rpclog-status svelte-7sszxb"> </span></li>'),cg=_('<li><span class="hmm-rpclog-time svelte-7sszxb"> </span> <span class="hmm-rpclog-origin svelte-7sszxb"> </span> <span class="hmm-rpclog-method hmm-mono svelte-7sszxb"> </span> <span class="hmm-rpclog-params hmm-mono svelte-7sszxb"> </span> <span class="hmm-rpclog-status svelte-7sszxb"><!></span> <span class="hmm-rpclog-duration svelte-7sszxb"> </span> <button type="button" class="hmm-rpclog-open svelte-7sszxb">▸</button></li>'),ug=_('<li class="hmm-rpclog-empty svelte-7sszxb"> </li>'),fg=_('<aside class="hmm-rpclog svelte-7sszxb"><div class="hmm-rpclog-handle svelte-7sszxb" role="separator" aria-orientation="horizontal" tabindex="0" data-resize="n"></div> <header class="hmm-rpclog-head svelte-7sszxb"><strong class="hmm-rpclog-title svelte-7sszxb"> </strong> <label class="hmm-rpclog-filter svelte-7sszxb"><input type="checkbox"/> </label> <button type="button" class="hmm-button"> </button> <button type="button" class="hmm-rpclog-close svelte-7sszxb">✕</button></header> <ol class="hmm-rpclog-list svelte-7sszxb"><!> <!> <!></ol></aside>');function hg(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"pending",19,()=>[]),s=H(e,"title",3,"RPC log"),i=H(e,"emptyText",3,"No RPC calls yet"),o=H(e,"pendingText",3,"in progress"),l=H(e,"clearLabel",3,"Clear"),f=H(e,"closeLabel",3,"Close"),p=H(e,"resizeLabel",3,"Resize the RPC log"),b=H(e,"hideBackground",15,!1),g=H(e,"hideBackgroundLabel",3,"Hide background calls"),k=H(e,"originLabels",19,()=>({console:"console",ui:"UI",background:"background"})),y=H(e,"openLabel",3,"Open in console"),S=H(e,"onopen",3,void 0),T=H(e,"reservedHeight",3,void 0),I=H(e,"onclear",3,void 0),C=H(e,"testId",3,void 0);function D(de){const ee=io(de.result);return de.resultBytes===void 0?ee:`${ee} (${String(Math.round(de.resultBytes/1024))} kB)`}const x="rpclog";let P=N(He(ig(x)));function K(){if(T()!==void 0)return T();const de=getComputedStyle(document.documentElement).getPropertyValue("--hmm-header-height"),ee=Number.parseFloat(de);return Number.isFinite(ee)?ee:36}st(()=>{n()&&t(P)===void 0&&u(P,zo(window.innerHeight,K()),!0)});function X(de){if(de.button!==0)return;const ee=t(P)??zo(window.innerHeight,K()),ae=de.clientY;de.preventDefault();const Y=te=>{u(P,cc(ee,te.clientY-ae,window.innerHeight,K()),!0)},Z=()=>{window.removeEventListener("pointermove",Y),window.removeEventListener("pointerup",Z),window.removeEventListener("pointercancel",Z),t(P)!==void 0&&uc(x,t(P))};window.addEventListener("pointermove",Y),window.addEventListener("pointerup",Z),window.addEventListener("pointercancel",Z)}const ie=c(()=>n()&&t(P)!==void 0?vd(window.innerHeight,K()).max:oo);function ue(de){const ee=de.key==="ArrowUp"?-20:de.key==="ArrowDown"?20:0;if(ee===0)return;de.preventDefault();const ae=t(P)??zo(window.innerHeight,K());u(P,cc(ae,ee,window.innerHeight,K()),!0),uc(x,t(P))}var fe=At(),B=De(fe);{var re=de=>{var ee=fg();let ae;var Y=w(ee),Z=d(Y,2),te=w(Z),Re=m(te,!0),J=d(te,2),ye=w(J),xe=d(ye),ge=d(J,2),V=m(ge,!0),pe=d(ge,2),ve=d(Z,2),Q=w(ve);je(Q,17,a,O=>O.id,(O,z)=>{var ce=dg(),me=d(w(ce),2),be=m(me,!0),Ee=d(me,2),le=m(Ee),G=d(Ee,2),L=m(G,!0),A=d(G,2),M=m(A,!0);E(he=>{h(be,k().ui),h(le,`${t(z).interfaceName??""} ${t(z).method??""}`),h(L,he),h(M,o())},[()=>dc(t(z).params)]),v(O,ce)});var oe=d(Q,2);je(oe,17,()=>e.entries,O=>O.id,(O,z)=>{var ce=cg();let me;var be=w(ce),Ee=m(be,!0),le=d(be,2),G=m(le,!0),L=d(le,2),A=m(L),M=d(L,2),he=m(M,!0),Te=d(M,2),Pe=w(Te);{var Ve=we=>{var j=tr();E(U=>h(j,U),[()=>D(t(z))]),v(we,j)},Ye=we=>{var j=tr();E(()=>h(j,t(z).error??"")),v(we,j)};$(Pe,we=>{t(z).ok?we(Ve):we(Ye,-1)})}var ot=d(Te,2),Je=m(ot,!0),Se=d(ot,2);E((we,j,U)=>{me=yt(ce,1,"hmm-rpclog-entry svelte-7sszxb",null,me,{"hmm-rpclog-failed":!t(z).ok,"hmm-rpclog-background":t(z).origin==="background"}),R(ce,"data-origin",t(z).origin),h(Ee,we),h(G,k()[t(z).origin]),h(A,`${t(z).interfaceName??""} ${t(z).method??""}`),h(he,j),h(Je,U),R(Se,"title",y()),R(Se,"aria-label",`${y()}: ${t(z).method}`)},[()=>Vf(t(z).timestamp),()=>dc(t(z).params),()=>tg(t(z).durationMs)]),ne("click",Se,()=>S()?.(t(z))),v(O,ce)});var F=d(oe,2);{var W=O=>{var z=ug(),ce=m(z,!0);E(()=>h(ce,i())),v(O,z)};$(F,O=>{e.entries.length===0&&a().length===0&&O(W)})}E(()=>{R(ee,"aria-label",s()),R(ee,"data-testid",C()),ae=On(ee,"",ae,{height:t(P)===void 0?void 0:`${t(P)}px`}),R(Y,"aria-label",p()),R(Y,"aria-valuenow",t(P)??0),R(Y,"aria-valuemin",oo),R(Y,"aria-valuemax",t(ie)),R(Y,"data-testid",C()===void 0?void 0:`${C()}-resize`),h(Re,s()),R(ye,"data-testid",C()===void 0?void 0:`${C()}-hide-background`),h(xe,` ${g()??""}`),h(V,l()),R(pe,"aria-label",f())}),ne("pointerdown",Y,X),ne("keydown",Y,ue),ur(ye,b),ne("click",ge,()=>I()?.()),ne("click",pe,()=>n(!1)),v(de,ee)};$(B,de=>{n()&&de(re)})}v(r,fe),ct()}St(["pointerdown","keydown","click"]);var mg=_('<button type="button" class="hmm-dialog-close svelte-jby388">✕</button>'),vg=_('<div class="hmm-dialog-buttons svelte-jby388"><!></div>'),pg=_('<div aria-hidden="true"></div>'),gg=_('<dialog><div><span class="hmm-dialog-title svelte-jby388"> </span> <!></div> <div class="hmm-dialog-body svelte-jby388"><!></div> <!> <!></dialog>');function Tn(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"title",3,""),s=H(e,"modal",3,!0),i=H(e,"width",3,"640px"),o=H(e,"height",3,void 0),l=H(e,"closable",3,!0),f=H(e,"onclose",3,void 0),p=H(e,"children",3,void 0),b=H(e,"buttons",3,void 0),g=H(e,"closeLabel",3,"Close"),k=H(e,"minWidth",3,void 0),y=H(e,"minHeight",3,void 0),S=H(e,"movable",3,!0),T=H(e,"top",3,void 0),I=H(e,"testId",3,void 0),C=N(void 0),D,x=N(void 0);const P=c(()=>I()??a()),K=c(()=>Number(/^(\d+)px$/.exec(i())?.[1]??Number.NaN)),X=c(()=>({minWidth:k()??(Number.isNaN(t(K))?zi.minWidth:Math.max(zi.minWidth,t(K))),minHeight:y()??zi.minHeight}));st(()=>{const W=t(C);W&&(n()&&!W.open?(D=document.activeElement instanceof HTMLElement?document.activeElement:void 0,u(x,t(P)===""?void 0:lg(t(P)),!0),s()?W.showModal():W.show()):!n()&&W.open&&W.close())});function ie(){n(!1),t(C)?.open&&t(C).close(),f()?.(),D?.focus(),D=void 0}function ue(){return{width:window.innerWidth,height:window.innerHeight}}function fe(W,O){const z=t(C);if(!z||!S()||W.button!==0)return;const ce=z.getBoundingClientRect(),me={left:ce.left,top:ce.top,width:ce.width,height:ce.height},be=W.clientX,Ee=W.clientY;W.preventDefault();const le=L=>{const A=L.clientX-be,M=L.clientY-Ee;u(x,O==="move"?rg(me,A,M,ue()):ag(me,O,A,M,ue(),ng(t(X),ue())),!0)},G=()=>{window.removeEventListener("pointermove",le),window.removeEventListener("pointerup",G),window.removeEventListener("pointercancel",G),t(x)&&t(P)!==""&&og(t(P),t(x))};window.addEventListener("pointermove",le),window.addEventListener("pointerup",G),window.addEventListener("pointercancel",G)}function B(W){W.target.closest("button")===null&&fe(W,"move")}const re=["n","e","s","w","se"];function de(W){W.preventDefault(),l()&&ie()}var ee=gg();let ae,Y;var Z=w(ee);let te;var Re=w(Z),J=m(Re,!0),ye=d(Re,2);{var xe=W=>{var O=mg();E(()=>R(O,"aria-label",g())),ne("click",O,ie),v(W,O)};$(ye,W=>{l()&&W(xe)})}var ge=d(Z,2),V=w(ge);{var pe=W=>{var O=At(),z=De(O);Ha(z,p),v(W,O)};$(V,W=>{p()&&W(pe)})}var ve=d(ge,2);{var Q=W=>{var O=vg(),z=w(O);Ha(z,b),v(W,O)};$(ve,W=>{b()&&W(Q)})}var oe=d(ve,2);{var F=W=>{var O=At(),z=De(O);je(z,16,()=>re,ce=>ce,(ce,me)=>{var be=pg();E(()=>{yt(be,1,`hmm-dialog-resize hmm-dialog-resize-${me??""}`,"svelte-jby388"),R(be,"data-resize",me)}),ne("pointerdown",be,Ee=>fe(Ee,me)),v(ce,be)}),v(W,O)};$(oe,W=>{S()&&W(F)})}cn(ee,W=>u(C,W),()=>t(C)),E(()=>{ae=yt(ee,1,"hmm-dialog svelte-jby388",null,ae,{"hmm-dialog-placed":t(x)!==void 0}),R(ee,"data-testid",I()),R(ee,"aria-label",a()===""?void 0:a()),Y=On(ee,"",Y,{width:t(x)===void 0?i():`${t(x).width}px`,height:t(x)===void 0?o():`${t(x).height}px`,"min-height":t(x)===void 0&&y()!==void 0?`min(${y()}px, calc(100vh - ${kl}px))`:void 0,"margin-top":t(x)===void 0?T():void 0,"max-height":t(x)===void 0&&T()!==void 0?`calc(100vh - ${T()} - ${kl/2}px)`:void 0,left:t(x)===void 0?void 0:`${t(x).left}px`,top:t(x)===void 0?void 0:`${t(x).top}px`}),te=yt(Z,1,"hmm-dialog-titlebar svelte-jby388",null,te,{"hmm-dialog-titlebar-movable":S()}),h(J,a())}),xr("cancel",ee,de),xr("close",ee,()=>{n()&&ie()}),ne("pointerdown",Z,B),v(r,ee),ct()}St(["pointerdown","click"]);var bg=_('<button type="button" class="hmm-button"> </button>'),_g=_('<p class="hmm-progress-last hmm-mono svelte-1r0w7uc"> </p>'),Eg=_('<p class="hmm-progress-line svelte-1r0w7uc"> </p> <progress class="hmm-progress svelte-1r0w7uc"></progress> <!>',1);function Kf(r,e){dt(e,!0);let n=H(e,"progress",3,void 0),a=H(e,"title",3,"RPC execution"),s=H(e,"cancelLabel",3,void 0),i=H(e,"oncancel",3,void 0),o=H(e,"testId",3,void 0),l=c(()=>n()!==void 0);Tn(r,{get title(){return a()},modal:!0,closable:!1,width:"420px",get testId(){return o()},get open(){return t(l)},set open(p){u(l,p)},buttons:p=>{var b=At(),g=De(b);{var k=y=>{var S=bg(),T=m(S,!0);E(()=>h(T,s())),ne("click",S,()=>i()?.()),v(y,S)};$(g,y=>{s()!==void 0&&y(k)})}v(p,b)},children:(p,b)=>{var g=At(),k=De(g);{var y=S=>{var T=Eg(),I=De(T),C=m(I),D=d(I,2),x=d(D,2);{var P=K=>{var X=_g(),ie=m(X);E(()=>h(ie,`${n().last.address??""}
|
|
9
|
-
${n().last.paramset??""}
|
|
10
|
-
${n().last.ok?"✔":"✕"}`)),v(K,X)};$(x,K=>{n().last&&K(P)})}E(()=>{h(C,`${n().done??""} / ${n().total??""}`),R(D,"max",n().total),an(D,n().done)}),v(S,T)};$(k,S=>{n()&&S(y)})}v(p,g)},$$slots:{buttons:!0,default:!0}}),ct()}St(["click"]);var yg=_('<span class="hmm-tab-badge svelte-126ak3w"> </span>'),Sg=_('<button type="button" role="tab"><span> </span> <!></button>'),kg=_('<div class="hmm-tabs svelte-126ak3w" role="tablist"></div>');function wg(r,e){dt(e,!0);let n=H(e,"active",15,""),a=H(e,"onselect",3,void 0),s=H(e,"label",3,"Tabs"),i=H(e,"testId",3,void 0);function o(p){n(p),a()?.(p)}function l(p,b){if(p.key!=="ArrowLeft"&&p.key!=="ArrowRight")return;p.preventDefault();const g=p.key==="ArrowRight"?1:-1,k=e.tabs[(b+g+e.tabs.length)%e.tabs.length];k&&o(k.id)}var f=kg();je(f,23,()=>e.tabs,p=>p.id,(p,b,g)=>{var k=Sg();let y;var S=w(k),T=m(S,!0),I=d(S,2);{var C=D=>{var x=yg(),P=m(x);E(()=>h(P,`(${t(b).badge??""})`)),v(D,x)};$(I,D=>{t(b).badge!==void 0&&t(b).badge!==""&&D(C)})}E(()=>{y=yt(k,1,"hmm-tab svelte-126ak3w",null,y,{"hmm-tab-active":t(b).id===n()}),R(k,"id",`tab-${t(b).id}`),R(k,"aria-selected",t(b).id===n()),R(k,"aria-controls",`panel-${t(b).id}`),R(k,"tabindex",t(b).id===n()?0:-1),h(T,t(b).label)}),ne("click",k,()=>o(t(b).id)),ne("keydown",k,D=>l(D,t(g))),v(p,k)}),E(()=>{R(f,"aria-label",s()),R(f,"data-testid",i())}),v(r,f),ct()}St(["click","keydown"]);var Ag=_('<button type="button" class="hmm-theme-switch svelte-mls84d"><span aria-hidden="true"> </span></button>');function Tg(r,e){dt(e,!0);let n=H(e,"theme",3,"system"),a=H(e,"labelFor",3,void 0),s=H(e,"onclick",3,void 0),i=H(e,"testId",3,void 0);const o={system:"◐",light:"☀",dark:"☾"},l=c(()=>a()?.(n())??`Theme: ${n()}`);var f=Ag(),p=w(f),b=m(p,!0);E(()=>{R(f,"aria-label",t(l)),R(f,"title",t(l)),R(f,"data-testid",i()),h(b,o[n()])}),ne("click",f,()=>s()?.()),v(r,f),ct()}St(["click"]);const Rg=160,xg=600;function Yf(r,e){return r.length>e?`${r.slice(0,e-1).trimEnd()}…`:r}function Ig(r){const e=(r??"").split(`
|
|
11
|
-
`).map(n=>n.trim()).find(n=>n!=="");return Yf(e??"",Rg)}function Dg(r){const e=r??"",n=e.indexOf(`
|
|
12
|
-
Headers:`);return Yf((n===-1?e:e.slice(0,n)).trim(),xg)}var Ng=_(': <span data-testid="update-error-reason"> </span>',1),Cg=_('<a class="hmm-update-link svelte-puqwbv" target="_blank" rel="noopener noreferrer" data-testid="update-releases"> </a>'),Pg=_('<span class="hmm-update-text svelte-puqwbv"> <!></span> <!>',1),Mg=_('<span class="hmm-update-text svelte-puqwbv"> </span>'),Og=_('<button type="button" class="hmm-button" data-testid="update-download"> </button>'),Lg=_('<button type="button" class="hmm-button" data-testid="update-install"> </button>'),Fg=_('<div><!> <!> <button type="button" class="hmm-button" data-testid="update-dismiss"> </button></div>');function Gg(r,e){dt(e,!0);let n=H(e,"state",3,void 0),a=H(e,"releasesUrl",3,void 0),s=H(e,"openExternal",3,void 0),i=H(e,"testId",3,void 0);const o=c(()=>{if(!n())return"";switch(n().phase){case"available":return e.labels.available;case"downloading":return`${e.labels.downloading} ${n().percent===void 0?"":`${String(Math.round(n().percent))} %`}`;case"downloaded":return e.labels.downloaded;case"installOnQuit":return e.labels.installOnQuit;case"error":return n().failed==="check"?e.labels.checkFailed:n().failed==="download"?e.labels.downloadFailed:e.labels.failed;default:return""}}),l=c(()=>n()?.phase==="error"),f=c(()=>n()?.install==="link"),p=c(()=>t(l)?Ig(n()?.message):"");var b=At(),g=De(b);{var k=y=>{var S=Fg();let T;var I=w(S);{var C=ue=>{var fe=Pg(),B=De(fe),re=w(B),de=d(re);{var ee=Z=>{var te=Ng(),Re=d(De(te)),J=m(Re,!0);E(()=>h(J,t(p))),v(Z,te)};$(de,Z=>{t(p)!==""&&Z(ee)})}var ae=d(B,2);{var Y=Z=>{var te=Cg(),Re=m(te,!0);E(()=>{R(te,"href",a()),h(Re,e.labels.releases)}),ne("click",te,J=>Gf(J,a(),s())),v(Z,te)};$(ae,Z=>{a()&&Z(Y)})}E(Z=>{R(B,"title",Z),h(re,`${t(o)??""}${n().version===void 0?"":` (${n().version})`}`)},[()=>Dg(n().message)||void 0]),v(ue,fe)},D=ue=>{var fe=Mg(),B=m(fe);E(()=>h(B,`${t(o)??""}${n().version===void 0?"":` ${n().version}`}`)),v(ue,fe)};$(I,ue=>{t(l)?ue(C):ue(D,-1)})}var x=d(I,2);{var P=ue=>{var fe=Og(),B=m(fe,!0);E(()=>{R(fe,"title",t(f)?e.labels.downloadInBrowser:void 0),h(B,e.labels.download)}),ne("click",fe,()=>e.ondownload()),v(ue,fe)},K=ue=>{var fe=Lg(),B=m(fe,!0);E(()=>h(B,e.labels.install)),ne("click",fe,()=>e.oninstall()),v(ue,fe)};$(x,ue=>{n().phase==="available"?ue(P):n().phase==="downloaded"&&ue(K,1)})}var X=d(x,2),ie=m(X,!0);E(()=>{T=yt(S,1,"hmm-update svelte-puqwbv",null,T,{"hmm-update-failed":t(l)}),R(S,"role",t(l)?"alert":"status"),R(S,"data-testid",i()),R(S,"data-phase",n().phase),R(S,"data-install",n().install??"app"),h(ie,e.labels.dismiss)}),ne("click",X,()=>e.ondismiss()),v(y,S)};$(g,y=>{n()&&t(o)!==""&&y(k)})}v(r,b),ct()}St(["click"]);const qf=300,Ug=280,Fa=4;function Bg(r,e,n=0){const a=Math.min(Ug,e.width-2*Fa),s=Math.max(Fa,Math.min(r.left,e.width-a-Fa)),i=r.bottom+Fa;return n>0&&i+n>e.height-Fa&&r.top-Fa-n>=Fa?{left:s,top:r.top-Fa-n}:{left:s,top:i}}var Hg=_('<span class="hmm-tooltip svelte-vstuih" role="tooltip"> </span>');function wl(r,e){dt(e,!0);let n=H(e,"testId",3,void 0),a=N(void 0),s=N(0);const i=c(()=>Bg(e.anchor,{width:window.innerWidth,height:window.innerHeight},t(s)));st(()=>{e.text,t(a)&&u(s,t(a).offsetHeight,!0)});var o=Hg();let l;var f=m(o,!0);cn(o,p=>u(a,p),()=>t(a)),E((p,b)=>{R(o,"data-testid",n()),l=On(o,"",l,{left:p,top:b}),h(f,e.text)},[()=>`${String(t(i).left)}px`,()=>`${String(t(i).top)}px`]),v(r,o),ct()}var Vg=_('<span class="hmm-tooltip-anchor svelte-11extwn"><!> <!></span>');function ai(r,e){dt(e,!0);let n=H(e,"delayMs",3,qf),a=H(e,"testId",3,void 0),s=N(void 0),i=N(void 0),o;function l(){if(e.text===""||!t(i))return;const{left:T,top:I,bottom:C}=t(i).getBoundingClientRect();u(s,{left:T,top:I,bottom:C},!0)}function f(){e.text===""||t(s)!==void 0||(p(),o=setTimeout(l,n()))}function p(){o!==void 0&&(clearTimeout(o),o=void 0)}function b(){p(),u(s,void 0)}st(()=>p);var g=Vg(),k=w(g);Ha(k,()=>e.children);var y=d(k,2);{var S=T=>{wl(T,{get text(){return e.text},get anchor(){return t(s)}})};$(y,T=>{t(s)!==void 0&&e.text!==""&&T(S)})}cn(g,T=>u(i,T),()=>t(i)),E(()=>{R(g,"data-testid",a()),R(g,"data-tooltip",e.text===""?void 0:e.text)}),xr("pointerenter",g,f),xr("pointerleave",g,b),ne("pointerdown",g,b),ne("focusin",g,l),ne("focusout",g,b),ne("keydown",g,T=>{T.key==="Escape"&&b()}),v(r,g),ct()}St(["pointerdown","focusin","focusout","keydown"]);var zg=_('<button type="button"><span aria-hidden="true"> </span></button>');function Ct(r,e){dt(e,!0);let n=H(e,"icon",3,"•"),a=H(e,"disabled",3,!1),s=H(e,"reason",3,void 0),i=H(e,"pressed",3,void 0),o=H(e,"busy",3,!1),l=H(e,"onclick",3,void 0),f=H(e,"testId",3,void 0);const p=c(()=>f()===void 0?void 0:`${f()}-tooltip`);{let b=c(()=>a()&&s()!==void 0?`${e.title} — ${s()}`:e.title);ai(r,{get text(){return t(b)},get testId(){return t(p)},children:(g,k)=>{var y=zg();let S;var T=w(y);let I;var C=m(T,!0);E(()=>{S=yt(y,1,"hmm-toolbar-button svelte-cmlgq7",null,S,{"hmm-toolbar-button-pressed":i()===!0}),R(y,"aria-label",e.title),R(y,"aria-pressed",i()),R(y,"aria-busy",o()?"true":void 0),R(y,"data-testid",f()),y.disabled=a()||o(),I=yt(T,1,"hmm-toolbar-icon svelte-cmlgq7",null,I,{"hmm-toolbar-icon-busy":o()}),h(C,n())}),ne("click",y,()=>l()?.()),v(g,y)},$$slots:{default:!0}})}ct()}St(["click"]);const Al=Symbol("homematic-manager.stores");function jg(r){return ef(Al,r),r}function Bt(){if(!tf(Al))throw new Error("no stores in context - wrap the component in App.svelte or call setStores() in a parent");return Ju(Al)}const $f=["devices","links","rssi","console","messages","events"],Xf="groups",Wg=["rooms","functions","metadata"],ji="devices",pd="#store";function Qf(r){return r===pd}function si(r){return Wg.includes(r)}function fc(r){return r===void 0||!r.reachable?[]:r.flat===!0?["rooms","functions"]:["metadata"]}function Kg(r){return $f.includes(r)||r===Xf||si(r)}function Yg(r){const e=r.replace(/^#/,"").split("/"),n=decodeURIComponent(e[1]??""),a=decodeURIComponent(e[2]??"");return{interfaceName:n,tab:Kg(a)?a:ji}}function qg(r,e){return r===""?"":`#/${encodeURIComponent(r)}/${e}`}function $g(r,e={}){switch(r){case"BidCos-Wired":return["devices","links","console","events"];case"CUxD":return["devices","console","events"];case"BidCos-RF":return[...$f];case"VirtualDevices":return e.heatingGroups===!0?["devices",Xf,"links","console","messages","events"]:["devices","links","console","messages","events"];default:return/hmip/i.test(r)?["devices","links","rssi","console","messages","events"]:["devices","links","console","messages","events"]}}var Xg=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="change-set-clear"> </button> <button type="button" class="hmm-button" data-testid="change-set-apply"> </button>',1),Qg=_('<p data-testid="change-set-empty"> </p>'),Zg=_('<p class="hmm-change-call svelte-1uqsmm6"> </p>'),Jg=_('<tr><td class="hmm-mono svelte-1uqsmm6"> </td><td class="svelte-1uqsmm6"> </td><td class="hmm-change-new svelte-1uqsmm6"> </td></tr>'),eb=_('<table class="hmm-change-table svelte-1uqsmm6"><tbody></tbody></table>'),tb=_('<p class="hmm-change-error svelte-1uqsmm6"> </p>'),nb=_('<li class="hmm-change svelte-1uqsmm6"><div class="hmm-change-head svelte-1uqsmm6"><span class="hmm-change-title svelte-1uqsmm6"> </span> <button type="button" class="hmm-button"> </button></div> <!> <!> <!></li>'),rb=_('<ol class="hmm-changes svelte-1uqsmm6" data-testid="change-set-list"></ol> <p class="hmm-change-count svelte-1uqsmm6" data-testid="change-set-count"> </p>',1),ab=_("<!> <!>",1);function sb(r,e){dt(e,!0);let n=H(e,"open",15,!1);const a=Bt(),s=a.i18n.t,i=a.changeSet,o=c(()=>i.count);function l(p){const b=i.outcome(p.id);return b===void 0?void 0:{ok:b.ok,...b.error?{error:b.error}:{}}}async function f(){const p=i.interfaces;await i.apply();for(const b of p)await a.links.load(b);i.empty&&n(!1)}{const p=g=>{var k=Xg(),y=De(k),S=m(y,!0),T=d(y,2),I=m(T,!0),C=d(T,2),D=m(C,!0);E((x,P,K)=>{h(S,x),T.disabled=i.empty||i.applying,h(I,P),C.disabled=i.empty||i.applying,h(D,K)},[()=>s("Close"),()=>s("Discard all"),()=>s("Apply")]),ne("click",y,()=>n(!1)),ne("click",T,()=>i.clear()),ne("click",C,()=>{f()}),v(g,k)};let b=c(()=>s("Pending changes"));Tn(r,{get title(){return t(b)},width:"820px",testId:"change-set-dialog",get open(){return n()},set open(g){n(g)},buttons:p,children:(g,k)=>{var y=ab(),S=De(y);{var T=x=>{var P=Qg(),K=m(P,!0);E(X=>h(K,X),[()=>s("Nothing is staged")]),v(x,P)},I=x=>{var P=rb(),K=De(P);je(K,21,()=>i.changes,ue=>ue.id,(ue,fe)=>{const B=c(()=>l(t(fe)));var re=nb(),de=w(re),ee=w(de),ae=m(ee,!0),Y=d(ee,2),Z=m(Y,!0),te=d(de,2);je(te,16,()=>t(fe).calls,ge=>ge,(ge,V)=>{var pe=Zg(),ve=m(pe,!0);E(()=>h(ve,V)),v(ge,pe)});var Re=d(te,2);{var J=ge=>{var V=eb(),pe=w(V);je(pe,21,()=>t(fe).lines,ve=>ve.label,(ve,Q)=>{var oe=Jg(),F=w(oe),W=m(F,!0),O=d(F),z=m(O,!0),ce=d(O),me=m(ce,!0);E(()=>{h(W,t(Q).label),h(z,t(Q).from??""),h(me,t(Q).to??"")}),v(ve,oe)}),v(ge,V)};$(Re,ge=>{t(fe).lines.length>0&&ge(J)})}var ye=d(Re,2);{var xe=ge=>{var V=tb(),pe=m(V,!0);E(()=>{R(V,"data-testid",`change-error-${t(fe).id}`),h(pe,t(B).error)}),v(ge,V)};$(ye,ge=>{t(B)&&!t(B).ok&&ge(xe)})}E(ge=>{R(re,"data-testid",`change-${t(fe).id}`),h(ae,t(fe).title),Y.disabled=i.applying,R(Y,"data-testid",`change-remove-${t(fe).id}`),h(Z,ge)},[()=>s("Remove")]),ne("click",Y,()=>i.remove(t(fe).id)),v(ue,re)});var X=d(K,2),ie=m(X,!0);E(ue=>h(ie,ue),[()=>s("{count} changes staged",{},t(o))]),v(x,P)};$(S,x=>{i.empty?x(T):x(I,-1)})}var C=d(S,2);{var D=x=>{{let P=c(()=>a.rpcLog.progress??{done:i.applied,total:t(o)}),K=c(()=>s("Cancel"));Kf(x,{get progress(){return t(P)},get cancelLabel(){return t(K)},oncancel:()=>{i.cancel()}})}};$(C,x=>{i.applying&&x(D)})}v(g,y)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click"]);const ib=Object.freeze({ip:{env:"HMM_CALLBACK_IP",cli:"--callback-ip"},xmlrpcPort:{env:"HMM_CALLBACK_XMLRPC_PORT",cli:"--callback-xmlrpc-port"},binrpcPort:{env:"HMM_CALLBACK_BINRPC_PORT",cli:"--callback-binrpc-port"}});function ob(r){const{env:e,cli:n}=ib[r];return`${e} / ${n}`}const hc=Object.freeze(["auto","local","occulite","rega"]),lb={"interfaces.changed":!0,"rega.changed":!0,"devices.changed":!0,"names.changed":!0,"meta.changed":!0,"meta.enums.changed":!0,"meta.objects.changed":!0,"rpc.event":!0,"serviceMessages.changed":!0,"rpcLog.appended":!0,"write.progress":!0,"unreach.changed":!0,"config.changed":!0,"pairing.changed":!0,notice:!0};Object.freeze(Object.keys(lb));const ca={manifest:"manifest.json",profiles:r=>`profiles/${r}.json`,receiverTypeAliases:"receiver-type-aliases.json",masterMetadata:"master-metadata.json",optionPresets:"option-presets.json",crossValidations:"cross-validations.json",translations:r=>`translations/${r}.json`,deviceIcons:"device-icons.json",timeSelectors:"easymode-time-selectors.json",masterForms:"master-forms.json"},db=/\$\{(\w+)\}/gu;function gd(r,e){return r.template.replace(db,(n,a)=>e(a))}const bd={"BidCos-RF":{name:"BidCos-RF",port:2001,tlsPort:42001,localPort:32001,localBinrpc:!0,protocol:"xmlrpc",init:!0,ping:!0,dutyCycle:!0},"BidCos-Wired":{name:"BidCos-Wired",port:2e3,tlsPort:42e3,localPort:32e3,localBinrpc:!0,protocol:"xmlrpc",init:!0,ping:!0},"HmIP-RF":{name:"HmIP-RF",port:2010,tlsPort:42010,localPort:32010,protocol:"xmlrpc",init:!0,ping:!0,pingTimeout:600,pingInterval:30,dutyCycle:!0,serviceMessages:!1},VirtualDevices:{name:"VirtualDevices",port:9292,tlsPort:49292,localPort:39292,path:"/groups",protocol:"xmlrpc",init:!0,ping:!1,serviceMessages:!1,installMode:!1},CUxD:{name:"CUxD",port:8701,protocol:"binrpc",init:!0,ping:!0,ident:"CUxD",serviceMessages:!1,installMode:!1}},cb=Object.keys(bd),ub=["BidCos-RF","HmIP-RF","VirtualDevices","BidCos-Wired"];function _d(r){return Object.prototype.hasOwnProperty.call(bd,r)}function fb(r){return _d(r)?bd[r]:void 0}function hb(r){return fb(r)?.installMode!==!1}function mb(r){const e=[];return r.name.trim()===""?e.push({code:"empty-name"}):_d(r.name)&&e.push({code:"reserved-name",name:r.name}),r.host.trim()===""&&e.push({code:"empty-host"}),(!Number.isInteger(r.port)||r.port<1||r.port>65535)&&e.push({code:"invalid-port",port:r.port}),e}const Zf=0;class mc extends Error{address;constructor(e,n){super(`invalid address ${JSON.stringify(e)}: ${n}`),this.name="AddressError",this.address=e}}const vb=/^\d+$/;function oa(r){if(r==="")return;const e=r.indexOf(":");if(e===-1)return{address:r,device:r,isDevice:!0,isChannel:!1,isMaintenance:!1};const n=r.slice(0,e),a=r.slice(e+1);if(n===""||!vb.test(a))return;const s=Number.parseInt(a,10);return{address:r,device:n,index:s,channel:r,isDevice:!1,isChannel:!0,isMaintenance:s===Zf}}function pb(r){const e=oa(r);if(!e)throw r===""?new mc(r,"empty"):new mc(r,"expected SERIAL or SERIAL:INDEX with a numeric index");return e}function wa(r){return oa(r)?.isDevice===!0}function gb(r){return oa(r)?.isChannel===!0}function ts(r){return oa(r)?.isMaintenance===!0}function xs(r){return pb(r).device}function Pi(r,e){const n=oa(r),a=oa(e);return!n||!a?n?-1:a?1:r<e?-1:r>e?1:0:n.device!==a.device?n.device<a.device?-1:1:(n.index??-1)-(a.index??-1)}function Ed(r,e,n,a){const s=e.trim(),i=oa(r);if(s===""||i===void 0||i.isMaintenance)return[];if(!i.isDevice)return[{address:r,name:s}];const o=[{address:r,name:s},{address:`${r}:0`,name:`${s}:0`}];if(!a.channels)return o;const l=new Set([0]);for(const f of n){const p=oa(f);p?.index===void 0||p.device!==r||l.has(p.index)||(l.add(p.index),o.push({address:f,name:`${s}:${String(p.index)}`}))}return o}function bb(r){if(Array.isArray(r))return r.filter(e=>typeof e=="string");if(typeof r=="string"){const e=r.split(/[\s,]+/).filter(n=>n!=="");return e.length>0?e:[]}}const jo={VISIBLE:1,INTERNAL:2,DONT_DELETE:8};function Mi(r){const e=typeof r=="number"?r:0,n=(e&jo.VISIBLE)!==0,a=(e&jo.INTERNAL)!==0,s=(e&jo.DONT_DELETE)!==0,i=[];return n&&i.push("Visible"),a&&i.push("Internal"),s&&i.push("DontDelete"),{visible:n,internal:a,dontDelete:s,unknownBits:e&-12,labels:i}}const _b={ALWAYS:1,BURST:2,CONFIG:4,WAKEUP:8,LAZY_CONFIG:16};function Eb(r){const e=typeof r=="number"?r:0,n=[];for(const[a,s]of Object.entries(_b))(e&s)!==0&&n.push(a);return n}function yd(r){return r.ROAMING===!0||r.ROAMING===1}const yb=["NONE","SENDER","RECEIVER"];function Sb(r){return yb[r??0]??"NONE"}const kb=["HM-RCV-50","HMW-RCV-50","HmIP-RCV-50","CENTRAL"];function Wo(r){return kb.includes(r)}function is(r){return typeof r.PARENT=="string"&&r.PARENT!==""}function ii(r,e,n,a){let s="",i=e;if(is(e)){if(!a)throw new Error(`cannot build a paramset identity for channel ${e.ADDRESS} without its device`);s=e.TYPE,i=a}const o=i.FIRMWARE??"",l=i.VERSION===void 0?"":String(i.VERSION);return[r,i.TYPE,o,l,s,n].join("/")}function ya(r){return r===void 0||r.trim()===""?[]:r.trim().split(/\s+/)}class wb{interfaceName;#e=new Map;#n=[];#t=[];#a=new Map;#s=new Map;#r=new Map;constructor(e,n=[]){this.interfaceName=e;for(const a of n)this.#i(a);this.#n.sort(Pi),this.#t.sort(Pi);for(const a of this.#a.values())a.sort(Pi)}#i(e){const{ADDRESS:n}=e;if(this.#e.set(n,e),is(e)){this.#t.push(n);const a=this.#a.get(e.PARENT);a?a.push(n):this.#a.set(e.PARENT,[n])}else this.#n.push(n);for(const a of ya(e.LINK_SOURCE_ROLES))vc(this.#s,a,n);for(const a of ya(e.LINK_TARGET_ROLES))vc(this.#r,a,n)}get size(){return this.#e.size}has(e){return this.#e.has(e)}get(e){return this.#e.get(e)}require(e){const n=this.#e.get(e);if(!n)throw new Error(`unknown address ${e} on interface ${this.interfaceName}`);return n}devices(){return this.#n.map(e=>this.require(e))}channels(){return this.#t.map(e=>this.require(e))}all(){return[...this.#e.values()].sort((e,n)=>Pi(e.ADDRESS,n.ADDRESS))}childrenOf(e){const n=this.#a.get(e);return n?n.map(s=>this.require(s)):(this.#e.get(e)?.CHILDREN??[]).map(s=>this.#e.get(s)).filter(s=>s!==void 0)}parentOf(e){const n=this.#e.get(e);if(!(!n||!is(n)))return this.#e.get(n.PARENT)}maintenanceChannelOf(e){const n=oa(e);if(n)return this.#e.get(`${n.device}:${Zf}`)}isCentral(e){const n=this.#e.get(e);if(!n)return!1;if(Wo(n.TYPE))return!0;const a=n.PARENT_TYPE??this.parentOf(e)?.TYPE;return a!==void 0&&Wo(a)}centralDevices(){return this.devices().filter(e=>Wo(e.TYPE))}sourceRole(e){return[...this.#s.get(e)??[]]}targetRole(e){return[...this.#r.get(e)??[]]}sourceRoles(){return[...this.#s.keys()].sort()}targetRoles(){return[...this.#r.keys()].sort()}paramsetIdentity(e,n){const a=this.#e.get(e);if(!a)return;if(!is(a))return ii(this.interfaceName,a,n);const s=this.parentOf(e);if(s)return ii(this.interfaceName,a,n,s)}}function vc(r,e,n){const a=r.get(e);a?a.push(n):r.set(e,[n])}const Sd=8,Ab="SMOKE_DETECTOR",Tb="HmIP-SWSD-Group",Rb=/^\*GROUP_([1-8])$/;function Jf(r){return`GROUP_${String(r)}`}function kd(r){return`*GROUP_${String(r)}`}function Za(r){return Rb.test(r)}function eh(r){return r.TYPE===Ab&&(r.PARENT??"")!==""}function xb(r){let e=!1;const n=[];for(let a=1;a<=Sd;a+=1){const s=r[Jf(a)];s!==void 0&&(e=!0,(s===!0||s===1)&&n.push(a))}return e?n:void 0}function Ib(r){const e=[];for(const n of r.devices())for(const a of r.childrenOf(n.ADDRESS)){const s=a.TEAM_CHANNELS??[];if(s.length!==0){e.push({address:n.ADDRESS,kind:"team",teamChannel:a.ADDRESS,teamTag:a.TEAM_TAG??"",members:[...s]});break}}return e}function th(r,e){const n=r.get(e)?.TEAM??"";if(n==="")return;const s=r.get(n)?.PARENT??"";return s!==""&&r.has(s)?s:void 0}function Db(r){const e=[];for(let n=1;n<=Sd;n+=1){const a=Object.entries(r).filter(([,s])=>s?.includes(n)===!0).map(([s])=>s).sort();a.length>0&&e.push({address:kd(n),kind:"hmip",number:n,members:a})}return e}function Nb(r){const e=new Set;for(const n of Object.values(r))for(const a of n??[])e.add(a);for(let n=1;n<=Sd;n+=1)if(!e.has(n))return n}function Cb(r){return{ADDRESS:kd(r),TYPE:Tb,PARENT:"",CHILDREN:[],PARAMSETS:[],FLAGS:0}}function Pb(r,e){return{added:e.filter(n=>!r.includes(n)),removed:r.filter(n=>!e.includes(n))}}const Mb="0123456789ABCEFGHJKLMNPQRSTUWXYZ",Ob=26;function oi(r){return r.replace(/[\s-]/g,"").toUpperCase()}function Wi(r){return/^[0-9A-F]{24}$/.test(oi(r))}const Lb=new RegExp(`^[0-7][${Mb}]{${String(Ob-1)}}$`);function pc(r){const e=oi(r);return/^[0-9A-F]{32}$/.test(e)||Lb.test(e)}function Fb(r){const e=oi(r),n=/[A-Z0-9]{4}SG([0-9A-F]{24})DLK([0-9A-F]{32})/.exec(e);if(n?.[1]&&n[2])return{sgtin:n[1],key:n[2]};if(Wi(e))return{sgtin:e,key:""}}const gc={SENDER_BROKEN:1,RECEIVER_BROKEN:2};function Gb(r){const e=typeof r=="number"?r:0,n=(e&gc.SENDER_BROKEN)!==0,a=(e&gc.RECEIVER_BROKEN)!==0;return{senderBroken:n,receiverBroken:a,broken:n||a,unknownBits:e&-4}}function Ub(r){const e=oa(r.SENDER),n=oa(r.RECEIVER);return e!==void 0&&n!==void 0&&e.device===n.device}function Tl(r){const e=Gb(r.FLAGS);return!e.broken||!Ub(r)?e:{senderBroken:!1,receiverBroken:!1,broken:!1,unknownBits:e.unknownBits}}function nh(r){return is(r)&&!ts(r.ADDRESS)&&ya(r.LINK_SOURCE_ROLES).length>0}function Bb(r){return is(r)&&!ts(r.ADDRESS)&&ya(r.LINK_TARGET_ROLES).length>0}function Hb(r,e){if(!nh(r)||!Bb(e))return[];const n=new Set(ya(e.LINK_TARGET_ROLES));return ya(r.LINK_SOURCE_ROLES).filter(a=>n.has(a))}function Vb(r,e){return r.ADDRESS!==e.ADDRESS&&Hb(r,e).length>0}function rh(r){return r.channels().filter(e=>nh(e))}function wd(r){return typeof r=="object"&&r!==null&&"explicitDouble"in r&&typeof r.explicitDouble=="number"}function bc(r){return typeof r=="number"?r:wd(r)?r.explicitDouble:void 0}function zb(r,e){const n=bc(r),a=bc(e);return n!==void 0||a!==void 0?n===a:r===e}const _c={abortDeleteDevice:{name:"abortDeleteDevice",params:[{name:"address",type:"device_address"}],returns:"void",help:{de:"Diese Methode bricht einen anhängigen Löschvorgang für ein Gerät ab.<br>Es können nur Löschvorgänge abgebrochen werden, die mit dem Flag DELETE_FLAG_DEFER ausgeführt wurden."}},activateLinkParamset:{name:"activateLinkParamset",params:[{name:"address",type:"channel_address"},{name:"peer_address",type:"channel_address"},{name:"long_press",type:"boolean"}],returns:"void",help:{de:"Mit dieser Methode wird ein Link-Parameterset aktiviert. Das logische Gerät verhält sich dann so als ob es direkt von dem entsprechenden zugeordneten Gerät angesteuert worden wäre. Hiermit kann z.B. ein Link-Parameter-Set getestet werden. Der Parameter address ist die Addresses des anzusprechenden logischen Gerätes. Der Parameter peer_address ist die Addresse des Kommunikationspartners, dessen Link-Parameter-Set aktiviert werden soll. Der Parameter long_press gibt an, ob das Parameterset für den langen Tastendruck aktiviert werden soll."}},addDevice:{name:"addDevice",params:[{name:"address",type:"string"},{name:"mode",type:"integer",optional:["rfd"]}],returns:"DeviceDescription",help:{de:"Diese Methode lernt ein Gerät anhand seiner Seriennummer an die CCU an. Diese Funktion wird nicht von jedem Gerät unterstützt. Rückgabewert ist die DeviceDescription des neu angelernten Geräts.<br>Der optionale Parameter mode bestimmt die Art des Installations-Modus:<br>1 = Normaler Installations-Modus<br>2 = Während des Anlernens werden in den Parametersets „MASTER“ default Parameter gesetzt und alle bestehenden Verknüpfungen werden gelöscht."}},addLink:{name:"addLink",params:[{name:"sender",type:"channel_address"},{name:"receiver",type:"channel_address"},{name:"name",type:"string",optional:["rfd","hs485d"]},{name:"description",type:"string",optional:["rfd","hs485d"]}],returns:"void",help:{de:"Diese Methode erstellt eine Kommunikationsbeziehung zwischen zwei logischen Geräten. Die Parameter sender und receiver bezeichnen die beiden zu verknüpfenden Partner. Die Parameter name und description sind optional und beschreiben die Verknüpfung näher."}},addVirtualDeviceInstance:{name:"addVirtualDeviceInstance",params:[],returns:"",help:{de:"leider nicht von eQ-3 dokumentiert."}},changeKey:{name:"changeKey",params:[{name:"passphrase",type:"string"}],returns:"void",help:{de:"Diese Methode ändert den vom Schnittstellenprozess verwendeten AES-Schlüssel. Der Schlüssel wird ebenfalls in allen angelernten Geräten getauscht."}},clearConfigCache:{name:"clearConfigCache",params:[{name:"address",type:"device_address"}],returns:"void",help:{de:"Diese Methode löscht alle zu einem Gerät in der CCU gespeicherten Konfigurationsdaten. Diese werden nicht sofort wieder vom Gerät abgefragt, sondern wenn sie das nächste mal benötigt werden."}},deleteDevice:{name:"deleteDevice",params:[{name:"address",type:"device_address"},{name:"flags",type:"integer",bitmask:{1:"DELETE_FLAG_RESET",2:"DELETE_FLAG_FORCE",4:"DELETE_FLAG_DEFER"}}],returns:"DeviceDescription",help:{de:"Diese Methode löscht ein Gerät aus dem Schnittstellenprozess.<br>Der Parameter address ist die Addresse des zu löschenden Gerätes.<br>Flags ist ein bitweises oder folgender Werte:<ul><li>DELETE_FLAG_RESET Das Gerät wird vor dem Löschen in den Werkszustand zurückgesetzt </li><li>DELETE_FLAG_FORCE Das Gerät wird auch gelöscht, wenn es nicht erreichbar ist </li><li>DELETE_FLAG_DEFER Wenn das Gerät nicht erreichbar ist, wird es bei nächster Gelegenheit gelöscht</li></ul>Bei Homematic IP sind die Flags 0x01 und 0x04 nicht mehr vorhanden und das Löschen von Geräten ist per Default so, als wenn diese Flags gesetzt worden wären."}},determineParameter:{name:"determineParameter",params:[{name:"address",type:"device_address"},{name:"paramset_key",type:"string"},{name:"parameter_id",type:"string"}],returns:"void",help:{de:"Mit dieser Methode wird ein Parameter eines Parameter-Sets automatisch bestimmt. Der Parameter kann bei erfolgreicher Ausführung anschließend sofort über getParamset gelesen werden.<br>Der Parameter address ist die Addresses eines logischen Gerätes.<br>Der Parameter paramset_key ist „MASTER“, „VALUES“ oder die Adresse eines Kommunikationspartners für das entsprechende Link-Parameter-Set (siehe getLinkPeers). Der Parameter parameter_id bestimmt den automatisch zu bestimmenden Parameter."}},getDeviceDescription:{name:"getDeviceDescription",params:[{name:"address",type:"device_address"}],returns:"DeviceDescription",help:{de:"Diese Methode gibt die Gerätebeschreibung des als address übergebenen Gerätes zurück."}},getInstallMode:{name:"getInstallMode",params:[],returns:"Integer",help:{de:"Diese Methode gibt die verbliebene Restzeit in Sekunden im Anlernmodus zurück. Der Wert 0 bedeutet, der Anlernmodus ist nicht aktiv."}},getKeyMismatchDevice:{name:"getKeyMismatchDevice",params:[{name:"reset",type:"bool"}],returns:"String",help:{de:"Diese Methode gibt die Seriennummer des letzten Gerätes zurück, das aufgrund eines falschen AES-Schlüssels nicht angelernt werden konnte. Mit reset=true wird diese Information im Schnittstellenprozess zurückgesetzt."}},getLGWStatus:{name:"getLGWStatus",params:[],returns:"",help:{de:"Gibt den Status des Wired-LAN-Gateways zurück."}},getLinkInfo:{name:"getLinkInfo",params:[{name:"sender",type:"device_address"},{name:"receiver",type:"device_address"}],returns:"Array",help:{de:"Diese Methode gibt den Namen und die Beschreibung für eine bestehende Kommunikationsbeziehung zurück. Die Parameter sender_address und receiver_address bezeichnen die beiden verknüpften Partner."}},getLinkPeers:{name:"getLinkPeers",params:[{name:"address",type:"device_address"}],returns:"",help:{de:"Diese Methode gibt alle einem logischen Gerät zugeordneten Kommunikationspartner zurück. Die zurückgegebenen Werte können als Parameter paramset_key für getParamset() und putParamset() verwendet werden. Der Parameter address ist die Adresse eines logischen Gerätes."}},getLinks:{name:"getLinks",params:[{name:"address",type:"address"},{name:"flags",type:"integer",optional:["rfd","hs485d"],bitmask:{1:"GL_FLAG_GROUP",2:"GL_FLAG_SENDER_PARAMSET",4:"GL_FLAG_RECEIVER_PARAMSET"}}],returns:"Array",help:{de:"Diese Methode gibt alle einem logischen Kanal oder Gerät zugeordneten Kommunikationsbeziehungen zurück.<br>Der Parameter address ist die Kanal- oder Geräteadresse des logischen Objektes, auf das sich die Abfrage bezieht. Bei address=="" werden alle Kommunikationsbeziehungen des gesamten Schnittstellenprozesses zurückgegeben.<br>Der Parameter flags ist ein bitweises oder folgender Werte:<ul><li>GL_FLAG_GROUP Wenn address einen Kanal bezeichnet, der sich in einer Gruppe befindet, werden die Kommunikationsbeziehungen für alle Kanäle der Gruppe zurückgegeben.</li><li>GL_FLAG_SENDER_PARAMSET Das Feld SENDER_PARAMSET des Rückgabewertes wird gefüllt. </li><li>GL_FLAG_RECEIVER_PARAMSET Das Feld RECEIVER_PARAMSET des Rückgabewertes wird gefüllt.</li></ul>flags ist optional. Defaultwert ist 0x00."}},getMetadata:{name:"getMetadata",params:[{name:"object_id",type:"string"},{name:"data_id",type:"string"}],returns:"Variant",help:{de:"Diese Methode gibt ein Metadatum zu einem Objekt zurück.<br><b>object_id</b> ist die Id des Metadaten-Objekts. Üblicherweise ist dies die Seriennummer eines Gerätes oder Kanals.<br><b>data_id</b> ist die Id des abzufragenden Metadatums. Diese Id kann frei gewählt werden. Der Rückgabewert entspricht in Datentyp und Wert der zuvor an setMetadata() als Parameter value übergebenen Variablen. "}},getAllMetadata:{name:"getAllMetadata",params:[{name:"object_id",type:"string"}],returns:"Struct",help:{de:"Diese Methode gibt alle zuvor gesetzten Metadaten zu einem Objekt zurück.<br><b>object_id</b> ist die Id des Metadaten-Objekts. Üblicherweise ist dies die Seriennummer eines Gerätes oder Kanals. Durch Übergabe einer beliebigen Id können aber auch eigene Metadaten-Objekte angelegt werden.<br>Der Rückgabewert ist ein Struct, der zu jedem zuvor gesetzten Metadatum ein Feld enthält. Der Feldname ist der zuvor an setMetadata() als Parameter data_id übergebene Wert. Der Wert des Feldes entspricht in Datentyp und Wert der zuvor an setMetadata() als Parameter value übergebenen Variablen. "}},getParamset:{name:"getParamset",params:[{name:"address",type:"address"},{name:"paramset_key",type:"string"},{name:"mode",type:"integer",optional:["rfd"]}],returns:"",help:{de:"Mit dieser Methode wird ein komplettes Parameter-Set für ein logisches Gerät gelesen. Der Parameter address ist die Addresses eines logischen Gerätes. Der Parameter paramset_key ist „MASTER“, „VALUES“ oder die Adresse eines Kommunikationspartners für das entsprechende Link-Parameter-Set (siehe getLinkPeers).<br>Dem optionalen Parameter mode können folgende Werte übergeben werden (nur rfd):<ul><li>0 default: Keien Auswirkung, die Funktion verhält sicht wie der Aufruf ohne mode</li><li>1 UndefinedValues: Jeder Eintrag innerhalb des zurückgelieferten Paramset ins eine Struktur mit folgendem Aufbau:<br>„UNDEFINED“(Boolean) Flag ob der angeforderte Wert initial gesetzt wurde und somit wahrscheinlich nicht der Realität entspricht oder ob der Wert von einem Gerät empfangen wurde, true = Wert wurde initial gesetzt und noch nicht verändert, false = der Wert wurde neu gesetzt <br>„VALUE“(ValueType) Wert des angeforderten Parameter.<br>UndefindeValues kann nur für Parameter aus dem Parameterset „VALUES“ abgefragt werden. Bei HomeMatic IP gibt es für bestimmte Geräte zusätzlich den paramset_type„SERVICE“, welche Geräte dies sind, ist der jeweiligen DeviceDescription zu entnehmen.Ebenso ist dieses Parameter Set kanalübergreifend, so dass es über die XML-RPCSchnittstellefür alle Kanäle abgefragt werden kann, aber immer dieselben Parameterzurückliefert.<br>Hinweis: Diese Parameter werden bei jeder Anfrage direkt vom Gerät abgefragt, deshalbsollten sie wegen der DutyCycle Belastung nicht sehr häufig abgefragt werden."}},getParamsetDescription:{name:"getParamsetDescription",params:[{name:"address",type:"address"},{name:"paramset_type",type:"paramset_type"}],returns:"",help:{de:"Mit dieser Methode wird die Beschreibung eines Parameter-Sets ermittelt. Der Parameter address ist die Adresse eines logischen Gerätes (z.B. von listDevices zurückgegeben). Der Parameter paramset_type ist „MASTER“, „VALUES“ oder „LINK“.Bei HomeMatic IP gibt es für bestimmte Geräte zusätzlich den paramset_typeSERVICE, welche Geräte dies sind, ist der jeweiligen DeviceDescription zu entnehmen.Ebenso ist dieses Parameter Set kanalübergreifend, so dass es über die XML-RPCSchnittstellefür alle Kanäle abgefragt werden kann, aber immer dieselben Parameter zurückliefert. "}},getParamsetId:{name:"getParamsetId",params:[{name:"address",type:"address"},{name:"type",type:"string"}],returns:"",help:{de:"Diese Methode gibt die Id eines Parametersets zurück. Diese wird verwendet, um spezialisierte Konfigurationsdialoge (Easymode) den Parametersets zuzuordnen."}},getServiceMessages:{name:"getServiceMessages",params:[],returns:"",help:{de:"Diese Methode gibt eine Liste aller vorhandenen Servicemeldungen in Form eines Arrays zurück."}},getValue:{name:"getValue",params:[{name:"address",type:"device_address"},{name:"value_key",type:"string"},{name:"mode",type:"integer",optional:["rfd"]}],returns:"",help:{de:"Mit dieser Methode wird ein einzelner Wert aus dem Parameter-Set „VALUES“ gelesen. Der Parameter address ist die Addresse eines logischen Gerätes. Der Parameter value_key ist der Name des zu lesenden Wertes. Die möglichen Werte für value_key ergeben sich aus der ParamsetDescription des entsprechenden Parameter-Sets „VALUES“.<br>Dem Parameter mode können folgende Werte übergeben werden:<ul><li>0 default: Keien Auswirkung, die Funktion verhält sicht wie der Aufruf ohne mode</li><li>1 UndefinedValues: Es wird ein Struktur zurückgeliefert die folgenden Aufbau hat:<br>„UNDEFINED“(Boolean) Flag ob der angeforderte Wert initial gesetzt wurde und somit wahrscheinlich nicht der Realität entspricht oder ob der Wert von eimen Gerät empfangen wurde, true = Wert wurde initial gesetzt und noch nicht verändert, false = der Wert wurde neu gesetzt<br>„VALUE“(ValueType) Wert des angeforderten Parameter.</li></ul><br>UndefindeValues kann nur für Parameter aus dem Parameterset „VALUES“ abgefragt werden die mit OPERATIONS = Read gekenzeichnet sind."}},getVersion:{name:"getVersion",params:[],returns:"",help:{de:"Liefert die Version des BidCoS-Service."}},listBidcosInterfaces:{name:"listBidcosInterfaces",params:[],returns:"",help:{de:"Diese Methode gibt eine Liste aller vorhandenen BidCoS-Interfaces in Form eines Arrays von Structs zurück"}},listDevices:{name:"listDevices",params:[],returns:"",help:{de:"Diese Methode gibt alle dem Schnittstellenprozess bekannten Geräte in Form von Gerätebeschreibungen zurück."}},listReplaceableDevices:{name:"listReplaceableDevices",params:[{name:"newDeviceAddress",type:"device_address"}],returns:"",help:{de:"Mit dieser Funktionen kann eine Liste der Geräte angefordert werden die durch das übergebene Gerät ersetzt werden können.<br>Über den Parameter newDeviceAddress wird die Adresse des neuen Geräts übergeben für die die möglichen Tauschpartner ermittelt werden sollen."}},listTeams:{name:"listTeams",params:[],returns:"",help:{de:"Diese Methode gibt alle dem Schnittstellenprozess bekannten Teams in Form von Gerätebeschreibungen zurück."}},logLevel:{name:"logLevel",params:[{name:"level",type:"integer",optional:["rfd","hs485d"],values:{0:"LOG_ALL",1:"LOG_DEBUG",2:"LOG_INFO",3:"LOG_NOTICE",4:"LOG_WARNING",5:"LOG_ERROR",6:"LOG_FATAL_ERROR"}}],returns:"",help:{de:"Diese Methode gibt den aktuellen Log-Level zurück bzw. setzt diesen."}},ping:{name:"ping",params:[{name:"callerId",type:"string"}],returns:"bool",help:{de:"Beim Aufruf dieser Funktion wird ein Event (im Folgenden PONG genannt) erzeugt und an alle registrierten Logikschichten versandt. Da das PONG Event an alle registrierten Logikschichten (wie bei allen anderen Events auch) verschickt wird, muss in einer Logikschicht damit gerechnet werden, ein PONG Event zu empfangen ohne zuvor ping aufgerufen zu haben. Der Parameter callerId ist vom Aufrufer zu übergeben und wird als Wert des PONG Events verwendet. Der Inhalt des String ist unerheblich. Tritt während der Verarbeitung keine Exception auf, so wird von der Methode true zurückgegeben. Das PONG Event wird über die event Methode der Logikschicht ausgeliefert. Die Adresse ist dabei immer „CENTRAL“, der key lautet „PONG“ und der Wert ist die im ping Aufrufübergebene callerId"}},putParamset:{name:"putParamset",params:[{name:"address",type:"address"},{name:"paramset_key",type:"string"},{name:"set",type:"paramset"}],returns:"",help:{de:"Mit dieser Methode wird ein komplettes Parameter-Set für ein logisches Gerät geschrieben. Der Parameter address ist die Addresses eines logischen Gerätes. Der Parameter paramset_key ist „MASTER“, „VALUES“ oder die Adresse eines Kommunikationspartners für das entsprechende Link-Parameter-Set (siehe getLinkPeers). Der Parameter set ist das zu schreibende Parameter-Set. In set nicht vorhandene Member werden einfach nicht geschrieben und behalten ihren alten Wert.<br>Bei HomeMatic IP kann address auch die spezielle Adresse ALL_SMOKE_DETECTORS sein, welche für die Übertragung über Funk nicht eine Geräteadresse sondern die Multicast Adresse (0xF00005) für alle Rauchmelder verwendet und somit auch alle in Funkreichweite befindlichen Rauchmelder des Funknetzwerkes diesen ausführen sollten."}},removeLink:{name:"removeLink",params:[{name:"sender",type:"device_address"},{name:"receiver",type:"device_address"}],returns:"",help:{de:"Diese Methode löscht eine Kommunikationsbeziehung zwischen zwei Geräten. Die Parameter sender und receiver bezeichnen die beiden Kommunikationspartner deren Kommunikationszuordnung gelöscht werden soll."}},replaceDevice:{name:"replaceDevice",params:[{name:"oldDeviceAddress",type:"device_address"},{name:"newDeviceAddress",type:"device_address"}],returns:"",help:{de:"Mit dieser Funktion kann ein altes gegen ein neues Gerät ausgetauscht werden. Alle direkten Geräteverknüpfungen und Konfigurationen werden auf das neue Gerät kopiert und das alte Gerät gelöscht. Die Beiden Geräte müssen hinsichtlich ihrer Funktionalität kompatibel sein. Mit der Methode listReplaceableDevice() kann eine List kompatibeler Geräte abgefragt werden. Das neue Gerät muss an dem Schnittstellenprozess angemeldet sein und darf noch nicht in Verknüpfungen verwendet werden. Über die Parameter oldDeviceAddress und newDeviceAddress wird der Methode die Adresse des alten Gerätes und des neuen Gerätes übergeben. Der Rückgabewert ist true wenn der Tausch erfolgreich war, ansonsten false"}},reportValueUsage:{name:"reportValueUsage",params:[{name:"address",type:"channel_address"},{name:"value_id",type:"string"},{name:"ref_counter",type:"integer"}],returns:"",help:{de:"Diese Methode teilt dem Interfaceprozess in ref_counter mit, wie oft der Wert value_id des Kanals address innerhalb der Logikschicht (z.B. in Programmen) verwendet wird. Dadurch kann der Interfaceprozess die Verbindung mit der entsprechenden Komponente herstellen bzw. löschen. Diese Funktion sollte bei jeder Änderung aufgerufen werden.<br>Der Rückgabewert ist true, wenn die Aktion sofort durchgeführt wurde. Er ist false, wenn die entsprechende Komponente nicht erreicht werden konnte und vom Benutzer zunächst in den Config-Mode gebracht werden muss. Der Interfaceprozess hat dann aber die neue Einstellung übernommen und wird sie bei nächster Gelegenheit automatisch an die Komponente übertragen. In diesem Fall ist dann auch der Wert CONFIG_PENDING im Kanal MAINTENANCE der Komponente gesetzt."}},restoreConfigToDevice:{name:"restoreConfigToDevice",params:[{name:"address",type:"device_address"}],returns:"",help:{de:"Diese Methode überträgt alle zu einem Gerät in der CCU gespeicherten Konfigurationsdaten erneut an das Gerät."}},rssiInfo:{name:"rssiInfo",params:[],returns:"",help:{de:"Gibt ein zweidimensionales assoziatives Array zurück, dessen Schlüssel die Geräteadressen sind. Die Felder des assoziativen Arrays sind Tupel, die die Empfangsfeldstärken zwischen beiden Schlüsselgeräten für beide Richtungen in dbm angeben. ein Wert von 65536 bedeutet, dass keine Informationen vorliegen.<ul><li>Rückgabewert[<Gerät 1>][<Gerät 2>][0] Empfangsfeldstärke an Gerät 1 für Sendungen von Gerät 2</li><li>Rückgabewert[<Gerät 1>][<Gerät 2>][1] Empfangsfeldstärke an Gerät 2 für Sendungen von Gerät 1</li></ul>"}},searchDevices:{name:"searchDevices",params:[],returns:"",help:{de:"Diese Methode durchsucht den Bus nach neuen Geräten und gibt die Anzahl gefundener Geräte zurück. Die neu gefundenen Geräte werden mit newDevices der Logikschicht gemeldet."}},setBidcosInterface:{name:"setBidcosInterface",params:[{name:"device_address",type:"device_address"},{name:"interface_address",type:"interface_address"},{name:"roaming",type:"boolean"}],returns:"",help:{de:"Diese Methode setzt das für die Kommunikation mit dem durch device_address spezifizierten Gerät verwendete Bidcos-Interface. Die Seriennummer des in Zukunft für die Kommunikation mit diesem Gerät zu verwendenden Interfaces wird in interface_address übergeben. Ist der Parameter roaming gesetzt, so wird die Interfacezuordnung für das Gerät automatisch in Abhängigkeit von der Empfangsfeldstärke angepasst. Das ist für nicht ortsfeste Geräte wie Fernbedienungen sinnvoll."}},setInstallMode:{name:"setInstallMode",params:[{name:"on",type:"boolean"},{name:"time",type:"integer",optional:["rfd"]},{name:"mode",type:"integer",optional:["rfd"]}],returns:"",help:{de:"Diese Methode aktiviert und deaktiviert den Installations-Modus, in dem neue Geräte an der HomeMatic-CCU angemeldet werden können.<br>Der Parameter on bestimmt, ob der Installations-Modus aktiviert oder deaktiviert werden soll.<br>Der Parameter time bestimmt die Zeit in Sekunden die der Installations-Modus aktiviert ist<br>Der Parameter mode bestimmt die Art des Installations-Modus:<ul><li>1 = Normaler Installations-Modus</li><li>2 = Während des Anlernens werden in den Parametersets „MASTER“ default Parameter gesetzt und alle bestehenden Verknüpfungen werden gelöscht.</li></ul>"}},setInterfaceClock:{name:"setInterfaceClock",params:[{name:"utcSeconds",type:"integer"},{name:"offsetMinutes",type:"integer"}],returns:"",help:{de:"Setzt die UTC Zeit für alle Interfaces, die dies benötigen.<br>Mit dem Parameter utcSeconds werden die Sekunden seti 01.01.1970 00:00 Uhr (UTC) gesetzt.<br>Über den Parameter offsetMinutes wird der Offset in Minuten entsprechend der jeweiligen Zeitzone übergeben.<br>Der Rückgabewert der Methode ist false im Fehlerfall, ansonsten true."}},setLinkInfo:{name:"setLinkInfo",params:[{name:"sender",type:"channel_address"},{name:"receiver",type:"channel_address"},{name:"name",type:"string"},{name:"description",type:"string"}],returns:"",help:{de:"Diese Methode ändert die beschreibenden Texte einer Kommunikationsbeziehung. Die Spezifikation Parameter sender und receiver bezeichnen die beiden zu verknüpfenden Partner. Die Parameter name und description beschreiben die Verknüpfung textuell."}},setMetadata:{name:"setMetadata",params:[{name:"object_id",type:"string"},{name:"data_id",type:"string"},{name:"value",type:"variant"}],returns:"void",help:{de:"Diese Methode setzt ein Metadatum zu einem Objekt.<br><b>object_id</b> ist die Id des Metadaten-Objekts. Üblicherweise ist dies die Seriennummer eines Gerätes oder Kanals. Durch Übergabe einer beliebigen Id können aber auch eigene Metadaten-Objekte angelegt werden. <br><b>data_id</b> ist die Id des zu setzenden Metadatums. Diese Id kann frei gewählt werden. <br><b>value</b> ist eine beliebige Variable. Diese wird gespeichert und kann später mittels getMetadata() und getAllMetadata() wieder abgefragt werden."}},setRFLGWInfoLED:{name:"setRFLGWInfoLED",params:[{name:"mode",type:"integer",optional:["rfd"],values:{0:"OFF",1:"ON",2:"FLASH_SLOW",3:"FLASH_FAST"}}],returns:"",help:{de:"Steuert die LED von verbundenen LAN Gateways (HMLGW2) an."}},setTeam:{name:"setTeam",params:[{name:"channel_address",type:"channel_address"},{name:"team_address",type:"team_address"}],returns:"",help:{de:"Diese Methode fügt den Kanal channel_address zum Team team_address hinzu. Bei team_address==““ wird der Kanal channel_address seinem eigenen Team zugeordnet. Dabei muss team_address entweder leer sein (““) oder eine Seriennummer eines existierenden Teams enthalten. Teams werden dabei je nach Bedarf erzeugt und gelöscht."}},setTempKey:{name:"setTempKey",params:[{name:"passphrase",type:"string"}],returns:"",help:{de:"Diese Methode ändert den von der CCU verwendeten temporären AES-Schlüssel. Der temporäre AES-Schlüssel wird verwendet, um ein Gerät anzulernen, in dem ein anderer Schlüssel gespeichert ist als der Schlüssel der CCU."}},setValue:{name:"setValue",params:[{name:"address",type:"channel_address"},{name:"value_key",type:"value_key"},{name:"value",type:"mixed"}],returns:"",help:{de:"Mit dieser Methode wird ein einzelner Wert aus dem Parameter-Set „VALUES“ geschrieben. Der Parameter address ist die Addresse eines logischen Gerätes. Der Parameter value_key ist der Name des zu schreibenden Wertes. Die möglichen Werte für value_key ergeben sich aus der ParamsetDescription des entsprechenden Parameter-Sets „VALUES“. Der Parameter value ist der zu schreibende Wert.<br>Bei HomeMatic IP kann address auch die spezielle Adresse ALL_SMOKE_DETECTORS sein, welche für die Übertragung über Funk nicht eine Geräteadresse sondern die Multicast Adresse (0xF00005) für alle Rauchmelder verwendet und somit auch alle in Funkreichweite befindlichen Rauchmelder des Funknetzwerkes diesen ausführen sollten."}},"system.listMethods":{name:"system.listMethods",params:[],returns:"",help:{}},"system.methodHelp":{name:"system.methodHelp",params:[{name:"method",type:"string"}],returns:"",help:{}},updateFirmware:{name:"updateFirmware",params:[{name:"device",type:"device_address"}],returns:"",help:{de:"Diese Methode führt ein Firmware-Update für das in device angegebene Gerät durch. Das Gerät wird durch seine Seriennummer spezifiziert. Der Rückgabewert gibt an, ob das Firmware-Update erfolgreich war."}},installFirmware:{name:"installFirmware",params:[{name:"device",type:"device_address"}],returns:"boolean",help:{de:"Mit dieser Methode teilt die Logikschicht dem Schnittstellenprozess mit, dass ein Gerät die über Background OTAU aufgespielte Firmware aktiveren soll."}},setInstallModeWithWhitelist:{name:"setInstallModeWithWhitelist",params:[{name:"on",type:"boolean"},{name:"time",type:"integer"},{name:"whitelistValues",type:"RpcStruct[]"}],returns:"void",help:{de:"Mit dieser Methode teilt die Logikschicht dem Schnittstellenprozess mit, dass ein oder mehrere Geräte über die Whitelist für die Inkludierung freigeschaltet werden sollen für den angegebenen Zeitraum. <ul><li>on, gibt an ob die Install Mode aktiviert oder deaktiviert werden soll. Wenn der Wert „false“ ist haben die weiteren Parameter keine Auswirkung auf die Aktion. </li><li> time, gibt die Zeit in Sekunden an, nach der der Install Mode deaktiviert werden soll. Der Defaultwert ist 30 Sekunden. </li><li>whiteListValues, gibt die Geräte an, die inkludiert werden sollen, dies ist ein Array aus RPC Structs, welche folgende Daten haben: <ul><li> ADDRESS, gibt die SGTIN bzw. ID des Gerätes an, das inkludiert werden soll. </li><li> KEY_MODE, gibt den Typen des Keys an, der für die Inklusion verwendet werden soll. Dieser Wert ist ein String mit folgenden unterstützten Werten: <ul><li>LOCAL </li><li>MASTER und DEFAULT werden zur Zeit vom crRFD noch nicht unterstützt</li></ul> </li><li> KEY, gibt den zu verwendenden Geräteschlüssel an, der bei der Inklusion verwendet werden soll. Dieser Wert ist der Hexstring des 16 Byte langen Schlüssels </li></ul></li></ul> Wenn der KEY_MODE oder KEY nicht angegeben ist wird der Master Key vom Key-Server für die Inklusion versucht zu nutzten. Die Whitelist wird beim Ablauf des Install Mode zurückgesetzt."}}},Ec={suppressServiceMessages:{name:"suppressServiceMessages",params:[{name:"address",type:"channel_address"},{name:"parameter",type:"value_key"},{name:"suppress",type:"bool"}],returns:"void",help:{de:"Unterdrückt die Servicemeldung eines Parameters mit dem Service-Flag (nur HmIP). Der Parameter address ist die Kanaladresse, parameter der Name eines Parameters mit dem Service-Flag in seiner Beschreibung oder „“ für alle Service-Parameter des Kanals. Mit suppress=true meldet die Schnittstelle einen Wert, der keine Meldung auslöst (UNREACH wird immer false); suppress=false hebt die Unterdrückung wieder auf.",en:'Suppresses the service message of a parameter with the Service flag (HmIP only). The parameter address is the channel address, parameter the name of a parameter carrying the Service flag in its description, or "" for every service parameter of the channel. With suppress=true the interface reports a value that raises no message (UNREACH is always false); suppress=false lifts the suppression again.'}},getSuppressedServiceMessages:{name:"getSuppressedServiceMessages",params:[{name:"address",type:"channel_address"}],returns:"String[]",help:{de:"Gibt die Namen der Parameter zurück, deren Servicemeldungen für den Kanal address zurzeit unterdrückt sind (nur HmIP, siehe suppressServiceMessages).",en:"Returns the names of the parameters whose service messages are currently suppressed for the channel address (HmIP only, see suppressServiceMessages)."}}};function jb(r){return Object.prototype.hasOwnProperty.call(_c,r)?_c[r]:Object.prototype.hasOwnProperty.call(Ec,r)?Ec[r]:void 0}function Wb(r){return{name:r,params:[],returns:"",help:{}}}new TextDecoder("utf-8",{fatal:!0});const Kb={WRITE:2};function Xr(r){return(r.OPERATIONS&Kb.WRITE)!==0}function Ma(r){if(!r)return;const e=r.VALUE_LIST;return Array.isArray(e)?e:void 0}function ah(r,e){const n=Ma(r)?.indexOf(e)??-1;return n===-1?void 0:n}function Jn(r,e){const n=r[e];if(typeof n=="number")return n;if(typeof n=="string"&&r.TYPE==="ENUM")return ah(r,n)}function Yb(r,e){if(!(typeof e!="number"||!r.SPECIAL))return r.SPECIAL.find(n=>n.VALUE===e)}function qb(r,e){return Yb(r,e)!==void 0}function Ad(r){return Object.keys(r).sort((e,n)=>{const a=r[e]?.TAB_ORDER??Number.MAX_SAFE_INTEGER,s=r[n]?.TAB_ORDER??Number.MAX_SAFE_INTEGER;return a!==s?a-s:e<n?-1:1})}const sh="100%",$b="�C",Xb="°C",Qb="°C";function lo(r){const e=r?.UNIT;return e===void 0||e===""||e==='""'?"":e===sh?"%":e===$b||e===Xb?Qb:e}function Zb(r){return r?.UNIT===sh}function ih(r){return Zb(r)?100:1}function os(r,e){if(r!==void 0)return oh(r*ih(e))}function yc(r,e){if(r!==void 0)return oh(r/ih(e))}function oh(r){return Number.isFinite(r)?Number.parseFloat(r.toPrecision(10)):r}const Jb=[.1,1,5,10,60,300,600,3600],Sc=["BASE_100_MS","BASE_1_S","BASE_5_S","BASE_10_S","BASE_1_M","BASE_5_M","BASE_10_M","BASE_1_H"],e_=31,t_="NOT_USED";function lh(r){return r?.SPECIAL?.find(e=>e.ID===t_)?.VALUE}function Td(r){return Math.round(r*10)/10}const n_={"10MS":.01,"100MS":.1,S:1,"1S":1,"5S":5,"10S":10,M:60,"1M":60,"5M":300,"10M":600,H:3600,"1H":3600,D:86400},kc="_BASE",r_="_FACTOR",wc="_UNIT",a_="_VALUE",Ac="_TIME";function bo(r){const e=[];for(const[n,a]of Object.entries(r)){const s=o_(r,n,a)??l_(r,n,a);s&&e.push(s)}return e}function Rd(r,e){return s_(r[e.unitParam],r[e.countParam],e)}function s_(r,e,n){const a=i_(r,n),s=a===void 0?void 0:n.units[a],i=typeof e=="number"?e:Number.NaN;if(!(a===void 0||s===void 0||!Number.isInteger(i)||i<0||i>n.maxCount))return{seconds:Td(s.seconds*i),unitIndex:a,unitSeconds:s.seconds,count:i,maximal:a===n.units.length-1&&i===n.maxCount}}function i_(r,e){if(typeof r=="number"&&Number.isInteger(r)&&r>=0&&r<e.units.length)return r;if(typeof r=="string"){const n=e.units.findIndex(a=>a.name===r);return n===-1?void 0:n}}function dh(r,e){if(!Number.isFinite(r)||r<0||e.units.length===0)return;let n,a=Number.POSITIVE_INFINITY;for(const[s,i]of e.units.entries()){const o=Math.min(e.maxCount,Math.max(0,Math.round(r/i.seconds))),l=Td(i.seconds*o),f=Math.abs(l-r);f<a&&(a=f,n={seconds:l,unitIndex:s,unitSeconds:i.seconds,count:o,maximal:s===e.units.length-1&&o===e.maxCount,exact:f===0})}return n}function xd(r,e){const n=dh(r,e);if(n)return{[e.unitParam]:n.unitIndex,[e.countParam]:n.count}}function ch(r){const e=r.units.at(-1);return e===void 0?0:Td(e.seconds*r.maxCount)}function o_(r,e,n){if(!e.endsWith(kc))return;const a=e.slice(0,-kc.length),s=`${a}${r_}`,i=r[s];if(!i)return;const o=uh(Ma(n)??Sc,l=>Jb[Sc.indexOf(l)]);if(o)return{name:a.endsWith(Ac)?a.slice(0,-Ac.length):a,kind:"base-factor",unitParam:e,countParam:s,units:o,maxCount:Jn(i,"MAX")??e_}}function l_(r,e,n){if(!e.endsWith(wc))return;const a=e.slice(0,-wc.length),s=`${a}${a_}`,i=r[s],o=Ma(n);if(!i||!o||o.length===0)return;const l=Jn(i,"MAX"),f=uh(o,p=>n_[p]);if(!(l===void 0||!f))return{name:a,kind:"unit-value",unitParam:e,countParam:s,units:f,maxCount:l}}function uh(r,e){const n=[];for(const a of r){const s=e(a);if(s===void 0)return;n.push({name:a,seconds:s})}return n}const d_=new Set;function c_(r){return d_.has(r)?"name":"index"}function Rl(r,e,n={}){const a=wd(r)?r.explicitDouble:r;if(!e)return typeof a=="boolean"||typeof a=="string"?a:String(a);switch(e.TYPE){case"ACTION":case"BOOL":return u_(a);case"FLOAT":{const s=Id(hh(Number.parseFloat(String(a))),e,n);return n.explicitDouble===!1?s:{explicitDouble:s}}case"ENUM":return f_(a,e,n);case"INTEGER":return fh(a,e,n);case"STRING":return String(a);default:return String(a)}}function u_(r){if(r==="false")return!1;if(typeof r=="string"){const e=Number(r);return Number.isNaN(e)?!0:e!==0}return!!r}function f_(r,e,n){const a=Ma(e);if(!a)return fh(r,e,n);if(typeof r=="string"){const i=ah(e,r);if(i!==void 0)return n.enumAs==="name"?r:i}const s=h_(r);return s===void 0?String(r):n.enumAs==="name"?a[s]??String(r):Id(s,e,n)}function h_(r){if(typeof r=="boolean")return Number(r);const e=Number.parseInt(String(r),10);return Number.isFinite(e)?e:void 0}function fh(r,e,n){return typeof r=="boolean"?Number(r):Id(m_(r),e,n)}function m_(r){return hh(Number.parseInt(String(r),10))}function hh(r){return Number.isFinite(r)?r:0}function Id(r,e,n){if(n.clamp!==!0)return r;const a=typeof e.MIN=="number"?e.MIN:void 0,s=typeof e.MAX=="number"?e.MAX:void 0;return a!==void 0&&r<a?a:s!==void 0&&r>s?s:r}const v_=255;function Ko(r,e,n,a={}){if(!n)return[Er(r,"unknown-parameter",`${r} is not part of this paramset`)];if(a.requireWritable!==!1&&!Xr(n))return[Er(r,"not-writable",`${r} is read-only (OPERATIONS ${n.OPERATIONS})`)];const s=wd(e)?e.explicitDouble:e;switch(n.TYPE){case"BOOL":case"ACTION":return typeof s=="boolean"?[]:[Er(r,"wrong-type",`${r} expects a boolean, got ${li(s)}`)];case"INTEGER":return Tc(r,s,n,!0);case"FLOAT":return Tc(r,s,n,!1);case"ENUM":return p_(r,s,n);case"STRING":return g_(r,s,a);default:return typeof s=="object"?[Er(r,"wrong-type",`${r} expects a scalar, got ${li(s)}`)]:[]}}function Tc(r,e,n,a){return typeof e!="number"?[Er(r,"wrong-type",`${r} expects a number, got ${li(e)}`)]:Number.isFinite(e)?a&&!Number.isInteger(e)?[Er(r,"wrong-type",`${r} expects a whole number, got ${e}`)]:qb(n,e)?[]:mh(r,e,n):[Er(r,"not-finite",`${r} is ${e}, which XML-RPC cannot encode`)]}function p_(r,e,n){const a=Ma(n);return typeof e=="string"?a?a.includes(e)?[]:[Er(r,"not-in-value-list",`${r} does not accept ${e}`,a.join(", "))]:[Er(r,"not-in-value-list",`${r} has no VALUE_LIST to resolve ${e} against`)]:typeof e!="number"||!Number.isInteger(e)?[Er(r,"wrong-type",`${r} expects an enum name or index, got ${li(e)}`)]:a&&(e<0||e>=a.length)?[Er(r,"not-in-value-list",`${r} has no value at index ${e}`,a.length-1)]:mh(r,e,n)}function g_(r,e,n){if(typeof e!="string")return[Er(r,"wrong-type",`${r} expects a string, got ${li(e)}`)];const a=n.maxStringLength??v_;return e.length>a?[Er(r,"string-too-long",`${r} is longer than ${a} characters`,a)]:[]}function mh(r,e,n){const a=Jn(n,"MIN"),s=Jn(n,"MAX");return a!==void 0&&e<a?[Er(r,"below-min",`${r} is below its minimum of ${a}`,a)]:s!==void 0&&e>s?[Er(r,"above-max",`${r} is above its maximum of ${s}`,s)]:[]}function Er(r,e,n,a){return a===void 0?{param:r,code:e,message:n}:{param:r,code:e,message:n,limit:a}}function li(r){return r===null?"null":typeof r}function b_(r,e,n,a={}){const s={},i=[],o=[],l=[],f=a.writeAll===!0,p=a.enumAs===void 0?{}:{enumAs:a.enumAs},b=a.maxStringLength===void 0?{}:{maxStringLength:a.maxStringLength};for(const g of __(e,n,f)){const k=n[g];if(!k){l.push(...Ko(g,e[g],void 0)),o.push({param:g,reason:"unknown-parameter"});continue}const y=Object.prototype.hasOwnProperty.call(e,g);if(!Xr(k)){y&&l.push(...Ko(g,e[g],k)),o.push({param:g,reason:"not-writable"});continue}const S=y?e[g]:r[g]??k.DEFAULT,T=Rl(S,k,p);if(!f&&E_(r,g,S,k,p)){o.push({param:g,reason:"unchanged"});continue}const I=Ko(g,T,k,b);if(I.length>0){l.push(...I),o.push({param:g,reason:"invalid"});continue}s[g]=T,i.push(g)}return{values:s,changed:i,skipped:o,problems:l}}function __(r,e,n){if(!n)return Object.keys(r);const a=Object.keys(e);for(const s of Object.keys(r))s in e||a.push(s);return a}function E_(r,e,n,a,s){if(!Object.prototype.hasOwnProperty.call(r,e))return!1;const i={...s,explicitDouble:!1};return zb(Rl(r[e],a,i),Rl(n,a,i))}function y_(r,e,n,a){const s=r.paramsetIdentity(e,n);if(s===void 0)throw new Error(`no paramset identity for ${e} ${n} on ${r.interfaceName}`);const i=[],o=[];for(const l of a??r.all().map(f=>f.ADDRESS)){if(l===e){o.push({address:l,reason:"same-channel",identity:s});continue}if(!r.has(l)){o.push({address:l,reason:"unknown-address"});continue}const f=r.paramsetIdentity(l,n);if(f===void 0){o.push({address:l,reason:"no-identity"});continue}f===s?i.push(l):o.push({address:l,reason:"different-identity",identity:f})}return{identity:s,eligible:i,ineligible:o}}const ei="UI_HINT",ua=0,S_={id:ua,key:"expert",name:{de:"Experte",en:"Expert"},description:{de:"Alle Parameter des Verknuepfungs-Parametersatzes",en:"All link paramset parameters"},params:{}};function k_(r,e){return r!==""?r:"CHANNEL_OPERATION_MODE"in e?"shutter":"blind"}function w_(r,e){let n;return"channelMode"in r?n=e.channelMode===r.channelMode:"deviceType"in r?n=e.deviceType===r.deviceType:"deviceTypeIncludes"in r?n=e.deviceType.includes(r.deviceTypeIncludes):n=e.channel===r.channel,r.not===!0?!n:n}async function A_(r,e,n){const a=r.some(l=>l.when.some(f=>"channelMode"in f));let s;if(a){let l;try{l=await e.channelMode?.()??""}catch{l=""}s=k_(l,n)}const i={deviceType:e.deviceType,channel:e.channel,channelMode:s},o=r.find(l=>l.when.every(f=>w_(f,i)));return{...o===void 0?{}:{branch:o},...s===void 0?{}:{channelMode:s}}}function T_(r,e){for(const n of r.trim().split(/\s+/u)){const a=n.split("="),s=a.length===2?a[1]??"":n;if(s!==""&&Object.prototype.hasOwnProperty.call(e,s))return s}return""}class R_{#e;constructor(e){this.#e=e}async profilesFor(e,n){const a=await this.#e.receiverTypeAliases(),s=Rc(e,a),o=[...(await this.#e.receiverProfiles(s))?.senders[n]??[]];return o.some(l=>l.id===ua)||o.push(S_),o.sort((l,f)=>l.id-f.id)}async linkMetadataFor(e,n){const a=await this.#e.receiverTypeAliases();return(await this.#e.receiverProfiles(Rc(e,a)))?.senderMetadata?.[n]}applyProfile(e,n,a,s={}){const i=s.keepCurrent??!0,o={...n},l=[];for(const[f,p]of Object.entries(e.params)){if(!(f in a)){l.push({param:f,code:"unknown-parameter",message:`profile ${e.key} sets ${f}, which this description does not have`});continue}const b=D_(p,i?n[f]:void 0);if(b===void 0){l.push({param:f,code:"empty-list",message:`profile ${e.key} offers no value for ${f}`});continue}o[f]=b}return ei in a&&(o[ei]=String(e.id)),{values:o,problems:l}}detectProfile(e,n){const a=e[ei],s=a===void 0||a===""?void 0:n.find(l=>String(l.id)===String(a));if(s&&(s.id===ua||xc(s,e)!==void 0))return s;let i,o;for(const l of[...n].sort((f,p)=>f.id-p.id)){const f=xc(l,e);f!==void 0&&x_(f,o)&&(o=f,i=l)}return i??s}async masterFormId(e){return T_(e,await this.#e.masterForms())}async masterMetadataFor(e,n,a={},s="",i){const o=(await this.#e.masterMetadata())[e],l=s===""?void 0:(await this.#e.masterForms())[s],f=l?.controls?l:o;let p=f?.controls,b;if(f?.branches&&i){const S=await A_(f.branches,i,n);S.branch&&(p=S.branch.controls),b=S.channelMode}const g=await this.#e.optionPresets(),k=await this.#e.crossValidations(),y=N_(n,o).map(([S,T])=>{const I=g[o?.optionPresets?.[S]??""],C={name:S,description:T,visible:C_(S,o,a)};return I===void 0?C:{...C,preset:I}});return{channelType:e,parameters:y,...p?{controls:p}:{},...l?.internalKey?{internalKey:l.internalKey}:{},...b===void 0?{}:{channelMode:b},problems:k.filter(S=>P_(S,n)).filter(S=>!M_(S,a)).map(S=>({id:S.id,errorKey:S.errorKey,params:vh(S)}))}}}function Rc(r,e){let n=r;const a=new Set([n]);let s=e[n];for(;s!==void 0&&!a.has(s);)n=s,a.add(n),s=e[n];return n}function xc(r,e){let n=0,a=0,s=0;for(const[i,o]of Object.entries(r.params)){if(!(i in e)){s+=1;continue}if(!I_(o,e[i]))return;n+=1,o.kind==="fixed"&&(a+=1)}return n===0?void 0:{present:n,fixed:a,missing:s}}function x_(r,e){return e===void 0?!0:r.present!==e.present?r.present>e.present:r.fixed!==e.fixed?r.fixed>e.fixed:r.missing<e.missing}function I_(r,e){switch(r.kind){case"fixed":return co(e,r.value);case"list":return r.values.some(n=>co(e,n));case"range":{const n=Number(e);return e===""||Number.isNaN(n)?!0:n>=r.min&&n<=r.max||n===r.default}}}function D_(r,e){switch(r.kind){case"fixed":return r.value;case"list":return e!==void 0&&r.values.some(n=>co(e,n))?e:r.default??r.values[0];case"range":{const n=typeof e=="number"?e:Number(e);return Number.isFinite(n)&&n>=r.min&&n<=r.max?n:r.default??r.min}}}function co(r,e){if(r===e)return!0;if(r===void 0||e===void 0)return!1;if(typeof r=="boolean"||typeof e=="boolean")return!!r==!!e;const n=Number(r),a=Number(e);return!Number.isNaN(n)&&!Number.isNaN(a)?n===a:String(r)===String(e)}function N_(r,e){const n=Ad(r),a=new Map((e?.parameterOrder??[]).map((s,i)=>[s,i]));return Object.entries(r).sort(([s],[i])=>{const o=a.get(s),l=a.get(i);return o!==void 0&&l!==void 0?o-l:o!==void 0?-1:l!==void 0?1:n.indexOf(s)-n.indexOf(i)})}function C_(r,e,n){const a=(e?.conditionalVisibility??[]).filter(s=>s.show.includes(r));return a.length===0?!0:a.some(s=>co(n[s.trigger],s.triggerValue))}function vh(r){return r.rule==="between"?[r.param,r.minParam,r.maxParam]:[r.paramA,r.paramB]}function P_(r,e){return vh(r).every(n=>n in e)}function M_(r,e){if(r.rule==="between"){const s=Number(e[r.param]),i=Number(e[r.minParam]),o=Number(e[r.maxParam]);return!Number.isFinite(s)||!Number.isFinite(i)||!Number.isFinite(o)?!0:s>=i&&s<=o}const n=Number(e[r.paramA]),a=Number(e[r.paramB]);return!Number.isFinite(n)||!Number.isFinite(a)?!0:r.rule==="gte"?n>=a:n<=a}function Yo(r,e){return e===void 0?r:{...r,label:e}}function ph(r,e){const n=new Map(bo(e).map(o=>[o.unitParam,o])),a=[],s=new Set,i=(o,l)=>{s.has(o)||(s.add(o),a.push(l))};for(const o of r??[])if((o.requires??[]).every(l=>l in e))switch(o.kind){case"time":{const l=n.get(`${o.prefix}_BASE`)??n.get(`${o.prefix}_UNIT`);l&&i(`time:${l.name}`,Yo({kind:"time",pair:l,selector:o.selector},o.label));break}case"param":{if(o.param in e){const l=(o.also??[]).filter(p=>p in e),f={kind:"param",param:o.param,also:l,...o.option===void 0?{}:{option:o.option}};i(`param:${o.param}`,Yo(f,o.label))}break}case"subset":{const l={kind:"subset",subsets:o.subsets,...o.names===void 0?{}:{names:o.names}};i(`subset:${o.subsets.join(",")}`,Yo(l,o.label));break}}return a.length>0?a:void 0}function O_(r,e){return ph(r?.controls,e)}function xl(r,e=[]){const n=new Set;for(const a of r??[])if(a.kind==="time")n.add(a.pair.unitParam),n.add(a.pair.countParam);else if(a.kind==="param"){n.add(a.param);for(const s of a.also)n.add(s)}else for(const s of e)if(a.subsets.includes(s.id))for(const i of s.params)n.add(i);return n}const L_=["CONFIG_PENDING","DUTY_CYCLE","FAULT_REPORTING","LOWBAT","LOW_BAT","SABOTAGE","UNREACH","STICKY_UNREACH","UPDATE_PENDING"],gh="ERROR",F_=["STICKY_UNREACH","SABOTAGE"];function G_(r){return L_.includes(r)||r.startsWith(gh)}function uo(r){return F_.includes(r)||r.startsWith(gh)}function U_(r,e){const n=r?.TYPE==="ENUM"?r.VALUE_LIST:void 0;if(n===void 0)return;const a=typeof e=="number"?n[e]:typeof e=="string"&&n.includes(e)?e:"";return a===void 0||a===""?void 0:a}const B_=[{step:1,min:-30,bars:4,label:"Very good (maximum)"},{step:2,min:-40,bars:4,label:"Very good"},{step:3,min:-50,bars:4,label:"Good"},{step:4,min:-60,bars:3,label:"Good (normal operation)"},{step:5,min:-70,bars:3,label:"Sufficient"},{step:6,min:-80,bars:2,label:"Sufficient to weak"},{step:7,min:-90,bars:1,label:"Poor"},{step:8,min:Number.NEGATIVE_INFINITY,bars:0,label:"Critical"}];function fo(r){if(!(typeof r!="number"||!Number.isFinite(r))){if(r>-127&&r<0)return r;if(r>1&&r<127)return-r;if(r>-256&&r<-129)return-r-256;if(r>129&&r<256)return r-256}}function H_(r){const e={};for(const[n,a]of Object.entries(r)){const s={};for(const[i,o]of Object.entries(a))s[i]=j_(fo(o[0]),fo(o[1]));e[n]=s}return e}function V_(r){const e=fo(r);if(e!==void 0)return B_.find(n=>e>=n.min)}function Is(r){const e=r.DESCRIPTION?.trim()??"";return e===""?r.ADDRESS:e}function Ic(r,e){const n=r.INTERFACE??"";if(n==="")return"";const a=e.find(s=>s.ADDRESS===n);return a?Is(a):n}const Dc=["RSSI_DEVICE","RSSI_PEER"];class z_{#e={};#n;constructor(e={}){this.#n=e.centralAddress}get centralAddress(){return this.#n}setCentralAddress(e){this.#n=e}applyRssiInfo(e){this.#e=H_(e)}applyHmipValue(e,n,a){const s=this.#n,i=fo(a);return s===void 0||i===void 0||!Dc.includes(n)?!1:(n==="RSSI_DEVICE"?(this.#t(s,e,{rx:i}),this.#t(e,s,{tx:i})):(this.#t(e,s,{rx:i}),this.#t(s,e,{tx:i})),!0)}applyHmipParamset(e,n){let a=!1;for(const s of Dc){const i=n[s];i!==void 0&&(a=this.applyHmipValue(e,s,i)||a)}return a}get(e,n){return this.#e[e]?.[n]}peersOf(e){return Object.keys(this.#e[e]??{}).sort()}toJSON(){const e={};for(const[n,a]of Object.entries(this.#e))e[n]={...a};return e}bestInterfaceFor(e,n){let a,s=Number.NEGATIVE_INFINITY;for(const i of n){const o=this.get(e,i);o?.tx!==void 0&&o.tx>s&&(s=o.tx,a={address:i,...o})}return a}#t(e,n,a){const s=this.#e[e]??={};s[n]={...s[n],...a}}}function j_(r,e){const n={};return r!==void 0&&(n.rx=r),e!==void 0&&(n.tx=e),n}const Il=6,Nc=["switch","marginal","unheard","keep","unmeasured","roaming"];function W_(r,e,n,a={}){const s=Math.max(0,a.marginDb??Il),i=[];for(const o of r){const l=o.INTERFACE??"";if(l===""||(o.PARENT??"")!=="")continue;const f=n.get(o.ADDRESS,l)?.tx,p=n.bestInterfaceFor(o.ADDRESS,e),b=p?.tx!==void 0&&f!==void 0?p.tx-f:void 0;let g;o.ROAMING===!0||o.ROAMING===1?g="roaming":p===void 0?g="unmeasured":p.address===l?g="keep":b===void 0?g="unheard":b<=0?g="keep":g=b>=s?"switch":"marginal",i.push({address:o.ADDRESS,configured:l,configuredTx:f,best:p?.address,bestTx:p?.tx,gain:b,verdict:g})}return i.sort((o,l)=>Nc.indexOf(o.verdict)-Nc.indexOf(l.verdict)||(l.gain??Number.NEGATIVE_INFINITY)-(o.gain??Number.NEGATIVE_INFINITY)||o.address.localeCompare(l.address))}const bh=8192;class K_{#e=[];#n;constructor(e=bh){if(!Number.isInteger(e)||e<1)throw new RangeError(`ring buffer capacity must be a positive integer, got ${e}`);this.#n=e}get capacity(){return this.#n}get size(){return this.#e.length}get full(){return this.#e.length===this.#n}push(e){return this.#e.push(e),this.#e.length>this.#n?this.#e.shift():void 0}toArray(){return[...this.#e]}filter(e){return this.#e.filter(n=>e(n))}clear(){this.#e.length=0}}function Y_(r,e){return e.interfaceName!==void 0&&r.interfaceName!==e.interfaceName||!Cc(r.address??"",e.address)||!Cc(r.datapoint??"",e.datapoint)?!1:e.text!==void 0&&e.text!==""?`${r.address??""} ${r.datapoint??""} ${String(r.value)}`.toLowerCase().includes(e.text.toLowerCase()):!0}function q_(r,e){return r.filter(n=>Y_(n,e))}function Cc(r,e){return e===void 0||e===""?!0:r.toLowerCase().includes(e.toLowerCase())}const Ki=1,Pc=8,Mc=255,_o=32,Oc=16*1024;class Tt extends Error{code;detail;constructor(e,n,a){super(n??e),this.name="MetaError",this.code=e,this.detail=a}}const Lc=Object.freeze({room:{name:{de:"Räume",en:"Rooms"},tree:[]},function:{name:{de:"Gewerke",en:"Functions"},tree:[]}});function $_(){return{format:Ki,revision:0,objects:{},enums:{room:{name:{...Lc.room?.name},tree:[]},function:{name:{...Lc.function?.name},tree:[]}}}}const X_=/^[a-z0-9][a-z0-9-]*$/,Q_=/^[a-z0-9-]+$/;function Dd(r){const e=r.indexOf(".");if(!(e<=0||e===r.length-1))return{interfaceName:r.slice(0,e),address:r.slice(e+1)}}function Z_(r,e){return`${r}.${e}`}function Dl(r){const e=Dd(r);if(!e)throw new Tt("invalid-ref",`${r} is not <interface>.<address>`);return e}function us(r){return r.length<=_o&&X_.test(r)}function Fc(r){if(!us(r))throw new Tt("invalid-id",`${r} is not a valid id`);return r}function Nl(r){return r.length<=_o&&Q_.test(r)}function as(r){if(typeof r!="string")throw new Tt("invalid-name","a name has to be a string");const e=r.trim();if(e==="")throw new Tt("invalid-name","a name may not be empty");if(/[\u0000-\u001f\u007f]/.test(e))throw new Tt("invalid-name","a name may not contain control characters");if(_h(e)>Mc)throw new Tt("invalid-name",`a name may not be longer than ${String(Mc)} bytes`);return e}function _h(r){return new TextEncoder().encode(r).length}function _s(r){const e=r.split("/"),n=e[0];if(n===void 0||n===""||!us(n))return;const a=e.slice(1);if(!a.some(s=>!us(s)))return{enumId:n,ids:a}}function Yi(r,e){return`${r}/${e}`}function J_(r){const e=r.lastIndexOf("/");return e<=0?void 0:r.slice(0,e)}function Ga(r,e){return r===e||r.startsWith(`${e}/`)}function Ua(r,e){let n=r,a;for(const s of e){if(a=n.find(i=>i.id===s),!a)return;n=a.children??[]}return a}function ki(r,e){const n=[],a=(s,i,o,l)=>{for(const f of s){const p=Yi(i,f.id),b=[...l,f.name];n.push({path:p,node:f,depth:o,trail:b}),a(f.children??[],p,o+1,b)}};return a(e.tree,r,1,[]),n}function Eh(r,e){return new Set(ki(r,e).map(n=>n.path))}function e1(r){let e=0;const n=(a,s)=>{for(const i of a)e=Math.max(e,s),n(i.children??[],s+1)};return n(r,1),e}function Cl(r){if(e1(r)>Pc)throw new Tt("too-deep",`a tree may not be deeper than ${String(Pc)} levels`)}function Ia(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function t1(r){if(!Ia(r))throw new Tt("invalid-name","an object has to be an object");const e=as(r.name),n=Pl(r.enums),a=ho(r.meta);return r.orphaned===!0?{name:e,enums:n,meta:a,orphaned:!0}:{name:e,enums:n,meta:a}}function Pl(r){if(r==null)return[];if(!Array.isArray(r))throw new Tt("unknown-path","enums has to be an array of node paths");const e=[];for(const n of r){if(typeof n!="string"||_s(n)===void 0)throw new Tt("unknown-path",`${String(n)} is not a node path`);if(e.includes(n))throw new Tt("duplicate-path",`${n} is listed twice`);e.push(n)}return e}function ho(r){if(r==null)return{};if(!Ia(r))throw new Tt("invalid-id","meta has to be an object of namespaces");for(const e of Object.keys(r))if(!us(e))throw new Tt("invalid-id",`${e} is not a valid meta namespace`);if(_h(JSON.stringify(r))>Oc)throw new Tt("invalid-id",`meta may not be larger than ${String(Oc)} bytes`);return r}function n1(r){if(!Ia(r))throw new Tt("invalid-id","a node has to be an object");const e=r.id;if(typeof e!="string"||!us(e))throw new Tt("invalid-id",`${String(e)} is not a valid node id`);const n=as(r.name),a=r.icon;if(a!==void 0&&(typeof a!="string"||!Nl(a)))throw new Tt("invalid-id",`${JSON.stringify(a)} is not a valid icon name`);const s=yh(r.children);return{id:e,name:n,...typeof a=="string"?{icon:a}:{},...s.length>0?{children:s}:{}}}function yh(r){if(r==null)return[];if(!Array.isArray(r))throw new Tt("invalid-id","children has to be an array of nodes");const e=r.map(a=>n1(a)),n=new Set;for(const a of e){if(n.has(a.id))throw new Tt("duplicate-id",`${a.id} is used twice among its siblings`);n.add(a.id)}return e}function r1(r,e){if(!us(r))throw new Tt("invalid-id",`${r} is not a valid enum id`);if(!Ia(e))throw new Tt("invalid-name",`enum ${r} has to be an object`);const n=Ml(e.name),a=yh(e.tree);return Cl(a),{name:n,tree:a}}function Ml(r){if(!Ia(r))throw new Tt("invalid-name","an enum name has to be an object of languages");const e={};for(const[n,a]of Object.entries(r)){if(typeof a!="string")throw new Tt("invalid-name",`the ${n} name has to be a string`);e[n]=as(a)}if(e.en===void 0)throw new Tt("invalid-name","an enum needs at least an English name");return e}function Ol(r){if(!Ia(r))throw new Tt("format-unsupported","a document has to be an object");const e=r.format;if(e!==Ki)throw new Tt("format-unsupported",`format ${String(e)} is newer than this implementation reads (${String(Ki)})`);const n=r.revision;if(typeof n!="number"||!Number.isInteger(n)||n<0)throw new Tt("format-unsupported","revision has to be an integer of at least 0");const a={},s=r.enums;if(s!=null){if(!Ia(s))throw new Tt("unknown-enum","enums has to be an object");for(const[f,p]of Object.entries(s))a[f]=r1(f,p)}const i=Sh(a),o={},l=r.objects;if(l!=null){if(!Ia(l))throw new Tt("unknown-object","objects has to be an object");for(const[f,p]of Object.entries(l)){Dl(f);const b=t1(p);for(const g of b.enums)if(!i.has(g))throw new Tt("unknown-path",`${f}: ${g} does not exist`,{ref:f,path:g});o[f]=b}}return{format:Ki,revision:n,objects:o,enums:a}}function Sh(r){const e=new Set;for(const[n,a]of Object.entries(r))for(const s of Eh(n,a))e.add(s);return e}function Gc(r,e){return JSON.stringify(Ll(r),void 0,e)}function a1(r,e){return Gc({...r,revision:0})===Gc({...e,revision:0})}function Ll(r){if(Array.isArray(r))return r.map(e=>Ll(e));if(Ia(r)){const e={};for(const n of Object.keys(r).sort())e[n]=Ll(r[n]);return e}return r}function Uc(r,e){const n=e.slice(0,-1),a=e[e.length-1],i=(n.length===0?r:Ua(r,n)?.children??[]).findIndex(o=>o.id===a);return i===-1?void 0:i}function Fl(r,e,n,a){if(e.length===0)return i1(r,n,a);const[s,...i]=e;return r.map(o=>o.id===s?{...o,children:Fl(o.children??[],i,n,a)}:o)}function Gl(r,e){const[n,...a]=e;return n===void 0?r:a.length===0?r.filter(s=>s.id!==n):r.map(s=>{if(s.id!==n)return s;const i=Gl(s.children??[],a);return i.length===0?s1(s):{...s,children:i}})}function s1(r){return{id:r.id,name:r.name,...r.icon===void 0?{}:{icon:r.icon}}}function i1(r,e,n){const a=[...r],s=n===void 0?a.length:Math.max(0,Math.min(a.length,Math.trunc(n)));return a.splice(s,0,e),a}const o1=1e3;let l1=class kh{#e;#n;#t;#a=[];#s;#r;#i;constructor(e={}){const n=e.document??$_();this.#e=n.revision,this.#n=new Map(Object.entries(n.objects)),this.#t=new Map(Object.entries(n.enums)),this.#s=e.eventHistory??o1,this.#r=n.revision,this.#i=e.onEvent}get revision(){return this.#e}get size(){return this.#n.size}document(){return{format:1,revision:this.#e,objects:Object.fromEntries([...this.#n].sort(([e],[n])=>e<n?-1:e>n?1:0)),enums:Object.fromEntries([...this.#t])}}load(e){this.#e=e.revision,this.#n=new Map(Object.entries(e.objects)),this.#t=new Map(Object.entries(e.enums)),this.#a.length=0,this.#r=e.revision}get(e){const n=this.#n.get(e);if(!n)throw new Tt("unknown-object",`${e} is not in the store`);return n}find(e){return this.#n.get(e)}objects(){return Object.fromEntries(this.#n)}enums(){return Object.fromEntries(this.#t)}getEnum(e){const n=this.#t.get(e);if(!n)throw new Tt("unknown-enum",`${e} is not an enum`);return n}query(e,n){this.#d(e);const a=[];for(const[s,i]of this.#n)i.enums.some(o=>Ga(o,e))&&(n!==void 0&&i.orphaned===!0!==n||a.push(s));return a.sort()}since(e){return!Number.isInteger(e)||e<0||e>this.#e||e<this.#r?{revision:this.#e,resync:!0}:{revision:this.#e,events:this.#a.filter(n=>n.revision>e)}}set(e,n){if(Dl(e),n.orphaned!==void 0)throw new Tt("forbidden","orphaned is set by the process that owns the addresses");const a=this.#n.get(e),s=n.name===void 0?a?.name:as(n.name);if(s===void 0)throw new Tt("invalid-name",`${e} is new and needs a name`);const i=n.enums===void 0?a?.enums??[]:this.#o(Pl(n.enums)),o=n.meta===void 0?a?.meta??{}:d1(a?.meta??{},n.meta);return this.#l(e,zs(s,i,o,a?.orphaned===!0))}put(e,n){Dl(e);const a=this.#n.get(e),s=as(n.name),i=this.#o(Pl(n.enums)),o=ho(n.meta);return this.#l(e,zs(s,i,o,a?.orphaned===!0))}delete(e){return this.#n.has(e)?(this.#n.delete(e),this.#p([{kind:"object.deleted",ref:e}])):{revision:this.#e,changed:!1}}bulk(e,n=[]){const a=this.#_(),s=[];for(const[i,o]of Object.entries(e))a.set(i,o).changed&&s.push({kind:"object.updated",ref:i,value:a.get(i)});for(const i of n)a.delete(i).changed&&s.push({kind:"object.deleted",ref:i});return s.length===0?{revision:this.#e,changed:!1}:(this.#v(a),this.#p(s))}setOrphaned(e,n){const a=this.get(e);if(a.orphaned===!0===n)return{revision:this.#e,changed:!1};const s=zs(a.name,a.enums,a.meta,n);return this.#n.set(e,s),this.#p([{kind:"object.updated",ref:e,value:s}])}createEnum(e,n){if(Fc(e),this.#t.has(e))throw new Tt("duplicate-id",`${e} exists`);const a={name:Ml(n),tree:[]};return this.#t.set(e,a),this.#p([{kind:"enum.created",enum:e,value:a}])}updateEnum(e,n){const a=this.getEnum(e),s={name:Ml(n),tree:a.tree};return JSON.stringify(s.name)===JSON.stringify(a.name)?{revision:this.#e,changed:!1}:(this.#t.set(e,s),this.#p([{kind:"enum.updated",enum:e,value:s}]))}deleteEnum(e,n="refuse"){const a=this.getEnum(e),s=this.#f([...Eh(e,a)]);if(s.refs.length>0&&n!=="detach")throw new Tt("has-members",`${e} still has members`,{refs:[...s.refs]});return this.#t.delete(e),this.#h(s),this.#p([{kind:"enum.deleted",enum:e}])}createNode(e,n,a,s,i={}){const o=this.getEnum(e);Fc(a);const l=as(s);if(i.icon!==void 0&&!Nl(i.icon))throw new Tt("invalid-id",`${i.icon} is not a valid icon name`);const f=n??e,p=this.#u(e,f);if((p.length===0?o.tree:Ua(o.tree,p)?.children??[]).some(y=>y.id===a))throw new Tt("duplicate-id",`${Yi(f,a)} exists`);const g={id:a,name:l,...i.icon===void 0?{}:{icon:i.icon}},k=Fl(o.tree,p,g,i.position);return Cl(k),this.#t.set(e,{name:o.name,tree:k}),this.#p([{kind:"node.created",enum:e,path:Yi(f,a),value:g}])}updateNode(e,n){const{enumId:a,ids:s}=this.#c(e),i=this.getEnum(a),o=Ua(i.tree,s);if(!o)throw new Tt("unknown-path",`${e} does not exist`);const l=n.name===void 0?o.name:as(n.name);if(n.icon!==void 0&&!Nl(n.icon))throw new Tt("invalid-id",`${n.icon} is not a valid icon name`);const f=n.icon??o.icon,p=s.slice(0,-1);let b=p,g=[a,...p].join("/");if(n.parent!==void 0){const x=n.parent??a;if(Ga(x,e))throw new Tt("invalid-move",`${e} cannot be moved under itself`);b=this.#u(a,x),g=x}const k=Yi(g,o.id),y=k!==e;if(y&&(b.length===0?i.tree:Ua(i.tree,b)?.children??[]).some(P=>P.id===o.id))throw new Tt("duplicate-id",`${k} exists`);const S={id:o.id,name:l,...f===void 0?{}:{icon:f},...o.children===void 0?{}:{children:o.children}},T=Gl(i.tree,s),I=n.position??(y?void 0:Uc(i.tree,s)),C=Fl(T,b,S,I);if(Cl(C),JSON.stringify(C)===JSON.stringify(i.tree))return{revision:this.#e,changed:!1};this.#t.set(a,{name:i.name,tree:C});const D=[];return y?(this.#m(e,k),D.push({kind:"node.moved",enum:a,from:e,to:k})):n.position!==void 0&&I!==Uc(i.tree,s)?D.push({kind:"node.moved",enum:a,from:e,to:e}):D.push({kind:"node.updated",enum:a,path:e,value:S}),this.#p(D)}deleteNode(e,n="refuse"){const{enumId:a,ids:s}=this.#c(e),i=this.getEnum(a);if(!Ua(i.tree,s))throw new Tt("unknown-path",`${e} does not exist`);const l=this.#f([e]);if(l.refs.length>0&&n!=="detach")throw new Tt("has-members",`${e} still has members`,{refs:[...l.refs]});return this.#t.set(a,{name:i.name,tree:Gl(i.tree,s)}),this.#h(l),this.#p([{kind:"node.deleted",enum:a,path:e}])}import(e,n="replace"){const a=Ol(e),s=this.document(),i=n==="merge"?Ol({format:1,revision:s.revision,objects:{...s.objects,...a.objects},enums:{...s.enums,...a.enums}}):a;return a1(s,i)?{revision:this.#e,changed:!1}:(this.#n=new Map(Object.entries(i.objects)),this.#t=new Map(Object.entries(i.enums)),this.#p([{kind:"import",objects:Object.keys(i.objects).length,enums:Object.keys(i.enums).length}]))}#l(e,n){const a=this.#n.get(e);return a&&JSON.stringify(a)===JSON.stringify(n)?{revision:this.#e,changed:!1}:(this.#n.set(e,n),this.#p([{kind:"object.updated",ref:e,value:n}]))}#o(e){const n=Sh(this.enums());for(const a of e)if(!n.has(a))throw new Tt("unknown-path",`${a} does not exist`,{path:a});return e}#d(e){const n=_s(e);if(!n)throw new Tt("unknown-path",`${e} is not a node path`);const a=this.getEnum(n.enumId);if(n.ids.length>0&&!Ua(a.tree,n.ids))throw new Tt("unknown-path",`${e} does not exist`)}#c(e){const n=_s(e);if(!n||n.ids.length===0)throw new Tt("unknown-path",`${e} is not a node path`);return{enumId:n.enumId,ids:n.ids}}#u(e,n){const a=_s(n);if(!a||a.enumId!==e)throw new Tt("unknown-path",`${n} is not a path of ${e}`);if(a.ids.length>0&&!Ua(this.getEnum(e).tree,a.ids))throw new Tt("unknown-path",`${n} does not exist`);return a.ids}#f(e){const n=[];for(const[a,s]of this.#n)s.enums.some(i=>e.some(o=>Ga(i,o)))&&n.push(a);return{paths:e,refs:n.sort()}}#h(e){for(const n of e.refs){const a=this.#n.get(n);if(!a)continue;const s=a.enums.filter(i=>!e.paths.some(o=>Ga(i,o)));this.#n.set(n,zs(a.name,s,a.meta,a.orphaned===!0))}}#m(e,n){for(const[a,s]of this.#n){if(!s.enums.some(o=>Ga(o,e)))continue;const i=s.enums.map(o=>Ga(o,e)?`${n}${o.slice(e.length)}`:o);this.#n.set(a,zs(s.name,i,s.meta,s.orphaned===!0))}}#p(e){this.#e+=1;for(const n of e){const a={...n,revision:this.#e};this.#a.push(a),this.#i?.(a)}for(;this.#a.length>this.#s;){const n=this.#a.shift();n&&(this.#r=n.revision)}return{revision:this.#e,changed:!0}}#_(){return new kh({document:this.document(),eventHistory:0})}#v(e){const n=e.document();this.#n=new Map(Object.entries(n.objects)),this.#t=new Map(Object.entries(n.enums))}};function zs(r,e,n,a){return a?{name:r,enums:e,meta:n,orphaned:!0}:{name:r,enums:e,meta:n}}function d1(r,e){const n={...r};for(const[a,s]of Object.entries(ho(e)))s===null?delete n[a]:n[a]=s;return ho(n)}function wh(r,e,n){return e?.name[n]??e?.name.en??r}function Bc(r,e,n={}){const a=new Set;for(const i of e){const o=_s(i);if(!(!o||o.ids.length===0)&&!(n.enumId!==void 0&&o.enumId!==n.enumId)&&(a.add(i),n.ancestors===!0))for(let l=1;l<o.ids.length;l+=1)a.add([o.enumId,...o.ids.slice(0,l)].join("/"))}const s=[];for(const[i,o]of Object.entries(r))if(!(n.enumId!==void 0&&i!==n.enumId))for(const l of ki(i,o))a.has(l.path)&&!s.includes(l.node.name)&&s.push(l.node.name);return s}function c1(r){const e={};for(const[n,a]of Object.entries(r))e[n]=ki(n,a);return e}function u1(r,e,n={}){return{name:e.name,rooms:Bc(r,e.enums,{...n,enumId:"room"}),functions:Bc(r,e.enums,{...n,enumId:"function"}),paths:e.enums,orphaned:e.orphaned===!0}}const f1=[[/ä/g,"ae"],[/ö/g,"oe"],[/ü/g,"ue"],[/ß/g,"ss"],[/å/g,"a"],[/æ/g,"ae"],[/ø/g,"oe"]];function Hc(r){let e=r.toLowerCase();for(const[n,a]of f1)e=e.replace(n,a);return e=e.normalize("NFKD").replace(/[̀-ͯ]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,_o),us(e)?e:""}function Ah(r,e=[]){const n=new Set(e),a=Hc(r)===""?"node":Hc(r);if(!n.has(a))return a;for(let s=2;s<1e3;s+=1){const i=`${a.slice(0,_o-String(s).length-1)}-${String(s)}`;if(!n.has(i))return i}throw new Error(`no free id for ${r}`)}const Th={"Homematic Manager Address":{de:"Homematic Manager Adresse",en:"Homematic Manager Address"},"CCU Address":{de:"CCU Adresse",en:"CCU Address"},Select:{de:"Auswählen",en:"Select"},"Save & Restart":{de:"Speichern und Neustarten",en:"Save & Restart"},Error:{de:"Fehler",en:"Error"},Devices:{de:"Geräte",en:"Devices"},Device:{de:"Gerät",en:"Device"},introduced:{de:"gefunden",en:"introduced"},New:{de:"Neue",en:"New"},Events:{de:"Ereignisse",en:"Events"},Cancel:{de:"Abbrechen",en:"Cancel"},OK:{de:"OK",en:"OK"},Delete:{de:"Löschen",en:"Delete"},Save:{de:"Speichern",en:"Save"},"Create and edit":{de:"Anlegen und Bearbeiten",en:"Create and edit"},Create:{de:"Anlegen",en:"Create"},"Please choose one or more channels":{de:"Bitte einen oder mehrere Kanäle auswählen",en:"Please choose one or more channels"},Refresh:{de:"Aktualisieren",en:"Refresh"},"Delete device":{de:"Gerät löschen",en:"Delete device"},"Rename device":{de:"Gerät umbenennen",en:"Rename device"},"Pair devices":{de:"Geräte anlernen",en:"Pair devices"},Links:{de:"Verknüpfungen",en:"Links"},"Delete link":{de:"Verknüpfung löschen",en:"Delete link"},"Edit link":{de:"Verknüpfung bearbeiten",en:"Edit link"},"Test link":{de:"Verknüpfung testen",en:"Test link"},"Create link":{de:"Verknüpfung anlegen",en:"Create link"},RSSI:{de:"Funk",en:"RSSI"},"RPC Console":{de:"RPC Konsole",en:"RPC Console"},"Service messages":{de:"Servicemeldungen",en:"Service messages"},"Send request":{de:"Befehl senden",en:"Send request"},Parameters:{de:"Parameter",en:"Parameters"},Response:{de:"Antwort",en:"Response"},Help:{de:"Hilfe",en:"Help"},Settings:{de:"Einstellungen",en:"Settings"},"Please choose one or more links":{de:"mehrere Verknüpfungen bearbeiten",en:"Please choose one or more links"},"Kanäle überschreiben":{de:"Kanäle überschreiben",en:"Kanäle überschreiben"},"Normaler Anlernmodus":{de:"Normaler Anlernmodus",en:"Normaler Anlernmodus"},"Default-Parameter in Paramset MASTER schreiben, bestehende Verknüpfungen löschen":{de:"Default-Parameter in Paramset MASTER schreiben, bestehende Verknüpfungen löschen",en:"Default-Parameter in Paramset MASTER schreiben, bestehende Verknüpfungen löschen"},Sender:{de:"Sender",en:"Sender"},Receiver:{de:"Empfänger",en:"Receiver"},"Ablernen und Gerät auf Werkseinstellungen zurücksetzen":{de:"Ablernen und Gerät auf Werkseinstellungen zurücksetzen",en:"Ablernen und Gerät auf Werkseinstellungen zurücksetzen"},"Nur ablernen (Direktverknüpfungen bleiben erhalten)":{de:"Nur ablernen (Direktverknüpfungen bleiben erhalten)",en:"Nur ablernen (Direktverknüpfungen bleiben erhalten)"},"Falls Gerät nicht erreichbar:":{de:"Falls Gerät nicht erreichbar:",en:"Falls Gerät nicht erreichbar:"},"bei nächster Gelegenheit löschen":{de:"bei nächster Gelegenheit löschen",en:"bei nächster Gelegenheit löschen"},"Nur aus Schnittstellenprozess löschen":{de:"Nur aus Schnittstellenprozess löschen",en:"Nur aus Schnittstellenprozess löschen"},Disconnected:{de:"Verbindung unterbrochen",en:"Disconnected"},"Which device do you want to replace?":{de:"Welches Gerät wollen sie ersetzen?",en:"Which device do you want to replace?"},"Gerät löschen":{de:"Gerät löschen",en:"Gerät löschen"},"Acknowledge service messages":{de:"Servicemeldung bestätigen",en:"Acknowledge service messages"},"Acknowledge all service messages":{de:"Alle Servicemeldungen bestätigen",en:"Acknowledge all service messages"},Interfaces:{de:"Interfaces",en:"Interfaces"},"Edit device":{de:"Gerät bearbeiten",en:"Edit device"},undefined:{de:"undefined",en:"undefined"},"Please select method":{de:"Bitte eine Methode auswählen",en:"Please select method"},saveAsNewTemplate:{de:"als neue Profilvorlage speichern",en:"saveAsNewTemplate"},"Replace device":{de:"Gerät tauschen",en:"Replace device"},"Update firmware":{de:"Firmware aktualisieren",en:"Update firmware"},clearConfigCache:{de:"clearConfigCache",en:"clearConfigCache"},restoreConfigToDevice:{de:"restoreConfigToDevice",en:"restoreConfigToDevice"},Rename:{de:"Umbenennen",en:"Rename"},"MASTER Paramset":{de:"MASTER Paramset",en:"MASTER Paramset"},updateFirmware:{de:"Firmware aktualisieren",en:"updateFirmware"},Replace:{de:"Gerät tauschen",en:"Replace"},"VALUES Paramset":{de:"VALUES Paramset",en:"VALUES Paramset"},"Activate long":{de:"Empfägnerprofil testen (langer Tastendruck)",en:"Activate long"},"Activate short":{de:"Empfängerprofil testen (kurzer Tastendruck)",en:"Activate short"},putParamset:{de:"Parameter übernehmen",en:"putParamset"},putParamsetClose:{de:"Parameter übernehmen und schließen",en:"putParamsetClose"},"New service message":{de:"Neue Servicemeldung",en:"New service message"},"RPC execution":{de:"RPC wird ausgeführt",en:"RPC execution"},"about Homematic Manager":{de:"Über Homematic Manager",en:"about Homematic Manager"},"Saving and reconnecting…":{de:"Wird gespeichert, die Verbindung wird neu aufgebaut…",en:"Saving and reconnecting…"},"This tab could not be drawn.":{de:"Dieser Reiter konnte nicht gezeichnet werden.",en:"This tab could not be drawn."},"Try again":{de:"Erneut versuchen",en:"Try again"},"The device list could not be read - press Refresh to try again":{de:"Die Geräteliste konnte nicht gelesen werden - mit Aktualisieren erneut versuchen",en:"The device list could not be read - press Refresh to try again"},"Loading Homematic Manager...":{de:"Lade Homematic Manager...",en:"Loading Homematic Manager..."},"Check all":{de:"Alle auswählen",en:"Check all"},"Uncheck all":{de:"Auswahl entfernen",en:"Uncheck all"},"{count} devices":{de:{one:"{count} Gerät",other:"{count} Geräte"},en:{one:"{count} device",other:"{count} devices"}},"{count} channels":{de:{one:"{count} Kanal",other:"{count} Kanäle"},en:{one:"{count} channel",other:"{count} channels"}},"{count} links":{de:{one:"{count} Verknüpfung",other:"{count} Verknüpfungen"},en:{one:"{count} link",other:"{count} links"}},"{count} service messages":{de:{one:"{count} Servicemeldung",other:"{count} Servicemeldungen"},en:{one:"{count} service message",other:"{count} service messages"}},"{count} events":{de:{one:"{count} Ereignis",other:"{count} Ereignisse"},en:{one:"{count} event",other:"{count} events"}},"{count} parameters will be written":{de:{one:"{count} Parameter wird geschrieben",other:"{count} Parameter werden geschrieben"},en:{one:"{count} parameter will be written",other:"{count} parameters will be written"}},"{count} channels selected":{de:{one:"{count} Kanal ausgewählt",other:"{count} Kanäle ausgewählt"},en:{one:"{count} channel selected",other:"{count} channels selected"}},"Connected to {host}":{de:"Verbunden mit {host}",en:"Connected to {host}"},"Interface {interface} is not answering":{de:"Schnittstelle {interface} antwortet nicht",en:"Interface {interface} is not answering"},"Writing {paramset} of {address}":{de:"Schreibe {paramset} von {address}",en:"Writing {paramset} of {address}"},"RPC log":{de:"RPC-Protokoll",en:"RPC log"},"No RPC calls yet":{de:"Noch keine RPC-Aufrufe",en:"No RPC calls yet"},"in progress":{de:"läuft",en:"in progress"},Clear:{de:"Leeren",en:"Clear"},Close:{de:"Schließen",en:"Close"},"Resize the RPC log":{de:"Größe des RPC-Protokolls ändern",en:"Resize the RPC log"},"Hide background calls":{de:"Hintergrundaufrufe ausblenden",en:"Hide background calls"},"Open in console":{de:"In der Konsole öffnen",en:"Open in console"},"Origin: console":{de:"Konsole",en:"console"},"Origin: UI":{de:"UI",en:"UI"},"Origin: background":{de:"Hintergrund",en:"background"}};function h1(r,e){return r==="tr"?"other":e===1?"one":"other"}function qo(r,e){return r.replace(/\{(\w+)\}/g,(n,a)=>{const s=e[a];return s===void 0?n:String(s)})}const m1=["en","de"];class v1{language;#e;#n;constructor(e,n={}){this.language=e,this.#e=n.catalogue??Th;const a=n.fallbacks??m1;this.#n=[e,...a.filter(s=>s!==e)]}has(e){return this.#t(e)!==void 0}t(e,n={},a){const s=this.#t(e),i=a===void 0?n:{count:a,...n};if(s===void 0)return qo(e,i);const[o,l]=s;if(typeof o=="string")return qo(o,i);const f=h1(l,a??0);return qo(o[f],i)}#t(e){const n=Object.prototype.hasOwnProperty.call(this.#e,e)?this.#e[e]:void 0;if(n)for(const a of this.#n){const s=n[a];if(s!==void 0)return[s,a]}}}function p1(r,e={}){return new v1(r,e)}class Vc{#e;constructor(e,...n){this.#e=[e,...n].filter(a=>a!==void 0)}get languages(){return this.#e.map(e=>e.language)}channelType(e){return this.#n(n=>n.channelTypes,vs(e))??e}deviceModel(e){return this.#n(n=>n.deviceModels,vs(e))??e}parameter(e,n){return this.#n(a=>a.parameters,$o(e,n))??e}parameterValue(e,n,a){const s=$o(`${e}|${n}`,a);return s.push(...vs(n)),this.#n(i=>i.parameterValues,s)??n}specialValue(e,n,a){const s=this.parameterValue(e,n,a);return s!==n?s:this.#n(i=>i.parameters,vs(n))??n}parameterHelp(e,n){return this.#n(a=>a.parameterHelp,$o(e,n))}uiLabel(e){return this.#n(n=>n.uiLabels,Nd([e,e.toLowerCase()]))??e}#n(e,n){for(const a of this.#e)for(const s of n){const i=e(a)[s];if(i!==void 0&&i!=="")return i}}}function $o(r,e){const n=r.replace(/^(?:SHORT|LONG)_/i,"");return Nd((n===r?[r]:[r,n]).flatMap(s=>{const i=vs(s);if(e===void 0||e==="")return i;const o=vs(e).map(l=>`${l}|${s}`);return[...o,...o.map(l=>l.toUpperCase()),...i]}))}function vs(r){return Nd([r,r.toUpperCase()])}function Nd(r){return[...new Set(r)]}const g1={Filter:{de:"Filter",en:"Filter"},"Filter all columns":{de:"Alle Spalten filtern",en:"Filter all columns"},Language:{de:"Sprache",en:"Language"},"Browser language":{de:"Sprache des Browsers",en:"Browser language"},"Resize the RPC log":{de:"Größe des RPC-Protokolls ändern",en:"Resize the RPC log"},Theme:{de:"Design",en:"Theme"},"Theme: light":{de:"Design: hell",en:"Theme: light"},"Theme: dark":{de:"Design: dunkel",en:"Theme: dark"},"Theme: system":{de:"Design: System",en:"Theme: system"},Close:{de:"Schließen",en:"Close"},Apply:{de:"Übernehmen",en:"Apply"},Connected:{de:"Verbunden",en:"Connected"},"Not connected":{de:"Nicht verbunden",en:"Not connected"},"Not present":{de:"Nicht vorhanden",en:"Not present"},"Not answering":{de:"Antwortet nicht",en:"Not answering"},"Retry now":{de:"Jetzt erneut versuchen",en:"Retry now"},Subscribing:{de:"Anmeldung läuft",en:"Subscribing"},Waiting:{de:"Wartet",en:"Waiting"},Reconnecting:{de:"Verbindet neu",en:"Reconnecting"},"Pending changes":{de:"Offene Änderungen",en:"Pending changes"},"Logged in as {user}":{de:"Angemeldet als {user}",en:"Logged in as {user}"},"Log out":{de:"Abmelden",en:"Log out"},Team:{de:"Team",en:"Team"},"Own team":{de:"Eigenes Team",en:"Own team"},Members:{de:"Mitglieder",en:"Members"},Groups:{de:"Gruppen",en:"Groups"},Loading:{de:"Wird geladen",en:"Loading"},"Heating groups":{de:"Heizungsgruppen",en:"Heating groups"},"New group":{de:"Neue Gruppe",en:"New group"},"Edit group":{de:"Gruppe bearbeiten",en:"Edit group"},"Delete group":{de:"Gruppe löschen",en:"Delete group"},"Group name":{de:"Gruppenname",en:"Group name"},"Group type":{de:"Gruppentyp",en:"Group type"},"Virtual device":{de:"Virtuelles Gerät",en:"Virtual device"},"No groups yet":{de:"Noch keine Gruppen",en:"No groups yet"},"{count} groups":{de:{one:"{count} Gruppe",other:"{count} Gruppen"},en:{one:"{count} group",other:"{count} groups"}},"Select a group":{de:"Eine Gruppe auswählen",en:"Select a group"},"Addable devices":{de:"Hinzufügbare Geräte",en:"Addable devices"},"Already connected devices":{de:"Bereits verknüpfte Geräte",en:"Already connected devices"},"There are no other devices available":{de:"Es sind keine weiteren Geräte vorhanden",en:"There are no other devices available"},"There are no devices in the group":{de:"Es sind keine Geräte in der Gruppe",en:"There are no devices in the group"},"Configuration pending: {list}":{de:"Konfiguration ausstehend: {list}",en:"Configuration pending: {list}"},"The direct device connections of these devices are still being configured":{de:"Die direkten Verknüpfungen dieser Geräte werden noch konfiguriert",en:"The direct device connections of these devices are still being configured"},"The members leave the group and the virtual device {device} is removed":{de:"Die Mitglieder verlassen die Gruppe, das virtuelle Gerät {device} wird entfernt",en:"The members leave the group and the virtual device {device} is removed"},"Needs the administrator role on the system":{de:"Erfordert die Administratorrolle auf dem System",en:"Needs the administrator role on the system"},"Heating groups are not available here":{de:"Heizungsgruppen sind hier nicht verfügbar",en:"Heating groups are not available here"},Heating_Control:{de:"Heizungssteuerung",en:"Heating control"},"HmIP-Heizungssteuerung":{de:"HmIP-Heizungssteuerung",en:"HmIP heating control"},"This channel does not belong to a team":{de:"Dieser Kanal gehört zu keinem Team",en:"This channel does not belong to a team"},"The interface knows no other team yet":{de:"Die Schnittstelle kennt noch kein anderes Team",en:"The interface knows no other team yet"},"Smoke group":{de:"Rauchmeldergruppe",en:"Smoke group"},"Smoke group {n}":{de:"Rauchmeldergruppe {n}",en:"Smoke group {n}"},"{count} detectors":{de:{one:"{count} Melder",other:"{count} Melder"},en:{one:"{count} detector",other:"{count} detectors"}},"New smoke group":{de:"Neue Rauchmeldergruppe",en:"New smoke group"},"Internal key…":{de:"Interne Taste…",en:"Internal key…"},"The names reach the CCU once the device is confirmed in the ReGa inbox.":{de:"Die Namen kommen auf der CCU an, sobald das Gerät im ReGa-Posteingang bestätigt ist.",en:"The names reach the CCU once the device is confirmed in the ReGa inbox."},"The profile names {count} parameters this firmware does not have":{de:{one:"Das Profil nennt {count} Parameter, den diese Firmware nicht hat",other:"Das Profil nennt {count} Parameter, die diese Firmware nicht hat"},en:{one:"The profile names {count} parameter this firmware does not have",other:"The profile names {count} parameters this firmware does not have"}},"Only available on HmIP interfaces":{de:"Nur auf HmIP-Schnittstellen verfügbar",en:"Only available on HmIP interfaces"},"This interface has no smoke detector":{de:"Diese Schnittstelle hat keinen Rauchmelder",en:"This interface has no smoke detector"},"All eight smoke groups are in use":{de:"Alle acht Rauchmeldergruppen sind belegt",en:"All eight smoke groups are in use"},"in {team}":{de:"in {team}",en:"in {team}"},"also in {groups}":{de:"auch in {groups}",en:"also in {groups}"},"A new group takes the lowest free number.":{de:"Eine neue Gruppe bekommt die niedrigste freie Nummer.",en:"A new group takes the lowest free number."},"Changes are written to the detectors and take effect once each detector has picked them up.":{de:"Änderungen werden in die Melder geschrieben und gelten, sobald jeder Melder sie übernommen hat.",en:"Changes are written to the detectors and take effect once each detector has picked them up."},"cannot be grouped - no GROUP parameters":{de:"nicht gruppierbar - keine GROUP-Parameter",en:"cannot be grouped - no GROUP parameters"},"Confirm the ReGa inbox":{de:"ReGa-Posteingang bestätigen",en:"Confirm the ReGa inbox"},"Confirm the ReGa inbox automatically":{de:"ReGa-Posteingang automatisch bestätigen",en:"Confirm the ReGa inbox automatically"},"The ReGa inbox is empty":{de:"Der ReGa-Posteingang ist leer",en:"The ReGa inbox is empty"},Confirmed:{de:"Bestätigt",en:"Confirmed"},Template:{de:"Vorlage",en:"Template"},"Save as template":{de:"Als Vorlage speichern",en:"Save as template"},"Apply template":{de:"Vorlage anwenden",en:"Apply template"},"Delete template":{de:"Vorlage löschen",en:"Delete template"},"Template name":{de:"Name der Vorlage",en:"Template name"},"No template for this pair of channel types":{de:"Keine Vorlage für diese Kanaltypen",en:"No template for this pair of channel types"},"Create link as sender":{de:"Verknüpfung als Sender anlegen",en:"Create link as sender"},"Create link as receiver":{de:"Verknüpfung als Empfänger anlegen",en:"Create link as receiver"},"Show links":{de:"Verknüpfungen anzeigen",en:"Show links"},Unreach:{de:"Ausfälle",en:"Unreach"},"Reset the unreach counters":{de:"Ausfallzähler zurücksetzen",en:"Reset the unreach counters"},"Acknowledge STICKY_UNREACH automatically as they occur":{de:"STICKY_UNREACH automatisch bestätigen, sobald sie auftreten",en:"Acknowledge STICKY_UNREACH automatically as they occur"},"Acknowledging is a write to the device. Switching this on asks once about the messages already in the list.":{de:"Das Bestätigen schreibt in das Gerät. Beim Einschalten wird einmal gefragt, was mit den Meldungen geschieht, die schon in der Liste stehen.",en:"Acknowledging is a write to the device. Switching this on asks once about the messages already in the list."},"Acknowledge the messages already in the list?":{de:"Die Meldungen in der Liste auch bestätigen?",en:"Acknowledge the messages already in the list?"},"{count} STICKY_UNREACH messages are already listed. New ones are acknowledged automatically from now on.":{de:{one:"In der Liste steht schon 1 STICKY_UNREACH-Meldung. Neue werden ab jetzt automatisch bestätigt.",other:"In der Liste stehen schon {count} STICKY_UNREACH-Meldungen. Neue werden ab jetzt automatisch bestätigt."},en:{one:"1 STICKY_UNREACH message is already listed. New ones are acknowledged automatically from now on.",other:"{count} STICKY_UNREACH messages are already listed. New ones are acknowledged automatically from now on."}},"Each acknowledgement is a write to the device. Afterwards the list no longer shows which devices were away; the unreach counter in the RSSI tab keeps that.":{de:"Jede Bestätigung schreibt in das Gerät. Danach zeigt die Liste nicht mehr, welche Geräte nicht erreichbar waren; der Ausfallzähler im Reiter Funk behält das.",en:"Each acknowledgement is a write to the device. Afterwards the list no longer shows which devices were away; the unreach counter in the RSSI tab keeps that."},"Acknowledge existing":{de:"Vorhandene bestätigen",en:"Acknowledge existing"},"Only new ones":{de:"Nur neue",en:"Only new ones"},"{count} messages in the list are acknowledged when this is saved":{de:{one:"Die Meldung in der Liste wird beim Speichern bestätigt",other:"Die {count} Meldungen in der Liste werden beim Speichern bestätigt"},en:{one:"The message in the list is acknowledged when this is saved",other:"The {count} messages in the list are acknowledged when this is saved"}},"Used for every pair without its own name":{de:"Gilt für jedes Paar ohne eigenen Namen",en:"Used for every pair without its own name"},"Nothing is staged":{de:"Nichts vorgemerkt",en:"Nothing is staged"},"Add to pending changes":{de:"Zu den offenen Änderungen",en:"Add to pending changes"},"Discard all":{de:"Alle verwerfen",en:"Discard all"},"{count} changes staged":{de:{one:"Eine Änderung vorgemerkt",other:"{count} Änderungen vorgemerkt"},en:{one:"One change staged",other:"{count} changes staged"}},"The camera is only available over https or on localhost. Open the page with its https address (the CCU serves it on its https port too, with a certificate warning) or type the key in by hand.":{de:"Die Kamera ist nur über https oder auf localhost verfügbar. Öffnen Sie die Seite über ihre https-Adresse (die CCU liefert sie auch über ihren https-Port aus, mit Zertifikatswarnung) oder geben Sie den Schlüssel von Hand ein.",en:"The camera is only available over https or on localhost. Open the page with its https address (the CCU serves it on its https port too, with a certificate warning) or type the key in by hand."},"Add by serial number":{de:"Per Seriennummer anlernen",en:"Add by serial number"},"RPC log":{de:"RPC-Protokoll",en:"RPC log"},"Show RPC log":{de:"RPC-Protokoll anzeigen",en:"Show RPC log"},"No RPC calls yet":{de:"Noch keine RPC-Aufrufe",en:"No RPC calls yet"},"in progress":{de:"läuft",en:"in progress"},"up to date":{de:"aktuell",en:"up to date"},"new firmware available":{de:"neue Firmware verfügbar",en:"new firmware available"},"deliver firmware image":{de:"Firmware wird übertragen",en:"deliver firmware image"},"performing update":{de:"Update läuft",en:"performing update"},"update pending":{de:"Update ausstehend",en:"update pending"},Duration:{de:"Dauer",en:"Duration"},Method:{de:"Methode",en:"Method"},Result:{de:"Ergebnis",en:"Result"},Interface:{de:"Schnittstelle",en:"Interface"},Channels:{de:"Kanäle",en:"Channels"},Name:{de:"Name",en:"Name"},Timestamp:{de:"Zeitstempel",en:"Timestamp"},Value:{de:"Wert",en:"Value"},Message:{de:"Meldung",en:"Message"},Since:{de:"Seit",en:"Since"},"First reported, from the CCU":{de:"Erste Meldung, von der CCU",en:"First reported, from the CCU"},"First seen by the Homematic Manager":{de:"Vom Homematic Manager zuerst gesehen",en:"First seen by the Homematic Manager"},"Last changed, from the openccu-lite system":{de:"Letzte Änderung, vom openccu-lite-System",en:"Last changed, from the openccu-lite system"},"since {time}":{de:"seit {time}",en:"since {time}"},restored:{de:"wiederhergestellt",en:"restored"},"Last change: {time}":{de:"Letzte Änderung: {time}",en:"Last change: {time}"},"Last report: {time}":{de:"Letzte Meldung: {time}",en:"Last report: {time}"},"Restored by the system from its own file; no device has reported it since the system started.":{de:"Vom System aus seiner eigenen Datei wiederhergestellt; seit dem Start des Systems hat es kein Gerät gemeldet.",en:"Restored by the system from its own file; no device has reported it since the system started."},"The openccu-lite system's clock":{de:"Die Uhr des openccu-lite-Systems",en:"The openccu-lite system's clock"},"Listed by the CCU only; the interface no longer reports it":{de:"Nur von der CCU geführt; die Schnittstelle meldet sie nicht mehr",en:"Listed by the CCU only; the interface no longer reports it"},Clear:{de:"Leeren",en:"Clear"},"No data":{de:"Keine Daten",en:"No data"},"Nothing selected":{de:"Nichts ausgewählt",en:"Nothing selected"},"Comes with task 8":{de:"Diese Funktion kommt mit Aufgabe 8.",en:"This function arrives with task 8."},"Select an interface":{de:"Schnittstelle auswählen",en:"Select an interface"},"All interfaces are connected":{de:"Alle Schnittstellen verbunden",en:"All interfaces are connected"},"Not every interface is connected":{de:"Nicht jede Schnittstelle ist verbunden",en:"Not every interface is connected"},"Duty cycle {value} %":{de:"Duty Cycle {value} %",en:"Duty cycle {value} %"},"Callback port {port} is in use":{de:"Callback-Port {port} ist belegt",en:"Callback port {port} is in use"},"Callback port {port} cannot be opened":{de:"Callback-Port {port} lässt sich nicht öffnen",en:"Callback port {port} cannot be opened"},"Publish this port unchanged":{de:"Diesen Port unverändert veröffentlichen",en:"Publish this port unchanged"},"Use ReGa":{de:"ReGa verwenden",en:"Use ReGa"},"Detect interfaces":{de:"Schnittstellen erkennen",en:"Detect interfaces"},Interfaces:{de:"Schnittstellen",en:"Interfaces"},"Callback address":{de:"Callback-Adresse",en:"Callback address"},"Automatic ({address}, {why})":{de:"Automatisch ({address}, {why})",en:"Automatic ({address}, {why})"},"in the CCU's network":{de:"im Netz der CCU",en:"in the CCU's network"},"on the route to the CCU":{de:"auf dem Weg zur CCU",en:"on the route to the CCU"},"the CCU is on this machine":{de:"die CCU ist auf diesem Rechner",en:"the CCU is on this machine"},"no better match":{de:"keine bessere Wahl",en:"no better match"},"not in the CCU's network":{de:"nicht im Netz der CCU",en:"not in the CCU's network"},"link-local":{de:"link-lokal",en:"link-local"},"Use automatic":{de:"Automatisch verwenden",en:"Use automatic"},"The callback address {address} is not an address of this machine; {auto} is used instead":{de:"Die Callback-Adresse {address} ist keine Adresse dieses Rechners; stattdessen wird {auto} verwendet",en:"The callback address {address} is not an address of this machine; {auto} is used instead"},"The callback address {address} is not in the CCU's network; the CCU may not reach it and send no events":{de:"Die Callback-Adresse {address} liegt nicht im Netz der CCU; die CCU erreicht sie womöglich nicht und sendet keine Ereignisse",en:"The callback address {address} is not in the CCU's network; the CCU may not reach it and send no events"},"Automatic takes this machine's address in the CCU's network, else the one on the route to the CCU":{de:"Automatisch nimmt die Adresse dieses Rechners im Netz der CCU, sonst die auf dem Weg zur CCU",en:"Automatic takes this machine's address in the CCU's network, else the one on the route to the CCU"},"Callback XML-RPC port":{de:"Callback-Port XML-RPC",en:"Callback XML-RPC port"},"Callback BIN-RPC port":{de:"Callback-Port BIN-RPC",en:"Callback BIN-RPC port"},"Use TLS":{de:"TLS verwenden",en:"Use TLS"},"Use Auth":{de:"Authentifizierung verwenden",en:"Use Auth"},"Auth User":{de:"Benutzer",en:"Auth User"},"Auth Pass":{de:"Passwort",en:"Auth Pass"},"RPC Delay (ms)":{de:"RPC-Pause (ms)",en:"RPC Delay (ms)"},"RPC Log Folder":{de:"RPC-Log-Verzeichnis",en:"RPC Log Folder"},"Clear Cache":{de:"Cache leeren",en:"Clear Cache"},"Discovered CCUs":{de:"Gefundene CCUs",en:"Discovered CCUs"},Discover:{de:"Suchen",en:"Discover"},"Free port":{de:"freier Port",en:"Free port"},"0 picks a free port":{de:"0 wählt einen freien Port",en:"0 picks a free port"},"0 uses port {port}, or a free one when it is taken":{de:"0 verwendet Port {port} oder, wenn er belegt ist, einen freien",en:"0 uses port {port}, or a free one when it is taken"},"Set at start ({option})":{de:"Beim Start festgelegt ({option})",en:"Set at start ({option})"},Certificate:{de:"Zertifikat",en:"Certificate"},"The certificate of {url} is not trusted ({code})":{de:"Dem Zertifikat von {url} wird nicht vertraut ({code})",en:"The certificate of {url} is not trusted ({code})"},"The certificate of {url} is not trusted ({code}). Until it is, whether this is an openccu-lite system is not known.":{de:"Dem Zertifikat von {url} wird nicht vertraut ({code}). Bis dahin ist unbekannt, ob dies ein openccu-lite-System ist.",en:"The certificate of {url} is not trusted ({code}). Until it is, whether this is an openccu-lite system is not known."},"{subject}, issued by {issuer}, valid until {validTo}":{de:"{subject}, ausgestellt von {issuer}, gültig bis {validTo}",en:"{subject}, issued by {issuer}, valid until {validTo}"},"Trust this certificate":{de:"Diesem Zertifikat vertrauen",en:"Trust this certificate"},"Trust the CA {name}":{de:"Der CA {name} vertrauen",en:"Trust the CA {name}"},"A trusted certificate holds whatever name the system is reached by, until it is renewed; a trusted CA also covers its renewals, but the name must match the certificate.":{de:"Ein vertrautes Zertifikat gilt unter jedem Namen des Systems, bis es erneuert wird; eine vertraute CA gilt auch für Erneuerungen, aber der Name muss zum Zertifikat passen.",en:"A trusted certificate holds whatever name the system is reached by, until it is renewed; a trusted CA also covers its renewals, but the name must match the certificate."},"Trusted certificates":{de:"Vertraute Zertifikate",en:"Trusted certificates"},"{count} certificates or CAs of the system are trusted":{de:{one:"{count} Zertifikat oder CA des Systems wird vertraut",other:"{count} Zertifikaten oder CAs des Systems wird vertraut"},en:{one:"{count} certificate or CA of the system is trusted",other:"{count} certificates or CAs of the system are trusted"}},"Forget them":{de:"Vergessen",en:"Forget them"},"Unsubscribe when idle":{de:"Abmelden bei Inaktivität",en:"Unsubscribe when idle"},"Default ({time})":{de:"Voreinstellung ({time})",en:"Default ({time})"},"Never unsubscribe":{de:"Nie abmelden",en:"Never unsubscribe"},"{count} seconds":{de:{one:"{count} Sekunde",other:"{count} Sekunden"},en:{one:"{count} second",other:"{count} seconds"}},"{count} minutes":{de:{one:"{count} Minute",other:"{count} Minuten"},en:{one:"{count} minute",other:"{count} minutes"}},"{count} hours":{de:{one:"{count} Stunde",other:"{count} Stunden"},en:{one:"{count} hour",other:"{count} hours"}},"With no page open, the event subscriptions are dropped after this time and taken up again when a page is opened":{de:"Ist keine Seite geöffnet, werden die Event-Anmeldungen nach dieser Zeit beendet und beim Öffnen einer Seite wieder aufgenommen",en:"With no page open, the event subscriptions are dropped after this time and taken up again when a page is opened"},Dismiss:{de:"Ausblenden",en:"Dismiss"},"{count} more":{de:{one:"{count} weitere",other:"{count} weitere"},en:{one:"{count} more",other:"{count} more"}},"Show fewer":{de:"Weniger anzeigen",en:"Show fewer"},"Add device":{de:"Gerät anlernen",en:"Add device"},"Pair device":{de:"Gerät anlernen",en:"Pair device"},"reportValueUsage 0":{de:"reportValueUsage 0",en:"reportValueUsage 0"},"reportValueUsage 1":{de:"reportValueUsage 1",en:"reportValueUsage 1"},"Expand row":{de:"Zeile aufklappen",en:"Expand row"},"Collapse row":{de:"Zeile zuklappen",en:"Collapse row"},"Sorted ascending":{de:"Aufsteigend sortiert",en:"Sorted ascending"},"Sorted descending":{de:"Absteigend sortiert",en:"Sorted descending"},"Showing {shown} of {total}":{de:"Zeige {shown} von {total}",en:"Showing {shown} of {total}"},"No devices - the interface has not reported any yet":{de:"Keine Geräte - die Schnittstelle hat noch keine gemeldet",en:"No devices - the interface has not reported any yet"},"No device matches the room or function filter":{de:"Kein Gerät passt zum Raum- oder Gewerkefilter",en:"No device matches the room or function filter"},"No row matches the filter":{de:"Keine Zeile passt zum Filter",en:"No row matches the filter"},"Clear filter":{de:"Filter löschen",en:"Clear filter"},"Resize column {column}":{de:"Breite der Spalte {column} ändern",en:"Resize column {column}"},"Fit column to content":{de:"Spaltenbreite an den Inhalt anpassen",en:"Fit column to content"},"Reset column widths":{de:"Spaltenbreiten zurücksetzen",en:"Reset column widths"},"Column widths":{de:"Spaltenbreiten",en:"Column widths"},"Copy name":{de:"Namen kopieren",en:"Copy name"},"Copy address":{de:"Adresse kopieren",en:"Copy address"},Copied:{de:"Kopiert",en:"Copied"},"Could not copy - the text is selected":{de:"Kopieren nicht möglich - der Text ist markiert",en:"Could not copy - the text is selected"},Configured:{de:"Konfiguriert",en:"Configured"},"Use {interface} as receiver":{de:"{interface} als Empfänger verwenden",en:"Use {interface} as receiver"},"Assign the best receiver":{de:"Besten Empfänger zuweisen",en:"Assign the best receiver"},"Best receiver":{de:"Bester Empfänger",en:"Best receiver"},"Only one interface":{de:"Nur eine Schnittstelle",en:"Only one interface"},"Which interface receives each device best, from the levels the interfaces last measured. Nothing is written until you confirm; every device is one setBidcosInterface.":{de:"Welche Schnittstelle jedes Gerät am besten empfängt, aus den zuletzt gemessenen Pegeln. Geschrieben wird erst nach Bestätigung, jedes Gerät ist ein setBidcosInterface.",en:"Which interface receives each device best, from the levels the interfaces last measured. Nothing is written until you confirm; every device is one setBidcosInterface."},Margin:{de:"Mindestabstand",en:"Margin"},"A switch is proposed only when the best interface receives the device at least this much better than the configured one - two reads of the same link differ by a few dB.":{de:"Ein Wechsel wird nur vorgeschlagen, wenn die beste Schnittstelle das Gerät um mindestens so viel besser empfängt als die konfigurierte - zwei Messungen derselben Strecke unterscheiden sich um einige dB.",en:"A switch is proposed only when the best interface receives the device at least this much better than the configured one - two reads of the same link differ by a few dB."},Proposed:{de:"Vorgeschlagen",en:"Proposed"},"Very good (maximum)":{de:"Sehr gut (Maximum)",en:"Very good (maximum)"},"Very good":{de:"Sehr gut",en:"Very good"},Good:{de:"Gut",en:"Good"},"Good (normal operation)":{de:"Gut (Normalbetrieb)",en:"Good (normal operation)"},Sufficient:{de:"Ausreichend",en:"Sufficient"},"Sufficient to weak":{de:"Ausreichend bis schwach",en:"Sufficient to weak"},Poor:{de:"Schlecht",en:"Poor"},Critical:{de:"Kritisch",en:"Critical"},Gain:{de:"Gewinn",en:"Gain"},"Below the margin":{de:"Unter dem Mindestabstand",en:"Below the margin"},"Not heard by the configured receiver":{de:"Vom konfigurierten Empfänger nicht gehört",en:"Not heard by the configured receiver"},"Every device is on the receiver that hears it best":{de:"Jedes Gerät ist auf dem Empfänger, der es am besten hört",en:"Every device is on the receiver that hears it best"},"Not listed: {keep} on their best receiver, {unmeasured} without a measurement, {roaming} roaming":{de:"Nicht aufgeführt: {keep} auf ihrem besten Empfänger, {unmeasured} ohne Messwert, {roaming} mit Roaming",en:"Not listed: {keep} on their best receiver, {unmeasured} without a measurement, {roaming} roaming"},"Assign ({count})":{de:"Zuweisen ({count})",en:"Assign ({count})"},"{done} of {total} assigned":{de:"{done} von {total} zugewiesen",en:"{done} of {total} assigned"},install:{de:"installieren",en:"install"},"Install firmware {version}":{de:"Firmware {version} installieren",en:"Install firmware {version}"},"Overwrite channel names":{de:"Kanalnamen überschreiben",en:"Overwrite channel names"},"Do you really want to delete the device {name}?":{de:"Wollen Sie das Gerät {name} wirklich löschen?",en:"Do you really want to delete the device {name}?"},"Unlearn and reset the device to factory defaults":{de:"Ablernen und Gerät auf Werkseinstellungen zurücksetzen",en:"Unlearn and reset the device to factory defaults"},"Unlearn only (direct links are kept)":{de:"Nur ablernen (Direktverknüpfungen bleiben erhalten)",en:"Unlearn only (direct links are kept)"},"If the device cannot be reached:":{de:"Falls Gerät nicht erreichbar:",en:"If the device cannot be reached:"},"Delete at the next opportunity":{de:"Bei nächster Gelegenheit löschen",en:"Delete at the next opportunity"},"Delete from the interface process only":{de:"Nur aus dem Schnittstellenprozess löschen",en:"Delete from the interface process only"},"New device":{de:"Neues Gerät",en:"New device"},"No suitable device available":{de:"Kein passendes Gerät vorhanden",en:"No suitable device available"},"Select a device":{de:"Ein Gerät auswählen",en:"Select a device"},"Select one or more channels":{de:"Einen oder mehrere Kanäle auswählen",en:"Select one or more channels"},"This device carries the DontDelete flag":{de:"Dieses Gerät trägt das Flag DontDelete",en:"This device carries the DontDelete flag"},"Only available on BidCos interfaces":{de:"Nur bei BidCos-Schnittstellen verfügbar",en:"Only available on BidCos interfaces"},"This interface cannot pair devices":{de:"Diese Schnittstelle kann keine Geräte anlernen",en:"This interface cannot pair devices"},"reportValueUsage {value}: {count} datapoints on {channels} channels":{de:"reportValueUsage {value}: {count} Datenpunkte auf {channels} Kanälen",en:"reportValueUsage {value}: {count} datapoints on {channels} channels"},"SERVICE Paramset":{de:"SERVICE Parametersatz",en:"SERVICE Paramset"},Preview:{de:"Vorschau",en:"Preview"},Write:{de:"Schreiben",en:"Write"},Parameter:{de:"Parameter",en:"Parameter"},"Current value":{de:"Aktueller Wert",en:"Current value"},"New value":{de:"Neuer Wert",en:"New value"},"Nothing has changed - nothing will be written":{de:"Nichts geändert - es wird nichts geschrieben",en:"Nothing has changed - nothing will be written"},"Write every parameter, not only the changed ones":{de:"Alle Parameter schreiben, nicht nur die geänderten",en:"Write every parameter, not only the changed ones"},"Show hidden parameters":{de:"Ausgeblendete Parameter zeigen",en:"Show hidden parameters"},"Suppress all":{de:"Alle unterdrücken",en:"Suppress all"},suppressed:{de:"unterdrückt",en:"suppressed"},"not suppressed":{de:"nicht unterdrückt",en:"not suppressed"},Suppress:{de:"Unterdrücken",en:"Suppress"},Unsuppress:{de:"Unterdrückung aufheben",en:"Unsuppress"},"Service message suppression":{de:"Unterdrückung von Servicemeldungen",en:"Service message suppression"},"Nothing is sent until Apply; the preview lists every call first.":{de:"Bis „Übernehmen“ wird nichts gesendet; die Vorschau zeigt vorher jeden Aufruf.",en:"Nothing is sent until Apply; the preview lists every call first."},"{count} calls will be made":{de:{one:"{count} Aufruf wird gesendet",other:"{count} Aufrufe werden gesendet"},en:{one:"{count} call will be made",other:"{count} calls will be made"}},"Routing table":{de:"Routing-Tabelle",en:"Routing table"},"Read from the device itself; every read costs duty cycle, so it is read once when this opens.":{de:"Direkt vom Gerät gelesen; jedes Lesen kostet Duty Cycle, deshalb einmal beim Öffnen.",en:"Read from the device itself; every read costs duty cycle, so it is read once when this opens."},"No routes: the device reported an empty table.":{de:"Keine Routen: das Gerät hat eine leere Tabelle gemeldet.",en:"No routes: the device reported an empty table."},Destination:{de:"Ziel",en:"Destination"},"Next hop":{de:"Nächster Hop",en:"Next hop"},Hops:{de:"Hops",en:"Hops"},hops:{de:{one:"Hop",other:"Hops"},en:{one:"hop",other:"hops"}},Neighbour:{de:"Nachbar",en:"Neighbour"},Static:{de:"Statisch",en:"Static"},Router:{de:"Router",en:"Router"},"Access controller":{de:"Access Controller",en:"Access controller"},Portable:{de:"Tragbar",en:"Portable"},"Listener mode":{de:"Empfangsmodus",en:"Listener mode"},Valid:{de:"Gültig",en:"Valid"},"Unsuppress all":{de:"Keine unterdrücken",en:"Unsuppress all"},"A suppressed one reports a value that raises no message; the CCU shows it as inactive.":{de:"Eine unterdrückte meldet einen Wert, der keine Meldung auslöst; die CCU zeigt sie als inaktiv.",en:"A suppressed one reports a value that raises no message; the CCU shows it as inactive."},"The CCU stops reporting {datapoint} for this channel: the HmIP interface reports a value that raises no message (suppressServiceMessages). The device's other messages are not affected. Undo with “Unsuppress”.":{de:"Die Zentrale meldet {datapoint} für diesen Kanal nicht mehr: die HmIP-Schnittstelle liefert dafür einen Wert, der keine Meldung auslöst (suppressServiceMessages). Andere Meldungen des Geräts sind nicht betroffen. Rückgängig mit „Unterdrückung aufheben“.",en:"The CCU stops reporting {datapoint} for this channel: the HmIP interface reports a value that raises no message (suppressServiceMessages). The device's other messages are not affected. Undo with “Unsuppress”."},"The CCU reports {datapoint} for this channel again: lifts the suppression (suppressServiceMessages with suppress=false).":{de:"Die Zentrale meldet {datapoint} für diesen Kanal wieder: hebt die Unterdrückung auf (suppressServiceMessages mit suppress=false).",en:"The CCU reports {datapoint} for this channel again: lifts the suppression (suppressServiceMessages with suppress=false)."},"other firmware or device type":{de:"andere Firmware oder anderer Gerätetyp",en:"other firmware or device type"},"Add link":{de:"Verknüpfung anlegen",en:"Add link"},"No channel of this interface can be the sender of a link":{de:"Kein Kanal dieser Schnittstelle kann Sender einer Verknüpfung sein",en:"No channel of this interface can be the sender of a link"},"Select one link":{de:"Eine Verknüpfung auswählen",en:"Select one link"},"No channel can receive from this sender":{de:"Kein Kanal kann von diesem Sender empfangen",en:"No channel can receive from this sender"},"{count} defective links":{de:{one:"{count} defekte Verknüpfung",other:"{count} defekte Verknüpfungen"},en:{one:"{count} defective link",other:"{count} defective links"}},"Defective link":{de:"Defekte Verknüpfung",en:"Defective link"},Profile:{de:"Profil",en:"Profile"},"Expert view":{de:"Expertenansicht",en:"Expert view"},"Short key press":{de:"Kurzer Tastendruck",en:"Short key press"},"Long key press":{de:"Langer Tastendruck",en:"Long key press"},"Not active":{de:"Nicht aktiv",en:"Not active"},Permanent:{de:"dauerhaft",en:"permanent"},"Enter value":{de:"Wert eingeben",en:"Enter value"},"Marked: the parameters the easy mode of this channel shows":{de:"Markiert: die Parameter, die der Easy-Mode dieses Kanals zeigt",en:"Marked: the parameters the easy mode of this channel shows"},"Marked: the parameters the easy mode of this profile shows":{de:"Markiert: die Parameter, die der Easy-Mode dieses Profils zeigt",en:"Marked: the parameters the easy mode of this profile shows"},"The CCU's form for this profile is not known here: every parameter is shown, the ones the profile fixes greyed out.":{de:"Die Maske der CCU für dieses Profil ist hier nicht bekannt: alle Parameter werden gezeigt, die vom Profil festgelegten ausgegraut.",en:"The CCU's form for this profile is not known here: every parameter is shown, the ones the profile fixes greyed out."},"Repair configuration":{de:"Konfiguration reparieren",en:"Repair configuration"},"Communication disturbed":{de:"Kommunikation gestört",en:"Communication disturbed"},"Communication was disturbed":{de:"Kommunikation war gestört",en:"Communication was disturbed"},"Low battery":{de:"Batterie schwach",en:"Low battery"},"Configuration pending":{de:"Konfiguration ausstehend",en:"Configuration pending"},"Update pending":{de:"Update ausstehend",en:"Update pending"},Sabotage:{de:"Sabotage",en:"Sabotage"},Fault:{de:"Fehler",en:"Fault"},"Fault report":{de:"Fehlermeldung",en:"Fault report"},"The configuration could not be transferred to the device":{de:"Die Konfiguration konnte nicht zum Gerät übertragen werden",en:"The configuration could not be transferred to the device"},"A configuration is queued; the device takes it when it next wakes up":{de:"Eine Konfiguration ist eingereiht; das Gerät übernimmt sie beim nächsten Aufwachen",en:"A configuration is queued; the device takes it when it next wakes up"},"On BidCos a pending configuration is normal: it is queued and the device takes it when it next wakes up.":{de:"Bei BidCos ist eine ausstehende Konfiguration normal: sie ist eingereiht und das Gerät übernimmt sie beim nächsten Aufwachen.",en:"On BidCos a pending configuration is normal: it is queued and the device takes it when it next wakes up."},"These channels store a parameter their description does not have. No RPC method removes it: the device has to be deleted and paired again, or a CCU backup from before the bad write restored.":{de:"Diese Kanäle speichern einen Parameter, den ihre Beschreibung nicht kennt. Keine RPC-Methode entfernt ihn: das Gerät muss gelöscht und neu angelernt werden, oder ein CCU-Backup von vor dem fehlerhaften Schreibvorgang eingespielt werden.",en:"These channels store a parameter their description does not have. No RPC method removes it: the device has to be deleted and paired again, or a CCU backup from before the bad write restored."},"Nothing has to be corrected":{de:"Es muss nichts korrigiert werden",en:"Nothing has to be corrected"},"Additional BidCos recovery":{de:"Zusätzliche BidCos-Reparatur",en:"Additional BidCos recovery"},Channel:{de:"Kanal",en:"Channel"},"Read back":{de:"Rückgelesen",en:"Read back"},"The interface answered ok but stored something else":{de:"Die Schnittstelle hat ok geantwortet, aber etwas anderes gespeichert",en:"The interface answered ok but stored something else"},"What was sent":{de:"Gesendet",en:"What was sent"},"Only STICKY_UNREACH and SABOTAGE can be acknowledged":{de:"Nur STICKY_UNREACH und SABOTAGE lassen sich bestätigen",en:"Only STICKY_UNREACH and SABOTAGE can be acknowledged"},"{count} of {total} on this box":{de:"{count} von {total} auf dieser Zentrale",en:"{count} of {total} on this box"},"Also on this box: {list}. Click to switch to {next}.":{de:"Außerdem auf dieser Zentrale: {list}. Ein Klick wechselt zu {next}.",en:"Also on this box: {list}. Click to switch to {next}."},Pause:{de:"Anhalten",en:"Pause"},"Events per device":{de:"Ereignisse je Gerät",en:"Events per device"},Peer:{de:"Gegenstelle",en:"Peer"},"Heard best by {address}":{de:"Am besten empfangen von {address}",en:"Heard best by {address}"},History:{de:"Verlauf",en:"History"},optional:{de:"optional",en:"optional"},Mode:{de:"Modus",en:"Mode"},"Serial number":{de:"Seriennummer",en:"Serial number"},"Temporary key":{de:"Temporärer Schlüssel",en:"Temporary key"},"The security key of the system the device was last paired to, if it holds one. Leave it empty otherwise: the system asks for it when a device is refused for its key.":{de:"Der Sicherheitsschlüssel des Systems, an dem das Gerät zuletzt angelernt war, falls es einen trägt. Sonst leer lassen: Das System fragt danach, wenn ein Gerät wegen seines Schlüssels abgewiesen wird.",en:"The security key of the system the device was last paired to, if it holds one. Leave it empty otherwise: the system asks for it when a device is refused for its key."},"Security key of the other system":{de:"Sicherheitsschlüssel des anderen Systems",en:"Security key of the other system"},"The device {serial} could not be paired: it holds a security key this system does not know. Enter the security key of the system it was paired to and try again.":{de:"Das Gerät {serial} konnte nicht angelernt werden: Es trägt einen Sicherheitsschlüssel, den dieses System nicht kennt. Geben Sie den Sicherheitsschlüssel des Systems ein, an dem es angelernt war, und versuchen Sie es erneut.",en:"The device {serial} could not be paired: it holds a security key this system does not know. Enter the security key of the system it was paired to and try again."},"Set the key and try again":{de:"Schlüssel setzen und erneut versuchen",en:"Set the key and try again"},"Normal install mode":{de:"Normaler Anlernmodus",en:"Normal install mode"},"Write the MASTER defaults and delete the existing links":{de:"Default-Parameter in Paramset MASTER schreiben, bestehende Verknüpfungen löschen",en:"Write the MASTER defaults and delete the existing links"},"With SGTIN and key":{de:"Mit SGTIN und Schlüssel",en:"With SGTIN and key"},"With SGTIN only (key server)":{de:"Nur mit SGTIN (Key Server)",en:"With SGTIN only (key server)"},"Any device (no SGTIN)":{de:"Beliebiges Gerät (ohne SGTIN)",en:"Any device (no SGTIN)"},"Works offline: the key from the sticker is all the interface needs.":{de:"Funktioniert offline: Der Schlüssel vom Aufkleber ist alles, was die Schnittstelle braucht.",en:"Works offline: the key from the sticker is all the interface needs."},"The key comes from eQ-3's key server: the box needs internet access.":{de:"Der Schlüssel kommt vom Key Server von eQ-3: Die Zentrale braucht Internetzugang.",en:"The key comes from eQ-3's key server: the box needs internet access."},"Pairs the next device in factory state that asks to join. Without a key the interface asks eQ-3's key server, so the box needs internet access unless a local key mapping is configured.":{de:"Lernt das nächste Gerät im Werkszustand an, das sich meldet. Ohne Schlüssel fragt die Schnittstelle den Key Server von eQ-3, die Zentrale braucht also Internetzugang, sofern keine lokale Schlüsselzuordnung eingerichtet ist.",en:"Pairs the next device in factory state that asks to join. Without a key the interface asks eQ-3's key server, so the box needs internet access unless a local key mapping is configured."},"Pairs the next device in factory state that asks to join, if its key is on the system: the system's key mode never asks eQ-3's key server. {count} device keys are stored on the system.":{de:{one:"Lernt das nächste Gerät im Werkszustand an, das sich meldet, sofern sein Schlüssel auf dem System liegt: Der Schlüsselmodus des Systems fragt den Key Server von eQ-3 nie. Auf dem System ist {count} Geräteschlüssel gespeichert.",other:"Lernt das nächste Gerät im Werkszustand an, das sich meldet, sofern sein Schlüssel auf dem System liegt: Der Schlüsselmodus des Systems fragt den Key Server von eQ-3 nie. Auf dem System sind {count} Geräteschlüssel gespeichert."},en:{one:"Pairs the next device in factory state that asks to join, if its key is on the system: the system's key mode never asks eQ-3's key server. {count} device key is stored on the system.",other:"Pairs the next device in factory state that asks to join, if its key is on the system: the system's key mode never asks eQ-3's key server. {count} device keys are stored on the system."}},"The install mode has ended and no device has joined. A device that is still paired with another central sends no inclusion request: reset it to factory state and start again.":{de:"Der Anlernmodus ist abgelaufen, und kein Gerät hat sich angemeldet. Ein Gerät, das noch an einer anderen Zentrale angelernt ist, sendet keine Anlernanfrage: Gerät auf Werkseinstellungen zurücksetzen und erneut starten.",en:"The install mode has ended and no device has joined. A device that is still paired with another central sends no inclusion request: reset it to factory state and start again."},"The install mode has ended and no device has joined. Put the device into its pairing mode and start again. A device that holds another system's security key is reported here and that key asked for; a factory reset does not remove it.":{de:"Der Anlernmodus ist abgelaufen, und kein Gerät hat sich angemeldet. Bringen Sie das Gerät in den Anlernmodus und starten Sie erneut. Ein Gerät mit dem Sicherheitsschlüssel eines anderen Systems wird hier gemeldet und der Schlüssel abgefragt; ein Zurücksetzen auf Werkseinstellungen entfernt ihn nicht.",en:"The install mode has ended and no device has joined. Put the device into its pairing mode and start again. A device that holds another system's security key is reported here and that key asked for; a factory reset does not remove it."},"QR scanner":{de:"QR-Scanner",en:"QR scanner"},Scan:{de:"Scannen",en:"Scan"},Stop:{de:"Stoppen",en:"Stop"},"The key from the sticker (26 characters, dashes optional), or scan the QR code.":{de:"Der Schlüssel vom Aufkleber (26 Zeichen, Bindestriche optional), oder den QR-Code scannen.",en:"The key from the sticker (26 characters, dashes optional), or scan the QR code."},"An access point (HAP, DRAP) is paired like a device: factory-reset it, start the install mode, then power it. System and access point must be in the same network.":{de:"Ein Access Point (HAP, DRAP) wird wie ein Gerät angelernt: auf Werkseinstellungen zurücksetzen, den Anlernmodus starten, dann mit Strom versorgen. System und Access Point müssen im selben Netzwerk sein.",en:"An access point (HAP, DRAP) is paired like a device: factory-reset it, start the install mode, then power it. System and access point must be in the same network."},"That is not a HomematicIP device code":{de:"Das ist kein HomematicIP-Gerätecode",en:"That is not a HomematicIP device code"},"Start install mode":{de:"Anlernmodus aktivieren",en:"Start install mode"},"{count} seconds left":{de:{one:"Noch {count} Sekunde",other:"Noch {count} Sekunden"},en:{one:"{count} second left",other:"{count} seconds left"}},"BidCos-Wired has no install mode; the interface searches its bus for new devices.":{de:"BidCos-Wired hat keinen Anlernmodus; die Schnittstelle durchsucht ihren Bus nach neuen Geräten.",en:"BidCos-Wired has no install mode; the interface searches its bus for new devices."},"A new version is available":{de:"Eine neue Version ist verfügbar",en:"A new version is available"},Downloading:{de:"Wird geladen",en:"Downloading"},"The update is ready and will be installed when you quit":{de:"Die Aktualisierung ist bereit und wird beim Beenden installiert",en:"The update is ready and will be installed when you quit"},"The update will be installed when you quit":{de:"Die Aktualisierung wird beim Beenden installiert",en:"The update will be installed when you quit"},Download:{de:"Herunterladen",en:"Download"},"Install on quit":{de:"Beim Beenden installieren",en:"Install on quit"},"The update check failed":{de:"Die Suche nach Aktualisierungen ist fehlgeschlagen",en:"The update check failed"},"The download of the update failed":{de:"Das Herunterladen der Aktualisierung ist fehlgeschlagen",en:"The download of the update failed"},"The update failed":{de:"Die Aktualisierung ist fehlgeschlagen",en:"The update failed"},"Releases on GitHub":{de:"Versionen auf GitHub",en:"Releases on GitHub"},"Opens the installer of the new version in your browser":{de:"Öffnet das Installationsprogramm der neuen Version im Browser",en:"Opens the installer of the new version in your browser"},"Device data":{de:"Gerätedaten",en:"Device data"},"Homematic Manager on GitHub":{de:"Homematic Manager auf GitHub",en:"Homematic Manager on GitHub"},Connection:{de:"Verbindung",en:"Connection"},Callback:{de:"Rückruf",en:"Callback"},Behaviour:{de:"Verhalten",en:"Behaviour"},"Configured interfaces":{de:"Konfigurierte Schnittstellen",en:"Configured interfaces"},"An extra interface is connected once it is ticked here":{de:"Eine zusätzliche Schnittstelle wird verbunden, sobald sie hier angehakt ist",en:"An extra interface is connected once it is ticked here"},"Host name or address of the CCU":{de:"Hostname oder Adresse der CCU",en:"Host name or address of the CCU"},"Searches the network for CCUs over UDP":{de:"Sucht per UDP im Netz nach CCUs",en:"Searches the network for CCUs over UDP"},"The encrypted ports of the CCU":{de:"Die verschlüsselten Ports der CCU",en:"The encrypted ports of the CCU"},"The address the interface processes call back to":{de:"Die Adresse, an die die Schnittstellenprozesse zurückrufen",en:"The address the interface processes call back to"},"Probes the known ports in the background":{de:"Prüft die bekannten Ports im Hintergrund",en:"Probes the known ports in the background"},"ReGa supplies the friendly names":{de:"ReGa liefert die Anzeigenamen",en:"ReGa supplies the friendly names"},"Only possible with ReGa":{de:"Nur mit ReGa möglich",en:"Only possible with ReGa"},"Switched off: the system has no ReGaHSS":{de:"Abgeschaltet: das System hat kein ReGaHSS",en:"Switched off: the system has no ReGaHSS"},"Shortest pause between two writes":{de:"Kürzeste Pause zwischen zwei Schreibzugriffen",en:"Shortest pause between two writes"},"Empty switches the dumps off":{de:"Leer schaltet die Mitschrift ab",en:"Empty switches the dumps off"},"Discards the caches when this is saved":{de:"Verwirft die Caches beim Speichern",en:"Discards the caches when this is saved"},"Extra interfaces":{de:"Zusätzliche Schnittstellen",en:"Extra interfaces"},"Add interface":{de:"Schnittstelle hinzufügen",en:"Add interface"},Remove:{de:"Entfernen",en:"Remove"},Host:{de:"Host",en:"Host"},Port:{de:"Port",en:"Port"},Path:{de:"Pfad",en:"Path"},Protocol:{de:"Protokoll",en:"Protocol"},"Searching...":{de:"Suche läuft...",en:"Searching..."},"Show the raw parameters as well":{de:"Rohe Parameter zusätzlich anzeigen",en:"Show the raw parameters as well"},Durations:{de:"Zeitdauern",en:"Durations"},"A duration is stored as a unit and a count; both are shown next to the seconds.":{de:"Eine Zeitdauer wird als Einheit und Faktor gespeichert; beides steht neben den Sekunden.",en:"A duration is stored as a unit and a count; both are shown next to the seconds."},seconds:{de:"Sekunden",en:"seconds"},unit:{de:"Einheit",en:"unit"},count:{de:"Faktor",en:"count"},"Not used / for ever":{de:"Nicht benutzt / dauerhaft",en:"Not used / for ever"},"The device holds a value this pair cannot express":{de:"Das Gerät hält einen Wert, den dieses Paar nicht ausdrücken kann",en:"The device holds a value this pair cannot express"},"The device can only do {seconds}":{de:"Das Gerät kann nur {seconds}",en:"The device can only do {seconds}"},"Week programme":{de:"Wochenprogramm",en:"Week programme"},"Switching programme":{de:"Schaltprogramm",en:"Switching programme"},Weekday:{de:"Wochentag",en:"Weekday"},Weekdays:{de:"Wochentage",en:"Weekdays"},Slot:{de:"Abschnitt",en:"Slot"},until:{de:"bis",en:"until"},Copy:{de:"Kopieren",en:"Copy"},"Copy day to":{de:"Tag kopieren nach",en:"Copy day to"},"Copy profile to":{de:"Profil kopieren nach",en:"Copy profile to"},Monday:{de:"Montag",en:"Monday"},Tuesday:{de:"Dienstag",en:"Tuesday"},Wednesday:{de:"Mittwoch",en:"Wednesday"},Thursday:{de:"Donnerstag",en:"Thursday"},Friday:{de:"Freitag",en:"Friday"},Saturday:{de:"Samstag",en:"Saturday"},Sunday:{de:"Sonntag",en:"Sunday"},"The end times of a day rise until {end}, and the last one is {end}":{de:"Die Endzeiten eines Tages steigen bis {end}, und die letzte ist {end}",en:"The end times of a day rise until {end}, and the last one is {end}"},"{day}: end time {slot} is not after the one before it":{de:"{day}: Endzeit {slot} liegt nicht nach der vorherigen",en:"{day}: end time {slot} is not after the one before it"},"{day}: end time {slot} comes after the day has ended":{de:"{day}: Endzeit {slot} liegt hinter dem Ende des Tages",en:"{day}: end time {slot} comes after the day has ended"},"{day}: the last end time must be {end}":{de:"{day}: die letzte Endzeit muss {end} sein",en:"{day}: the last end time must be {end}"},"A time between 00:00 and {end}":{de:"Eine Zeit zwischen 00:00 und {end}",en:"A time between 00:00 and {end}"},Time:{de:"Zeit",en:"Time"},Level:{de:"Stufe",en:"Level"},Condition:{de:"Bedingung",en:"Condition"},"Astro offset":{de:"Astro-Versatz",en:"Astro offset"},"Target channels":{de:"Zielkanäle",en:"Target channels"},Unused:{de:"Unbenutzt",en:"Unused"},"No weekday chosen - the slot does nothing":{de:"Kein Wochentag gewählt - der Abschnitt tut nichts",en:"No weekday chosen - the slot does nothing"},"Blind calibration":{de:"Jalousie-Kalibrierung",en:"Blind calibration"},"The running times of a reference run, in plain seconds next to the value the device stores.":{de:"Die Laufzeiten einer Referenzfahrt, in Sekunden neben dem Wert, den das Gerät speichert.",en:"The running times of a reference run, in plain seconds next to the value the device stores."},"Named options":{de:"Benannte Auswahlen",en:"Named options"},"These values have names in the CCU string table that the description does not carry.":{de:"Diese Werte haben Namen in der CCU-Zeichenkettentabelle, die die Beschreibung nicht mitliefert.",en:"These values have names in the CCU string table that the description does not carry."},Rooms:{de:"Räume",en:"Rooms"},Functions:{de:"Gewerke",en:"Functions"},Room:{de:"Raum",en:"Room"},Function:{de:"Gewerk",en:"Function"},"All rooms":{de:"Alle Räume",en:"All rooms"},"All functions":{de:"Alle Gewerke",en:"All functions"},"Assign to room":{de:"Raum zuordnen",en:"Assign to room"},"Assign to function":{de:"Gewerk zuordnen",en:"Assign to function"},"Rooms and functions":{de:"Räume und Gewerke",en:"Rooms and functions"},"Filter rooms":{de:"Räume filtern",en:"Filter rooms"},"Filter functions":{de:"Gewerke filtern",en:"Filter functions"},"No match":{de:"Kein Treffer",en:"No match"},"New room…":{de:"Neuer Raum…",en:"New room…"},"New function…":{de:"Neues Gewerk…",en:"New function…"},"Name of the new room":{de:"Name des neuen Raums",en:"Name of the new room"},"Name of the new function":{de:"Name des neuen Gewerks",en:"Name of the new function"},"Not saved: {message}":{de:"Nicht gespeichert: {message}",en:"Not saved: {message}"},"The name was not saved":{de:"Der Name wurde nicht gespeichert",en:"The name was not saved"},"{count} changes were not saved":{de:{one:"Eine Änderung wurde nicht gespeichert. Sie ist markiert; Übernehmen versucht sie erneut.",other:"{count} Änderungen wurden nicht gespeichert. Sie sind markiert; Übernehmen versucht sie erneut."},en:{one:"One change was not saved. It is marked; Apply tries it again.",other:"{count} changes were not saved. They are marked; Apply tries them again."}},"{count} rows selected":{de:{one:"Eine Zeile ausgewählt",other:"{count} Zeilen ausgewählt"},en:{one:"One row selected",other:"{count} rows selected"}},"Select one or more rows":{de:"Eine oder mehrere Zeilen auswählen",en:"Select one or more rows"},"The store does not take writes":{de:"Der Speicher nimmt keine Änderungen an",en:"The store does not take writes"},"No store connected":{de:"Kein Speicher verbunden",en:"No store connected"},"No rooms yet":{de:"Noch keine Räume",en:"No rooms yet"},"No functions yet":{de:"Noch keine Gewerke",en:"No functions yet"},Add:{de:"Anlegen",en:"Add"},"Add below":{de:"Darunter anlegen",en:"Add below"},Move:{de:"Verschieben",en:"Move"},"Move to":{de:"Verschieben nach",en:"Move to"},"Top level":{de:"Oberste Ebene",en:"Top level"},"New name":{de:"Neuer Name",en:"New name"},"Delete and detach":{de:"Löschen und Zuordnungen entfernen",en:"Delete and detach"},"Still assigned here - the assignments are removed with the node:":{de:"Noch zugeordnet - die Zuordnungen werden mit dem Knoten entfernt:",en:"Still assigned here - the assignments are removed with the node:"},"Nothing is assigned here":{de:"Hier ist nichts zugeordnet",en:"Nothing is assigned here"},"A floor is a room with rooms below it: add one, then add rooms below it.":{de:"Eine Etage ist ein Raum mit Räumen darunter: erst die Etage anlegen, dann Räume darunter.",en:"A floor is a room with rooms below it: add one, then add rooms below it."},"Rooms are a flat list on this system: no floors, no room below another.":{de:"Räume sind auf diesem System eine flache Liste: keine Etagen, kein Raum unter einem anderen.",en:"Rooms are a flat list on this system: no floors, no room below another."},Metadata:{de:"Metadaten",en:"Metadata"},Taxonomy:{de:"Taxonomie",en:"Taxonomy"},"New taxonomy":{de:"Neue Taxonomie",en:"New taxonomy"},"No taxonomies yet":{de:"Noch keine Taxonomien",en:"No taxonomies yet"},"{count} taxonomies":{de:{one:"{count} Taxonomie",other:"{count} Taxonomien"},en:{one:"{count} taxonomy",other:"{count} taxonomies"}},"{count} rooms":{de:{one:"{count} Raum",other:"{count} Räume"},en:{one:"{count} room",other:"{count} rooms"}},"{count} functions":{de:{one:"{count} Gewerk",other:"{count} Gewerke"},en:{one:"{count} function",other:"{count} functions"}},"Select a row":{de:"Eine Zeile auswählen",en:"Select a row"},"Select a node":{de:"Einen Knoten auswählen",en:"Select a node"},"Select a taxonomy or a node":{de:"Eine Taxonomie oder einen Knoten auswählen",en:"Select a taxonomy or a node"},"Names and rooms":{de:"Namen und Räume",en:"Names and rooms"},"Where names, rooms and functions are kept":{de:"Wo Namen, Räume und Gewerke gespeichert sind",en:"Where names, rooms and functions are kept"},Store:{de:"Speicher",en:"Store"},Automatic:{de:"Automatisch",en:"Automatic"},"This profile":{de:"Dieses Profil",en:"This profile"},"API token":{de:"API-Token",en:"API token"},"Only needed off the box":{de:"Nur nötig, wenn nicht auf der Box",en:"Only needed off the box"},"From the pairing, or the system's API tokens page":{de:"Aus der Kopplung oder von der API-Token-Seite des Systems",en:"From the pairing, or the system's API tokens page"},"Test connection":{de:"Verbindung testen",en:"Test connection"},"Testing…":{de:"Test läuft…",en:"Testing…"},"Nothing answers at {url} ({reason})":{de:"Unter {url} antwortet nichts ({reason})",en:"Nothing answers at {url} ({reason})"},"macOS may be blocking the local network: allow Homematic Manager under System Settings → Privacy & Security → Local Network, then quit and restart it":{de:"macOS blockiert womöglich das lokale Netzwerk: Homematic Manager unter Systemeinstellungen → Datenschutz & Sicherheit → Lokales Netzwerk erlauben, dann die App beenden und neu starten",en:"macOS may be blocking the local network: allow Homematic Manager under System Settings → Privacy & Security → Local Network, then quit and restart it"},"The certificate of {url} is not trusted ({code}); it can be trusted under Names and rooms":{de:"Dem Zertifikat von {url} wird nicht vertraut ({code}); unter Namen und Räume kann es vertraut werden",en:"The certificate of {url} is not trusted ({code}); it can be trusted under Names and rooms"},"A CCU or OpenCCU at {url}: XML-RPC with callbacks":{de:"Eine CCU oder OpenCCU unter {url}: XML-RPC mit Rückrufen",en:"A CCU or OpenCCU at {url}: XML-RPC with callbacks"},"openccu-lite ({implementation}) at {url}: lite-rpc, no callbacks":{de:"openccu-lite ({implementation}) unter {url}: lite-rpc, keine Rückrufe",en:"openccu-lite ({implementation}) at {url}: lite-rpc, no callbacks"},"no API token: pair the application with the system":{de:"kein API-Token: die Anwendung mit dem System koppeln",en:"no API token: pair the application with the system"},"the API token is refused":{de:"das API-Token wird abgelehnt",en:"the API token is refused"},"the API token reads names only: pair for devices and values":{de:"das API-Token liest nur Namen: für Geräte und Werte koppeln",en:"the API token reads names only: pair for devices and values"},"the API token is accepted":{de:"das API-Token wird akzeptiert",en:"the API token is accepted"},"None: an openccu-lite system does not call a remote client back; the events come from its stream.":{de:"Keiner: ein openccu-lite-System ruft einen entfernten Client nicht zurück; die Ereignisse kommen aus seinem Stream.",en:"None: an openccu-lite system does not call a remote client back; the events come from its stream."},Pair:{de:"Koppeln",en:"Pair"},"Asking the system…":{de:"Das System wird gefragt…",en:"Asking the system…"},"Approve it on the system's Status page: the same code is shown there.":{de:"Auf der Statusseite des Systems bestätigen: dort wird derselbe Code angezeigt.",en:"Approve it on the system's Status page: the same code is shown there."},"Paired: the token is in the field above. Save to connect.":{de:"Gekoppelt: das Token steht im Feld oben. Speichern verbindet.",en:"Paired: the token is in the field above. Save to connect."},"Asks an openccu-lite system for an API token: a code appears here and on its Status page, where an administrator approves it. The token replaces the one above, and the certificate is trusted from then on.":{de:"Fragt ein openccu-lite-System nach einem API-Token: ein Code erscheint hier und auf seiner Statusseite, wo ihn ein Administrator bestätigt. Das Token ersetzt das oben, und dem Zertifikat wird von da an vertraut.",en:"Asks an openccu-lite system for an API token: a code appears here and on its Status page, where an administrator approves it. The token replaces the one above, and the certificate is trusted from then on."},Reachable:{de:"Erreichbar",en:"Reachable"},Unreachable:{de:"Nicht erreichbar",en:"Unreachable"},"Read-only":{de:"Nur lesen",en:"Read-only"},Writable:{de:"Schreibbar",en:"Writable"},ro:{de:"ro",en:"ro"},"default {value}":{de:"Standard {value}",en:"default {value}"},"revision {revision}, {count} objects":{de:"Revision {revision}, {count} Objekte",en:"revision {revision}, {count} objects"}},b1={...Th,...g1},Cd=["de","en"],Ul="en",_1={de:"Deutsch",en:"English",tr:"Türkçe"};function Rh(){if(typeof navigator>"u")return[];const r=navigator.languages;return r!==void 0&&r.length>0?r:navigator.language===""?[]:[navigator.language]}function E1(r=Rh()){for(const e of r){const n=e.toLowerCase().split("-")[0],a=Cd.find(s=>s===n);if(a!==void 0)return a}return Ul}function y1(r,e=Rh()){return(r===void 0||r==="auto"?void 0:Cd.find(a=>a===r))??E1(e)}class S1{#e=N(Ul);#n=c(()=>p1(t(this.#e),{catalogue:b1}));constructor(e=Ul){u(this.#e,e,!0)}get language(){return t(this.#e)}set language(e){u(this.#e,e,!0)}t=(e,n={},a)=>t(this.#n).t(e,n,a);has=e=>t(this.#n).has(e)}var k1=_("<option> </option>"),w1=_('<select class="hmm-select hmm-language svelte-oq8zre"><option> </option><!></select>');function A1(r,e){dt(e,!0);let n=H(e,"language",15,"auto"),a=H(e,"label",3,"Language"),s=H(e,"autoLabel",3,"Browser language"),i=H(e,"onchange",3,void 0),o=H(e,"testId",3,void 0);var l=w1(),f=w(l),p=m(f,!0);f.value=f.__value="auto";var b=d(f);je(b,16,()=>Cd,k=>k,(k,y)=>{var S=k1(),T=m(S,!0),I={};E(()=>{h(T,_1[y]),I!==(I=y)&&(S.value=(S.__value=I)??"")}),v(k,S)});var g;qt(l),E(()=>{R(l,"aria-label",a()),R(l,"title",a()),R(l,"data-testid",o()),h(p,s()),g!==(g=n())&&(l.value=(l.__value=g)??"",Ln(l,g))}),ne("change",l,k=>{n(k.currentTarget.value),i()?.(n())}),v(r,l),ct()}St(["change"]);function T1(r,e){const n=e.trim().toLowerCase();return n===""?[...r]:r.filter(a=>[a.label,a.hint,a.description,a.value].some(s=>s!==void 0&&s.toLowerCase().includes(n)))}function zc(r,e,n){for(let a=e+n;a>=0&&a<r.length;a+=n)if(r[a]?.disabled!==!0)return a;return e}var R1=_('<button type="button" class="hmm-multiselect-link svelte-vbwhwd"> </button> <button type="button" class="hmm-multiselect-link svelte-vbwhwd"> </button>',1),x1=_('<span class="hmm-multiselect-check" aria-hidden="true"> </span>'),I1=_('<span class="hmm-multiselect-hint svelte-vbwhwd"> </span>'),D1=_('<span class="hmm-multiselect-description svelte-vbwhwd"> </span>'),N1=_('<span class="hmm-multiselect-lines svelte-vbwhwd"><span class="hmm-multiselect-line svelte-vbwhwd"><span class="hmm-multiselect-label svelte-vbwhwd"> </span> <!></span> <!></span>'),C1=_("<span> </span>"),P1=_('<li><button type="button" role="option" tabindex="-1"><!> <!></button></li>'),M1=_('<li class="hmm-multiselect-empty svelte-vbwhwd">—</li>'),O1=_('<div class="hmm-multiselect-menu svelte-vbwhwd"><div class="hmm-multiselect-head svelte-vbwhwd"><input class="hmm-input hmm-multiselect-filter svelte-vbwhwd" type="search" autocomplete="off"/> <!></div> <ul class="hmm-multiselect-list svelte-vbwhwd" role="listbox"><!> <!></ul></div>'),L1=_('<div><button type="button" class="hmm-button hmm-multiselect-button svelte-vbwhwd" aria-haspopup="listbox"><span class="hmm-multiselect-text svelte-vbwhwd"> </span> <span class="hmm-multiselect-arrow" aria-hidden="true">▾</span></button> <!></div>');function di(r,e){dt(e,!0);let n=H(e,"selected",31,()=>He([])),a=H(e,"multiple",3,!0),s=H(e,"placeholder",3,""),i=H(e,"filterLabel",3,"Filter"),o=H(e,"checkAllLabel",3,"Check all"),l=H(e,"uncheckAllLabel",3,"Uncheck all"),f=H(e,"summary",3,void 0),p=H(e,"disabled",3,!1),b=H(e,"label",3,void 0),g=H(e,"onchange",3,void 0),k=H(e,"testId",3,void 0),y=H(e,"inline",3,!1),S=N(!1),T=N(""),I=N(void 0),C=N(void 0),D=N(void 0),x=N(0);const P=`hmm-multiselect-${Math.random().toString(36).slice(2,8)}`,K=c(()=>new Set(n())),X=c(()=>T1(e.options,t(T))),ie=c(()=>t(S)&&t(X)[t(x)]?`${P}-${t(x)}`:void 0),ue=c(()=>n().length===0?s():f()?f()(n(),e.options):n().length===1?e.options.find(F=>F.value===n()[0])?.label??n()[0]??"":`${n().length}`);function fe(F){n(F),g()?.(F)}function B(){const F=t(X).findIndex(W=>t(K).has(W.value));u(x,F<0?0:F,!0),u(S,!0)}function re(F){u(S,!1),F&&t(C)?.focus()}function de(F){if(F.disabled!==!0){if(!a()){fe([F.value]),re(!0);return}fe(t(K).has(F.value)?n().filter(W=>W!==F.value):[...n(),F.value])}}function ee(){fe(t(X).filter(F=>F.disabled!==!0).map(F=>F.value))}function ae(){fe([])}function Y(F){t(S)&&t(I)&&F.target instanceof Node&&!t(I).contains(F.target)&&u(S,!1)}st(()=>{t(T),u(x,0)}),st(()=>{if(!t(S)||!t(D))return;const F=t(D).querySelector(`#${P}-${t(x)}`);typeof F?.scrollIntoView=="function"&&F.scrollIntoView({block:"nearest"})});function Z(F){switch(F.key){case"ArrowDown":F.preventDefault(),u(x,zc(t(X),t(x),1),!0);break;case"ArrowUp":F.preventDefault(),u(x,zc(t(X),t(x),-1),!0);break;case"Enter":{F.preventDefault();const W=t(X)[t(x)];W&&de(W);break}case"Escape":F.preventDefault(),F.stopPropagation(),re(!0);break;case"Tab":re(!1);break}}function te(F){!t(S)&&(F.key==="ArrowDown"||F.key==="ArrowUp")&&(F.preventDefault(),B())}function Re(F){F.key==="Escape"&&t(S)&&re(!0)}function J(F){return!!F.hint||!!F.description}function ye(F){F.focus()}var xe=L1();xr("mousedown",cs,Y),xr("keydown",cs,Re);let ge;var V=w(xe),pe=w(V),ve=m(pe,!0);cn(V,F=>u(C,F),()=>t(C));var Q=d(V,2);{var oe=F=>{var W=O1(),O=w(W),z=w(O);go(()=>An(z,()=>t(T),L=>u(T,L))),Lf(z,L=>ye?.(L));var ce=d(z,2);{var me=L=>{var A=R1(),M=De(A),he=m(M,!0),Te=d(M,2),Pe=m(Te,!0);E(()=>{h(he,o()),h(Pe,l())}),ne("click",M,ee),ne("click",Te,ae),v(L,A)};$(ce,L=>{a()&&L(me)})}var be=d(O,2),Ee=w(be);je(Ee,19,()=>t(X),L=>L.value,(L,A,M)=>{var he=P1(),Te=w(he);let Pe;var Ve=w(Te);{var Ye=j=>{var U=x1(),Ne=m(U,!0);E(Le=>h(Ne,Le),[()=>t(K).has(t(A).value)?"☑":"☐"]),v(j,U)};$(Ve,j=>{a()&&j(Ye)})}var ot=d(Ve,2);{var Je=j=>{var U=N1(),Ne=w(U),Le=w(Ne),ze=m(Le,!0),_e=d(Le,2);{var Ie=Oe=>{var qe=I1(),Ke=m(qe,!0);E(()=>h(Ke,t(A).hint)),v(Oe,qe)};$(_e,Oe=>{t(A).hint&&Oe(Ie)})}var Ce=d(Ne,2);{var Fe=Oe=>{var qe=D1(),Ke=m(qe,!0);E(()=>{R(qe,"title",t(A).description),h(Ke,t(A).description)}),v(Oe,qe)};$(Ce,Oe=>{t(A).description&&Oe(Fe)})}E(Oe=>{R(Ne,"title",Oe),h(ze,t(A).label)},[()=>[t(A).label,t(A).hint].filter(Boolean).join(" ")]),v(j,U)},Se=c(()=>J(t(A))),we=j=>{var U=C1(),Ne=m(U,!0);E(()=>h(Ne,t(A).label)),v(j,U)};$(ot,j=>{t(Se)?j(Je):j(we,-1)})}E((j,U,Ne)=>{R(Te,"id",`${P}-${t(M)}`),Pe=yt(Te,1,"hmm-multiselect-option svelte-vbwhwd",null,Pe,{"hmm-multiselect-two-lines":j,"hmm-multiselect-selected":U,"hmm-multiselect-highlight":t(M)===t(x)}),R(Te,"aria-selected",Ne),Te.disabled=t(A).disabled===!0},[()=>J(t(A)),()=>t(K).has(t(A).value),()=>t(K).has(t(A).value)]),ne("mousedown",Te,j=>j.preventDefault()),ne("mousemove",Te,()=>u(x,t(M),!0)),ne("click",Te,()=>de(t(A))),v(L,he)});var le=d(Ee,2);{var G=L=>{var A=M1();v(L,A)};$(le,L=>{t(X).length===0&&L(G)})}cn(be,L=>u(D,L),()=>t(D)),E(()=>{R(z,"placeholder",i()),R(z,"aria-label",i()),R(z,"aria-controls",`${P}-list`),R(z,"aria-activedescendant",t(ie)),R(be,"aria-multiselectable",a()),R(be,"id",`${P}-list`),R(be,"aria-label",b())}),ne("keydown",z,Z),v(F,W)};$(Q,F=>{t(S)&&F(oe)})}cn(xe,F=>u(I,F),()=>t(I)),E(()=>{ge=yt(xe,1,"hmm-multiselect svelte-vbwhwd",null,ge,{"hmm-multiselect-inline":y()}),R(xe,"data-testid",k()),R(V,"aria-expanded",t(S)),R(V,"aria-controls",`${P}-list`),R(V,"aria-label",b()),V.disabled=p(),h(ve,t(ue))}),ne("click",V,()=>t(S)?re(!0):B()),ne("keydown",V,te),v(r,xe),ct()}St(["click","keydown","mousedown","mousemove"]);async function xh(r,e,n){try{const a=await r.request("rpc.call",e,"getSuppressedServiceMessages",[n]);return Array.isArray(a)?a.filter(s=>typeof s=="string"):[]}catch{return}}async function Ih(r,e,n,a,s){await r.request("rpc.call",e,"suppressServiceMessages",[n,a,s])}function F1(r,e,n){return`suppressServiceMessages(${r}, ${JSON.stringify(e)}, ${n?"true":"false"})`}function ci(r,e=""){return/hmip/i.test(r)||/hmip/i.test(e)}const Dh="macOS may be blocking the local network: allow Homematic Manager under System Settings → Privacy & Security → Local Network, then quit and restart it",G1=/\b(EHOSTUNREACH|EHOSTDOWN)\b/,U1=new Set(["timeout","EHOSTUNREACH","EHOSTDOWN"]);function B1(r,e){return r==="darwin"&&e!==void 0&&G1.test(e)}function H1(r,e){return r==="darwin"&&e!==void 0&&U1.has(e)}function V1(r,e){return[...new Set([...cb,...e.map(n=>n.name).filter(n=>n!==""),...r])]}function Bl(r,e,n){return n!==""&&!_d(n)&&r.every((a,s)=>s===e||a.name!==n)}function z1(r,e,n,a,s,i){const o=Bl(e,n,a),l=o?r.includes(a):i,f=[...r],p=o?f.indexOf(a):-1;return p>=0&&f.splice(p,1),l&&Bl(e,n,s)&&!f.includes(s)&&f.splice(p>=0?p:f.length,0,s),{interfaces:f,ticked:l}}function j1(r,e,n){const a=e[n]?.name??"";return Bl(e,n,a)?r.filter(s=>s!==a):[...r]}const W1=[9e5,18e5,36e5,144e5,0],Hl="default";function K1(r,e){const n=W1.filter(s=>s!==r);e!==void 0&&e!==r&&!n.includes(e)&&n.push(e);const a=n.filter(s=>s>0).sort((s,i)=>s-i);return n.includes(0)?[...a,0]:a}function Y1(r,e){return r===void 0||r===e?Hl:String(r)}function q1(r){return r>=36e5&&r%36e5===0?{unit:"hours",count:r/36e5}:r%6e4===0?{unit:"minutes",count:r/6e4}:{unit:"seconds",count:Math.round(r/1e3)}}var $1=_('<button type="button" class="hmm-button" data-testid="auto-ack-only-new"> </button> <button type="button" class="hmm-button" data-testid="auto-ack-existing"> </button>',1),X1=_('<p class="hmm-autoack-question svelte-2iq8s1" data-testid="auto-ack-question-text"> </p> <p class="hmm-autoack-help svelte-2iq8s1"> </p>',1);function Q1(r,e){dt(e,!0);let n=H(e,"open",15,!1);const s=Bt().i18n.t;function i(o){n(!1),o()}{const o=f=>{var p=$1(),b=De(p),g=m(b,!0),k=d(b,2),y=m(k,!0);E((S,T)=>{h(g,S),h(y,T)},[()=>s("Only new ones"),()=>s("Acknowledge existing")]),ne("click",b,()=>i(e.onlynew)),ne("click",k,()=>i(e.onacknowledge)),v(f,p)};let l=c(()=>s("Acknowledge the messages already in the list?"));Tn(r,{get title(){return t(l)},width:"480px",get onclose(){return e.oncancel},testId:"auto-ack-question",get open(){return n()},set open(f){n(f)},buttons:o,children:(f,p)=>{var b=X1(),g=De(b),k=m(g,!0),y=d(g,2),S=m(y,!0);E((T,I)=>{h(k,T),h(S,I)},[()=>s("{count} STICKY_UNREACH messages are already listed. New ones are acknowledged automatically from now on.",{},e.count),()=>s("Each acknowledgement is a write to the device. Afterwards the list no longer shows which devices were away; the unreach counter in the RSSI tab keeps that.")]),v(f,b)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click"]);var Z1=_('<span class="hmm-config-busy svelte-1xydm3c" role="status" aria-live="polite" data-testid="config-saving"><span class="hmm-config-busy-spinner svelte-1xydm3c" aria-hidden="true" data-testid="config-saving-spinner"></span> </span>'),J1=_('<span class="hmm-config-error svelte-1xydm3c" data-testid="config-error"> </span>'),eE=_('<button type="button" class="hmm-button hmm-config-test svelte-1xydm3c" data-testid="config-test"> </button> <!> <!> <button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="config-save"> </button>',1),tE=_('<small data-testid="config-test-result"> </small>'),js=_("<option> </option>"),nE=_('<small class="hmm-config-help svelte-1xydm3c" data-testid="config-callback-lite"> </small>'),rE=_('<span class="hmm-config-warning svelte-1xydm3c" role="alert" data-testid="config-callback-ip-warning"><span> </span> <button type="button" class="hmm-button" data-testid="config-callback-ip-use-auto"> </button></span>'),aE=_('<div class="hmm-config-grid svelte-1xydm3c"><label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><select class="hmm-select hmm-config-wide svelte-1xydm3c" data-testid="config-callback-ip"><option data-testid="config-callback-ip-auto"> </option><!><!></select> <small class="hmm-config-help svelte-1xydm3c" data-testid="config-callback-ip-hint"> </small> <!></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-narrow svelte-1xydm3c" type="number" min="0" data-testid="config-callback-xmlrpc-port"/> <small class="hmm-config-help svelte-1xydm3c" data-testid="config-callback-xmlrpc-port-hint"> </small></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-narrow svelte-1xydm3c" type="number" min="0" data-testid="config-callback-binrpc-port"/> <small class="hmm-config-help svelte-1xydm3c" data-testid="config-callback-binrpc-port-hint"> </small></span></label></div>'),sE=_('<button type="button" class="hmm-button" data-testid="config-trust-ca"> </button>'),iE=_('<div class="hmm-config-row svelte-1xydm3c" data-testid="config-certificate"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><small class="hmm-config-warning svelte-1xydm3c" data-testid="config-certificate-problem"> </small> <small class="hmm-config-help hmm-config-certificate svelte-1xydm3c" data-testid="config-certificate-details"> </small> <span class="hmm-config-buttons svelte-1xydm3c"><button type="button" class="hmm-button" data-testid="config-trust-certificate"> </button> <!></span> <small class="hmm-config-help svelte-1xydm3c"> </small></span></div>'),oE=_('<div class="hmm-config-row svelte-1xydm3c" data-testid="config-trusted"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><small class="hmm-config-help svelte-1xydm3c" data-testid="config-trusted-count"> </small> <button type="button" class="hmm-button" data-testid="config-forget-trust"> </button></span></div>'),lE=_('<button type="button" class="hmm-button" data-testid="config-pairing-cancel"> </button>'),dE=_('<button type="button" class="hmm-button" data-testid="config-pair"> </button>'),cE=_('<span class="hmm-config-buttons svelte-1xydm3c" data-testid="config-pairing"><!></span>'),uE=_('<span class="hmm-config-code svelte-1xydm3c" data-testid="config-pairing-code"> </span> <small class="hmm-config-help svelte-1xydm3c"> </small>',1),fE=_('<small class="hmm-config-help svelte-1xydm3c" data-testid="config-pairing-requesting"> </small>'),hE=_('<small class="hmm-config-note svelte-1xydm3c" data-testid="config-pairing-done"> </small>'),mE=_('<small class="hmm-config-warning svelte-1xydm3c" data-testid="config-pairing-failed"> </small>'),vE=_('<input type="checkbox" disabled="" data-testid="config-rega"/> <small class="hmm-config-help svelte-1xydm3c"> </small>',1),pE=_('<input type="checkbox" data-testid="config-rega"/> <small class="hmm-config-help svelte-1xydm3c"> </small>',1),gE=_('<label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox" data-testid="config-auto-confirm-inbox"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label>'),bE=_('<small class="hmm-config-note svelte-1xydm3c" data-testid="config-auto-ack-existing-note"> </small>'),_E=_('<select class="hmm-select" disabled="" data-testid="config-idle"><option> </option></select> <small class="hmm-config-help svelte-1xydm3c" data-testid="config-idle-pinned"> </small>',1),EE=_('<select class="hmm-select" data-testid="config-idle"><option> </option><!></select> <small class="hmm-config-help svelte-1xydm3c"> </small>',1),yE=_('<label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><!></span></label>'),SE=_('<span class="hmm-config-problem svelte-1xydm3c"> </span>'),kE=_('<div class="hmm-config-extra-row svelte-1xydm3c"><input class="hmm-input"/> <input class="hmm-input"/> <input class="hmm-input" type="number"/> <select class="hmm-select"><option>xmlrpc</option><option>binrpc</option></select> <input class="hmm-input"/> <button type="button" class="hmm-button">✕</button> <!></div>'),wE=_('<p data-testid="config-host-info" class="svelte-1xydm3c"> <span class="hmm-mono"> </span></p>'),AE=_('<div class="hmm-config svelte-1xydm3c"><div class="hmm-config-columns svelte-1xydm3c"><div class="hmm-config-column svelte-1xydm3c"><section class="hmm-config-section"><h3 class="hmm-config-title svelte-1xydm3c"> </h3> <div class="hmm-config-grid svelte-1xydm3c"><label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-wide svelte-1xydm3c" data-testid="config-host"/> <small class="hmm-config-help svelte-1xydm3c"> </small> <!></span></label> <div class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><span class="hmm-config-inline svelte-1xydm3c"><select class="hmm-select hmm-config-wide svelte-1xydm3c" data-testid="config-discovered"><option> </option><!></select> <button type="button" class="hmm-button" data-testid="config-discover"> </button></span> <small class="hmm-config-help svelte-1xydm3c"> </small></span></div> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox"/></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-wide svelte-1xydm3c"/></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-wide svelte-1xydm3c" type="password"/></span></label></div></section> <section class="hmm-config-section"><h3 class="hmm-config-title svelte-1xydm3c"> </h3> <!></section> <section class="hmm-config-section" data-testid="config-meta"><h3 class="hmm-config-title svelte-1xydm3c"> </h3> <div class="hmm-config-grid svelte-1xydm3c"><label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><select class="hmm-select" data-testid="config-meta-provider"></select> <small class="hmm-config-help svelte-1xydm3c" data-testid="config-meta-state"> </small></span></label> <!> <!> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><span class="hmm-config-inline svelte-1xydm3c"><input class="hmm-input hmm-config-wide svelte-1xydm3c" type="password" autocomplete="off" data-testid="config-meta-token"/> <!></span> <small class="hmm-config-help svelte-1xydm3c"> </small> <!></span></label></div></section></div> <div class="hmm-config-column svelte-1xydm3c"><section class="hmm-config-section"><h3 class="hmm-config-title svelte-1xydm3c"> </h3> <div class="hmm-config-grid svelte-1xydm3c"><div class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><!> <small class="hmm-config-help svelte-1xydm3c" data-testid="config-interfaces-hint"> </small></span></div> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label></div></section> <section class="hmm-config-section"><h3 class="hmm-config-title svelte-1xydm3c">ReGa</h3> <div class="hmm-config-grid svelte-1xydm3c"><label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><!></span></label> <!></div></section> <section class="hmm-config-section"><h3 class="hmm-config-title svelte-1xydm3c"> </h3> <div class="hmm-config-grid svelte-1xydm3c"><label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><!></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-narrow svelte-1xydm3c" type="number" min="0"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox" data-testid="config-auto-ack-unreach"/> <small class="hmm-config-help svelte-1xydm3c"> </small> <!></span></label> <!> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input class="hmm-input hmm-config-wide svelte-1xydm3c"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label> <label class="hmm-config-row svelte-1xydm3c"><span class="hmm-config-label svelte-1xydm3c"> </span> <span class="hmm-config-field svelte-1xydm3c"><input type="checkbox" data-testid="config-clear-cache"/> <small class="hmm-config-help svelte-1xydm3c"> </small></span></label></div></section></div></div> <fieldset class="hmm-config-extra svelte-1xydm3c"><legend class="svelte-1xydm3c"> </legend> <!> <button type="button" class="hmm-button" data-testid="config-extra-add"> </button></fieldset> <div class="hmm-config-info svelte-1xydm3c" data-testid="config-info"><p class="svelte-1xydm3c"> <!> · AGPL-3.0-or-later · © 2014-2026 Sebastian "Hobbyquaker" Raff</p> <!> <p class="svelte-1xydm3c">HomeMatic und BidCoS sind eingetragene Warenzeichen der eQ-3 AG.</p></div></div>'),TE=_("<!> <!>",1);function RE(r,e){dt(e,!0);let n=H(e,"open",15,!1);const a=Bt(),s=a.i18n.t;let i=N(void 0),o=N(!1),l=N(!1),f=N(!1),p=N(!1),b=N(!1),g=N(void 0),k=N(""),y=N(!1);const S=c(()=>a.app.config?.connection),T=c(()=>a.app.config?.callbackDefaultPorts),I=c(()=>a.app.config?.callbackPinned);function C(_e){return t(I)?.[_e]===!0}function D(_e){return s("Set at start ({option})",{option:ob(_e)})}const x=c(()=>a.app.config?.idleUnsubscribe);function P(_e){if(_e===0)return s("Never unsubscribe");const{unit:Ie,count:Ce}=q1(_e);return Ie==="hours"?s("{count} hours",{},Ce):Ie==="minutes"?s("{count} minutes",{},Ce):s("{count} seconds",{},Ce)}function K(_e){t(i)&&(_e===Hl?delete t(i).idleUnsubscribeMs:t(i).idleUnsubscribeMs=Number(_e))}const X=c(()=>t(l)||t(i)===void 0||t(S)===void 0||JSON.stringify(Ui(t(i)))!==JSON.stringify(t(S))||t(o)!==(t(S).auth!==void 0));st(()=>{if(n()&&t(i)===void 0){a.app.saveError="",u(oe,!1),u(F,!1);const _e=a.app.config?.connection;u(i,_e?structuredClone(Ui(_e)):{host:"",interfaces:[...ub],autoDetect:!0,extraInterfaces:[],tls:!1,rega:!0,callback:{ip:"",xmlrpcPort:0,binrpcPort:0},language:a.app.languageChoice,writePaceMs:250,rpcLogFolder:""},!0),u(o,t(i).auth!==void 0);const{extraInterfaces:Ie,interfaces:Ce}=t(i);ue=Ie.map(Fe=>Ce.includes(Fe.name))}if(!n()){u(i,void 0);const _e=a.app.pairing?.state;(_e==="requesting"||_e==="code")&&a.app.cancelPairing(),u(g,void 0),u(k,""),u(y,!1)}});const ie=c(()=>V1(t(i)?.interfaces??[],t(i)?.extraInterfaces??[]).map(_e=>({value:_e,label:_e})));let ue=[];const fe=c(()=>a.app.config?.localAddresses??[]);let B;st(()=>{if(!n()||t(i)===void 0){B=void 0;return}const _e=t(i).host.trim();if(_e===B)return;const Ce=setTimeout(()=>{B=_e,a.app.loadCallbackAddresses(_e)},B===void 0?0:400);return()=>{clearTimeout(Ce)}});const re=c(()=>a.app.callbackAddresses!==void 0&&a.app.callbackAddresses.host===t(i)?.host.trim()?a.app.callbackAddresses:void 0),de=c(()=>{if(t(re)===void 0)return s("Automatic");const{address:_e,reason:Ie}=t(re).auto,Ce={subnet:s("in the CCU's network"),route:s("on the route to the CCU"),loopback:s("the CCU is on this machine"),first:s("no better match")}[Ie];return s("Automatic ({address}, {why})",{address:_e,why:Ce})}),ee=c(()=>t(re)===void 0?t(fe).map(_e=>({address:_e,label:_e})):t(re).addresses.map(_e=>{const Ie=[...t(re).hostAddress!==void 0&&!_e.inSubnet?[s("not in the CCU's network")]:[],..._e.linkLocal===!0?[s("link-local")]:[]];return{address:_e.address,label:Ie.length===0?_e.address:`${_e.address} (${Ie.join(", ")})`}})),ae=c(()=>{const _e=t(i)?.callback.ip??"";if(_e===""||t(re)===void 0||t(re).keepsConfigured===!0||C("ip")||t(i)?.local===!0||_e==="127.0.0.1")return"";const Ie=t(re).addresses.find(Ce=>Ce.address===_e);return Ie===void 0?s("The callback address {address} is not an address of this machine; {auto} is used instead",{address:_e,auto:t(re).auto.address}):t(re).hostAddress!==void 0&&!Ie.inSubnet&&_e!==t(re).auto.address?s("The callback address {address} is not in the CCU's network; the CCU may not reach it and send no events",{address:_e}):""}),Y=c(()=>a.app.config?.discovered??[]),Z=c(()=>a.app.config?.version??""),te=c(()=>a.meta.manifest),Re=c(()=>a.host.info),J=c(()=>t(te)===void 0?"":`${t(te).sources.map(_e=>`${_e.name} ${_e.version}`).join(", ")} (${t(te).generatedAt.slice(0,10)})`),ye=c(()=>t(Re)===void 0?"":`Electron ${t(Re).electron} · Chromium ${t(Re).chrome} · Node ${t(Re).node} · ${t(Re).platform} ${t(Re).arch}`);async function xe(){if(!t(i))return;u(f,!0);const _e=le(),Ie=await a.app.save(_e,_e.autoAckStickyUnreach===!0&&t(F)?{acknowledgeExisting:!0}:void 0);Ie&&t(l)&&(await a.app.clearCaches(),u(l,!1)),u(f,!1),Ie&&(a.app.setLanguage(_e.language??"auto"),a.i18n.language=a.app.language,n(!1),await a.start())}async function ge(){u(p,!0),await a.app.discover(),u(p,!1)}function V(){if(!t(i))return;const _e={name:"",host:"",port:2001,protocol:"xmlrpc",path:""};t(i).extraInterfaces=[...t(i).extraInterfaces,_e],ue=[...ue,!0]}function pe(_e,Ie){const Ce=t(i)?.extraInterfaces[_e];if(!t(i)||!Ce||Ce.name===Ie)return;const Fe=z1(t(i).interfaces,t(i).extraInterfaces,_e,Ce.name,Ie,ue[_e]??!1);ue[_e]=Fe.ticked,t(i).extraInterfaces[_e]={...Ce,name:Ie},t(i).interfaces=Fe.interfaces}function ve(_e){t(i)&&(t(i).interfaces=j1(t(i).interfaces,t(i).extraInterfaces,_e),t(i).extraInterfaces=t(i).extraInterfaces.filter((Ie,Ce)=>Ce!==_e),ue=ue.filter((Ie,Ce)=>Ce!==_e))}const Q=c(()=>a.serviceMessages.messages.filter(_e=>_e.datapoint==="STICKY_UNREACH"&&_e.value!==!1&&!ci(_e.interfaceName,a.interfaces.typeOf(_e.interfaceName))).length);let oe=N(!1),F=N(!1),W;function O(_e){if(!t(i))return;const Ie=t(i).autoAckStickyUnreach;t(i).autoAckStickyUnreach=_e,u(F,!1),_e&&t(S)?.autoAckStickyUnreach!==!0&&t(Q)>0&&(W=Ie,u(oe,!0))}function z(){t(i)&&(W===void 0?delete t(i).autoAckStickyUnreach:t(i).autoAckStickyUnreach=W),u(F,!1)}const ce=c(()=>a.interfaces.rega?.reason==="openccu-lite"&&t(i)!==void 0&&t(i).host.trim()===(t(S)?.host??"").trim()),me=c(()=>{if(t(i)===void 0||t(i).local===!0)return!1;const _e=t(i).host.trim();return _e===""?!1:t(g)!==void 0&&t(k)===_e?t(g).kind==="openccu-lite":a.interfaces.states.some(Ie=>Ie.lite===!0)&&_e===(t(S)?.host??"").trim()}),be=c(()=>{if(t(i)===void 0||t(g)===void 0||t(k)!==t(i).host.trim())return"";if(t(g).kind==="unreachable"){if(t(g).reason==="certificate"&&t(g).certificate!==void 0)return s("The certificate of {url} is not trusted ({code}); it can be trusted under Names and rooms",{url:t(g).certificate.url,code:t(g).certificate.code});const Ie=s("Nothing answers at {url} ({reason})",{url:t(g).url,reason:t(g).reason??"error"});return H1(t(Re)?.platform,t(g).reason)?`${Ie}. ${s(Dh)}`:Ie}if(t(g).kind==="ccu")return s("A CCU or OpenCCU at {url}: XML-RPC with callbacks",{url:t(g).url});const _e={none:()=>s("no API token: pair the application with the system"),refused:()=>s("the API token is refused"),"names-only":()=>s("the API token reads names only: pair for devices and values"),full:()=>s("the API token is accepted")}[t(g).token?.state??"none"]();return`${s("openccu-lite ({implementation}) at {url}: lite-rpc, no callbacks",{implementation:t(g).implementation??"occulited",url:t(g).url})} · ${_e}`}),Ee=c(()=>a.app.pairing);st(()=>{t(Ee)?.state==="approved"&&t(i)!==void 0&&(t(i).metaToken=t(Ee).token,t(Ee).fingerprint256!==""&&Ye("certificates",t(Ee).fingerprint256),u(y,!0),a.app.pairing=void 0)});function le(){const _e={...structuredClone(Ui(t(i))),...t(o)&&t(i)?.auth?{auth:{...t(i).auth}}:{}};return t(o)||delete _e.auth,_e}async function G(){if(!t(i))return;u(b,!0);const _e=t(i).host.trim(),Ie=await a.app.testConnection(le());u(g,Ie,!0),u(k,_e,!0),u(b,!1)}async function L(){t(i)&&(u(y,!1),await a.app.pair(le()))}function A(_e){t(i)&&(t(i).autoConfirmRegaInbox=_e)}const M={auto:()=>s("Automatic"),local:()=>s("This profile"),occulite:()=>"occulited",rega:()=>"ReGaHSS"},he=c(()=>a.taxonomy.state),Te=c(()=>t(he)===void 0?s("No store connected"):[M[t(he).provider](),t(he).reachable?s("Reachable"):s("Unreachable"),t(he).reachable?t(he).writable?s("Writable"):s("Read-only"):void 0,s("revision {revision}, {count} objects",{revision:t(he).revision,count:t(he).objects}),t(he).implementation,t(he).error].filter(Ie=>Ie!==void 0&&Ie!=="").join(" · ")),Pe=c(()=>t(he)?.certificate??(t(g)!==void 0&&t(k)===(t(i)?.host.trim()??"")?t(g).certificate:void 0)),Ve=c(()=>(t(i)?.systemTrust?.certificates?.length??0)+(t(i)?.systemTrust?.cas?.length??0));function Ye(_e,Ie){if(!t(i))return;const Ce=t(i).systemTrust??{},Fe=Ce[_e]??[];Fe.includes(Ie)||(t(i).systemTrust={...Ce,[_e]:[...Fe,Ie]})}function ot(_e,Ie){return t(i)?.systemTrust?.[_e]?.includes(Ie)===!0}function Je(){t(i)&&delete t(i).systemTrust}function Se(_e){t(i)&&hc.some(Ie=>Ie===_e)&&(t(i).metaProvider=_e)}function we(_e){t(i)&&(t(i).metaToken=_e)}function j(_e){t(i)&&(t(i).language=_e)}function U(_e,Ie){if(!t(i))return;const Ce=t(i).auth??{user:"",password:""};t(i).auth={...Ce,[_e]:Ie}}var Ne=TE(),Le=De(Ne);{const _e=Ce=>{var Fe=eE(),Oe=De(Fe),qe=m(Oe,!0),Ke=d(Oe,2);{var Xe=$e=>{var ft=Z1(),_t=d(w(ft),1,!0);E(nt=>h(_t,nt),[()=>s("Saving and reconnecting…")]),v($e,ft)};$(Ke,$e=>{t(f)&&$e(Xe)})}var Qe=d(Ke,2);{var it=$e=>{var ft=J1(),_t=m(ft);E(nt=>h(_t,`${nt??""}: ${a.app.saveError??""}`),[()=>s("Error")]),v($e,ft)};$(Qe,$e=>{a.app.saveError!==""&&$e(it)})}var bt=d(Qe,2),vt=m(bt,!0),ke=d(bt,2),Me=m(ke,!0);E(($e,ft,_t,nt)=>{Oe.disabled=$e,h(qe,ft),h(vt,_t),ke.disabled=t(f)||!t(X),h(Me,nt)},[()=>t(b)||t(i)===void 0||t(i).host.trim()==="",()=>t(b)?s("Testing…"):s("Test connection"),()=>s("Cancel"),()=>s("Save & Restart")]),ne("click",Oe,()=>{G()}),ne("click",bt,()=>n(!1)),ne("click",ke,()=>{xe()}),v(Ce,Fe)};let Ie=c(()=>s("Settings"));Tn(Le,{get title(){return t(Ie)},width:"960px",testId:"config-dialog",get open(){return n()},set open(Ce){n(Ce)},buttons:_e,children:(Ce,Fe)=>{var Oe=At(),qe=De(Oe);{var Ke=Xe=>{var Qe=AE(),it=w(Qe),bt=w(it),vt=w(bt),ke=w(vt),Me=m(ke,!0),$e=d(ke,2),ft=w($e),_t=w(ft),nt=m(_t,!0),$t=d(_t,2),xt=w($t),Ft=d(xt,2),sn=m(Ft,!0),mn=d(Ft,2);{var En=We=>{var lt=tE(),mt=m(lt,!0);E(()=>{yt(lt,1,op(t(g)?.reachable===!1||t(g)?.reason==="certificate"?"hmm-config-warning":"hmm-config-help"),"svelte-1xydm3c"),h(mt,t(be))}),v(We,lt)};$(mn,We=>{t(be)!==""&&We(En)})}var Jt=d(ft,2),vn=w(Jt),In=m(vn,!0),Kn=d(vn,2),Yn=w(Kn),Xt=w(Yn),Ot=w(Xt),Qt=m(Ot,!0);Ot.value=Ot.__value="";var qn=d(Ot);je(qn,17,()=>t(Y),We=>We.address,(We,lt)=>{var mt=js(),jt=m(mt),Wt={};E(()=>{h(jt,`${t(lt).address??""} ${t(lt).serial??""??""} ${t(lt).firmware??""??""}`),Wt!==(Wt=t(lt).address)&&(mt.value=(mt.__value=Wt)??"")}),v(We,mt)});var Dn=d(Xt,2),Cr=m(Dn,!0),Br=d(Yn,2),$n=m(Br,!0),Bn=d(Jt,2),Pr=w(Bn),la=m(Pr,!0),nr=d(Pr,2),wr=w(nr),Hr=d(wr,2),ir=m(Hr,!0),Ar=d(Bn,2),or=w(Ar),Jr=m(or,!0),Mr=d(or,2),fr=w(Mr),hr=d(Ar,2),se=w(hr),Ge=m(se,!0),Yt=d(se,2),gn=w(Yt),rr=d(hr,2),rt=w(rr),pt=m(rt,!0),Dt=d(rt,2),Ze=w(Dt),et=d(vt,2),Be=w(et),ht=m(Be,!0),Rt=d(Be,2);{var Ht=We=>{var lt=nE(),mt=m(lt,!0);E(jt=>h(mt,jt),[()=>s("None: an openccu-lite system does not call a remote client back; the events come from its stream.")]),v(We,lt)},un=We=>{var lt=aE(),mt=w(lt),jt=w(mt),Wt=m(jt,!0),It=d(jt,2),Zt=w(It),Gt=w(Zt),Nt=m(Gt,!0);Gt.value=Gt.__value="";var nn=d(Gt);je(nn,17,()=>t(ee),xn=>xn.address,(xn,Tr)=>{var Gr=js(),na=m(Gr,!0),da={};E(()=>{h(na,t(Tr).label),da!==(da=t(Tr).address)&&(Gr.value=(Gr.__value=da)??"")}),v(xn,Gr)});var rn=d(nn);{var Cn=xn=>{var Tr=js(),Gr=m(Tr,!0),na={};E(()=>{h(Gr,t(i).callback.ip),na!==(na=t(i).callback.ip)&&(Tr.value=(Tr.__value=na)??"")}),v(xn,Tr)},br=c(()=>t(i).callback.ip!==""&&!t(ee).some(xn=>xn.address===t(i)?.callback.ip));$(rn,xn=>{t(br)&&xn(Cn)})}qt(Zt);var Qn=d(Zt,2),ta=m(Qn,!0),hn=d(Qn,2);{var Vn=xn=>{var Tr=rE(),Gr=w(Tr),na=m(Gr,!0),da=d(Gr,2),Po=m(da,!0);E(Mo=>{h(na,t(ae)),h(Po,Mo)},[()=>s("Use automatic")]),ne("click",da,()=>{t(i)&&(t(i).callback.ip="")}),v(xn,Tr)};$(hn,xn=>{t(ae)!==""&&xn(Vn)})}var Zn=d(mt,2),_n=w(Zn),dr=m(_n,!0),cr=d(_n,2),Fr=w(cr),Sa=d(Fr,2),Xa=m(Sa,!0),Qa=d(Zn,2),fs=w(Qa),Io=m(fs,!0),Do=d(fs,2),Hs=w(Do),No=d(Hs,2),Co=m(No,!0);E((xn,Tr,Gr,na,da,Po,Mo,Cm,Pm,Mm)=>{h(Wt,xn),Zt.disabled=Tr,R(Zt,"title",Gr),h(Nt,t(de)),h(ta,na),h(dr,da),Fr.disabled=Po,h(Xa,Mo),h(Io,Cm),Hs.disabled=Pm,h(Co,Mm)},[()=>s("Homematic Manager Address"),()=>C("ip"),()=>s("Automatic takes this machine's address in the CCU's network, else the one on the route to the CCU"),()=>C("ip")?D("ip"):s("The address the interface processes call back to"),()=>s("Callback XML-RPC port"),()=>C("xmlrpcPort"),()=>C("xmlrpcPort")?D("xmlrpcPort"):t(T)&&t(T).xmlrpc!==0?s("0 uses port {port}, or a free one when it is taken",{port:String(t(T).xmlrpc)}):s("0 picks a free port"),()=>s("Callback BIN-RPC port"),()=>C("binrpcPort"),()=>C("binrpcPort")?D("binrpcPort"):t(T)&&t(T).binrpc!==0?s("0 uses port {port}, or a free one when it is taken",{port:String(t(T).binrpc)}):s("0 picks a free port")]),kr(Zt,()=>t(i).callback.ip,xn=>t(i).callback.ip=xn),An(Fr,()=>t(i).callback.xmlrpcPort,xn=>t(i).callback.xmlrpcPort=xn),An(Hs,()=>t(i).callback.binrpcPort,xn=>t(i).callback.binrpcPort=xn),v(We,lt)};$(Rt,We=>{t(me)?We(Ht):We(un,-1)})}var Ut=d(et,2),Mt=w(Ut),yn=m(Mt,!0),Sn=d(Mt,2),on=w(Sn),pn=w(on),ar=m(pn,!0),Mn=d(pn,2),ln=w(Mn);je(ln,20,()=>hc,We=>We,(We,lt)=>{var mt=js(),jt=m(mt,!0),Wt={};E(It=>{h(jt,It),Wt!==(Wt=lt)&&(mt.value=(mt.__value=Wt)??"")},[()=>M[lt]()]),v(We,mt)});var gt;qt(ln);var at=d(ln,2),ut=m(at,!0),kt=d(on,2);{var bn=We=>{var lt=iE(),mt=w(lt),jt=m(mt,!0),Wt=d(mt,2),It=w(Wt),Zt=m(It,!0),Gt=d(It,2),Nt=m(Gt),nn=d(Gt,2),rn=w(nn),Cn=m(rn,!0),br=d(rn,2);{var Qn=Vn=>{const Zn=c(()=>t(Pe).ca);var _n=sE(),dr=m(_n,!0);E((cr,Fr)=>{_n.disabled=cr,h(dr,Fr)},[()=>ot("cas",t(Zn).pem),()=>s("Trust the CA {name}",{name:t(Zn).subject})]),ne("click",_n,()=>Ye("cas",t(Zn).pem)),v(Vn,_n)};$(br,Vn=>{t(Pe).ca!==void 0&&Vn(Qn)})}var ta=d(nn,2),hn=m(ta,!0);E((Vn,Zn,_n,dr,cr,Fr)=>{h(jt,Vn),h(Zt,Zn),h(Nt,`${_n??""}${t(Pe).certificate.altNames===void 0?"":` · ${t(Pe).certificate.altNames}`} \\u00b7 SHA-256
|
|
13
|
-
${t(Pe).certificate.fingerprint256??""}`),rn.disabled=dr,h(Cn,cr),h(hn,Fr)},[()=>s("Certificate"),()=>s("The certificate of {url} is not trusted ({code}). Until it is, whether this is an openccu-lite system is not known.",{url:t(Pe).url,code:t(Pe).code}),()=>s("{subject}, issued by {issuer}, valid until {validTo}",{subject:t(Pe).certificate.subject,issuer:t(Pe).certificate.issuer,validTo:t(Pe).certificate.validTo}),()=>ot("certificates",t(Pe).certificate.fingerprint256),()=>s("Trust this certificate"),()=>s("A trusted certificate holds whatever name the system is reached by, until it is renewed; a trusted CA also covers its renewals, but the name must match the certificate.")]),ne("click",rn,()=>Ye("certificates",t(Pe).certificate.fingerprint256)),v(We,lt)};$(kt,We=>{t(Pe)!==void 0&&We(bn)})}var kn=d(kt,2);{var mr=We=>{var lt=oE(),mt=w(lt),jt=m(mt,!0),Wt=d(mt,2),It=w(Wt),Zt=m(It,!0),Gt=d(It,2),Nt=m(Gt,!0);E((nn,rn,Cn)=>{h(jt,nn),h(Zt,rn),h(Nt,Cn)},[()=>s("Trusted certificates"),()=>s("{count} certificates or CAs of the system are trusted",{},t(Ve)),()=>s("Forget them")]),ne("click",Gt,Je),v(We,lt)};$(kn,We=>{t(Ve)>0&&We(mr)})}var vr=d(kn,2),ea=w(vr),Wa=m(ea,!0),Fn=d(ea,2),wn=w(Fn),Xn=w(wn),Vr=d(Xn,2);{var Ka=We=>{var lt=cE(),mt=w(lt);{var jt=It=>{var Zt=lE(),Gt=m(Zt,!0);E(Nt=>h(Gt,Nt),[()=>s("Cancel")]),ne("click",Zt,()=>{a.app.cancelPairing()}),v(It,Zt)},Wt=It=>{var Zt=dE(),Gt=m(Zt,!0);E((Nt,nn,rn)=>{Zt.disabled=Nt,R(Zt,"title",nn),h(Gt,rn)},[()=>t(i).host.trim()==="",()=>s("Asks an openccu-lite system for an API token: a code appears here and on its Status page, where an administrator approves it. The token replaces the one above, and the certificate is trusted from then on."),()=>s("Pair")]),ne("click",Zt,()=>{L()}),v(It,Zt)};$(mt,It=>{t(Ee)?.state==="requesting"||t(Ee)?.state==="code"?It(jt):It(Wt,-1)})}v(We,lt)};$(Vr,We=>{t(i).local!==!0&&We(Ka)})}var wi=d(wn,2),yo=m(wi,!0),Ai=d(wi,2);{var So=We=>{var lt=At(),mt=De(lt);{var jt=Gt=>{var Nt=uE(),nn=De(Nt),rn=m(nn,!0),Cn=d(nn,2),br=m(Cn,!0);E(Qn=>{h(rn,t(Ee).code),h(br,Qn)},[()=>s("Approve it on the system's Status page: the same code is shown there.")]),v(Gt,Nt)},Wt=Gt=>{var Nt=fE(),nn=m(Nt,!0);E(rn=>h(nn,rn),[()=>s("Asking the system…")]),v(Gt,Nt)},It=Gt=>{var Nt=hE(),nn=m(Nt,!0);E(rn=>h(nn,rn),[()=>s("Paired: the token is in the field above. Save to connect.")]),v(Gt,Nt)},Zt=Gt=>{var Nt=mE(),nn=m(Nt,!0);E(()=>h(nn,t(Ee).message)),v(Gt,Nt)};$(mt,Gt=>{t(Ee)?.state==="code"?Gt(jt):t(Ee)?.state==="requesting"?Gt(Wt,1):t(y)?Gt(It,2):t(Ee)?.state==="failed"&&Gt(Zt,3)})}v(We,lt)};$(Ai,We=>{t(i).local!==!0&&We(So)})}var Ti=d(bt,2),Ri=w(Ti),Ls=w(Ri),ko=m(Ls,!0),wo=d(Ls,2),xi=w(wo),q=w(xi),Ae=m(q,!0),Ue=d(q,2),tt=w(Ue);{let We=c(()=>s("Interfaces")),lt=c(()=>s("Filter")),mt=c(()=>s("Check all")),jt=c(()=>s("Uncheck all")),Wt=c(()=>s("Select"));di(tt,{get options(){return t(ie)},get label(){return t(We)},get filterLabel(){return t(lt)},get checkAllLabel(){return t(mt)},get uncheckAllLabel(){return t(jt)},summary:It=>It.join(", "),get placeholder(){return t(Wt)},get selected(){return t(i).interfaces},set selected(It){t(i).interfaces=It}})}var Lt=d(tt,2),wt=m(Lt,!0),Et=d(xi,2),Rn=w(Et),fn=m(Rn,!0),lr=d(Rn,2),Hn=w(lr),Nn=d(Hn,2),Vt=m(Nn,!0),en=d(Ri,2),tn=d(w(en),2),dn=w(tn),zr=w(dn),Oa=m(zr,!0),jr=d(zr,2),Or=w(jr);{var Ya=We=>{var lt=vE(),mt=De(lt);Nr(mt,!1);var jt=d(mt,2),Wt=m(jt,!0);E(It=>h(Wt,It),[()=>s("Switched off: the system has no ReGaHSS")]),v(We,lt)},Fs=We=>{var lt=pE(),mt=De(lt),jt=d(mt,2),Wt=m(jt,!0);E(It=>h(Wt,It),[()=>s("ReGa supplies the friendly names")]),ur(mt,()=>t(i).rega,It=>t(i).rega=It),v(We,lt)};$(Or,We=>{t(ce)?We(Ya):We(Fs,-1)})}var Ao=d(dn,2);{var To=We=>{var lt=gE(),mt=w(lt),jt=m(mt,!0),Wt=d(mt,2),It=w(Wt),Zt=d(It,2),Gt=m(Zt,!0);E((Nt,nn)=>{h(jt,Nt),It.disabled=!t(i).rega,Nr(It,t(i).autoConfirmRegaInbox===!0),h(Gt,nn)},[()=>s("Confirm the ReGa inbox automatically"),()=>s("Only possible with ReGa")]),ne("change",It,Nt=>A(Nt.currentTarget.checked)),v(We,lt)};$(Ao,We=>{t(ce)||We(To)})}var Ro=d(en,2),Ii=w(Ro),pr=m(Ii,!0),Lr=d(Ii,2),sr=w(Lr),qa=w(sr),Gs=m(qa,!0),Us=d(qa,2),$a=w(Us);{let We=c(()=>t(i).language??"auto"),lt=c(()=>s("Language")),mt=c(()=>s("Browser language"));A1($a,{get language(){return t(We)},get label(){return t(lt)},get autoLabel(){return t(mt)},testId:"config-language",onchange:j})}var Di=d(sr,2),gr=w(Di),Bs=m(gr,!0),om=d(gr,2),Md=w(om),lm=d(Md,2),dm=m(lm,!0),Od=d(Di,2),Ld=w(Od),cm=m(Ld,!0),um=d(Ld,2),xo=w(um),Fd=d(xo,2),fm=m(Fd,!0),hm=d(Fd,2);{var mm=We=>{var lt=bE(),mt=m(lt,!0);E(jt=>h(mt,jt),[()=>s("{count} messages in the list are acknowledged when this is saved",{},t(Q))]),v(We,lt)};$(hm,We=>{t(F)&&t(i).autoAckStickyUnreach===!0&&We(mm)})}var Gd=d(Od,2);{var vm=We=>{var lt=yE(),mt=w(lt),jt=m(mt,!0),Wt=d(mt,2),It=w(Wt);{var Zt=Nt=>{var nn=_E(),rn=De(nn),Cn=w(rn),br=m(Cn,!0),Qn={},ta=d(rn,2),hn=m(ta,!0);E((Vn,Zn,_n)=>{h(br,Vn),Qn!==(Qn=Zn)&&(Cn.__value=Qn),h(hn,_n)},[()=>P(t(x).pinnedMs),()=>P(t(x).pinnedMs),()=>s("Set at start ({option})",{option:"HMM_IDLE_UNSUBSCRIBE / --idle-unsubscribe"})]),v(Nt,nn)},Gt=Nt=>{var nn=EE(),rn=De(nn),Cn=w(rn),br=m(Cn,!0),Qn={},ta=d(Cn);je(ta,16,()=>K1(t(x).defaultMs,t(i).idleUnsubscribeMs),_n=>_n,(_n,dr)=>{var cr=js(),Fr=m(cr,!0),Sa={};E((Xa,Qa)=>{h(Fr,Xa),Sa!==(Sa=Qa)&&(cr.value=(cr.__value=Sa)??"")},[()=>P(dr),()=>String(dr)]),v(_n,cr)});var hn;qt(rn);var Vn=d(rn,2),Zn=m(Vn,!0);E((_n,dr,cr)=>{h(br,_n),Qn!==(Qn=Hl)&&(Cn.value=(Cn.__value=Qn)??""),hn!==(hn=dr)&&(rn.value=(rn.__value=hn)??"",Ln(rn,hn)),h(Zn,cr)},[()=>s("Default ({time})",{time:P(t(x).defaultMs)}),()=>Y1(t(i).idleUnsubscribeMs,t(x).defaultMs),()=>s("With no page open, the event subscriptions are dropped after this time and taken up again when a page is opened")]),ne("change",rn,_n=>K(_n.currentTarget.value)),v(Nt,nn)};$(It,Nt=>{t(x).pinnedMs!==void 0?Nt(Zt):Nt(Gt,-1)})}E(Nt=>h(jt,Nt),[()=>s("Unsubscribe when idle")]),v(We,lt)};$(Gd,We=>{t(x)!==void 0&&We(vm)})}var Ud=d(Gd,2),Bd=w(Ud),pm=m(Bd,!0),gm=d(Bd,2),Hd=w(gm),bm=d(Hd,2),_m=m(bm,!0),Em=d(Ud,2),Vd=w(Em),ym=m(Vd,!0),Sm=d(Vd,2),zd=w(Sm),km=d(zd,2),wm=m(km,!0),jd=d(it,2),Wd=w(jd),Am=m(Wd,!0),Kd=d(Wd,2);je(Kd,17,()=>t(i).extraInterfaces,so,(We,lt,mt)=>{const jt=c(()=>mb(t(lt)));var Wt=kE(),It=w(Wt),Zt=d(It,2),Gt=d(Zt,2),Nt=d(Gt,2),nn=w(Nt);nn.value=nn.__value="xmlrpc";var rn=d(nn);rn.value=rn.__value="binrpc",qt(Nt);var Cn=d(Nt,2),br=d(Cn,2),Qn=d(br,2);{var ta=hn=>{var Vn=SE(),Zn=m(Vn,!0);E((_n,dr)=>{R(Vn,"data-testid",_n),h(Zn,dr)},[()=>`config-extra-problem-${String(mt)}`,()=>t(jt).join(", ")]),v(hn,Vn)};$(Qn,hn=>{t(jt).length>0&&hn(ta)})}E((hn,Vn,Zn,_n,dr,cr,Fr,Sa,Xa,Qa,fs)=>{R(Wt,"data-testid",hn),R(It,"placeholder",Vn),R(It,"aria-label",Zn),an(It,t(lt).name),R(Zt,"placeholder",_n),R(Zt,"aria-label",dr),R(Gt,"placeholder",cr),R(Gt,"aria-label",Fr),R(Nt,"aria-label",Sa),R(Cn,"placeholder",Xa),R(Cn,"aria-label",Qa),R(br,"aria-label",fs)},[()=>`config-extra-${String(mt)}`,()=>s("Name"),()=>`${s("Name")} ${String(mt)}`,()=>s("Host"),()=>`${s("Host")} ${String(mt)}`,()=>s("Port"),()=>`${s("Port")} ${String(mt)}`,()=>`${s("Protocol")} ${String(mt)}`,()=>s("Path"),()=>`${s("Path")} ${String(mt)}`,()=>`${s("Remove")} ${String(mt)}`]),ne("input",It,hn=>pe(mt,hn.currentTarget.value)),An(Zt,()=>t(lt).host,hn=>t(lt).host=hn),An(Gt,()=>t(lt).port,hn=>t(lt).port=hn),kr(Nt,()=>t(lt).protocol,hn=>t(lt).protocol=hn),An(Cn,()=>t(lt).path,hn=>t(lt).path=hn),ne("click",br,()=>ve(mt)),v(We,Wt)});var Yd=d(Kd,2),Tm=m(Yd,!0),Rm=d(jd,2),qd=w(Rm),$d=w(qd),xm=d($d);{var Im=We=>{var lt=tr();E(mt=>h(lt,`· ${mt??""}: ${t(J)??""}`),[()=>s("Device data")]),v(We,lt)};$(xm,We=>{t(J)!==""&&We(Im)})}var Dm=d(qd,2);{var Nm=We=>{var lt=wE(),mt=w(lt),jt=d(mt),Wt=m(jt,!0);E(()=>{h(mt,`${t(ye)??""} · `),h(Wt,t(Re)?.logFile??"")}),v(We,lt)};$(Dm,We=>{t(ye)!==""&&We(Nm)})}E((We,lt,mt,jt,Wt,It,Zt,Gt,Nt,nn,rn,Cn,br,Qn,ta,hn,Vn,Zn,_n,dr,cr,Fr,Sa,Xa,Qa,fs,Io,Do,Hs,No,Co,xn,Tr,Gr,na,da)=>{h(Me,We),h(nt,lt),h(sn,mt),h(In,jt),R(Xt,"aria-label",Wt),Xt.disabled=t(Y).length===0,h(Qt,It),Dn.disabled=t(p),h(Cr,Zt),h($n,Gt),h(la,Nt),h(ir,nn),h(Jr,rn),h(Ge,Cn),gn.disabled=!t(o),an(gn,t(i).auth?.user??""),h(pt,br),Ze.disabled=!t(o),an(Ze,t(i).auth?.password??""),h(ht,Qn),h(yn,ta),h(ar,hn),gt!==(gt=t(i).metaProvider??"auto")&&(ln.value=(ln.__value=gt)??"",Ln(ln,gt)),h(ut,t(Te)),h(Wa,Vn),an(Xn,t(i).metaToken??""),h(yo,Zn),h(ko,_n),h(Ae,dr),h(wt,cr),h(fn,Fr),h(Vt,Sa),h(Oa,Xa),h(pr,Qa),h(Gs,fs),h(Bs,Io),h(dm,Do),h(cm,Hs),Nr(xo,t(i).autoAckStickyUnreach===!0),h(fm,No),h(pm,Co),h(_m,xn),h(ym,Tr),h(wm,Gr),h(Am,na),h(Tm,da),h($d,`Homematic Manager ${t(Z)??""} `)},[()=>s("Connection"),()=>s("CCU Address"),()=>s("Host name or address of the CCU"),()=>s("Discovered CCUs"),()=>s("Discovered CCUs"),()=>t(p)?s("Searching..."):s("Select"),()=>s("Discover"),()=>s("Searches the network for CCUs over UDP"),()=>s("Use TLS"),()=>s("The encrypted ports of the CCU"),()=>s("Use Auth"),()=>s("Auth User"),()=>s("Auth Pass"),()=>s("Callback"),()=>s("Names and rooms"),()=>s("Store"),()=>s("API token"),()=>t(me)?s("From the pairing, or the system's API tokens page"):s("Only needed off the box"),()=>s("Interfaces"),()=>s("Configured interfaces"),()=>s("An extra interface is connected once it is ticked here"),()=>s("Detect interfaces"),()=>s("Probes the known ports in the background"),()=>s("Use ReGa"),()=>s("Behaviour"),()=>s("Language"),()=>s("RPC Delay (ms)"),()=>s("Shortest pause between two writes"),()=>s("Acknowledge STICKY_UNREACH automatically as they occur"),()=>s("Acknowledging is a write to the device. Switching this on asks once about the messages already in the list."),()=>s("RPC Log Folder"),()=>s("Empty switches the dumps off"),()=>s("Clear Cache"),()=>s("Discards the caches when this is saved"),()=>s("Extra interfaces"),()=>s("Add interface")]),An(xt,()=>t(i).host,We=>t(i).host=We),ne("change",Xt,We=>{t(i)&&We.currentTarget.value!==""&&(t(i).host=We.currentTarget.value)}),ne("click",Dn,()=>{ge()}),ur(wr,()=>t(i).tls,We=>t(i).tls=We),ur(fr,()=>t(o),We=>u(o,We)),ne("input",gn,We=>U("user",We.currentTarget.value)),ne("input",Ze,We=>U("password",We.currentTarget.value)),ne("change",ln,We=>Se(We.currentTarget.value)),ne("input",Xn,We=>we(We.currentTarget.value)),ur(Hn,()=>t(i).autoDetect,We=>t(i).autoDetect=We),An(Md,()=>t(i).writePaceMs,We=>t(i).writePaceMs=We),ne("change",xo,We=>O(We.currentTarget.checked)),An(Hd,()=>t(i).rpcLogFolder,We=>t(i).rpcLogFolder=We),ur(zd,()=>t(l),We=>u(l,We)),ne("click",Yd,V),v(Xe,Qe)};$(qe,Xe=>{t(i)&&Xe(Ke)})}v(Ce,Oe)},$$slots:{buttons:!0,default:!0}})}var ze=d(Le,2);Q1(ze,{get count(){return t(Q)},onacknowledge:()=>u(F,!0),onlynew:()=>u(F,!1),oncancel:z,get open(){return t(oe)},set open(_e){u(oe,_e,!0)}}),v(r,Ne),ct()}St(["click","change","input"]);var xE=_('<div class="hmm-toolbar-trailing svelte-1ld6r3r"><!></div>'),IE=_('<div class="hmm-toolbar svelte-1ld6r3r" role="toolbar"><div class="hmm-toolbar-group svelte-1ld6r3r"><!></div> <!></div>');function DE(r,e){let n=H(e,"label",3,"Toolbar"),a=H(e,"children",3,void 0),s=H(e,"trailing",3,void 0),i=H(e,"testId",3,void 0);var o=IE(),l=w(o),f=w(l);{var p=k=>{var y=At(),S=De(y);Ha(S,a),v(k,y)};$(f,k=>{a()&&k(p)})}var b=d(l,2);{var g=k=>{var y=xE(),S=w(y);Ha(S,s),v(k,y)};$(b,k=>{s()&&k(g)})}E(()=>{R(o,"aria-label",n()),R(o,"data-testid",i())}),v(r,o)}const NE=["address","device_address","channel_address","interface_address","team_address"];function CE(r){if(r.values)return"select";if(r.bitmask)return"flags";switch(r.type){case"bool":case"boolean":return"bool";case"integer":return"number";case"paramset":return"struct";case"RpcStruct[]":return"json";case"mixed":case"variant":return"variant";default:return"text"}}function PE(r){return NE.includes(r.type)}function Xo(r){return(jb(r)??Wb(r)).params.map(n=>({name:n.name,type:n.type,kind:CE(n),optional:n.optional??[],...n.values?{options:n.values}:{},...n.bitmask?{options:n.bitmask}:{}}))}function Vl(r){switch(r.kind){case"bool":return!1;case"number":case"flags":return 0;case"struct":return[];case"variant":return{type:"string",value:""};case"select":return Object.keys(r.options??{})[0]??"";default:return""}}function jc(r){switch(r.type){case"bool":return r.value==="true"||r.value==="1";case"integer":return Number.parseInt(r.value,10)||0;case"double":return Number.parseFloat(r.value)||0;default:return r.value}}function Ws(r){return typeof r=="object"?JSON.stringify(r):String(r)}function ME(r,e){switch(r.kind){case"bool":return e===!0||e==="true";case"number":case"flags":return typeof e=="number"?e:Number.parseInt(Ws(e),10)||0;case"struct":{const n={};for(const a of Array.isArray(e)?e:[])a.key!==""&&(n[a.key]=jc(a));return n}case"variant":{const n=e;return jc({type:n.type,value:n.value})}case"json":return LE(Ws(e));case"select":return/^-?\d+$/.test(Ws(e))?Number(e):Ws(e);default:return Ws(e)}}function OE(r,e){return r.map((n,a)=>ME(n,e[a]??Vl(n)))}function LE(r){if(r.trim()==="")return[];try{return JSON.parse(r)}catch{return[]}}function FE(r){if(r.trim()==="")return!0;try{return JSON.parse(r),!0}catch{return!1}}var GE=_("<span> </span>"),UE=_("<!> <!>",1),Wc=_("<option> </option>"),BE=_('<p class="hmm-console-hint svelte-17kjuug"> </p>'),HE=_('<input type="checkbox"/>'),VE=_('<input class="hmm-input" type="number"/>'),zE=_('<select class="hmm-select"></select>'),jE=_('<label><input type="checkbox"/> <span> </span></label>'),WE=_('<div class="hmm-console-flags svelte-17kjuug"><!> <span class="hmm-console-arg-type svelte-17kjuug"> </span></div>'),KE=_('<div class="hmm-console-struct-row svelte-17kjuug"><input class="hmm-input"/> <select class="hmm-select"><option>string</option><option>integer</option><option>double</option><option>bool</option></select> <input class="hmm-input"/> <button type="button" class="hmm-button">✕</button></div>'),YE=_('<div class="hmm-console-struct svelte-17kjuug"><!> <button type="button" class="hmm-button">+</button></div>'),qE=_('<div class="hmm-console-struct-row svelte-17kjuug"><select class="hmm-select"><option>string</option><option>integer</option><option>double</option><option>bool</option></select> <input class="hmm-input"/></div>'),$E=_("<textarea></textarea>"),XE=_('<input class="hmm-input"/>'),QE=_('<span class="hmm-console-arg-type svelte-17kjuug"> </span>'),ZE=_('<div class="hmm-console-arg svelte-17kjuug"><label class="hmm-console-arg-label svelte-17kjuug"> <span class="hmm-console-arg-type svelte-17kjuug"> </span></label> <!> <!></div>'),JE=_("<option></option>"),ey=_('<span class="hmm-console-error svelte-17kjuug" data-testid="console-error"> </span>'),ty=_('<section class="hmm-console-help svelte-17kjuug" data-testid="console-help-section"><h3 class="svelte-17kjuug"> </h3> <p data-testid="console-help"> </p></section>'),ny=_('<div class="hmm-page svelte-17kjuug"><!> <div class="hmm-console-top svelte-17kjuug"><select class="hmm-select hmm-console-method svelte-17kjuug" data-testid="console-method"><option> </option><!></select> <output class="hmm-console-params hmm-mono svelte-17kjuug" data-testid="console-params"> </output> <button type="button" class="hmm-button" data-testid="console-send-button"> </button></div> <div class="hmm-console-columns svelte-17kjuug"><section class="hmm-console-panel svelte-17kjuug"><h3 class="svelte-17kjuug"> </h3> <!> <!> <datalist id="hmm-console-addresses"></datalist></section> <section class="hmm-console-panel hmm-console-output svelte-17kjuug" data-testid="console-output"><h3 class="svelte-17kjuug"> <!></h3> <textarea class="hmm-console-response hmm-mono svelte-17kjuug" data-testid="console-response" readonly=""></textarea></section></div> <!></div>');function ry(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t;let s=N(""),i=N(He([])),o=N(void 0);const l=c(()=>n.app.selectedInterface),f=c(()=>n.console.of(t(l))),p=c(()=>t(s)===""?[]:Xo(t(s))),b=c(()=>n.console.method(t(l),t(s))),g=c(()=>n.devices.index(t(l))?.all().map(le=>le.ADDRESS)??[]),k=c(()=>OE(t(p),t(i)));st(()=>{n.console.load(t(l))}),st(()=>{const le=n.console.takeRecall(t(l));le!==void 0&&ie(le)});function y(le){u(s,le,!0),u(i,Xo(le).map(G=>Vl(G)),!0),u(o,void 0)}function S(le,G){u(i,t(i).map((L,A)=>A===le?G:L),!0)}function T(le){const G=t(i)[le];return Array.isArray(G)?G:[]}function I(le){const G=t(i)[le];return typeof G=="object"&&!Array.isArray(G)?G:{type:"string",value:""}}function C(le){S(le,[...T(le),{key:"",type:"string",value:""}])}function D(le,G,L){S(le,T(le).map((A,M)=>M===G?{...A,...L}:A))}function x(le,G){S(le,T(le).filter((L,A)=>A!==G))}function P(le,G,L){const A=typeof t(i)[le]=="number"?t(i)[le]:0;S(le,L?A|G:A&~G)}async function K(){t(s)!==""&&u(o,await n.console.call(t(l),t(s),t(k)),!0)}function X(le){return typeof le=="object"&&le!==null&&!Array.isArray(le)}function ie(le){u(s,le.method,!0);const G=Xo(le.method);u(i,G.map((L,A)=>{const M=le.params[A];return L.kind==="struct"&&X(M)?Object.entries(M).map(([he,Te])=>({key:he,type:typeof Te=="boolean"?"bool":typeof Te=="number"?"double":"string",value:String(Te)})):L.kind==="json"?JSON.stringify(M??[]):L.kind==="bool"?M===!0:L.kind==="number"||L.kind==="flags"?typeof M=="number"?M:0:M===void 0?Vl(L):String(M)}),!0),u(o,void 0)}var ue=ny(),fe=w(ue);{const le=L=>{var A=GE(),M=m(A);E(he=>h(M,`${t(f).length??""} ${he??""}`),[()=>a("Method")]),v(L,A)};let G=c(()=>a("RPC Console"));DE(fe,{get label(){return t(G)},trailing:le,children:(L,A)=>{var M=UE(),he=De(M);{let Pe=c(()=>a("Send request")),Ve=c(()=>t(s)===""||n.console.running),Ye=c(()=>a("Please select method"));Ct(he,{get title(){return t(Pe)},icon:"▸",get disabled(){return t(Ve)},get reason(){return t(Ye)},testId:"console-send",onclick:()=>{K()}})}var Te=d(he,2);{let Pe=c(()=>a("Clear"));Ct(Te,{get title(){return t(Pe)},icon:"⌫",testId:"console-clear",onclick:()=>{u(o,void 0)}})}v(L,M)},$$slots:{trailing:!0,default:!0}})}var B=d(fe,2),re=w(B),de=w(re),ee=m(de,!0);de.value=de.__value="";var ae=d(de);je(ae,17,()=>t(f),le=>le.name,(le,G)=>{var L=Wc(),A=m(L,!0),M={};E(()=>{h(A,t(G).name),M!==(M=t(G).name)&&(L.value=(L.__value=M)??"")}),v(le,L)});var Y;qt(re);var Z=d(re,2),te=m(Z),Re=d(Z,2),J=m(Re,!0),ye=d(B,2),xe=w(ye),ge=w(xe),V=m(ge,!0),pe=d(ge,2);{var ve=le=>{var G=BE(),L=m(G,!0);E(A=>h(L,A),[()=>t(s)===""?a("Please select method"):a("No data")]),v(le,G)};$(pe,le=>{t(p).length===0&&le(ve)})}var Q=d(pe,2);je(Q,19,()=>t(p),le=>le.name,(le,G,L)=>{var A=ZE(),M=w(A),he=w(M),Te=d(he),Pe=m(Te,!0),Ve=d(M,2);{var Ye=_e=>{var Ie=HE();E(()=>{R(Ie,"id",`arg-input-${t(G).name}`),Nr(Ie,t(i)[t(L)]===!0)}),ne("change",Ie,Ce=>S(t(L),Ce.currentTarget.checked)),v(_e,Ie)},ot=_e=>{var Ie=VE();E(Ce=>{R(Ie,"id",`arg-input-${t(G).name}`),an(Ie,Ce)},[()=>String(t(i)[t(L)]??0)]),ne("input",Ie,Ce=>S(t(L),Number(Ce.currentTarget.value))),v(_e,Ie)},Je=_e=>{var Ie=zE();je(Ie,21,()=>Object.entries(t(G).options??{}),([Fe,Oe])=>Fe,(Fe,Oe)=>{var qe=c(()=>Qd(t(Oe),2));let Ke=()=>t(qe)[0],Xe=()=>t(qe)[1];var Qe=Wc(),it=m(Qe),bt={};E(()=>{h(it,`${Xe()??""} (${Ke()??""})`),bt!==(bt=Ke())&&(Qe.value=(Qe.__value=bt)??"")}),v(Fe,Qe)});var Ce;qt(Ie),E(Fe=>{R(Ie,"id",`arg-input-${t(G).name}`),Ce!==(Ce=Fe)&&(Ie.value=(Ie.__value=Ce)??"",Ln(Ie,Ce))},[()=>String(t(i)[t(L)]??"")]),ne("change",Ie,Fe=>S(t(L),Fe.currentTarget.value)),v(_e,Ie)},Se=_e=>{var Ie=WE(),Ce=w(Ie);je(Ce,17,()=>Object.entries(t(G).options??{}),([qe,Ke])=>qe,(qe,Ke)=>{var Xe=c(()=>Qd(t(Ke),2));let Qe=()=>t(Xe)[0],it=()=>t(Xe)[1];var bt=jE(),vt=w(bt),ke=d(vt,2),Me=m(ke,!0);E($e=>{Nr(vt,$e),h(Me,it())},[()=>(t(i)[t(L)]&Number(Qe()))!==0]),ne("change",vt,$e=>P(t(L),Number(Qe()),$e.currentTarget.checked)),v(qe,bt)});var Fe=d(Ce,2),Oe=m(Fe);E(qe=>h(Oe,`= ${qe??""}`),[()=>String(t(i)[t(L)]??0)]),v(_e,Ie)},we=_e=>{var Ie=YE(),Ce=w(Ie);je(Ce,17,()=>T(t(L)),so,(Oe,qe,Ke)=>{var Xe=KE(),Qe=w(Xe),it=d(Qe,2),bt=w(it);bt.value=bt.__value="string";var vt=d(bt);vt.value=vt.__value="integer";var ke=d(vt);ke.value=ke.__value="double";var Me=d(ke);Me.value=Me.__value="bool";var $e;qt(it);var ft=d(it,2),_t=d(ft,2);E((nt,$t,xt,Ft)=>{R(Qe,"aria-label",nt),an(Qe,t(qe).key),R(it,"aria-label",$t),$e!==($e=t(qe).type)&&(it.value=(it.__value=$e)??"",Ln(it,$e)),R(ft,"aria-label",xt),an(ft,t(qe).value),R(_t,"aria-label",Ft)},[()=>`${t(G).name} ${String(Ke)} key`,()=>`${t(G).name} ${String(Ke)} type`,()=>`${t(G).name} ${String(Ke)} value`,()=>`${t(G).name} ${String(Ke)} remove`]),ne("input",Qe,nt=>D(t(L),Ke,{key:nt.currentTarget.value})),ne("change",it,nt=>D(t(L),Ke,{type:nt.currentTarget.value})),ne("input",ft,nt=>D(t(L),Ke,{value:nt.currentTarget.value})),ne("click",_t,()=>x(t(L),Ke)),v(Oe,Xe)});var Fe=d(Ce,2);E(()=>R(Fe,"data-testid",`arg-${t(G).name}-add`)),ne("click",Fe,()=>C(t(L))),v(_e,Ie)},j=_e=>{var Ie=qE(),Ce=w(Ie),Fe=w(Ce);Fe.value=Fe.__value="string";var Oe=d(Fe);Oe.value=Oe.__value="integer";var qe=d(Oe);qe.value=qe.__value="double";var Ke=d(qe);Ke.value=Ke.__value="bool";var Xe;qt(Ce);var Qe=d(Ce,2);E((it,bt)=>{R(Ce,"aria-label",`${t(G).name} type`),Xe!==(Xe=it)&&(Ce.value=(Ce.__value=Xe)??"",Ln(Ce,Xe)),R(Qe,"id",`arg-input-${t(G).name}`),an(Qe,bt)},[()=>I(t(L)).type,()=>I(t(L)).value]),ne("change",Ce,it=>S(t(L),{...I(t(L)),type:it.currentTarget.value})),ne("input",Qe,it=>S(t(L),{...I(t(L)),value:it.currentTarget.value})),v(_e,Ie)},U=_e=>{var Ie=$E();let Ce;E((Fe,Oe)=>{R(Ie,"id",`arg-input-${t(G).name}`),Ce=yt(Ie,1,"hmm-input hmm-console-json svelte-17kjuug",null,Ce,{"hmm-console-invalid":Fe}),an(Ie,Oe)},[()=>!FE(String(t(i)[t(L)]??"")),()=>String(t(i)[t(L)]??"")]),ne("input",Ie,Fe=>S(t(L),Fe.currentTarget.value)),v(_e,Ie)},Ne=_e=>{var Ie=XE();E((Ce,Fe)=>{R(Ie,"id",`arg-input-${t(G).name}`),R(Ie,"list",Ce),an(Ie,Fe)},[()=>PE(t(G))?"hmm-console-addresses":void 0,()=>String(t(i)[t(L)]??"")]),ne("input",Ie,Ce=>S(t(L),Ce.currentTarget.value)),v(_e,Ie)};$(Ve,_e=>{t(G).kind==="bool"?_e(Ye):t(G).kind==="number"?_e(ot,1):t(G).kind==="select"?_e(Je,2):t(G).kind==="flags"?_e(Se,3):t(G).kind==="struct"?_e(we,4):t(G).kind==="variant"?_e(j,5):t(G).kind==="json"?_e(U,6):_e(Ne,-1)})}var Le=d(Ve,2);{var ze=_e=>{var Ie=QE(),Ce=m(Ie);E((Fe,Oe)=>h(Ce,`${Fe??""}: ${Oe??""}`),[()=>a("optional"),()=>t(G).optional.join(", ")]),v(_e,Ie)};$(Le,_e=>{t(G).optional.length>0&&_e(ze)})}E(()=>{R(A,"data-testid",`arg-${t(G).name}`),R(M,"for",`arg-input-${t(G).name}`),h(he,`${t(G).name??""} `),h(Pe,t(G).type)}),v(le,A)});var oe=d(Q,2);je(oe,20,()=>t(g),le=>le,(le,G)=>{var L=JE(),A={};E(()=>{A!==(A=G)&&(L.value=(L.__value=A)??"")}),v(le,L)});var F=d(xe,2),W=w(F),O=w(W),z=d(O);{var ce=le=>{var G=ey(),L=m(G,!0);E(()=>h(L,t(o).error)),v(le,G)};$(z,le=>{t(o)&&!t(o).ok&&le(ce)})}var me=d(W,2),be=d(ye,2);{var Ee=le=>{var G=ty(),L=w(G),A=m(L,!0),M=d(L,2),he=m(M,!0);E(Te=>{h(A,t(b).name),h(he,Te)},[()=>t(b).help.replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim()]),v(le,G)};$(be,le=>{t(b)?.help&&le(Ee)})}E((le,G,L,A,M,he,Te,Pe)=>{R(re,"aria-label",le),h(ee,G),Y!==(Y=t(s))&&(re.value=(re.__value=Y)??"",Ln(re,Y)),h(te,`${t(s)??""}(${L??""})`),Re.disabled=t(s)===""||n.console.running,h(J,A),h(V,M),h(O,`${he??""} `),R(me,"aria-label",Te),an(me,Pe)},[()=>a("Please select method"),()=>a("Please select method"),()=>JSON.stringify(t(k)).slice(1,-1),()=>a("Send request"),()=>a("Parameters"),()=>a("Response"),()=>a("Response"),()=>t(o)===void 0?"":t(o).ok?JSON.stringify(t(o).result,void 0,2):`${t(o).error??""}${t(o).faultCode===void 0?"":` (${t(o).faultCode})`}`]),ne("change",re,le=>y(le.currentTarget.value)),ne("click",Re,()=>{K()}),v(r,ue),ct()}St(["change","click","input"]);function ay(r,e,n,a,s=4){const i=Math.max(s,a.width-n.width-s),o=Math.max(s,a.height-n.height-s);return{x:Math.min(Math.max(s,r),i),y:Math.min(Math.max(s,e),o)}}var sy=_('<div class="hmm-context-separator svelte-192vamk" role="separator"></div>'),iy=_('<button type="button" role="menuitem"> </button>'),oy=_('<div class="hmm-context-menu svelte-192vamk" role="menu"></div>');function Pd(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"x",3,0),s=H(e,"y",3,0),i=H(e,"onselect",3,void 0),o=H(e,"onclose",3,void 0),l=H(e,"label",3,"Menu"),f=H(e,"testId",3,void 0),p=N(void 0),b=N(He({x:0,y:0}));st(()=>{if(!n()||!t(p))return;const C=t(p).getBoundingClientRect();u(b,ay(a(),s(),{width:C.width||180,height:C.height||0},{width:window.innerWidth,height:window.innerHeight}),!0),t(p).querySelector("button:not(:disabled)")?.focus()});function g(){n(!1),o()?.()}function k(C){C.disabled===!0||C.separator===!0||(g(),i()?.(C.id))}function y(C){n()&&C.key==="Escape"&&(C.preventDefault(),g())}var S=At();xr("keydown",cs,y),xr("mousedown",cs,C=>{n()&&t(p)&&C.target instanceof Node&&!t(p).contains(C.target)&&g()});var T=De(S);{var I=C=>{var D=oy();let x;je(D,21,()=>e.items,P=>P.id,(P,K)=>{var X=At(),ie=De(X);{var ue=B=>{var re=sy();v(B,re)},fe=B=>{var re=iy();let de;var ee=m(re,!0);E(()=>{de=yt(re,1,"hmm-context-item svelte-192vamk",null,de,{"hmm-context-danger":t(K).danger===!0}),re.disabled=t(K).disabled===!0,h(ee,t(K).label??t(K).id)}),ne("click",re,()=>k(t(K))),v(B,re)};$(ie,B=>{t(K).separator===!0?B(ue):B(fe,-1)})}v(P,X)}),cn(D,P=>u(p,P),()=>t(p)),E(()=>{R(D,"aria-label",l()),R(D,"data-testid",f()),x=On(D,"",x,{left:`${t(b).x}px`,top:`${t(b).y}px`})}),v(C,D)};$(T,C=>{n()&&C(I)})}v(r,S),ct()}St(["click"]);function ly(){return globalThis.navigator?.clipboard}async function dy(r,e={}){const n=ly();if(typeof n?.writeText=="function")try{return await n.writeText(r),"clipboard"}catch{}return cy(r,e.host)?"selection":"failed"}function cy(r,e=document.body){const n=e.ownerDocument,a=n.activeElement,s=n.createElement("textarea");s.value=r,s.readOnly=!0,s.tabIndex=-1,s.setAttribute("aria-hidden","true"),Object.assign(s.style,{position:"fixed",top:"0",left:"0",width:"1px",height:"1px",padding:"0",border:"0",opacity:"0",pointerEvents:"none"}),e.append(s);try{return s.focus({preventScroll:!0}),s.select(),s.setSelectionRange(0,r.length),n.execCommand("copy")}catch{return!1}finally{s.remove(),(a instanceof HTMLElement||a instanceof SVGElement)&&a.focus({preventScroll:!0})}}const uy="data-measure-skip";function fy(r){return r.scrollWidth>r.clientWidth}function hy(r){return(r.innerText||r.textContent||"").replace(/\s+/g," ").trim()}function my(r,e){if(e.length===0)return[];const n=document.createElement("div");n.setAttribute("aria-hidden","true"),Object.assign(n.style,{position:"absolute",left:"0",top:"0",width:"max-content",height:"0",overflow:"visible",visibility:"hidden",pointerEvents:"none"});const a=e.map(s=>{const i=getComputedStyle(s),o=s.cloneNode(!0);for(const l of o.querySelectorAll(`[${uy}]`))l.remove();for(const l of[o,...o.querySelectorAll("[data-testid], [id]")])l.removeAttribute("data-testid"),l.removeAttribute("id");return Object.assign(o.style,{display:"block",position:"static",width:"max-content",minWidth:"0",maxWidth:"none",height:"auto",overflow:"visible",fontFamily:i.fontFamily,fontSize:i.fontSize,fontStyle:i.fontStyle,fontWeight:i.fontWeight,letterSpacing:i.letterSpacing}),n.append(o),o});r.append(n);try{return a.map(s=>s.getBoundingClientRect().width)}finally{n.remove()}}const ui=40,vy=1200,py=600,Kc=10;function fi(r,e=ui,n=vy){return Number.isFinite(r)?Math.round(Math.min(Math.max(r,e),Math.max(e,n))):e}function gy(r,e=ui,n=py){const a=r.filter(s=>Number.isFinite(s)&&s>0);if(a.length!==0)return fi(Math.ceil(Math.max(...a)),e,n)}function Oi(r){return r.fixed!==!0&&r.hidden!==!0}function Yc(r){return r.keepMinWidth!==!0||r.minWidth===void 0?ui:Math.max(ui,Math.round(r.minWidth))}function by(r){const e={};if(r===null||typeof r!="object"||Array.isArray(r))return e;for(const[n,a]of Object.entries(r))typeof a=="number"&&Number.isFinite(a)&&(e[n]=fi(a));return e}const _y=30,Nh=20,hi=Nh+12,Ey=22,yy=Ey+12;function zl(r,e){if(e.value)return e.value(r);const n=r[e.key];if(n!=null)return typeof n=="string"||typeof n=="number"||typeof n=="boolean"?n:String(n)}function ti(r,e){const n=zl(r,e);return n===void 0?"":String(n)}function qi(r){return r.sortable!==!1&&r.hidden!==!0}function Ch(r){return r.filterable!==!1&&r.hidden!==!0}function qc(r,e){return r.toLowerCase().includes(e.toLowerCase())}function $c(r,e,n,a){for(const s of e){const i=a[s.key];if(i!==void 0&&i!==""&&!qc(ti(r,s),i))return!1}return n.trim()===""?!0:e.filter(s=>Ch(s)).some(s=>qc(ti(r,s),n))}function Sy(r,e){const n=r===void 0||r==="",a=e===void 0||e==="";return n||a?n&&a?0:n?1:-1:typeof r=="number"&&typeof e=="number"?r-e:typeof r=="boolean"&&typeof e=="boolean"?Number(r)-Number(e):String(r).localeCompare(String(e),void 0,{numeric:!0,sensitivity:"base"})}function ky(r){const{rows:e,columns:n,getId:a,children:s,expanded:i}=r,o=r.globalFilter??"",l=r.columnFilters??{},f=r.subColumns??n,b=o.trim()!==""||Object.values(l).some(y=>y!=="")?e.filter(y=>$c(y,n,o,l)||(s?.(y)??[]).some(S=>$c(S,f,o,l))):[...e],g=r.sort;if(g){const y=n.find(S=>S.key===g.key);if(y&&qi(y)){const S=g.direction==="asc"?1:-1;b.sort((T,I)=>S*Sy(zl(T,y),zl(I,y)))}}const k=[];for(const y of b){const S=a(y),T=s?.(y)??[],I=i.has(S);if(k.push({id:S,key:S,row:y,depth:0,hasChildren:T.length>0,expanded:I,rootId:S,kind:"row"}),!!I){r.subHeader===!0&&T.length>0&&k.push({id:`${S}::header`,key:`${S}::header`,row:y,depth:1,hasChildren:!1,expanded:!1,rootId:S,kind:"header"});for(const C of T)k.push({id:a(C),key:`${S}/${a(C)}`,row:C,depth:1,hasChildren:!1,expanded:!1,rootId:S,kind:"row"})}}return k}function wy(r,e,n,a,s=6){if(r===0||a<=0)return{start:0,end:0};const i=Math.max(1,Math.ceil((n<=0?a:n)/a)),o=Math.max(0,Math.min(r-1,Math.floor(e/a)-s)),l=Math.min(r,o+i+s*2);return{start:o,end:l}}const jl=56,Xc=120,Qc=22;function Ay(r,e){if(r.width===void 0&&e===void 0)return`minmax(${jl}px, ${Xc}fr)`;if(r.fixed&&r.width!==void 0)return`${r.width}px`;if(e!==void 0)return`${e}px`;const n=r.width??Xc;return`minmax(${Ph(r)}px, ${n}fr)`}function Ph(r){return r.minWidth!==void 0?r.minWidth:Math.min(r.width??jl,jl)}function Ty(r,e){return r.fixed&&r.width!==void 0?r.width:e!==void 0?e:Ph(r)}function Zc(r){return{key:r.key,width:r.width,fixed:r.fixed===!0,...r.minWidth===void 0?{}:{minWidth:r.minWidth},...r.keepMinWidth===!0&&r.minWidth!==void 0?{keepMinWidth:!0}:{}}}function Ry(r,e){return e===void 0||r.keepMinWidth!==!0||r.minWidth===void 0?e:Math.max(e,r.minWidth)}function Mh(r,e={}){const n=r.expander?[`${Qc}px`]:[];let a=r.expander?Qc:0;for(const s of r.tracks){const i=s.fixed?void 0:Ry(s,e[s.key]);n.push(Ay(s,i)),a+=Ty(s,i)}return{template:n.join(" "),minWidth:a}}function xy(r,e,n){const a=r.filter(f=>f.hidden!==!0).map(f=>Zc(f)),s=[];let i=0;for(const f of e??[]){if(f.hidden===!0)continue;const p=a.findIndex(b=>b.key===f.key);if(p>=0){i=p+1;continue}a.splice(i,0,Zc(f)),s.push(f.key),i+=1}const o=n?2:1,l={};for(const[f,p]of a.entries())l[p.key]=f+o;return{template:Mh({tracks:a,expander:n}).template,track:l,tracks:a,expander:n,subKeys:s}}function Iy(r,e,n){const a=new Set(r.subKeys),s={};for(const[i,o]of Object.entries(e))a.has(i)||(s[i]=o);for(const[i,o]of Object.entries(n))a.has(i)&&(s[i]=o);return s}function Dy(r,e,n){const a=new Set(e.filter(i=>i.hidden!==!0).map(i=>i.key)),s=[];for(const i of r){const o=i.columns.filter(l=>a.has(l)).map(l=>n.track[l]).filter(l=>l!==void 0);o.length!==0&&s.push({key:i.key,label:i.label,sublabel:i.sublabel,start:Math.min(...o),end:Math.max(...o)+1})}return s}function Ny(r,e){return r.trim()!==""||Object.values(e).some(n=>n.trim()!=="")}function Cy(r,e,n){const a=r.findIndex(l=>l.id===e),s=r.findIndex(l=>l.id===n);if(a===-1||s===-1)return s===-1?[]:[n];const[i,o]=a<=s?[a,s]:[s,a];return r.slice(i,o+1).filter(l=>l.kind!=="header").map(l=>l.id)}function Py(r,e,n,a,s){if(s.shift===!0&&n!==void 0)return{selected:Cy(r,n,a),anchorId:n};if(s.ctrl===!0){const i=new Set(e);return i.has(a)?i.delete(a):i.add(a),{selected:[...i],anchorId:a}}return{selected:[a],anchorId:a}}var My=_('<div role="separator" aria-orientation="vertical" tabindex="0" data-measure-skip=""></div>'),Oy=_('<span class="hmm-table-caption svelte-16k18c8"> </span>'),Ly=_('<div class="hmm-table-actions svelte-16k18c8" role="toolbar"><!></div>'),Jc=_('<span class="hmm-table-count svelte-16k18c8"> </span>'),Fy=_('<div class="hmm-table-band svelte-16k18c8"><!> <!> <div class="hmm-table-trailing svelte-16k18c8"><!> <!></div></div>'),Gy=_('<span class="hmm-th-group-sub svelte-16k18c8"> </span>'),Uy=_('<div class="hmm-th hmm-th-group svelte-16k18c8" role="columnheader"><span class="hmm-th-group-label"> </span> <!></div>'),By=_('<div class="hmm-table-groups svelte-16k18c8" role="row"></div>'),Hy=_('<div class="hmm-th hmm-th-expander svelte-16k18c8" role="columnheader"></div>'),Vy=_('<span class="hmm-th-sort svelte-16k18c8" aria-hidden="true"> </span>'),zy=_('<button type="button" class="hmm-th-button svelte-16k18c8"><span class="hmm-th-label"> </span> <!></button>'),jy=_('<span class="hmm-th-label"> </span>'),Wy=_('<div class="hmm-th svelte-16k18c8" role="columnheader"><!> <!></div>'),Ky=_('<div class="hmm-th hmm-th-sub-only svelte-16k18c8"><!></div>'),Yy=_('<div class="hmm-tf-spacer"></div>'),qy=_('<input class="hmm-input hmm-tf-input svelte-16k18c8" type="search"/>'),$y=_('<div class="hmm-tf svelte-16k18c8"><!></div>'),Xy=_('<div class="hmm-table-filters svelte-16k18c8"><!> <!></div>'),Qy=_('<span> </span> <button type="button" class="hmm-button hmm-table-clear svelte-16k18c8"> </button>',1),Zy=_('<div class="hmm-table-empty svelte-16k18c8"><!></div>'),Jy=_('<button type="button" class="hmm-expander svelte-16k18c8"> </button>'),eS=_('<div class="hmm-td hmm-td-expander svelte-16k18c8"><!></div>'),tS=_(" <!>",1),nS=Pa('<path d="M1.5 5.2 4 7.7 8.5 2.3"></path>'),rS=Pa('<rect x="3.5" y="3.5" width="5.5" height="5.5" rx="1"></rect><path d="M6.5 1.5h-4a1 1 0 0 0-1 1v4"></path>',1),aS=_('<button type="button" data-measure-skip=""><svg class="hmm-copy-icon svelte-16k18c8" viewBox="0 0 10 10" aria-hidden="true"><!></svg></button>'),sS=_('<div role="gridcell"><!> <!></div>'),iS=_('<div role="row" tabindex="-1"><!> <!></div>'),oS=_('<div class="hmm-table-spacer svelte-16k18c8"><div class="hmm-table-rows svelte-16k18c8"></div></div>'),lS=_('<div class="hmm-table svelte-16k18c8"><!> <div role="grid" tabindex="0"><!> <div class="hmm-table-head svelte-16k18c8" role="row"><!> <!> <!></div> <!> <div class="hmm-table-body svelte-16k18c8"><!></div></div> <!> <!> <span class="hmm-table-announce svelte-16k18c8" role="status" aria-live="polite"> </span> <!></div>');function ja(r,e){dt(e,!0);const n=(q,Ae=Wn,Ue=Wn)=>{var tt=My();let Lt;E(wt=>{Lt=yt(tt,1,"hmm-th-resize svelte-16k18c8",null,Lt,{"hmm-th-resize-active":t(Dn)===Ae().key}),R(tt,"aria-label",wt),R(tt,"data-testid",Ue())},[()=>J("Resize column {column}",{column:Ae().label})]),ne("pointerdown",tt,wt=>Br(wt,Ae().key)),ne("pointermove",tt,$n),ne("pointerup",tt,wt=>Pr(wt,Ae())),xr("pointercancel",tt,Bn),xr("lostpointercapture",tt,Bn),ne("dblclick",tt,wt=>{wt.preventDefault(),qn||Ot(Ae().key)}),ne("keydown",tt,wt=>la(wt,Ae().key)),v(q,tt)};let a=H(e,"columnGroups",3,void 0),s=H(e,"scope",3,void 0),i=H(e,"subRows",3,void 0),o=H(e,"subColumns",3,void 0),l=H(e,"rowHeight",3,_y),f=H(e,"height",3,void 0),p=H(e,"overscan",3,6),b=H(e,"columnFilterRow",3,!0),g=H(e,"caption",3,void 0),k=H(e,"emptyText",3,""),y=H(e,"noMatchText",3,"No row matches the filter"),S=H(e,"clearFilterLabel",3,"Clear filter"),T=H(e,"showingText",3,void 0),I=H(e,"filterLabel",3,"Filter"),C=H(e,"toolbar",3,void 0),D=H(e,"toolbarLabel",3,void 0),x=H(e,"status",3,void 0),P=H(e,"countText",3,void 0),K=H(e,"selected",31,()=>He([])),X=H(e,"expanded",31,()=>He([])),ie=H(e,"filter",15,""),ue=H(e,"sort",15,void 0),fe=H(e,"onactivate",3,void 0),B=H(e,"onrowcontextmenu",3,void 0),re=H(e,"renameColumn",3,"name"),de=H(e,"canRename",3,void 0),ee=H(e,"onrename",3,void 0),ae=H(e,"cell",3,void 0),Y=H(e,"tableId",3,void 0),Z=H(e,"subTableId",3,void 0),te=H(e,"testId",3,void 0);const Re=yp();function J(q,Ae={}){return Re?.t===void 0?Sp(q,Ae):Re.t(q,Ae)}let ye=N(He({})),xe=N(0),ge=N(0),V=N(0),pe=N(0),ve=N(void 0),Q=N(void 0),oe=N(void 0),F=N(void 0),W=N(void 0),O=N(void 0);const z=c(()=>e.columns.filter(q=>q.hidden!==!0)),ce=c(()=>(o()??e.columns).filter(q=>q.hidden!==!0)),me=c(()=>i()!==void 0),be=c(()=>xy(e.columns,o(),t(me)));let Ee=N({}),le=N({}),G=N(void 0);const L=c(()=>{const q=Re?.columnWidths;return Y()===void 0||q===void 0?t(Ee):q.widths(Y())}),A=c(()=>{const q=Re?.columnWidths;return Z()===void 0||q===void 0?t(le):q.widths(Z())}),M=c(()=>Object.keys(t(L)).length>0),he=c(()=>Object.keys(t(A)).length>0),Te=c(()=>new Set(t(be).subKeys)),Pe=c(()=>t(ce).filter(q=>t(Te).has(q.key)&&Oi(q))),Ve=c(()=>{const q=Iy(t(be),t(L),t(A));return Mh(t(be),t(G)===void 0?q:{...q,[t(G).key]:t(G).width})}),Ye=c(()=>Dy(a()??[],e.columns,t(be))),ot=c(()=>new Set(X())),Je=c(()=>g()!==void 0||C()!==void 0||x()!==void 0||P()!==void 0),Se=c(()=>new Set(K())),we=c(()=>ky({rows:e.rows,columns:e.columns,getId:e.getId,children:i(),expanded:t(ot),globalFilter:ie(),columnFilters:t(ye),sort:ue(),subColumns:o(),subHeader:o()!==void 0})),j=c(()=>f()??t(ge)),U=c(()=>wy(t(we).length,t(xe),t(j),l(),p())),Ne=c(()=>t(we).slice(t(U).start,t(U).end)),Le=c(()=>Ny(ie(),t(ye))),ze=c(()=>t(we).filter(q=>q.depth===0).length),_e=c(()=>t(Le)&&e.rows.length>0);function Ie(){u(ye,{},!0)}let Ce=Sr(()=>s());st(()=>{s()!==Ce&&(Ce=s(),Ie(),ie(""),t(Q)&&(t(Q).scrollTop=0,u(xe,0)))}),st(()=>{const q=t(Q);if(!q)return;const Ae=()=>{f()===void 0&&u(ge,q.clientHeight,!0),u(pe,q.offsetWidth-q.clientWidth)};Ae();const Ue=new ResizeObserver(Ae);return Ue.observe(q),()=>{Ue.disconnect()}});function Fe(q){u(xe,q.scrollTop,!0);const Ae=q.scrollLeft===0?"":`translateX(${String(-q.scrollLeft)}px)`;for(const Ue of[t(F),t(W),t(O)])Ue&&Ue.style.transform!==Ae&&(Ue.style.transform=Ae);ht(),Sn()}function Oe(q){qi(q)&&(ue()?.key!==q.key?ue({key:q.key,direction:"asc"}):ue().direction==="asc"?ue({key:q.key,direction:"desc"}):ue(void 0))}function qe(q){X(t(ot).has(q)?X().filter(Ae=>Ae!==q):[...X(),q])}function Ke(q,Ae){if(q.kind==="header")return;const Ue=Py(t(we),K(),t(ve),q.id,Ae);K(Ue.selected),u(ve,Ue.anchorId,!0),u(V,t(we).findIndex(tt=>tt.id===q.id),!0)}function Xe(q,Ae){Ke(q,{ctrl:Ae.ctrlKey||Ae.metaKey,shift:Ae.shiftKey})}function Qe(q,Ae){!B()||q.kind==="header"||(Ae.preventDefault(),t(Se).has(q.id)||Ke(q,{}),B()(q.row,Ae))}const it='button, input, select, textarea, a[href], [contenteditable="true"]';function bt(q){return q.target instanceof Element&&q.target.closest(it)!==null}const vt='input, select, textarea, [contenteditable="true"]',ke=new Set(["ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Home","End"]);function Me(q){return q.target instanceof Element&&q.target.closest(vt)!==null}function $e(q){return q?.kind==="row"&&ee()!==void 0&&(de()?.(q.row)??!0)}function ft(q,Ae){if(q.kind!=="row")return;const Ue=_t(Ae)?.dataset.columnKey;if(Ue===re()&&!bt(Ae)&&$e(q)){window.getSelection()?.removeAllRanges(),ee()?.(q.row);return}const tt=(q.depth>0?t(ce):t(z)).find(Lt=>Lt.key===Ue);if(tt?.onactivate!==void 0&&!bt(Ae)){window.getSelection()?.removeAllRanges(),tt.onactivate(q.row);return}fe()?.(q.row)}function _t(q){if(!(q.target instanceof Element))return null;const Ae=q.target.closest("[data-column-key]");if(Ae!==null)return Ae;const Ue=q.target.closest("[data-row-id]");if(Ue===null)return null;for(const tt of Ue.querySelectorAll("[data-column-key]")){const Lt=tt.getBoundingClientRect();if(q.clientX>=Lt.left&&q.clientX<Lt.right)return tt}return null}function nt(q,Ae){!$e(q)||!t(Se).has(q.id)||bt(Ae)||(Ae.preventDefault(),ee()?.(q.row))}function $t(){const q=t(Q);if(!q)return;const Ae=t(V)*l(),Ue=t(j)===0?q.clientHeight:t(j);Ae<q.scrollTop?q.scrollTop=Ae:Ae+l()>q.scrollTop+Ue&&(q.scrollTop=Ae+l()-Ue)}function xt(q,Ae){if(t(we).length===0)return;const Ue=Math.min(t(we).length-1,Math.max(0,t(V)+q)),tt=t(we)[Ue];tt&&(u(V,Ue,!0),Ke(tt,{shift:Ae}),$t())}function Ft(q){if(ke.has(q.key)&&Me(q))return;const Ae=t(we)[t(V)];switch(q.key){case"ArrowDown":q.preventDefault(),xt(1,q.shiftKey);break;case"ArrowUp":q.preventDefault(),xt(-1,q.shiftKey);break;case"Home":q.preventDefault(),xt(-t(we).length,q.shiftKey);break;case"End":q.preventDefault(),xt(t(we).length,q.shiftKey);break;case"ArrowRight":Ae?.hasChildren===!0&&!Ae.expanded&&(q.preventDefault(),qe(Ae.id));break;case"ArrowLeft":Ae?.hasChildren===!0&&Ae.expanded&&(q.preventDefault(),qe(Ae.id));break;case"Enter":if(bt(q))break;Ae&&fe()?(q.preventDefault(),fe()(Ae.row)):nt(Ae,q);break;case"F2":nt(Ae,q);break;case" ":Ae&&!bt(q)&&(q.preventDefault(),Ke(Ae,{ctrl:!0}));break;case"Escape":Be();break}}const sn=2,mn=4,En=14;function Jt(q){return t(Te).has(q)?"sub":"table"}function vn(q){const Ae=(Jt(q)==="sub"?t(ce):t(z)).find(Ue=>Ue.key===q);return Ae===void 0?ui:Yc(Ae)}function In(q,Ae){const Ue=Re?.columnWidths,tt=Jt(q),Lt=tt==="sub"?Z():Y(),wt=fi(Ae,vn(q));Lt!==void 0&&Ue!==void 0?Ue.set(Lt,q,wt):tt==="sub"?u(le,{...t(le),[q]:wt}):u(Ee,{...t(Ee),[q]:wt})}function Kn(q){const Ae=Re?.columnWidths,Ue=q==="sub"?Z():Y();Ue!==void 0&&Ae!==void 0?Ae.reset(Ue):q==="sub"?u(le,{}):u(Ee,{})}function Yn(q,Ae){if(q===void 0||Jt(q)!==Ae)return;const Ue=t(Ae==="sub"?ce:z).find(tt=>tt.key===q);return Ue!==void 0&&Oi(Ue)?Ue:void 0}function Xt(q){const Ae=`[data-column-key="${CSS.escape(q)}"]`;return(Jt(q)==="sub"?t(Q)?.querySelector(`.hmm-tr-subhead ${Ae}`):t(W)?.querySelector(Ae))??void 0}function Ot(q){const Ae=Jt(q),Ue=Yn(q,Ae),tt=Xt(q);if(!t(oe)||!Ue||!tt)return;const Lt=t(Q)?[...t(Q).querySelectorAll(`.hmm-td[data-column-key="${CSS.escape(q)}"]`)]:[],[wt=0,...Et]=my(t(oe),[tt,...Lt]),Rn=Ae==="table"&&qi(Ue)&&ue()?.key!==q?wt+En:wt,fn=gy([Rn,...Et],Yc(Ue));fn!==void 0&&In(q,fn)}let Qt,qn=!1,Dn=N(void 0);function Cr(q){return q.currentTarget.closest("[data-column-key]")}function Br(q,Ae){const Ue=Cr(q);if(!(q.button!==0||!Ue)){q.preventDefault();try{q.currentTarget.setPointerCapture(q.pointerId)}catch{}qn=q.pointerType==="touch"||q.pointerType==="pen",Qt={key:Ae,pointerId:q.pointerId,startX:q.clientX,startWidth:Ue.getBoundingClientRect().width,min:vn(Ae),touch:qn,moved:!1},Be()}}function $n(q){const Ae=Qt;if(Ae?.pointerId!==q.pointerId)return;const Ue=q.clientX-Ae.startX;if(!Ae.moved&&Math.abs(Ue)<(Ae.touch?mn:sn))return;Ae.moved||(Ae.moved=!0,u(Dn,Ae.key,!0));const tt=fi(Ae.startWidth+Ue,Ae.min);(t(G)?.key!==Ae.key||t(G).width!==tt)&&u(G,{key:Ae.key,width:tt})}function Bn(q){const Ae=Qt;Ae?.pointerId===q.pointerId&&(Qt=void 0,u(Dn,void 0),Ae.moved&&t(G)?.key===Ae.key&&In(Ae.key,t(G).width),u(G,void 0))}function Pr(q,Ae){const Ue=Qt;Bn(q),Ue?.pointerId===q.pointerId&&Ue.touch&&!Ue.moved&&Jt(Ae.key)==="table"&&Oe(Ae)}function la(q,Ae){if(q.key==="ArrowLeft"||q.key==="ArrowRight"){const Ue=Cr(q);if(Ue){const tt=q.key==="ArrowRight"?Kc:-Kc;In(Ae,Ue.getBoundingClientRect().width+tt)}}else if(q.key==="Enter")Ot(Ae);else if(q.key!=="Tab")return;q.key!=="Tab"&&(q.preventDefault(),q.stopPropagation())}let nr=N(!1),wr=N(0),Hr=N(0),ir=N(void 0),Ar=N("table");const or=c(()=>[{id:"fit",label:J("Fit column to content"),disabled:Yn(t(ir),t(Ar))===void 0},{id:"reset",label:J("Reset column widths"),disabled:t(Ar)==="sub"?!t(he):!t(M)}]);function Jr(q){const Ae=q.target instanceof Element?q.target:null;if(!Ae)return;const Ue=t(W)?.contains(Ae)===!0||t(F)?.contains(Ae)===!0;if(!Ue&&Ae.closest(".hmm-tr-subhead")===null)return;q.preventDefault();const tt=Ae.closest("[data-column-key]");u(ir,tt?.dataset.columnKey,!0),u(Ar,Ue&&(t(ir)===void 0||!t(Te).has(t(ir)))?"table":"sub",!0),u(wr,q.clientX,!0),u(Hr,q.clientY,!0),u(nr,!0),Be()}function Mr(q){q==="fit"&&t(ir)!==void 0?Ot(t(ir)):q==="reset"&&Kn(t(Ar))}let fr=N(void 0),hr,se,Ge,Yt;function gn(q){return Qt===void 0&&!q.classList.contains("hmm-td-fixed")&&fy(q)}function rr(q,Ae){Be(),se=q,Ge=Ae,Yt=setTimeout(()=>{Yt=void 0,et(q)},qf)}function rt(q){const Ue=(q.target instanceof Element?q.target.closest(".hmm-td, .hmm-th"):null)??void 0;Ue!==hr&&(hr=Ue,!(Ue!==void 0&&Ue===se)&&(Ue!==void 0&&gn(Ue)?rr(Ue,"pointer"):Ge==="pointer"&&Be()))}function pt(q){try{return q.matches(":focus-visible")}catch{return!1}}function Dt(q){const Ae=q.target instanceof HTMLElement?q.target:void 0,Ue=Ae?.closest(".hmm-td, .hmm-th")??void 0;Ae===void 0||Ue===void 0||Ue===se||Ae.classList.contains("hmm-th-resize")||!pt(Ae)||gn(Ue)&&rr(Ue,"focus")}function Ze(){Ge==="focus"&&Be()}function et(q){if(se!==q||!q.isConnected)return;const Ae=hy(q.querySelector(".hmm-th-label")??q);if(Ae==="")return;const{left:Ue,top:tt,bottom:Lt}=q.getBoundingClientRect();u(fr,{text:Ae,anchor:{left:Ue,top:tt,bottom:Lt}})}function Be(){Yt!==void 0&&(clearTimeout(Yt),Yt=void 0),se=void 0,Ge=void 0,t(fr)!==void 0&&u(fr,void 0)}function ht(){Be(),hr=void 0}function Rt(){Ge==="pointer"&&Be(),hr=void 0}st(()=>()=>{Yt!==void 0&&clearTimeout(Yt)});const Ht=1500,un=4e3;let Ut=N(void 0),Mt;function yn(q,Ae){return`${q.key}\0${Ae.key}`}function Sn(){Mt!==void 0&&(clearTimeout(Mt),Mt=void 0),t(Ut)!==void 0&&u(Ut,void 0)}async function on(q,Ae,Ue){q.stopPropagation();const tt=q.currentTarget;if(!(tt instanceof HTMLElement))return;const Lt=await dy(ti(Ae.row,Ue),{host:t(oe)});if(Be(),Sn(),!tt.isConnected)return;const wt=Lt!=="failed";wt||pn(tt);const{left:Et,top:Rn,bottom:fn}=tt.getBoundingClientRect();u(Ut,{key:yn(Ae,Ue),ok:wt,text:J(wt?"Copied":"Could not copy - the text is selected"),anchor:{left:Et,top:Rn,bottom:fn}}),Mt=setTimeout(Sn,wt?Ht:un)}function pn(q){const Ae=q.closest(".hmm-td"),Ue=window.getSelection();if(!Ae||!Ue)return;const tt=document.createRange();tt.selectNodeContents(Ae),tt.setEndBefore(q),Ue.removeAllRanges(),Ue.addRange(tt)}st(()=>()=>{Mt!==void 0&&clearTimeout(Mt)});var ar=lS(),Mn=w(ar);{var ln=q=>{var Ae=Fy(),Ue=w(Ae);{var tt=Vt=>{var en=Oy(),tn=m(en,!0);E(()=>h(tn,g())),v(Vt,en)};$(Ue,Vt=>{g()!==void 0&&Vt(tt)})}var Lt=d(Ue,2);{var wt=Vt=>{var en=Ly(),tn=w(en);Ha(tn,C),E(()=>R(en,"aria-label",D()??g()??I())),v(Vt,en)};$(Lt,Vt=>{C()&&Vt(wt)})}var Et=d(Lt,2),Rn=w(Et);{var fn=Vt=>{var en=At(),tn=De(en);Ha(tn,x),v(Vt,en)};$(Rn,Vt=>{x()&&Vt(fn)})}var lr=d(Rn,2);{var Hn=Vt=>{var en=Jc(),tn=m(en,!0);E(dn=>{R(en,"data-testid",te()===void 0?void 0:`${te()}-count`),h(tn,dn)},[()=>T()(t(ze),e.rows.length)]),v(Vt,en)},Nn=Vt=>{var en=Jc(),tn=m(en,!0);E(()=>{R(en,"data-testid",te()===void 0?void 0:`${te()}-count`),h(tn,P())}),v(Vt,en)};$(lr,Vt=>{t(_e)&&T()!==void 0?Vt(Hn):P()!==void 0&&Vt(Nn,1)})}v(q,Ae)};$(Mn,q=>{t(Je)&&q(ln)})}var gt=d(Mn,2);let at,ut;var kt=w(gt);{var bn=q=>{var Ae=By();je(Ae,21,()=>t(Ye),Ue=>Ue.key,(Ue,tt)=>{var Lt=Uy();let wt;var Et=w(Lt),Rn=m(Et,!0),fn=d(Et,2);{var lr=Hn=>{var Nn=Gy(),Vt=m(Nn,!0);E(()=>h(Vt,t(tt).sublabel)),v(Hn,Nn)};$(fn,Hn=>{t(tt).sublabel!==void 0&&t(tt).sublabel!==""&&Hn(lr)})}E(Hn=>{R(Lt,"aria-colspan",t(tt).end-t(tt).start),R(Lt,"data-testid",te()===void 0?void 0:`${te()}-group-${t(tt).key}`),wt=On(Lt,"",wt,{"grid-column":Hn}),h(Rn,t(tt).label)},[()=>`${String(t(tt).start)} / ${String(t(tt).end)}`]),v(Ue,Lt)}),cn(Ae,Ue=>u(F,Ue),()=>t(F)),v(q,Ae)};$(kt,q=>{t(Ye).length>0&&q(bn)})}var kn=d(kt,2),mr=w(kn);{var vr=q=>{var Ae=Hy();v(q,Ae)};$(mr,q=>{t(me)&&q(vr)})}var ea=d(mr,2);je(ea,17,()=>t(z),q=>q.key,(q,Ae)=>{var Ue=Wy();let tt;var Lt=w(Ue);{var wt=Nn=>{var Vt=zy();let en;var tn=w(Vt),dn=m(tn,!0),zr=d(tn,2);{var Oa=jr=>{var Or=Vy(),Ya=m(Or,!0);E(()=>h(Ya,ue().direction==="asc"?"▲":"▼")),v(jr,Or)};$(zr,jr=>{ue()?.key===t(Ae).key&&jr(Oa)})}E(()=>{en=On(Vt,"",en,{"justify-content":t(Ae).align==="right"?"flex-end":t(Ae).align==="center"?"center":"flex-start"}),h(dn,t(Ae).label)}),ne("click",Vt,()=>Oe(t(Ae))),v(Nn,Vt)},Et=c(()=>qi(t(Ae))),Rn=Nn=>{var Vt=jy(),en=m(Vt,!0);E(()=>h(en,t(Ae).label)),v(Nn,Vt)};$(Lt,Nn=>{t(Et)?Nn(wt):Nn(Rn,-1)})}var fn=d(Lt,2);{var lr=Nn=>{n(Nn,()=>t(Ae),()=>te()===void 0?void 0:`${te()}-resize-${t(Ae).key}`)},Hn=c(()=>Oi(t(Ae)));$(fn,Nn=>{t(Hn)&&Nn(lr)})}E(()=>{R(Ue,"aria-label",t(Ae).label===""?void 0:t(Ae).label),R(Ue,"data-column-key",t(Ae).key),R(Ue,"aria-sort",ue()?.key===t(Ae).key?ue().direction==="asc"?"ascending":"descending":"none"),tt=On(Ue,"",tt,{"grid-column":t(be).track[t(Ae).key],"text-align":t(Ae).align??"left"})}),v(q,Ue)});var Wa=d(ea,2);je(Wa,17,()=>t(Pe),q=>q.key,(q,Ae)=>{var Ue=Ky();let tt;var Lt=w(Ue);n(Lt,()=>t(Ae),()=>te()===void 0?void 0:`${te()}-resize-${t(Ae).key}`),E(()=>{R(Ue,"data-column-key",t(Ae).key),tt=On(Ue,"",tt,{"grid-column":t(be).track[t(Ae).key],"grid-row":"1"})}),v(q,Ue)}),cn(kn,q=>u(W,q),()=>t(W));var Fn=d(kn,2);{var wn=q=>{var Ae=Xy(),Ue=w(Ae);{var tt=wt=>{var Et=Yy();v(wt,Et)};$(Ue,wt=>{t(me)&&wt(tt)})}var Lt=d(Ue,2);je(Lt,17,()=>t(z),wt=>wt.key,(wt,Et)=>{var Rn=$y();let fn;var lr=w(Rn);{var Hn=Vt=>{var en=qy();E(()=>{R(en,"aria-label",`${I()}: ${t(Et).label}`),an(en,t(ye)[t(Et).key]??"")}),ne("input",en,tn=>{u(ye,{...t(ye),[t(Et).key]:tn.currentTarget.value},!0)}),v(Vt,en)},Nn=c(()=>Ch(t(Et)));$(lr,Vt=>{t(Nn)&&Vt(Hn)})}E(()=>fn=On(Rn,"",fn,{"grid-column":t(be).track[t(Et).key]})),v(wt,Rn)}),cn(Ae,wt=>u(O,wt),()=>t(O)),v(q,Ae)};$(Fn,q=>{b()&&q(wn)})}var Xn=d(Fn,2);let Vr;var Ka=w(Xn);{var wi=q=>{var Ae=Zy(),Ue=w(Ae);{var tt=wt=>{var Et=Qy(),Rn=De(Et),fn=m(Rn,!0),lr=d(Rn,2),Hn=m(lr,!0);E(()=>{h(fn,y()),R(lr,"data-testid",te()===void 0?void 0:`${te()}-clear-filter`),h(Hn,S())}),ne("click",lr,Ie),v(wt,Et)},Lt=wt=>{var Et=tr();E(()=>h(Et,k())),v(wt,Et)};$(Ue,wt=>{t(_e)?wt(tt):wt(Lt,-1)})}v(q,Ae)},yo=q=>{var Ae=oS();let Ue;var tt=w(Ae);let Lt;je(tt,23,()=>t(Ne),wt=>wt.key,(wt,Et,Rn)=>{var fn=iS();let lr,Hn;var Nn=w(fn);{var Vt=tn=>{var dn=eS(),zr=w(dn);{var Oa=jr=>{var Or=Jy(),Ya=m(Or,!0);E(()=>{R(Or,"aria-expanded",t(Et).expanded),R(Or,"aria-label",t(Et).expanded?"Collapse row":"Expand row"),h(Ya,t(Et).expanded?"−":"+")}),ne("click",Or,Fs=>{Fs.stopPropagation(),qe(t(Et).id)}),v(jr,Or)};$(zr,jr=>{t(Et).hasChildren&&jr(Oa)})}v(tn,dn)};$(Nn,tn=>{t(me)&&tn(Vt)})}var en=d(Nn,2);je(en,17,()=>t(Et).depth>0?t(ce):t(z),tn=>tn.key,(tn,dn)=>{var zr=sS();let Oa,jr;var Or=w(zr);{var Ya=pr=>{var Lr=tS(),sr=De(Lr),qa=d(sr);{var Gs=$a=>{n($a,()=>t(dn),()=>te()===void 0?void 0:`${te()}-sub-resize-${t(dn).key}`)},Us=c(()=>t(Te).has(t(dn).key)&&Oi(t(dn)));$(qa,$a=>{t(Us)&&$a(Gs)})}E(()=>h(sr,`${t(dn).label??""} `)),v(pr,Lr)},Fs=pr=>{var Lr=At(),sr=De(Lr);Ha(sr,ae,()=>t(Et).row,()=>t(dn),()=>t(Et)),v(pr,Lr)},Ao=pr=>{var Lr=tr();E(sr=>h(Lr,sr),[()=>ti(t(Et).row,t(dn))]),v(pr,Lr)};$(Or,pr=>{t(Et).kind==="header"?pr(Ya):ae()?pr(Fs,1):pr(Ao,-1)})}var To=d(Or,2);{var Ro=pr=>{const Lr=c(()=>yn(t(Et),t(dn)));var sr=aS();let qa;var Gs=w(sr),Us=w(Gs);{var $a=gr=>{var Bs=nS();v(gr,Bs)},Di=gr=>{var Bs=rS();v(gr,Bs)};$(Us,gr=>{t(Ut)?.key===t(Lr)&&t(Ut).ok?gr($a):gr(Di,-1)})}E(gr=>{qa=yt(sr,1,"hmm-copy svelte-16k18c8",null,qa,{"hmm-copy-shown":t(Ut)?.key===t(Lr)}),R(sr,"tabindex",t(U).start+t(Rn)===t(V)?0:-1),R(sr,"aria-label",gr)},[()=>t(dn).copy==="name"?J("Copy name"):J("Copy address")]),ne("click",sr,gr=>{on(gr,t(Et),t(dn))}),ne("dblclick",sr,gr=>{gr.stopPropagation()}),v(pr,sr)},Ii=c(()=>t(dn).copy!==void 0&&t(Et).kind==="row"&&ti(t(Et).row,t(dn))!=="");$(To,pr=>{t(Ii)&&pr(Ro)})}E(()=>{Oa=yt(zr,1,"hmm-td svelte-16k18c8",null,Oa,{"hmm-td-fixed":t(dn).fixed===!0,"hmm-td-copy":t(dn).copy!==void 0&&t(Et).kind==="row","hmm-mono":t(dn).mono===!0&&t(Et).kind==="row"}),R(zr,"data-column-key",t(dn).key),jr=On(zr,"",jr,{"grid-column":t(be).track[t(dn).key],"text-align":t(dn).align??"left"})}),v(tn,zr)}),E((tn,dn)=>{lr=yt(fn,1,"hmm-tr svelte-16k18c8",null,lr,{"hmm-tr-even":(t(U).start+t(Rn))%2===1,"hmm-tr-selected":tn,"hmm-tr-child":t(Et).depth>0&&t(Et).kind==="row","hmm-tr-subhead":t(Et).kind==="header"}),R(fn,"aria-selected",dn),R(fn,"data-row-id",t(Et).id),R(fn,"data-row-kind",t(Et).kind),Hn=On(fn,"",Hn,{height:`${l()}px`})},[()=>t(Se).has(t(Et).id),()=>t(Et).kind==="header"?void 0:t(Se).has(t(Et).id)]),ne("click",fn,tn=>Xe(t(Et),tn)),ne("dblclick",fn,tn=>ft(t(Et),tn)),ne("contextmenu",fn,tn=>Qe(t(Et),tn)),v(wt,fn)}),E(()=>{Ue=On(Ae,"",Ue,{height:`${t(we).length*l()}px`}),Lt=On(tt,"",Lt,{transform:`translateY(${t(U).start*l()}px)`})}),v(q,Ae)};$(Ka,q=>{t(we).length===0?q(wi):q(yo,-1)})}cn(Xn,q=>u(Q,q),()=>t(Q));var Ai=d(gt,2);{var So=q=>{{let Ae=c(()=>te()===void 0?void 0:`${te()}-tooltip`);wl(q,{get text(){return t(fr).text},get anchor(){return t(fr).anchor},get testId(){return t(Ae)}})}};$(Ai,q=>{t(fr)!==void 0&&q(So)})}var Ti=d(Ai,2);{var Ri=q=>{{let Ae=c(()=>te()===void 0?void 0:`${te()}-copied`);wl(q,{get text(){return t(Ut).text},get anchor(){return t(Ut).anchor},get testId(){return t(Ae)}})}};$(Ti,q=>{t(Ut)!==void 0&&q(Ri)})}var Ls=d(Ti,2),ko=m(Ls,!0),wo=d(Ls,2);{var xi=q=>{{let Ae=c(()=>J("Column widths")),Ue=c(()=>te()===void 0?void 0:`${te()}-columns-menu`);Pd(q,{get items(){return t(or)},get x(){return t(wr)},get y(){return t(Hr)},get label(){return t(Ae)},get testId(){return t(Ue)},onselect:Mr,get open(){return t(nr)},set open(tt){u(nr,tt,!0)}})}};$(wo,q=>{t(nr)&&q(xi)})}cn(ar,q=>u(oe,q),()=>t(oe)),E((q,Ae)=>{R(ar,"data-testid",te()),at=yt(gt,1,"hmm-table-grid svelte-16k18c8",null,at,{"hmm-table-resizing":t(Dn)!==void 0}),R(gt,"aria-rowcount",t(we).length),R(gt,"aria-colcount",t(z).length),ut=On(gt,"",ut,{"--hmm-table-columns":t(Ve).template,"--hmm-table-min-width":q,"--hmm-table-gutter":Ae}),Vr=On(Xn,"",Vr,{height:f()===void 0?void 0:`${f()}px`}),h(ko,t(Ut)?.text??"")},[()=>`${String(t(Ve).minWidth)}px`,()=>`${String(t(pe))}px`]),ne("keydown",gt,Ft),ne("contextmenu",gt,Jr),ne("pointerover",gt,rt),xr("pointerleave",gt,Rt),ne("pointerdown",gt,Be),ne("focusin",gt,Dt),ne("focusout",gt,Ze),xr("scroll",Xn,q=>Fe(q.currentTarget)),v(r,ar),ct()}St(["pointerdown","pointermove","pointerup","dblclick","keydown","contextmenu","pointerover","focusin","focusout","click","input"]);var dS=_('<img class="hmm-device-image svelte-rwoeeb"/>'),cS=_('<span class="hmm-device-image hmm-device-image-fallback svelte-rwoeeb"> </span>');function mi(r,e){dt(e,!0);let n=H(e,"deviceType",3,""),a=H(e,"src",3,void 0),s=H(e,"size",3,Nh),i=H(e,"title",3,void 0),o=H(e,"testId",3,void 0),l=N(!1);st(()=>{a(),u(l,!1)});const f=c(()=>a()!==void 0&&a()!==""&&!t(l)),p=c(()=>n().replace(/^(HmIPW?|HM|HMW)-/i,"").replace(/[^A-Za-z0-9]/g,"").slice(0,2).toUpperCase());var b=At(),g=De(b);{var k=S=>{var T=dS();E(()=>{R(T,"src",a()),R(T,"alt",n()),R(T,"title",i()??n()),R(T,"width",s()),R(T,"height",s()),R(T,"data-testid",o())}),xr("error",T,()=>u(l,!0)),v(S,T)},y=S=>{var T=cS();let I;var C=m(T,!0);E(D=>{R(T,"title",i()??n()),R(T,"aria-label",n()===""?void 0:n()),R(T,"role",n()===""?void 0:"img"),R(T,"data-testid",o()),I=On(T,"",I,{width:`${s()}px`,height:`${s()}px`,"font-size":D}),h(C,t(p))},[()=>`${Math.max(6,Math.round(s()*.5))}px`]),v(S,T)};$(g,S=>{t(f)?S(k):S(y,-1)})}v(r,b),ct()}const uS={unlink:["M9 17H7a5 5 0 0 1 0-10h2","M15 7h2a5 5 0 0 1 4 8","M8 12h3","M3 3l18 18"],history:["M3 12a9 9 0 1 0 3-6.7L3 8","M3 3v5h5","M12 7v5l3 2"],battery:["M4 7h13a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2z","M22 10v4","M5 10v4"],alert:["M12 4l9 16H3l9-16z","M12 10v4M12 17.2h.01"],shield:["M12 3l7 3v5.5c0 4.4-3 8.3-7 9.5-4-1.2-7-5.1-7-9.5V6z"],"x-circle":["M3 12a9 9 0 1 0 18 0a9 9 0 1 0-18 0","M9.2 9.2l5.6 5.6M14.8 9.2l-5.6 5.6"],settings:["M9 12a3 3 0 1 0 6 0a3 3 0 1 0-6 0","M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"],"arrow-up":["M3 12a9 9 0 1 0 18 0a9 9 0 1 0-18 0","M12 16V8","M8.5 11.5L12 8l3.5 3.5"]};var fS=Pa("<path></path>"),hS=_('<span role="img"><svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="svelte-1litlhm"></svg></span>');function mS(r,e){dt(e,!0);var n=hS();let a;var s=w(n);je(s,20,()=>uS[e.mark.icon],i=>i,(i,o)=>{var l=fS();E(()=>R(l,"d",o)),v(i,l)}),E(()=>{a=yt(n,1,`hmm-service-badge hmm-service-badge-${e.mark.tone??""}`,"svelte-1litlhm",a,{"hmm-service-badge-solid":e.mark.datapoint==="UNREACH"}),R(n,"data-datapoint",e.mark.datapoint),R(n,"data-tone",e.mark.tone),R(n,"title",e.title),R(n,"aria-label",e.label)}),v(r,n),ct()}var vS=_('<span class="hmm-primary-caption"> </span>'),pS=_('<button type="button"><span class="hmm-primary-icon svelte-1a5hxwr" aria-hidden="true"> </span> <!></button>'),gS=_('<span class="hmm-primary-button hmm-primary-measure svelte-1a5hxwr" aria-hidden="true"><span class="hmm-primary-icon svelte-1a5hxwr"> </span> <span class="hmm-primary-caption"> </span></span>'),bS=_('<span class="hmm-primary-slot svelte-1a5hxwr"><!> <!></span>');function Oh(r,e){dt(e,!0);let n=H(e,"icon",3,"+"),a=H(e,"disabled",3,!1),s=H(e,"reason",3,void 0),i=H(e,"compact",3,void 0),o=H(e,"onclick",3,void 0),l=H(e,"testId",3,void 0),f=N(void 0),p=N(void 0),b=N(0),g=N(0);st(()=>{const P=t(f),K=t(p);if(i()!==void 0||!P||!K)return;const X=()=>{u(b,Math.ceil(K.getBoundingClientRect().width),!0),u(g,P.getBoundingClientRect().width,!0)};X();const ie=new ResizeObserver(X);return ie.observe(P),ie.observe(K),()=>{ie.disconnect()}});const k=c(()=>i()??(t(b)>0&&t(g)>0&&t(g)<t(b)-1)),y=c(()=>a()&&s()!==void 0?`${e.caption} — ${s()}`:t(k)?e.caption:""),S=c(()=>l()===void 0?void 0:`${l()}-tooltip`);var T=bS();let I;var C=w(T);ai(C,{get text(){return t(y)},get testId(){return t(S)},children:(P,K)=>{var X=pS();let ie;var ue=w(X),fe=m(ue,!0),B=d(ue,2);{var re=de=>{var ee=vS(),ae=m(ee,!0);E(()=>{R(ee,"data-testid",l()===void 0?void 0:`${l()}-caption`),h(ae,e.caption)}),v(de,ee)};$(B,de=>{t(k)||de(re)})}E(()=>{ie=yt(X,1,"hmm-primary-button svelte-1a5hxwr",null,ie,{"hmm-primary-compact":t(k)}),R(X,"aria-label",e.caption),R(X,"data-testid",l()),R(X,"data-compact",t(k)?"true":"false"),X.disabled=a(),h(fe,n())}),ne("click",X,()=>o()?.()),v(P,X)},$$slots:{default:!0}});var D=d(C,2);{var x=P=>{var K=gS(),X=w(K),ie=m(X,!0),ue=d(X,2),fe=m(ue,!0);cn(K,B=>u(p,B),()=>t(p)),E(()=>{h(ie,n()),h(fe,e.caption)}),v(P,K)};$(D,P=>{i()===void 0&&P(x)})}cn(T,P=>u(f,P),()=>t(f)),E(P=>I=On(T,"",I,{"flex-basis":P}),[()=>t(b)>0?`${String(t(b))}px`:void 0]),v(r,T),ct()}St(["click"]);const _S={UNREACH:{icon:"unlink",tone:"red",label:"Communication disturbed"},STICKY_UNREACH:{icon:"history",tone:"grey",label:"Communication was disturbed"},ERROR:{icon:"alert",tone:"red",label:"Fault"},ERROR_CODE:{icon:"alert",tone:"red",label:"Fault"},SABOTAGE:{icon:"shield",tone:"red",label:"Sabotage"},FAULT_REPORTING:{icon:"x-circle",tone:"red",label:"Fault report"},LOWBAT:{icon:"battery",tone:"orange",label:"Low battery"},LOW_BAT:{icon:"battery",tone:"orange",label:"Low battery"},CONFIG_PENDING:{icon:"settings",tone:"blue",label:"Configuration pending"},UPDATE_PENDING:{icon:"arrow-up",tone:"blue",label:"Update pending"}},eu={red:0,orange:1,blue:2,grey:3},tu=84,Li=150,nu=180;function Qo(r,e,n=2){const a=[];for(const i of e){if(xs(i.address)!==r)continue;const o=_S[i.datapoint];!o||a.some(l=>l.datapoint===i.datapoint)||a.push({datapoint:i.datapoint,...o,address:i.address})}const s=a.some(i=>i.datapoint==="UNREACH");return a.filter(i=>!(s&&i.datapoint==="STICKY_UNREACH")).sort((i,o)=>eu[i.tone]-eu[o.tone]).slice(0,n)}function Lh(r,e){if(r==="CONFIG_PENDING")return e?"The configuration could not be transferred to the device":"A configuration is queued; the device takes it when it next wakes up"}function ES(r,e,n={channel:!1}){const a=[];let s=!1;for(const i of bb(r)??[]){if(i==="LINK"||n.channel&&i==="SERVICE")continue;const o=e(i);o===void 0?s=!0:o!=="empty"&&a.push(i)}return{names:a,pending:s}}function yS(r,e){return e&&r==="CONFIG_PENDING"}const SS=["UP_TO_DATE","NEW_FIRMWARE_AVAILABLE","DELIVER_FIRMWARE_IMAGE","PERFORMING_UPDATE"];function ru(r,e){return r!==void 0&&r!==""&&r!=="0.0.0"&&r!==e}function kS(r,e={}){const n=r.FIRMWARE??"",a=r.AVAILABLE_FIRMWARE,s=e.busy===!0,i=r.FIRMWARE_UPDATE_STATE;if(i!==void 0&&i!==""){if(i==="READY_FOR_UPDATE"&&ru(a,n))return{firmware:n,available:a,...s?{}:{action:"install"},busy:s};if(SS.includes(i))return{firmware:n,status:i.toLowerCase().replace(/_/g," "),busy:s}}return e.updatePending===!0?{firmware:n,status:"update pending",busy:s}:ru(a,n)?{firmware:n,available:a,...s?{}:{action:"update"},busy:s}:{firmware:n,busy:s}}function Fh(r,e){const n=r[e];return n?ki(e,n).map(a=>({path:a.path,label:a.node.name,depth:a.depth,hasChildren:(a.node.children?.length??0)>0})):[]}function Wl(r,e=" "){return`${e.repeat(Math.max(0,r.depth-1))}${r.label}`}function Ds(r,e){return r!==void 0&&r.enums.some(n=>Ga(n,e))}function Gh(r,e,n){return Ds(r,n)||e.some(a=>Ds(a,n))}function au(r,e,n){return Ds(r,n)||Ds(e,n)}function Eo(r,e){return Object.entries(r).filter(([,n])=>Ds(n,e)).map(([n])=>n).sort((n,a)=>n.localeCompare(a))}function Kl(r,e){return r===void 0?[]:e==="room"?r.rooms:r.functions}function wS(r,e,n){const a=Kl(r,n);if(a.length>0)return[...a];const s=[];for(const i of e)for(const o of Kl(i,n))s.includes(o)||s.push(o);return s}function AS(r,e){return e===null||!Ga(e,r)}function TS(r,e){const n=r.ADDRESS.lastIndexOf(":"),a=r.PARENT??(n<0?r.ADDRESS:r.ADDRESS.slice(0,n)),s=r.INDEX===void 0?r.ADDRESS.slice(n+1):String(r.INDEX);return{value:r.ADDRESS,label:e(r.ADDRESS)??r.ADDRESS,hint:e(a)??a,description:`${s}: ${r.TYPE}`}}var RS=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="add-link-stage"> </button> <button type="button" class="hmm-button" data-testid="add-link-create"> </button> <button type="button" class="hmm-button" data-testid="add-link-create-edit"> </button>',1),xS=_('<span class="hmm-add-link-label svelte-w1ajeb"> </span> <div class="hmm-add-link-field svelte-w1ajeb"><input class="hmm-input hmm-add-link-input svelte-w1ajeb" data-testid="add-link-name-all"/> <span class="hmm-add-link-roles hmm-add-link-under svelte-w1ajeb"> </span></div> <span class="hmm-add-link-label svelte-w1ajeb"> </span> <div class="hmm-add-link-field svelte-w1ajeb"><input class="hmm-input hmm-add-link-input svelte-w1ajeb" data-testid="add-link-description-all"/></div>',1),IS=_('<span></span> <span class="hmm-add-link-empty svelte-w1ajeb" data-testid="add-link-none"> </span>',1),DS=_('<tr><td class="hmm-mono svelte-w1ajeb"> </td><td class="hmm-mono svelte-w1ajeb"> </td><td class="svelte-w1ajeb"><input class="hmm-input svelte-w1ajeb"/></td><td class="svelte-w1ajeb"><input class="hmm-input svelte-w1ajeb"/></td></tr>'),NS=_('<table class="hmm-pair-names svelte-w1ajeb" data-testid="add-link-pairs"><thead><tr><th class="svelte-w1ajeb"> </th><th class="svelte-w1ajeb"> </th><th class="svelte-w1ajeb"> </th><th class="svelte-w1ajeb"> </th></tr></thead><tbody></tbody></table>'),CS=_('<div class="hmm-add-link svelte-w1ajeb"><span class="hmm-add-link-label svelte-w1ajeb"> </span> <div class="hmm-add-link-field svelte-w1ajeb"><!> <span class="hmm-add-link-roles svelte-w1ajeb"> </span></div> <span class="hmm-add-link-label svelte-w1ajeb"> </span> <div class="hmm-add-link-field svelte-w1ajeb"><!> <span class="hmm-add-link-roles svelte-w1ajeb"> </span></div> <!> <!></div> <!>',1);function Uh(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"onedit",3,void 0),s=H(e,"presetSenders",19,()=>[]),i=H(e,"presetReceivers",19,()=>[]);const o=Bt(),l=o.i18n.t;let f=N(He([])),p=N(He([])),b=N(!1),g=N(He({})),k=N(""),y=N("");const S=c(()=>o.app.selectedInterface),T=c(()=>o.devices.index(t(S)));st(()=>{n()&&(u(f,[...s()],!0),u(p,[...i()],!0),u(g,{},!0),u(k,""),u(y,""))});const I=c(()=>t(T)?rh(t(T)).map(B=>P(B)):[]),C=c(()=>{const B=t(T);if(!B||t(f).length===0)return[];const re=t(f).map(de=>B.get(de)).filter(de=>de!==void 0);return B.channels().filter(de=>re.every(ee=>Vb(ee,de))).map(de=>P(de))}),D=c(()=>[...new Set(t(f).flatMap(B=>ya(t(T)?.get(B)?.LINK_SOURCE_ROLES)))].join(" ")),x=c(()=>[...new Set(t(p).flatMap(B=>ya(t(T)?.get(B)?.LINK_TARGET_ROLES)))].join(" "));function P(B){return TS(B,re=>o.names.name(re))}function K(){return t(f).flatMap(B=>t(p).map(re=>{const de=t(g)[X(B,re)],ee=de?.name.trim()===""||de===void 0?t(k).trim():de.name.trim(),ae=de?.description.trim()===""||de===void 0?t(y).trim():de.description.trim();return{sender:B,receiver:re,...ee===""?{}:{name:ee},...ae===""?{}:{description:ae}}}))}function X(B,re){return`${B}>${re}`}function ie(B,re,de,ee){const ae=X(B,re),Y=t(g)[ae]??{name:"",description:""};u(g,{...t(g),[ae]:{...Y,[de]:ee}},!0)}function ue(){const B=K();B.length!==0&&(o.changeSet.stage({kind:"linkAdd",interfaceName:t(S),title:l("{count} links",{},B.length),pairs:B,calls:B.map(re=>`addLink(${re.sender}, ${re.receiver}, ${JSON.stringify(re.name??"")})`),lines:B.map(re=>({label:`${o.nameOf(re.sender)} → ${o.nameOf(re.receiver)}`,to:re.name??""}))}),n(!1))}async function fe(B){u(b,!0);const re=await o.links.addPairs(t(S),K());if(u(b,!1),re===0)return;n(!1);const de=t(f)[0],ee=t(p)[0];B&&de!==void 0&&ee!==void 0&&a()?.({sender:de,receiver:ee})}{const B=de=>{var ee=RS(),ae=De(ee),Y=m(ae,!0),Z=d(ae,2),te=m(Z,!0),Re=d(Z,2),J=m(Re,!0),ye=d(Re,2),xe=m(ye,!0);E((ge,V,pe,ve)=>{h(Y,ge),Z.disabled=t(b)||t(p).length===0,h(te,V),Re.disabled=t(b)||t(p).length===0,h(J,pe),ye.disabled=t(b)||t(p).length===0,h(xe,ve)},[()=>l("Cancel"),()=>l("Add to pending changes"),()=>l("Create"),()=>l("Create and edit")]),ne("click",ae,()=>n(!1)),ne("click",Z,ue),ne("click",Re,()=>{fe(!1)}),ne("click",ye,()=>{fe(!0)}),v(de,ee)};let re=c(()=>l("Create link"));Tn(r,{get title(){return t(re)},width:"720px",top:"min(12vh, 96px)",testId:"add-link-dialog",get open(){return n()},set open(de){n(de)},buttons:B,children:(de,ee)=>{var ae=CS(),Y=De(ae),Z=w(Y),te=m(Z,!0),Re=d(Z,2),J=w(Re);{let le=c(()=>l("Sender")),G=c(()=>l("Select")),L=c(()=>l("Filter")),A=c(()=>l("Check all")),M=c(()=>l("Uncheck all"));di(J,{get options(){return t(I)},get label(){return t(le)},get placeholder(){return t(G)},get filterLabel(){return t(L)},get checkAllLabel(){return t(A)},get uncheckAllLabel(){return t(M)},summary:he=>l("{count} channels selected",{},he.length),testId:"add-link-senders",inline:!0,get selected(){return t(f)},set selected(he){u(f,he,!0)}})}var ye=d(J,2),xe=m(ye),ge=d(Re,2),V=m(ge,!0),pe=d(ge,2),ve=w(pe);{let le=c(()=>t(f).length===0),G=c(()=>l("Receiver")),L=c(()=>t(f).length===0?l("Sender"):l("Select")),A=c(()=>l("Filter")),M=c(()=>l("Check all")),he=c(()=>l("Uncheck all"));di(ve,{get options(){return t(C)},get disabled(){return t(le)},get label(){return t(G)},get placeholder(){return t(L)},get filterLabel(){return t(A)},get checkAllLabel(){return t(M)},get uncheckAllLabel(){return t(he)},summary:Te=>l("{count} channels selected",{},Te.length),testId:"add-link-receivers",inline:!0,get selected(){return t(p)},set selected(Te){u(p,Te,!0)}})}var Q=d(ve,2),oe=m(Q),F=d(pe,2);{var W=le=>{var G=xS(),L=De(G),A=m(L,!0),M=d(L,2),he=w(M),Te=d(he,2),Pe=m(Te,!0),Ve=d(M,2),Ye=m(Ve,!0),ot=d(Ve,2),Je=w(ot);E((Se,we,j,U,Ne)=>{h(A,Se),R(he,"aria-label",we),h(Pe,j),h(Ye,U),R(Je,"aria-label",Ne)},[()=>l("Name"),()=>l("Name"),()=>l("Used for every pair without its own name"),()=>l("Description"),()=>l("Description")]),An(he,()=>t(k),Se=>u(k,Se)),An(Je,()=>t(y),Se=>u(y,Se)),v(le,G)},O=c(()=>K().length>0);$(F,le=>{t(O)&&le(W)})}var z=d(F,2);{var ce=le=>{var G=IS(),L=d(De(G),2),A=m(L,!0);E(M=>h(A,M),[()=>l("No channel can receive from this sender")]),v(le,G)};$(z,le=>{t(f).length>0&&t(C).length===0&&le(ce)})}var me=d(Y,2);{var be=le=>{var G=NS(),L=w(G),A=w(L),M=w(A),he=m(M,!0),Te=d(M),Pe=m(Te,!0),Ve=d(Te),Ye=m(Ve,!0),ot=d(Ve),Je=m(ot,!0),Se=d(L);je(Se,21,K,we=>X(we.sender,we.receiver),(we,j)=>{var U=DS(),Ne=w(U),Le=m(Ne,!0),ze=d(Ne),_e=m(ze,!0),Ie=d(ze),Ce=w(Ie),Fe=d(Ie),Oe=w(Fe);E((qe,Ke,Xe,Qe,it,bt,vt)=>{R(U,"data-testid",qe),h(Le,Ke),h(_e,Xe),R(Ce,"aria-label",Qe),an(Ce,it),R(Ce,"placeholder",t(k)),R(Oe,"aria-label",bt),an(Oe,vt),R(Oe,"placeholder",t(y))},[()=>`add-link-pair-${X(t(j).sender,t(j).receiver)}`,()=>o.nameOf(t(j).sender),()=>o.nameOf(t(j).receiver),()=>`${l("Name")} ${t(j).sender} ${t(j).receiver}`,()=>t(g)[X(t(j).sender,t(j).receiver)]?.name??"",()=>`${l("Description")} ${t(j).sender} ${t(j).receiver}`,()=>t(g)[X(t(j).sender,t(j).receiver)]?.description??""]),ne("input",Ce,qe=>ie(t(j).sender,t(j).receiver,"name",qe.currentTarget.value)),ne("input",Oe,qe=>ie(t(j).sender,t(j).receiver,"description",qe.currentTarget.value)),v(we,U)}),E((we,j,U,Ne)=>{h(he,we),h(Pe,j),h(Ye,U),h(Je,Ne)},[()=>l("Sender"),()=>l("Receiver"),()=>l("Name"),()=>l("Description")]),v(le,G)},Ee=c(()=>K().length>1);$(me,le=>{t(Ee)&&le(be)})}E((le,G)=>{h(te,le),h(xe,`LINK_SOURCE_ROLES: ${t(D)??""}`),h(V,G),h(oe,`LINK_TARGET_ROLES: ${t(x)??""}`)},[()=>l("Sender"),()=>l("Receiver")]),v(de,ae)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click","input"]);var PS=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="smoke-group-apply"> </button>',1),MS=_('— TEAM_TAG <span class="hmm-mono"> </span>',1),OS=_('<p class="hmm-smoke-muted svelte-1spai3u"><span class="hmm-mono"> </span> <!></p>'),su=_('<p class="hmm-smoke-muted svelte-1spai3u"> </p>'),LS=_('<p class="hmm-smoke-muted svelte-1spai3u" data-testid="smoke-group-none"> </p>'),FS=_('<li class="svelte-1spai3u"><label><input type="checkbox"/> <span class="hmm-smoke-member-name svelte-1spai3u"> </span> <span class="hmm-mono hmm-smoke-member-id svelte-1spai3u"> </span> <span class="hmm-smoke-member-note svelte-1spai3u"> </span></label></li>'),GS=_('<ul class="hmm-smoke-list svelte-1spai3u" data-testid="smoke-group-candidates"></ul>'),US=_('<div class="hmm-smoke-form svelte-1spai3u"><!> <p class="hmm-smoke-heading svelte-1spai3u"> </p> <!></div>');function BS(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"group",3,void 0),s=H(e,"isNew",3,!1);const i=Bt(),o=i.i18n.t;let l=N(He([])),f=N(!1);const p=c(()=>i.app.selectedInterface),b=c(()=>i.devices.index(t(p))),g=c(()=>i.smokeGroups.of(t(p))),k=c(()=>a()?.kind==="hmip"&&i.smokeGroups.isLoading(t(p))),y=c(()=>{if(a()===void 0||t(b)===void 0)return[];const K=a();return t(b).channels().filter(X=>(X.TEAM_CHANNELS??[]).length>0?!1:K.kind==="team"?(X.TEAM_TAG??"")!==""&&X.TEAM_TAG===K.teamTag:eh(X))});function S(K){return a()?.kind==="team"||(t(g)[K]??null)!==null}function T(K){if(a()===void 0)return"";if(a().kind==="team"){const ie=t(b)===void 0?void 0:th(t(b),K);return ie===void 0||ie===a().address||(t(b)?.get(t(b).get(K)?.TEAM??"")?.TEAM_CHANNELS??[]).length<2?"":o("in {team}",{team:i.nameOf(ie)})}const X=(t(g)[K]??[]).filter(ie=>ie!==a().number);return X.length===0?"":o("also in {groups}",{groups:X.map(ie=>o("Smoke group {n}",{n:ie})).join(", ")})}st(()=>{n()&&Sr(()=>{u(l,[...a()?.members??[]],!0)})});function I(K,X){u(l,X?[...t(l),K]:t(l).filter(ie=>ie!==K),!0)}const C=c(()=>Pb(a()?.members??[],t(l))),D=c(()=>t(C).added.length>0||t(C).removed.length>0),x=c(()=>a()===void 0?"":a().kind==="team"?`${o("Team")}: ${i.nameOf(a().address)}`:o("Smoke group {n}",{n:a().number??0}));async function P(){if(a()===void 0||!t(D))return;const{added:K,removed:X}=t(C);u(f,!0);try{if(a().kind==="team"){const fe=a().teamChannel??"";await i.devices.setTeams(t(p),[...K.map(re=>({address:re,teamAddress:fe})),...X.map(re=>({address:re,teamAddress:""}))])===K.length+X.length&&n(!1);return}const ie=await i.smokeGroups.setMembers(t(p),a().number??0,K,X),ue=ie.filter(fe=>!fe.ok);for(const fe of ue)i.notices.push("error",`${i.nameOf(fe.address)}: ${fe.problems.map(B=>B.message).join("; ")||(fe.faultString??"")}`,t(p));ue.length===0&&ie.length===K.length+X.length&&n(!1)}finally{u(f,!1)}}Tn(r,{get title(){return t(x)},width:"600px",testId:"smoke-group-dialog",get open(){return n()},set open(X){n(X)},buttons:X=>{var ie=PS(),ue=De(ie),fe=m(ue,!0),B=d(ue,2),re=m(B,!0);E((de,ee)=>{h(fe,de),B.disabled=t(f)||!t(D),h(re,ee)},[()=>o("Cancel"),()=>o("Apply")]),ne("click",ue,()=>n(!1)),ne("click",B,()=>{P()}),v(X,ie)},children:(X,ie)=>{var ue=At(),fe=De(ue);{var B=re=>{var de=US(),ee=w(de);{var ae=V=>{var pe=OS(),ve=w(pe),Q=m(ve,!0),oe=d(ve,2);{var F=W=>{var O=MS(),z=d(De(O)),ce=m(z,!0);E(()=>h(ce,a().teamTag)),v(W,O)};$(oe,W=>{a().teamTag&&W(F)})}E(()=>h(Q,a().address)),v(V,pe)},Y=V=>{var pe=su(),ve=m(pe);E((Q,oe)=>h(ve,`${Q??""}
|
|
14
|
-
${oe??""}`),[()=>s()?o("A new group takes the lowest free number."):"",()=>o("Changes are written to the detectors and take effect once each detector has picked them up.")]),v(V,pe)};$(ee,V=>{a().kind==="team"?V(ae):V(Y,-1)})}var Z=d(ee,2),te=m(Z,!0),Re=d(Z,2);{var J=V=>{var pe=su(),ve=m(pe,!0);E(Q=>h(ve,Q),[()=>o("Loading")]),v(V,pe)},ye=c(()=>t(k)&&t(y).some(V=>!(V.ADDRESS in t(g)))),xe=V=>{var pe=LS(),ve=m(pe,!0);E(Q=>h(ve,Q),[()=>o("This interface has no smoke detector")]),v(V,pe)},ge=V=>{var pe=GS();je(pe,21,()=>t(y),ve=>ve.ADDRESS,(ve,Q)=>{const oe=c(()=>S(t(Q).ADDRESS));var F=FS(),W=w(F);let O;var z=w(W),ce=d(z,2),me=m(ce,!0),be=d(ce,2),Ee=m(be,!0),le=d(be,2),G=m(le,!0);E((L,A,M)=>{O=yt(W,1,"hmm-smoke-member svelte-1spai3u",null,O,{"hmm-smoke-member-off":!t(oe)}),z.disabled=!t(oe),Nr(z,L),R(z,"data-testid",`smoke-group-member-${t(Q).ADDRESS}`),h(me,A),h(Ee,t(Q).ADDRESS),h(G,M)},[()=>t(l).includes(t(Q).ADDRESS),()=>i.nameOf(t(Q).ADDRESS),()=>t(oe)?T(t(Q).ADDRESS):o("cannot be grouped - no GROUP parameters")]),ne("change",z,L=>I(t(Q).ADDRESS,L.currentTarget.checked)),v(ve,F)}),v(V,pe)};$(Re,V=>{t(ye)?V(J):t(y).length===0?V(xe,1):V(ge,-1)})}E(V=>h(te,V),[()=>o("Members")]),v(re,de)};$(fe,re=>{a()!==void 0&&re(B)})}v(X,ue)},$$slots:{buttons:!0,default:!0}}),ct()}St(["click","change"]);var HS=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="team-apply"> </button>',1),VS=_('<p data-testid="team-none"> </p>'),zS=_("<option> </option>"),jS=_('<p class="hmm-team-members svelte-1ervkxt" data-testid="team-members"> </p>'),WS=_('<p class="hmm-team-empty svelte-1ervkxt" data-testid="team-empty"> </p>'),KS=_('<p><span class="hmm-mono"> </span> — TEAM_TAG <span class="hmm-mono"> </span></p> <label class="hmm-team-row svelte-1ervkxt"><span> </span> <select class="hmm-select" data-testid="team-select"><option> </option><!></select></label> <!> <!>',1);function YS(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"address",3,"");const s=Bt(),i=s.i18n.t;let o=N(He([])),l=N(""),f=N(!1);const p=c(()=>s.app.selectedInterface),b=c(()=>s.devices.index(t(p))),g=c(()=>t(b)?.get(a())),k=c(()=>t(g)?.TEAM_TAG??""),y=c(()=>t(g)?.TEAM??""),S=c(()=>t(o).filter(C=>(C.TEAM_TAG??"")===t(k)));st(()=>{!n()||t(p)===""||a()===""||(u(l,t(y),!0),s.devices.teams(t(p)).then(C=>{u(o,C,!0)}))});function T(C){const D=C.TEAM_CHANNELS??[];return D.length===0?i("No data"):D.map(x=>s.nameOf(x)).join(", ")}async function I(){u(f,!0);const C=await s.devices.setTeam(t(p),a(),t(l));u(f,!1),C&&n(!1)}{const C=x=>{var P=HS(),K=De(P),X=m(K,!0),ie=d(K,2),ue=m(ie,!0);E((fe,B)=>{h(X,fe),ie.disabled=t(f)||t(k)===""||t(l)===t(y),h(ue,B)},[()=>i("Cancel"),()=>i("Apply")]),ne("click",K,()=>n(!1)),ne("click",ie,()=>{I()}),v(x,P)};let D=c(()=>i("Team"));Tn(r,{get title(){return t(D)},width:"560px",testId:"team-dialog",get open(){return n()},set open(x){n(x)},buttons:C,children:(x,P)=>{var K=At(),X=De(K);{var ie=fe=>{var B=VS(),re=m(B,!0);E(de=>h(re,de),[()=>i("This channel does not belong to a team")]),v(fe,B)},ue=fe=>{var B=KS(),re=De(B),de=w(re),ee=m(de,!0),ae=d(de,2),Y=m(ae,!0),Z=d(re,2),te=w(Z),Re=m(te,!0),J=d(te,2),ye=w(J),xe=m(ye,!0);ye.value=ye.__value="";var ge=d(ye);je(ge,17,()=>t(S),oe=>oe.ADDRESS,(oe,F)=>{var W=zS(),O=m(W),z={};E(ce=>{h(O,`${ce??""} (${t(F).ADDRESS??""})`),z!==(z=t(F).ADDRESS)&&(W.value=(W.__value=z)??"")},[()=>s.nameOf(t(F).ADDRESS)]),v(oe,W)}),qt(J);var V=d(Z,2);{var pe=oe=>{const F=c(()=>t(S).find(ce=>ce.ADDRESS===t(l)));var W=At(),O=De(W);{var z=ce=>{var me=jS(),be=m(me);E((Ee,le)=>h(be,`${Ee??""}: ${le??""}`),[()=>i("Members"),()=>T(t(F))]),v(ce,me)};$(O,ce=>{t(F)&&ce(z)})}v(oe,W)};$(V,oe=>{t(l)!==""&&oe(pe)})}var ve=d(V,2);{var Q=oe=>{var F=WS(),W=m(F,!0);E(O=>h(W,O),[()=>i("The interface knows no other team yet")]),v(oe,F)};$(ve,oe=>{t(S).length===0&&oe(Q)})}E((oe,F)=>{h(ee,a()),h(Y,t(k)),h(Re,oe),h(xe,F)},[()=>i("Team"),()=>i("Own team")]),kr(J,()=>t(l),oe=>u(l,oe)),v(fe,B)};$(X,fe=>{t(k)===""?fe(ie):fe(ue,-1)})}v(x,K)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click"]);function Bh(r,e){return Rd(e,r.pair)?.seconds}function qS(r,e){return Bh(r,e)===r.notUsedSeconds}function Hh(r,e){const n=dh(e,r.pair),a=xd(e,r.pair);if(!(!n||!a))return{values:a,exact:n.exact,seconds:n.seconds}}function $S(r,e){const n=[];for(const a of bo(r.description)){const s=r.description[a.unitParam],i=r.description[a.countParam];if(!s||!i||e.has(a.unitParam)||e.has(a.countParam))continue;const o=lh(i);n.push({pair:a,unitDescription:s,countDescription:i,writable:Xr(s)&&Xr(i),notUsedSeconds:o??ch(a),notUsedFromSpecial:o!==void 0})}if(n.length!==0)return{kind:"duration-pairs",id:"duration-pairs",covers:n.flatMap(a=>[a.pair.unitParam,a.pair.countParam]),pairs:n}}function vi(r){if(!Number.isFinite(r))return"—";if(r===0)return"0 s";if(r<1)return`${Math.round(r*1e3)} ms`;const e=[];let n=Math.round(r*10)/10;const a=Math.floor(n/3600);a>0&&(e.push(`${a} h`),n-=a*3600);const s=Math.floor(n/60);return s>0&&(e.push(`${s} min`),n-=s*60),n>0&&e.push(`${Math.round(n*10)/10} s`),e.join(" ")}const XS=["REFERENCE_RUNNING_TIME_TOP_BOTTOM","REFERENCE_RUNNING_TIME_BOTTOM_TOP","REFERENCE_RUNNING_TIME_SLATS"],QS=["CHANGE_OVER_DELAY","DELAY_COMPENSATION"],ZS=["REFERENCE_RUN_COUNTER","ENDPOSITION_AUTO_DETECT"];function JS(r,e){if(r.source.kind==="seconds"){const i=e[r.source.param];return typeof i=="number"?i:void 0}const n=r.source.view,a=n.pair.units[Vh(n,e)],s=e[n.pair.countParam];if(!(a===void 0||typeof s!="number"))return Math.round(a.seconds*s*1e3)/1e3}function e0(r,e){if(r.source.kind==="seconds")return`${r.source.param} = ${String(e[r.source.param]??"—")}`;const n=r.source.view,a=n.pair.units[Vh(n,e)];return`${String(e[n.pair.countParam]??"—")} × ${a?.name??"—"}`}function t0(r,e){if(!(!Number.isFinite(e)||e<0)){if(r.source.kind==="seconds"){const n=Jn(r.source.description,"MAX");return n!==void 0&&e>n?void 0:{values:{[r.source.param]:e},exact:!0,seconds:e}}return Hh(r.source.view,e)}}function n0(r,e){const{description:n}=r,a=new Map(bo(n).map(f=>[f.name,f])),s=[],i=[];for(const f of XS){const p=n[f],b=a.get(f);if(p){s.push({id:f,source:{kind:"seconds",param:f,description:p},writable:Xr(p)}),i.push(f);continue}const g=b&&n[b.unitParam],k=b&&n[b.countParam];if(!b||!g||!k)continue;const y=lh(k),S={pair:b,unitDescription:g,countDescription:k,writable:Xr(g)&&Xr(k),notUsedSeconds:y??ch(b),notUsedFromSpecial:y!==void 0};s.push({id:f,source:{kind:"pair",view:S},writable:S.writable}),i.push(b.unitParam,b.countParam)}if(s.length===0||i.some(f=>e.has(f)))return;const o=iu(n,QS),l=iu(n,ZS);return{kind:"blind-calibration",id:"blind-calibration",covers:[...i,...o.map(f=>f.param),...l.map(f=>f.param)],runningTimes:s,delays:o,extras:l}}function iu(r,e){return e.flatMap(n=>{const a=r[n];return a?[{param:n,description:a}]:[]})}function Vh(r,e){const n=e[r.pair.unitParam];return typeof n=="number"?n:r.pair.units.findIndex(a=>a.name===n)}function r0(r,e,n){const a=[];for(const[s,i]of Object.entries(r.description)){const o=Ma(i);if(i.TYPE!=="ENUM"||!o||o.length===0||e.has(s))continue;const l=n.preset(s),f=l?a0(l.presets,o,n):s0(s,o,n);!f||f.length===0||a.push({param:s,description:i,options:f,writable:Xr(i),...l===void 0?{}:{presetId:l.id}})}if(a.length!==0)return{kind:"enum-options",id:"enum-options",covers:a.map(s=>s.param),fields:a}}function a0(r,e,n){const a=[];for(const s of r){const i=typeof s.value=="number"?s.value:Number(s.value);if(!Number.isInteger(i))return;a.push({value:i,label:gd(s,o=>n.uiLabel(o)),raw:e[i]??"",named:!0})}return a}function s0(r,e,n){const a=[];let s=!1;for(const[i,o]of e.entries()){const l=n.optionByName(r,o),f=n.optionByIndex(r,i);l===void 0&&f!==void 0?(s=!0,a.push({value:i,label:f,raw:o,named:!0})):a.push({value:i,label:l??o,raw:o,named:l!==void 0})}return s?a:void 0}function _a(r,e){return`${r}_WP_${e}`}const i0=/^(\d+)_WP_(.+)$/,ou=["WEEKDAY","TIME","CONDITION","ASTRO_TYPE","ASTRO_OFFSET","LEVEL","LEVEL_2","DURATION","RAMP_TIME","OUTPUT_BEHAVIOUR","TARGET_CHANNELS"],o0=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function l0(r,e){return typeof r=="number"&&(r&1<<e)!==0}function d0(r,e,n){const a=typeof r=="number"?r:0;return n?a|1<<e:a&~(1<<e)}function c0(r,e){const n=r[_a(e,"FIXED_HOUR")],a=r[_a(e,"FIXED_MINUTE")];return typeof n!="number"||typeof a!="number"?"":`${String(n).padStart(2,"0")}:${String(a).padStart(2,"0")}`}function u0(r,e){const n=/^(\d{1,2}):([0-5]\d)$/.exec(e.trim()),a=n?Number(n[1]):Number.NaN;if(!(!n||a>23))return{[_a(r,"FIXED_HOUR")]:a,[_a(r,"FIXED_MINUTE")]:Number(n[2])}}function f0(r,e){const n=r[_a(e,"WEEKDAY")];return typeof n!="number"||n===0}function h0(r,e){const{description:n}=r,a=new Map,s=[];for(const T of Object.keys(n)){const I=i0.exec(T),C=I?.[1],D=I?.[2];if(!I||C===void 0||D===void 0)continue;let x=a.get(C);x||(x=new Set,a.set(C,x)),x.add(D),s.push(T)}const i=[...a.keys()].sort((T,I)=>Number(T)-Number(I)),o=i[0],l=o===void 0?void 0:a.get(o);if(o===void 0||!l||!l.has("WEEKDAY")||s.some(T=>e.has(T)))return;const f=[...l].sort().join(",");for(const T of i)if([...a.get(T)??[]].sort().join(",")!==f)return;const p=new Map(bo(n).map(T=>[T.name,T])),b={},g=[],k=new Set,y=(T,I,C)=>{const D=n[_a(o,C[0]??"")];if(!(!D||C.some(x=>!l.has(x)))){g.push({id:T,kind:I,fields:C,description:D});for(const x of C)k.add(x)}};y("WEEKDAY","weekday",["WEEKDAY"]),y("TIME","time",["FIXED_HOUR","FIXED_MINUTE"]);for(const T of[...l].sort()){if(k.has(T)||!T.endsWith("_BASE"))continue;const I=T.slice(0,-5);if(!l.has(`${I}_FACTOR`))continue;let C=!0;for(const D of i){const x=p.get(`${D}_WP_${I}`);if(!x){C=!1;break}b[`${D}:${I}`]=x}C&&y(I,"duration",[T,`${I}_FACTOR`])}for(const T of[...l].sort())k.has(T)||y(T,n[_a(o,T)]?.TYPE==="ENUM"?"enum":"number",[T]);if(k.size!==l.size)return;g.sort((T,I)=>lu(T.id)-lu(I.id)||(T.id<I.id?-1:1));const S=n[_a(o,"WEEKDAY")];return{kind:"switch-week-profile",id:"switch-week-profile",covers:s,slots:i,columns:g,durations:b,writable:S!==void 0&&Xr(S)}}function lu(r){const e=ou.indexOf(r);return e===-1?ou.length:e}const $i=["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"],m0=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],du=["ENDTIME","TIMEOUT"],cu=["TEMPERATURE","TEMPERATUR"],v0=/^(?:(P\d+)_)?([A-Z]+)_([A-Z]+)_(\d+)$/;function qr(r,e,n){return`${r}_${e}_${n}`}function Yl(r,e,n,a,s){return{endTime:uu(e[qr(n.endTimePrefix,a,s)]),value:uu(e[qr(n.valuePrefix,a,s)])}}function p0(r,e){const n=[];for(const a of r.profiles)for(const s of r.days){let i=0,o=!1;for(let l=1;l<=r.slots;l+=1){const{endTime:f}=Yl(r,e,a,s,l);f!==void 0&&(o?f!==r.dayEnd&&n.push({profile:a.id,day:s,slot:l,code:"after-day-end"}):f<=i&&n.push({profile:a.id,day:s,slot:l,code:"not-increasing"}),f>=r.dayEnd&&(o=!0),i=f)}o||n.push({profile:a.id,day:s,slot:r.slots,code:"day-not-closed"})}return n}function g0(r,e,n,a,s){const i={};for(const o of s)if(!(o===a||!r.days.includes(o)))for(let l=1;l<=r.slots;l+=1)zh(i,e,n,a,n,o,l);return i}function b0(r,e,n,a){const s={};for(const i of a)if(i.id!==n.id)for(const o of r.days)for(let l=1;l<=r.slots;l+=1)zh(s,e,n,o,i,o,l);return s}function Ks(r){if(r===void 0||!Number.isFinite(r)||r<0)return"";const e=Math.floor(r/60),n=Math.round(r%60);return`${String(e).padStart(2,"0")}:${String(n).padStart(2,"0")}`}function _0(r){const e=/^(\d{1,2}):([0-5]\d)$/.exec(r.trim());if(!e)return;const n=Number(e[1])*60+Number(e[2]);return n>1440?void 0:n}function E0(r,e){const{description:n}=r,a=[],s=new Map;let i=0;for(const S of Object.keys(n)){const T=v0.exec(S),I=T?.[3],C=T?.[2];if(!T||!I||!C||!$i.includes(I)||!du.includes(C)&&!cu.includes(C))continue;const D=T[1]??"";a.push(S);let x=s.get(D);x||(x=new Set,s.set(D,x)),x.add(C),i=Math.max(i,Number(T[4]))}if(a.length===0||i===0)return;const o=[];let l="",f="";for(const[S,T]of[...s].sort(([I],[C])=>I<C?-1:1)){const I=[...T].find(x=>du.includes(x)),C=[...T].find(x=>cu.includes(x));if(T.size!==2||I===void 0||C===void 0||l!==""&&(I!==l||C!==f))return;l=I,f=C;const D=S===""?"":`${S}_`;o.push({id:S,endTimePrefix:`${D}${I}`,valuePrefix:`${D}${C}`})}const p=[];for(const S of o)for(const T of $i)for(let I=1;I<=i;I+=1)p.push(qr(S.endTimePrefix,T,I),qr(S.valuePrefix,T,I));if(p.length!==a.length||p.some(S=>!(S in n)||e.has(S)))return;const b=o[0],g=b&&n[qr(b.endTimePrefix,"MONDAY",1)],k=b&&n[qr(b.valuePrefix,"MONDAY",1)],y=g===void 0?void 0:Jn(g,"MAX");if(!(!g||!k||y===void 0))return{kind:"week-profile",id:"week-profile",covers:p,profiles:o,days:$i,slots:i,endTimeField:l,valueField:f,endTimeDescription:g,valueDescription:k,dayEnd:y,writable:Xr(g)&&Xr(k)}}function zh(r,e,n,a,s,i,o){const l=e[qr(n.endTimePrefix,a,o)],f=e[qr(n.valuePrefix,a,o)];l!==void 0&&(r[qr(s.endTimePrefix,i,o)]=l),f!==void 0&&(r[qr(s.valuePrefix,i,o)]=f)}function uu(r){return typeof r=="number"&&Number.isFinite(r)?r:void 0}const y0={optionByName:()=>{},optionByIndex:()=>{},preset:()=>{},uiLabel:r=>r},S0=[E0,h0,n0,$S,r0];function k0(r,e=y0){const n=[],a=new Set;for(const s of S0){const i=s(r,a,e);if(i){n.push(i);for(const o of i.covers)a.add(o)}}return n}function w0(r){return new Set(r.flatMap(e=>e.covers))}function A0(r){switch(r.TYPE){case"BOOL":return"bool";case"ACTION":return"action";case"ENUM":return"enum";case"INTEGER":return"integer";case"FLOAT":return"float";case"STRING":return"string";default:return"unknown"}}function jh(r,e){const n=e?e.parameters.map(s=>s.name):Ad(r),a=new Map((e?.parameters??[]).map(s=>[s.name,s]));return n.map(s=>{const i=r[s];if(!i)return;const o=os(Jn(i,"MIN"),i),l=os(Jn(i,"MAX"),i),f=a.get(s)?.preset,p=Ma(i);return{name:s,description:i,kind:A0(i),writable:Xr(i),unit:lo(i),step:i.TYPE==="FLOAT"?.1:1,special:i.SPECIAL??[],visible:a.get(s)?.visible??!0,...o===void 0?{}:{min:o},...l===void 0?{}:{max:l},...p===void 0?{}:{valueList:p},...f===void 0?{}:{preset:f}}}).filter(s=>s!==void 0)}function Qs(r,e,n,a){const s=b_(r,e,n,{enumAs:c_(a.interfaceName),...a.writeAll===!0?{writeAll:!0}:{}});return{targets:[...a.targets],entries:s.changed.map(i=>({param:i,from:Ns(r[i],n[i]),to:Ns(s.values[i],n[i])})),values:s.values,skipped:s.skipped,problems:s.problems}}function T0(r,e,n){const a=(l,f,p)=>`putParamset(${l}←${f}, LINK, ${JSON.stringify(p)})`,s=e?.values??{},i=Object.keys(r.values).length>0,o=Object.keys(s).length>0;return{targets:n.map(l=>`${l.receiver}←${l.sender}`),entries:[...r.entries.map(l=>({...l,side:"receiver"})),...(e?.entries??[]).map(l=>({...l,side:"sender"}))],values:r.values,senderValues:s,skipped:[...r.skipped,...e?.skipped??[]],problems:[...r.problems,...e?.problems??[]],calls:[...i?n.map(l=>a(l.receiver,l.sender,r.values)):[],...o?n.map(l=>a(l.sender,l.receiver,s)):[]]}}function fu(r){const e=r.senderValues??{};return{...Object.keys(r.values).length>0?{receiverToSender:r.values}:{},...Object.keys(e).length>0?{senderToReceiver:e}:{}}}function Ns(r,e){if(r===void 0)return"—";const n=typeof r=="object"&&r!==null&&"explicitDouble"in r?r.explicitDouble:r;return e?.TYPE==="ENUM"&&typeof n=="number"?Ma(e)?.[n]??String(n):typeof n=="boolean"?n?"true":"false":String(n)}function ql(r,e,n){return Object.keys(r).map(a=>{const s=Ns(r[a],n[a]),i=Ns(e[a],n[a]);return{param:a,sent:s,stored:i,differs:s!==i}})}function Wh(r){return Ad(r).filter(e=>G_(e)?e!=="DUTY_CYCLE"||r[e]?.TYPE==="BOOL":!1)}function R0(r){const e=Object.entries(r.edits).filter(([a,s])=>r.suppressed.includes(a)!==s).sort(([a],[s])=>a.localeCompare(s)),n=a=>a?r.labels.suppressed:r.labels.unsuppressed;return{targets:[r.address],entries:e.map(([a,s])=>({param:a,from:n(!s),to:n(s)})),values:{},skipped:[],problems:[],calls:e.map(([a,s])=>F1(r.address,a,s))}}const x0=[ei,"UI_TEMPLATE"];function Zo(r,e={}){const n=e.expert===!0,a=n?{}:e.profile?.params??{},s=n?[]:e.metadata?.parameterOrder??[],i=n?{}:e.metadata?.optionPresets??{},o=e.presets??{},l=jh(r).filter(p=>!x0.includes(p.name)),f=new Map(s.map((p,b)=>[p,b]));return l.sort((p,b)=>(f.get(p.name)??Number.MAX_SAFE_INTEGER)-(f.get(b.name)??Number.MAX_SAFE_INTEGER)),l.map(p=>{const b=a[p.name],g=o[i[p.name]??""];return{...p,...g===void 0?{}:{preset:g},fixedByProfile:b?.kind==="fixed",...b?.kind==="list"?{allowed:b.values}:{},...b?.kind==="range"?{range:{min:b.min,max:b.max}}:{}}})}function hu(r,e){const n=r.name;return n[e]??n.en??n.de??r.key}function I0(r,e){const n=r.description;return n[e]??n.en??n.de??""}var D0=_('<span class="hmm-param-id svelte-1qr2qb3"> </span>'),N0=_('<input type="checkbox" class="svelte-1qr2qb3"/>'),Jo=_("<option> </option>"),C0=_('<select class="hmm-select hmm-param-enum svelte-1qr2qb3"></select>'),P0=_('<input class="hmm-input hmm-param-number svelte-1qr2qb3" type="number"/>'),M0=_('<select class="hmm-select hmm-param-special svelte-1qr2qb3"><option> </option><!></select>'),O0=_('<select class="hmm-select hmm-param-preset svelte-1qr2qb3"><option>…</option><!></select>'),L0=_("<!> <!> <!>",1),F0=_('<input class="hmm-input hmm-param-text svelte-1qr2qb3" type="text"/>'),G0=_('<span class="hmm-param-unit svelte-1qr2qb3"> </span>'),U0=_("<span> </span>"),B0=_('<div class="hmm-param-set svelte-1qr2qb3"><button type="button" class="hmm-button">setValue</button></div>'),H0=_('<label class="hmm-param-suppress svelte-1qr2qb3"><input type="checkbox"/> <span> </span></label>'),V0=_('<div class="hmm-param-flag svelte-1qr2qb3"><span class="hmm-param-ro"> </span></div>'),z0=_('<div class="hmm-param-range svelte-1qr2qb3"> </div>'),j0=_('<div class="hmm-param-default svelte-1qr2qb3"> </div>'),W0=_('<p class="hmm-param-help hmm-param-table-wide svelte-1qr2qb3"> </p>'),K0=_('<div><div class="hmm-param-label svelte-1qr2qb3"><span> </span> <!></div> <div class="hmm-param-control svelte-1qr2qb3"><!> <!> <!></div> <!> <!> <!> <!> <!> <!></div>');function Es(r,e){dt(e,!0);let n=H(e,"help",3,void 0),a=H(e,"valueLabel",3,void 0),s=H(e,"presetLabel",3,void 0),i=H(e,"valueState",3,void 0),o=H(e,"onset",3,void 0),l=H(e,"changed",3,!1),f=H(e,"disabled",3,!1),p=H(e,"entry",3,!1),b=H(e,"suppressed",3,void 0),g=H(e,"onsuppress",3,void 0),k=H(e,"suppressLabel",3,""),y=H(e,"suppressTitle",3,void 0),S=H(e,"suppressChanged",3,!1);const T=Bt(),I=T.i18n.t,C=c(()=>f()||!e.field.writable),D=c(()=>e.field.kind==="integer"||e.field.kind==="float"),x=c(()=>t(D)?os(ee(e.value),e.field.description):e.value),P=c(()=>t(x)===void 0||t(x)===null?"":String(t(x))),K=c(()=>ee(e.value)??-1),X=c(()=>e.field.special.find(j=>j.VALUE===ee(e.value)));let ie=N(void 0);const ue=c(()=>t(X)!==void 0&&!p()&&(t(ie)===void 0||t(ie).on!==e.value));let fe=N(void 0),B;st(()=>{const j=ee(e.value);j!==void 0&&t(X)===void 0&&(B=j)});const re=c(()=>e.field.preset?.presets.find(j=>j.value===ee(e.value))),de=c(()=>e.label!==e.field.name);function ee(j){if(typeof j=="number")return j;if(typeof j=="string"&&j.trim()!==""&&Number.isFinite(Number(j)))return Number(j)}function ae(j){if(j==="")return;const U=yc(Number(j),e.field.description);U!==void 0&&Number.isFinite(U)&&e.onchange(U)}function Y(j){return a()?a()(j):j}function Z(j){const U=Y(j);return U!==j?U:T.meta.specialLabel(e.field.name,j)}function te(j){if(j===void 0||e.field.special.some(Ne=>Ne.VALUE===j))return!1;const U=os(j,e.field.description);return typeof U=="number"&&(e.field.min===void 0||U>=e.field.min)&&(e.field.max===void 0||U<=e.field.max)}function Re(){const j=ee(e.field.description.DEFAULT);return te(j)?j:te(B)?B:yc(e.field.min??0,e.field.description)??0}async function J(j){const U=e.field.special.find(Ne=>Ne.ID===j);if(U){u(ie,void 0),e.onchange(U.VALUE);return}u(ie,{on:e.value,draft:Re()},!0),await As(),t(fe)?.focus(),t(fe)?.select()}function ye(j){const U=[I("Last change: {time}",{time:j.lc===void 0?"–":Js(j.lc)}),I("Last report: {time}",{time:Js(j.ts)})];return j.confirmed||U.push(I("Restored by the system from its own file; no device has reported it since the system started.")),U.push(I("The openccu-lite system's clock")),U.join(`
|
|
15
|
-
`)}var xe=K0();let ge;var V=w(xe),pe=w(V),ve=m(pe,!0),Q=d(pe,2);{var oe=j=>{var U=D0(),Ne=m(U,!0);E(()=>h(Ne,e.field.name)),v(j,U)};$(Q,j=>{t(de)&&j(oe)})}var F=d(V,2),W=w(F);{var O=j=>{var U=N0();E(()=>{Nr(U,e.value===!0||e.value==="true"||e.value===1),U.disabled=t(C),R(U,"aria-label",e.label)}),ne("change",U,Ne=>e.onchange(Ne.currentTarget.checked)),v(j,U)},z=j=>{var U=C0();je(U,22,()=>e.field.valueList??[],Le=>Le,(Le,ze,_e,Ie)=>{var Ce=Jo(),Fe=m(Ce,!0),Oe={};E((qe,Ke)=>{h(Fe,qe),Oe!==(Oe=Ke)&&(Ce.value=(Ce.__value=Oe)??"")},[()=>Y(ze),()=>String(t(_e))]),v(Le,Ce)});var Ne;qt(U),E(Le=>{U.disabled=t(C),R(U,"aria-label",e.label),Ne!==(Ne=Le)&&(U.value=(U.__value=Ne)??"",Ln(U,Ne))},[()=>String(t(K))]),ne("change",U,Le=>e.onchange(Number(Le.currentTarget.value))),v(j,U)},ce=j=>{var U=L0(),Ne=De(U);{var Le=Fe=>{var Oe=P0();cn(Oe,qe=>u(fe,qe),()=>t(fe)),E(qe=>{R(Oe,"min",e.field.min),R(Oe,"max",e.field.max),R(Oe,"step",e.field.step),Oe.disabled=t(C),R(Oe,"aria-label",e.label),an(Oe,qe)},[()=>t(X)===void 0?t(P):String(os(t(ie)!==void 0&&t(ie).on===e.value?t(ie).draft:Re(),e.field.description))]),ne("input",Oe,qe=>ae(qe.currentTarget.value)),v(Fe,Oe)};$(Ne,Fe=>{t(ue)||Fe(Le)})}var ze=d(Ne,2);{var _e=Fe=>{var Oe=M0(),qe=w(Oe),Ke=m(qe,!0);qe.value=qe.__value="";var Xe=d(qe);je(Xe,17,()=>e.field.special,it=>it.ID,(it,bt)=>{var vt=Jo(),ke=m(vt,!0),Me={};E($e=>{h(ke,$e),Me!==(Me=t(bt).ID)&&(vt.value=(vt.__value=Me)??"")},[()=>Z(t(bt).ID)]),v(it,vt)});var Qe;qt(Oe),E(it=>{Oe.disabled=t(C),R(Oe,"aria-label",`${e.label} SPECIAL`),h(Ke,it),Qe!==(Qe=t(ue)?t(X)?.ID??"":"")&&(Oe.value=(Oe.__value=Qe)??"",Ln(Oe,Qe))},[()=>I("Enter value")]),ne("change",Oe,it=>{J(it.currentTarget.value)}),v(Fe,Oe)};$(ze,Fe=>{e.field.special.length>0&&Fe(_e)})}var Ie=d(ze,2);{var Ce=Fe=>{var Oe=O0(),qe=w(Oe);qe.value=qe.__value="";var Ke=d(qe);je(Ke,17,()=>e.field.preset.presets,Qe=>String(Qe.value),(Qe,it,bt,vt)=>{var ke=Jo(),Me=m(ke,!0),$e={};E((ft,_t)=>{h(Me,ft),$e!==($e=_t)&&(ke.value=(ke.__value=$e)??"")},[()=>gd(t(it),s()??Y),()=>String(t(it).value)]),v(Qe,ke)});var Xe;qt(Oe),E(Qe=>{Oe.disabled=t(C),R(Oe,"aria-label",`${e.label} presets`),Xe!==(Xe=Qe)&&(Oe.value=(Oe.__value=Xe)??"",Ln(Oe,Xe))},[()=>t(re)===void 0?"":String(t(re).value)]),ne("change",Oe,Qe=>{const it=e.field.preset?.presets.find(bt=>String(bt.value)===Qe.currentTarget.value);it!==void 0&&e.onchange(it.value)}),v(Fe,Oe)};$(Ie,Fe=>{e.field.preset&&Fe(Ce)})}v(j,U)},me=j=>{var U=F0();E(()=>{U.disabled=t(C),R(U,"aria-label",e.label),an(U,t(P))}),ne("input",U,Ne=>e.onchange(Ne.currentTarget.value)),v(j,U)};$(W,j=>{e.field.kind==="bool"||e.field.kind==="action"?j(O):e.field.kind==="enum"?j(z,1):t(D)?j(ce,2):j(me,-1)})}var be=d(W,2);{var Ee=j=>{var U=G0(),Ne=m(U,!0);E(()=>h(Ne,e.field.unit)),v(j,U)};$(be,j=>{e.field.unit!==""&&!t(ue)&&j(Ee)})}var le=d(be,2);{var G=j=>{var U=U0();let Ne;var Le=m(U,!0);E((ze,_e,Ie)=>{Ne=yt(U,1,"hmm-param-since svelte-1qr2qb3",null,Ne,{"hmm-param-restored":!i().confirmed}),R(U,"title",ze),R(U,"data-testid",`since-${e.field.name}`),R(U,"data-confirmed",_e),h(Le,Ie)},[()=>ye(i()),()=>String(i().confirmed),()=>i().confirmed?I("since {time}",{time:Js(i().lc??i().ts)}):I("restored")]),v(j,U)};$(le,j=>{i()&&j(G)})}var L=d(F,2);{var A=j=>{var U=B0(),Ne=m(U);E(()=>{Ne.disabled=t(C),R(Ne,"data-testid",`set-${e.field.name}`)}),ne("click",Ne,()=>o()()),v(j,U)};$(L,j=>{o()&&j(A)})}var M=d(L,2);{var he=j=>{var U=H0(),Ne=w(U),Le=d(Ne,2),ze=m(Le,!0);E(()=>{R(U,"title",y()),Nr(Ne,b()===!0),R(Ne,"data-testid",`suppress-${e.field.name}`),h(ze,k())}),ne("change",Ne,_e=>g()(_e.currentTarget.checked)),v(j,U)};$(M,j=>{g()&&j(he)})}var Te=d(M,2);{var Pe=j=>{var U=V0(),Ne=w(U),Le=m(Ne,!0);E((ze,_e)=>{R(Ne,"title",ze),h(Le,_e)},[()=>I("Read-only"),()=>I("ro")]),v(j,U)};$(Te,j=>{e.field.writable||j(Pe)})}var Ve=d(Te,2);{var Ye=j=>{var U=z0(),Ne=m(U);E(()=>h(Ne,`${e.field.min??"−∞"??""} … ${e.field.max??"∞"??""}`)),v(j,U)};$(Ve,j=>{(e.field.min!==void 0||e.field.max!==void 0)&&!t(ue)&&j(Ye)})}var ot=d(Ve,2);{var Je=j=>{const U=c(()=>e.field.special.find(ze=>ze.VALUE===ee(e.field.description.DEFAULT)));var Ne=j0(),Le=m(Ne,!0);E(ze=>h(Le,ze),[()=>I("default {value}",{value:t(U)?Z(t(U).ID):String(e.field.description.DEFAULT)})]),v(j,Ne)};$(ot,j=>{e.field.description.DEFAULT!==void 0&&j(Je)})}var Se=d(ot,2);{var we=j=>{var U=W0(),Ne=m(U,!0);E(()=>h(Ne,n())),v(j,U)};$(Se,j=>{n()&&j(we)})}E(()=>{ge=yt(xe,1,"hmm-param hmm-param-table-row svelte-1qr2qb3",null,ge,{"hmm-param-changed":l()||S()}),R(xe,"data-testid",`param-${e.field.name}`),R(pe,"title",e.field.name),h(ve,e.label)}),v(r,xe),ct()}St(["change","input","click"]);var Y0=_('<button type="button" class="hmm-button" data-testid="write-stage"> </button>'),q0=_('<button type="button" class="hmm-button"> </button> <!> <button type="button" class="hmm-button" data-testid="write-confirm"> </button>',1),$0=_('<p class="hmm-preview-call svelte-1aaq6az"> </p>'),X0=_('<p class="hmm-preview-call svelte-1aaq6az">putParamset(<span class="hmm-mono"> </span>, <span class="hmm-mono"> </span>, <span class="hmm-mono"> </span>)</p>'),mu=_("<li> </li>"),Q0=_('<ul class="hmm-preview-warnings svelte-1aaq6az" data-testid="preview-warnings"></ul>'),Z0=_('<p data-testid="preview-empty"> </p>'),vu=_('<span class="hmm-preview-side svelte-1aaq6az"> </span>'),J0=_('<tr><td class="hmm-mono svelte-1aaq6az"> <!></td><td class="svelte-1aaq6az"> </td><td class="hmm-preview-new svelte-1aaq6az"> </td></tr>'),ek=_('<table class="hmm-preview-table svelte-1aaq6az"><thead><tr><th class="svelte-1aaq6az"> </th><th class="svelte-1aaq6az"> </th><th class="svelte-1aaq6az"> </th></tr></thead><tbody></tbody></table> <p class="hmm-preview-count svelte-1aaq6az"><!></p>',1),tk=_('<ul class="hmm-preview-problems svelte-1aaq6az" data-testid="preview-problems"></ul>'),nk=_('<tr><td class="hmm-mono svelte-1aaq6az"> <!></td><td class="svelte-1aaq6az"> </td><td class="svelte-1aaq6az"> </td></tr>'),rk=_('<p class="hmm-preview-warn svelte-1aaq6az" data-testid="readback-warning"> </p>'),ak=_('<table class="hmm-preview-table svelte-1aaq6az" data-testid="preview-readback"><thead><tr><th class="svelte-1aaq6az"> </th><th class="svelte-1aaq6az"> </th><th class="svelte-1aaq6az"> </th></tr></thead><tbody></tbody></table> <!>',1),sk=_('<li><span class="hmm-mono"> </span> </li>'),ik=_('<ul class="hmm-preview-results svelte-1aaq6az" data-testid="preview-results"></ul>'),ok=_("<!> <!> <!> <!> <!> <!>",1);function $l(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"preview",3,void 0),s=H(e,"paramset",3,"MASTER"),i=H(e,"warnings",19,()=>[]),o=H(e,"writing",3,!1),l=H(e,"results",19,()=>[]),f=H(e,"readBack",19,()=>[]),p=H(e,"onstage",3,void 0),b=H(e,"confirmLabel",3,void 0),g=H(e,"countText",3,void 0);const y=Bt().i18n.t,S=c(()=>a()===void 0||a().entries.length===0),T=520;{const I=D=>{var x=q0(),P=De(x),K=m(P,!0),X=d(P,2);{var ie=B=>{var re=Y0(),de=m(re,!0);E(ee=>{re.disabled=o()||t(S),h(de,ee)},[()=>y("Add to pending changes")]),ne("click",re,()=>p()()),v(B,re)};$(X,B=>{p()&&B(ie)})}var ue=d(X,2),fe=m(ue,!0);E((B,re)=>{h(K,B),ue.disabled=o()||t(S),h(fe,re)},[()=>y("Close"),()=>b()??y("Write")]),ne("click",P,()=>n(!1)),ne("click",ue,()=>e.onconfirm()),v(D,x)};let C=c(()=>y("Preview"));Tn(r,{get title(){return t(C)},width:"960px",minWidth:360,minHeight:T,testId:"write-preview",get open(){return n()},set open(D){n(D)},buttons:I,children:(D,x)=>{var P=At(),K=De(P);{var X=ie=>{var ue=ok(),fe=De(ue);{var B=V=>{var pe=At(),ve=De(pe);je(ve,18,()=>a().calls,Q=>Q,(Q,oe,F)=>{var W=$0(),O=m(W,!0);E(z=>{R(W,"data-testid",z),h(O,oe)},[()=>`preview-call-${String(t(F))}`]),v(Q,W)}),v(V,pe)},re=V=>{var pe=At(),ve=De(pe);je(ve,16,()=>a().targets,Q=>Q,(Q,oe)=>{var F=X0(),W=d(w(F)),O=m(W,!0),z=d(W,2),ce=m(z,!0),me=d(z,2),be=m(me,!0);E(Ee=>{R(F,"data-testid",`preview-call-${oe}`),h(O,oe),h(ce,s()),h(be,Ee)},[()=>JSON.stringify(a().values)]),v(Q,F)}),v(V,pe)};$(fe,V=>{a().calls?V(B):V(re,-1)})}var de=d(fe,2);{var ee=V=>{var pe=Q0();je(pe,20,i,ve=>ve,(ve,Q)=>{var oe=mu(),F=m(oe,!0);E(()=>h(F,Q)),v(ve,oe)}),v(V,pe)};$(de,V=>{i().length>0&&V(ee)})}var ae=d(de,2);{var Y=V=>{var pe=Z0(),ve=m(pe,!0);E(Q=>h(ve,Q),[()=>y("Nothing has changed - nothing will be written")]),v(V,pe)},Z=V=>{var pe=ek(),ve=De(pe),Q=w(ve),oe=w(Q),F=w(oe),W=m(F,!0),O=d(F),z=m(O,!0),ce=d(O),me=m(ce,!0),be=d(Q);je(be,21,()=>a().entries,A=>`${A.side??""}:${A.param}`,(A,M)=>{var he=J0(),Te=w(he),Pe=w(Te),Ve=d(Pe);{var Ye=j=>{var U=vu(),Ne=m(U,!0);E(Le=>h(Ne,Le),[()=>t(M).side==="sender"?y("Sender"):y("Receiver")]),v(j,U)};$(Ve,j=>{t(M).side&&j(Ye)})}var ot=d(Te),Je=m(ot,!0),Se=d(ot),we=m(Se,!0);E(()=>{R(he,"data-testid",t(M).side==="sender"?`preview-sender-${t(M).param}`:`preview-${t(M).param}`),h(Pe,t(M).param),h(Je,t(M).from),h(we,t(M).to)}),v(A,he)});var Ee=d(ve,2),le=w(Ee);{var G=A=>{var M=tr();E(()=>h(M,g())),v(A,M)},L=A=>{var M=tr();E(he=>h(M,`${he??""} ×
|
|
16
|
-
${a().targets.length??""}`),[()=>y("{count} parameters will be written",{},a().entries.length)]),v(A,M)};$(le,A=>{g()!==void 0?A(G):A(L,-1)})}E((A,M,he)=>{h(W,A),h(z,M),h(me,he)},[()=>y("Parameter"),()=>y("Current value"),()=>y("New value")]),v(V,pe)};$(ae,V=>{t(S)?V(Y):V(Z,-1)})}var te=d(ae,2);{var Re=V=>{var pe=tk();je(pe,21,()=>a().problems,ve=>`${ve.param}-${ve.code}`,(ve,Q)=>{var oe=mu(),F=m(oe);E(()=>h(F,`${t(Q).param??""}: ${t(Q).message??""}`)),v(ve,oe)}),v(V,pe)};$(te,V=>{a().problems.length>0&&V(Re)})}var J=d(te,2);{var ye=V=>{var pe=ak(),ve=De(pe),Q=w(ve),oe=w(Q),F=w(oe),W=m(F,!0),O=d(F),z=m(O,!0),ce=d(O),me=m(ce,!0),be=d(Q);je(be,21,f,L=>`${L.side??""}:${L.param}`,(L,A)=>{var M=nk();let he;var Te=w(M),Pe=w(Te),Ve=d(Pe);{var Ye=j=>{var U=vu(),Ne=m(U,!0);E(Le=>h(Ne,Le),[()=>t(A).side==="sender"?y("Sender"):y("Receiver")]),v(j,U)};$(Ve,j=>{t(A).side&&j(Ye)})}var ot=d(Te),Je=m(ot,!0),Se=d(ot),we=m(Se,!0);E(()=>{R(M,"data-testid",t(A).side==="sender"?`readback-sender-${t(A).param}`:`readback-${t(A).param}`),he=yt(M,1,"svelte-1aaq6az",null,he,{"hmm-preview-differs":t(A).differs}),h(Pe,t(A).param),h(Je,t(A).sent),h(we,t(A).stored)}),v(L,M)});var Ee=d(ve,2);{var le=L=>{var A=rk(),M=m(A,!0);E(he=>h(M,he),[()=>y("The interface answered ok but stored something else")]),v(L,A)},G=c(()=>f().some(L=>L.differs));$(Ee,L=>{t(G)&&L(le)})}E((L,A,M)=>{h(W,L),h(z,A),h(me,M)},[()=>y("Parameter"),()=>y("What was sent"),()=>y("Read back")]),v(V,pe)};$(J,V=>{f().length>0&&V(ye)})}var xe=d(J,2);{var ge=V=>{var pe=ik();je(pe,21,l,ve=>`${ve.address}-${ve.peer??""}-${ve.paramset}`,(ve,Q)=>{var oe=sk();let F;var W=w(oe),O=m(W),z=d(W);E(()=>{F=yt(oe,1,"svelte-1aaq6az",null,F,{"hmm-preview-failed":!t(Q).ok}),h(O,`${t(Q).address??""}${t(Q).peer===void 0?"":`←${t(Q).peer}`}`),h(z,` ${t(Q).ok?"✔":`✕ ${t(Q).faultString??""}`}`)}),v(ve,oe)}),v(V,pe)};$(xe,V=>{l().length>0&&V(ge)})}v(ie,ue)};$(K,ie=>{a()&&ie(X)})}v(D,P)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click"]);function Xi(r,e){if(!r)return;const n=r;return n[e]??n.en??n.de}function lk(r){return r<1?`${String(Math.round(r*1e3))} ms`:r<60?`${String(r)} s`:r<3600?`${String(Math.round(r/60*100)/100)} min`:`${String(Math.round(r/3600*100)/100)} h`}function dk(r,e,n){const a=Xi(r.label,e);return a!==void 0?a:"seconds"in r?lk(r.seconds):n(r.special==="notActive"?"Not active":r.special==="permanent"?"Permanent":"Enter value")}function ck(r,e,n){const a=Rd(e,n);if(a===void 0)return-1;const s=r.findIndex(i=>"seconds"in i?!a.maximal&&Math.abs(i.seconds-a.seconds)<1e-6:i.special==="notActive"?a.seconds===0:i.special==="permanent"?a.maximal:!1);return s>=0?s:r.findIndex(i=>"special"in i&&i.special==="enterValue")}function uk(r,e){if("seconds"in r)return xd(r.seconds,e);if(r.special==="notActive")return{[e.unitParam]:0,[e.countParam]:0};if(r.special==="permanent")return{[e.unitParam]:e.units.length-1,[e.countParam]:e.maxCount}}function Kh(r,e){if(r===e)return!0;if(typeof r=="boolean"||typeof e=="boolean")return!!r==!!e;const n=Number(r),a=Number(e);return!Number.isNaN(n)&&!Number.isNaN(a)&&n===a}function fk(r,e=[]){return r.flatMap(n=>e.filter(a=>a.id===n))}function hk(r,e,n){return r.findIndex(a=>Object.entries(a.values).every(([s,i])=>!(s in n)||Kh(e[s],i)))}function mk(r,e){return Object.fromEntries(Object.entries(r.values).filter(([n])=>n in e))}function vk(r,e){return r.presets.findIndex(n=>Kh(n.value,e)||String(n.value)===String(e))}var pk=_('<h5 class="hmm-link-press hmm-param-table-wide svelte-1fgjxm" data-testid="link-easy-press"> </h5>'),pu=_('<option disabled="">—</option>'),el=_("<option> </option>"),gk=_('<select class="hmm-select svelte-1fgjxm"><!><!></select>'),bk=_('<div><span class="hmm-link-easy-label svelte-1fgjxm"> </span> <!></div> <!>',1),_k=_('<div><span class="hmm-link-easy-label svelte-1fgjxm"> </span> <select class="hmm-select svelte-1fgjxm"><!><option> </option></select></div> <!>',1),Ek=_('<div class="hmm-link-easy-row hmm-param-table-row svelte-1fgjxm" data-testid="easy-subset"><span class="hmm-link-easy-label svelte-1fgjxm"> </span> <select class="hmm-select svelte-1fgjxm"><!><!></select></div>'),yk=_("<!> <!>",1),Sk=_('<div class="hmm-link-easy hmm-param-table-span"></div>');function Yh(r,e){dt(e,!0);let n=H(e,"subsets",19,()=>[]),a=H(e,"testId",3,"easy-form");const s=Bt(),i=s.i18n.t,o=c(()=>s.i18n.language);let l=N(He({}));function f(D){const x=D===void 0?"":D.kind==="time"?D.pair.unitParam:D.kind==="param"?D.param:"";return x.startsWith("SHORT_")?"SHORT":x.startsWith("LONG_")?"LONG":void 0}const p=c(()=>e.form.some(D=>f(D)==="SHORT")&&e.form.some(D=>f(D)==="LONG"));function b(D){if(!t(p))return;const x=f(e.form[D]),P=D===0?void 0:f(e.form[D-1]);if(!(x===void 0||x===P))return i(x==="SHORT"?"Short key press":"Long key press")}function g(D,x){return Xi(D.label,t(o))??s.meta.parameterLabel(x,e.channelType)}function k(D){return D.option===void 0?void 0:e.presets[D.option]}let y=N(He({}));function S(D,x,P){const K=x.presets[P];u(y,{...t(y),[D.param]:K===void 0},!0),K!==void 0&&T(D,K.value)}function T(D,x){e.onchange(Object.fromEntries([D.param,...D.also].map(P=>[P,x])))}function I(D,x){const P=(e.timeSelectors[D.selector]??[])[x];if(P===void 0)return;const K=uk(P,D.pair);u(l,{...t(l),[D.pair.name]:K===void 0},!0),K!==void 0&&e.onchange(K)}var C=Sk();je(C,23,()=>e.form,D=>D.kind==="time"?D.pair.name:D.kind==="param"?D.param:`subset-${String(D.subsets)}`,(D,x,P)=>{const K=c(()=>b(t(P)));var X=yk(),ie=De(X);{var ue=ee=>{var ae=pk(),Y=m(ae,!0);E(()=>h(Y,t(K))),v(ee,ae)};$(ie,ee=>{t(K)&&ee(ue)})}var fe=d(ie,2);{var B=ee=>{const ae=c(()=>e.timeSelectors[t(x).selector]??[]),Y=c(()=>ck(t(ae),e.values,t(x).pair)),Z=c(()=>t(ae).findIndex(F=>"special"in F&&F.special==="enterValue")),te=c(()=>t(l)[t(x).pair.name]===!0||t(Y)>=0&&t(Y)===t(Z)||t(ae).length===0),Re=c(()=>g(t(x),t(x).pair.countParam));var J=bk(),ye=De(J);let xe;var ge=w(ye),V=m(ge,!0),pe=d(ge,2);{var ve=F=>{var W=gk(),O=w(W);{var z=be=>{var Ee=pu();Ee.value=Ee.__value="-1",v(be,Ee)};$(O,be=>{t(Y)<0&&be(z)})}var ce=d(O);je(ce,17,()=>t(ae),so,(be,Ee,le)=>{var G=el(),L=m(G,!0),A={};E((M,he)=>{h(L,M),A!==(A=he)&&(G.value=(G.__value=A)??"")},[()=>dk(t(Ee),t(o),i),()=>String(le)]),v(be,G)});var me;qt(W),E(be=>{R(W,"aria-label",t(Re)),R(W,"data-testid",`easy-time-select-${t(x).pair.name}`),me!==(me=be)&&(W.value=(W.__value=me)??"",Ln(W,me))},[()=>String(t(te)&&t(Z)>=0?t(Z):t(Y))]),ne("change",W,be=>I(t(x),Number(be.currentTarget.value))),v(F,W)};$(pe,F=>{t(ae).length>0&&F(ve)})}var Q=d(ye,2);{var oe=F=>{var W=At(),O=De(W);je(O,16,()=>[t(x).pair.unitParam,t(x).pair.countParam],z=>z,(z,ce)=>{const me=c(()=>e.fields.get(ce));var be=At(),Ee=De(be);{var le=G=>{{let L=c(()=>e.values[ce]??t(me).description.DEFAULT),A=c(()=>s.meta.parameterLabel(ce,e.channelType)),M=c(()=>s.meta.parameterHelp(ce,e.channelType)),he=c(()=>e.changed(ce));Es(G,{get field(){return t(me)},get value(){return t(L)},get label(){return t(A)},get help(){return t(M)},get changed(){return t(he)},valueLabel:Te=>s.meta.valueLabel(ce,Te,e.channelType),presetLabel:Te=>s.meta.uiLabel(Te),onchange:Te=>e.onchange({[ce]:Te})})}};$(Ee,G=>{t(me)&&G(le)})}v(z,be)}),v(F,W)};$(Q,F=>{t(te)&&F(oe)})}E(F=>{xe=yt(ye,1,"hmm-link-easy-row hmm-param-table-row svelte-1fgjxm",null,xe,{"hmm-param-changed":F}),R(ye,"data-testid",`easy-time-${t(x).pair.name}`),h(V,t(Re))},[()=>e.changed(t(x).pair.unitParam)||e.changed(t(x).pair.countParam)]),v(ee,J)},re=ee=>{const ae=c(()=>e.fields.get(t(x).param)),Y=c(()=>k(t(x)));var Z=At(),te=De(Z);{var Re=ye=>{const xe=c(()=>e.values[t(x).param]??t(ae).description.DEFAULT),ge=c(()=>vk(t(Y),t(xe))),V=c(()=>t(y)[t(x).param]===!0||t(ge)<0),pe=c(()=>g(t(x),t(x).param));var ve=_k(),Q=De(ve);let oe;var F=w(Q),W=m(F,!0),O=d(F,2),z=w(O);je(z,17,()=>t(Y).presets,so,(G,L,A)=>{var M=el(),he=m(M,!0),Te={};E((Pe,Ve)=>{h(he,Pe),Te!==(Te=Ve)&&(M.value=(M.__value=Te)??"")},[()=>gd(t(L),Pe=>s.meta.uiLabel(Pe)),()=>String(A)]),v(G,M)});var ce=d(z),me=m(ce,!0);ce.value=ce.__value="-1";var be;qt(O);var Ee=d(Q,2);{var le=G=>{{let L=c(()=>s.meta.parameterLabel(t(x).param,e.channelType)),A=c(()=>s.meta.parameterHelp(t(x).param,e.channelType)),M=c(()=>e.changed(t(x).param));Es(G,{get field(){return t(ae)},get value(){return t(xe)},entry:!0,get label(){return t(L)},get help(){return t(A)},get changed(){return t(M)},valueLabel:he=>s.meta.valueLabel(t(x).param,he,e.channelType),presetLabel:he=>s.meta.uiLabel(he),onchange:he=>T(t(x),he)})}};$(Ee,G=>{t(V)&&G(le)})}E((G,L,A)=>{oe=yt(Q,1,"hmm-link-easy-row hmm-param-table-row svelte-1fgjxm",null,oe,{"hmm-param-changed":G}),R(Q,"data-testid",`easy-preset-${t(x).param}`),h(W,t(pe)),R(O,"aria-label",t(pe)),R(O,"data-testid",`easy-preset-select-${t(x).param}`),h(me,L),be!==(be=A)&&(O.value=(O.__value=be)??"",Ln(O,be))},[()=>e.changed(t(x).param),()=>i("Enter value"),()=>String(t(V)?-1:t(ge))]),ne("change",O,G=>S(t(x),t(Y),Number(G.currentTarget.value))),v(ye,ve)},J=ye=>{{let xe=c(()=>e.values[t(x).param]??t(ae).description.DEFAULT),ge=c(()=>g(t(x),t(x).param)),V=c(()=>s.meta.parameterHelp(t(x).param,e.channelType)),pe=c(()=>e.changed(t(x).param));Es(ye,{get field(){return t(ae)},get value(){return t(xe)},get label(){return t(ge)},get help(){return t(V)},get changed(){return t(pe)},valueLabel:ve=>s.meta.valueLabel(t(x).param,ve,e.channelType),presetLabel:ve=>s.meta.uiLabel(ve),onchange:ve=>T(t(x),ve)})}};$(te,ye=>{t(ae)&&t(Y)?ye(Re):t(ae)&&ye(J,1)})}v(ee,Z)},de=ee=>{const ae=c(()=>fk(t(x).subsets,n()));var Y=At(),Z=De(Y);{var te=Re=>{const J=c(()=>hk(t(ae),e.values,e.description)),ye=c(()=>Xi(t(x).label,t(o))??i("Mode"));var xe=Ek(),ge=w(xe),V=m(ge,!0),pe=d(ge,2),ve=w(pe);{var Q=W=>{var O=pu();O.value=O.__value="-1",v(W,O)};$(ve,W=>{t(J)<0&&W(Q)})}var oe=d(ve);je(oe,19,()=>t(ae),W=>W.id,(W,O,z)=>{var ce=el(),me=m(ce,!0),be={};E((Ee,le)=>{h(me,Ee),be!==(be=le)&&(ce.value=(ce.__value=be)??"")},[()=>Xi(t(x).names?.[t(x).subsets.indexOf(t(O).id)],t(o))??s.meta.parameterLabel(t(O).key,e.channelType),()=>String(t(z))]),v(W,ce)});var F;qt(pe),E(W=>{h(V,t(ye)),R(pe,"aria-label",t(ye)),F!==(F=W)&&(pe.value=(pe.__value=F)??"",Ln(pe,F))},[()=>String(t(J))]),ne("change",pe,W=>{const O=t(ae)[Number(W.currentTarget.value)];O&&e.onchange(mk(O,e.description))}),v(Re,xe)};$(Z,Re=>{t(ae).length>0&&Re(te)})}v(ee,Y)};$(fe,ee=>{t(x).kind==="time"?ee(B):t(x).kind==="param"?ee(re,1):ee(de,-1)})}v(D,X)}),E(()=>R(C,"data-testid",a())),v(r,C),ct()}St(["change"]);var kk=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="link-preview"> </button>',1),wk=_("<p> </p>"),Ak=_('<p data-testid="link-paramset-failed"> </p>'),Tk=_('<div class="hmm-link-targets svelte-1xlqelt"><!></div>'),Rk=_('<div class="hmm-link-list hmm-param-table svelte-1xlqelt" data-testid="link-sender-params"></div>'),xk=_('<section class="hmm-link-section svelte-1xlqelt"><h4 class="svelte-1xlqelt"><button type="button" class="hmm-link-toggle svelte-1xlqelt" data-testid="link-sender-toggle"> </button> </h4> <!></section>'),gu=_("<option> </option>"),Ik=_('<p class="hmm-link-profile-text svelte-1xlqelt" data-testid="link-profile-description"> </p>'),Dk=_('<p class="hmm-link-hint svelte-1xlqelt" data-testid="link-easy-legend"><span class="hmm-link-easy-swatch svelte-1xlqelt" aria-hidden="true"></span> </p>'),Nk=_('<p class="hmm-link-hint svelte-1xlqelt" data-testid="link-easy-unknown"> </p>'),Ck=_("<div><!></div>"),Pk=_('<li><span class="hmm-mono"> </span> </li>'),Mk=_('<ul class="hmm-link-results svelte-1xlqelt" data-testid="link-results"></ul>'),Ok=_('<div class="hmm-link-info svelte-1xlqelt"><label class="svelte-1xlqelt"><span> </span> <input class="hmm-input" data-testid="link-name"/></label> <label class="svelte-1xlqelt"><span>DESCRIPTION</span> <input class="hmm-input" data-testid="link-description"/></label> <button type="button" class="hmm-button" data-testid="link-info-save"> </button></div> <!> <!> <section class="hmm-link-section svelte-1xlqelt"><h4 class="svelte-1xlqelt"> </h4> <div class="hmm-link-profile svelte-1xlqelt"><div class="hmm-link-row svelte-1xlqelt"><label class="svelte-1xlqelt"><span> </span> <select class="hmm-select" data-testid="link-profile"></select></label> <label class="hmm-link-expert svelte-1xlqelt"><input type="checkbox" data-testid="link-expert"/> <span> </span></label></div> <!> <div class="hmm-link-row svelte-1xlqelt"><label class="svelte-1xlqelt"><span> </span> <select class="hmm-select" data-testid="link-template"><option> </option><!></select></label> <label class="svelte-1xlqelt"><span> </span> <input class="hmm-input" data-testid="link-template-name"/></label> <button type="button" class="hmm-button" data-testid="link-template-save"> </button> <button type="button" class="hmm-button" data-testid="link-template-delete"> </button></div></div> <!> <div class="hmm-link-list hmm-param-table svelte-1xlqelt" data-testid="link-receiver-params"><!></div></section> <!>',1),Lk=_("<!> <!>",1);function qh(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"sender",3,""),s=H(e,"receiver",3,"");const i=Bt(),o=i.i18n.t;let l=N(void 0),f=N(He({})),p=N(void 0),b=N(He({})),g=N(He({})),k=N(He({})),y=N(He([])),S=N(void 0),T=N(He(ua)),I=N(!1),C=N(void 0),D=N(""),x=N(""),P=N(He([])),K=N(!1),X=N(void 0),ie=N(He([])),ue=N(He([])),fe=N(!1),B=0,re=N(""),de=N(""),ee=0,ae=N(""),Y=N("");const Z=c(()=>i.app.selectedInterface),te=c(()=>i.devices.index(t(Z))),Re=c(()=>t(te)?.get(a())?.TYPE??""),J=c(()=>t(te)?.get(s())?.TYPE??""),ye=c(()=>`${i.nameOf(a())} → ${i.nameOf(s())} (${a()} ${s()})`),xe=c(()=>t(y).find(Se=>Se.id===t(T))),ge=c(()=>{const Se=t(te),we=Se?.get(s()),j=Se?.get(a());if(!Se||!we||!j)return"";const U=Se.get(we.PARENT??""),Ne=Se.get(j.PARENT??"");return!U||!Ne?"":[ii(t(Z),we,"LINK",U),ii(t(Z),j,"LINK",Ne)].join("|")}),V=c(()=>i.links.templates.filter(Se=>Se.identity===t(ge))),pe=c(()=>t(l)?Zo(t(l),{metadata:t(S),presets:i.meta.presets,profile:t(xe),expert:t(I)}):[]),ve=c(()=>t(p)?Zo(t(p),{expert:!0}):[]),Q=c(()=>t(C)??t(ve).length>0),oe=c(()=>t(l)&&t(xe)&&t(xe).id!==ua?O_(t(xe),t(l)):void 0),F=c(()=>t(I)?void 0:t(oe)),W=c(()=>t(I)?xl(t(oe),t(S)?.subsets):new Set),O=c(()=>new Map((t(l)?Zo(t(l),{metadata:t(S),presets:i.meta.presets,profile:t(xe)}):[]).map(Se=>[Se.name,Se]))),z=c(()=>L()),ce=c(()=>i.links.of(t(Z)).filter(Se=>!(Se.SENDER===a()&&Se.RECEIVER===s())&&(t(te)?.get(Se.SENDER)?.TYPE??"")===t(Re)&&(t(te)?.get(Se.RECEIVER)?.TYPE??"")===t(J)).map(Se=>({value:`${Se.SENDER};${Se.RECEIVER}`,label:`${i.nameOf(Se.SENDER)} → ${i.nameOf(Se.RECEIVER)}`})));st(()=>{if(!n()||t(Z)===""||a()===""||s()==="")return;const Se=B+=1,we={interfaceName:t(Z),sender:a(),receiver:s()};u(fe,!0),u(re,""),u(l,void 0),u(f,{},!0),u(p,void 0),u(b,{},!0),u(g,{},!0),u(k,{},!0),u(C,void 0),(async()=>{const[j,U,Ne,Le,ze]=await Promise.all([i.paramsets.describe(we.interfaceName,we.receiver,"LINK"),i.paramsets.read(we.interfaceName,we.receiver,we.sender),i.paramsets.describe(we.interfaceName,we.sender,"LINK"),i.paramsets.read(we.interfaceName,we.sender,we.receiver),i.links.info(we.interfaceName,we.sender,we.receiver)]);Se===B&&(u(l,j,!0),u(f,U??{},!0),u(p,Ne,!0),u(b,Le??{},!0),u(D,ze?.NAME??"",!0),u(x,ze?.DESCRIPTION??"",!0),u(g,{},!0),u(k,{},!0),u(P,[],!0),u(ie,[],!0),u(ue,[],!0),u(fe,!1),u(re,`${we.interfaceName}|${we.sender}|${we.receiver}#${String(Se)}`))})()}),st(()=>{if(!n()||t(J)===""||t(Re)==="")return;const Se=`${t(J)}|${t(Re)}`;if(Se===t(de))return;const we=ee+=1;u(de,""),u(y,[],!0),Promise.all([i.meta.profilesFor(t(J),t(Re)),i.meta.linkMetadataFor(t(J),t(Re)),i.meta.loadPresets()]).then(([j,U])=>{we===ee&&(u(y,j,!0),u(S,U,!0),u(de,Se))})});let me="",be;st(()=>{if(t(re)===""||t(de)!==`${t(J)}|${t(Re)}`||t(y).length===0)return;const Se=`${t(re)}|${t(de)}`;if(me===Se)return;me=Se;const we=i.meta.engine.detectProfile(t(f),t(y));be=we?.id,u(T,we?.id??ua,!0),u(I,t(T)===ua)}),st(()=>{const Se=t(ge);n()&&Se!==""&&i.links.loadTemplates(Se)});async function Ee(){const Se=t(ae).trim();if(Se===""||t(ge)===""||!t(l))return;const we=Qs(t(f),t(g),t(l),{interfaceName:t(Z),targets:[s()],writeAll:!0}).values,j=t(p)?Qs(t(b),t(k),t(p),{interfaceName:t(Z),targets:[a()],writeAll:!0}).values:{},U={name:Se,identity:t(ge),...t(xe)===void 0?{}:{profileId:t(xe).id,profileName:hu(t(xe),i.i18n.language)},receiver:we,...Object.keys(j).length>0?{sender:j}:{},createdAt:Date.now()};await i.links.saveTemplate(U)&&(u(ae,""),u(Y,Se,!0),i.notices.push("info",`${o("Save as template")}: ${Se}`))}function le(Se){const we=t(V).find(j=>j.name===Se);we&&(we.profileId!==void 0&&t(y).some(j=>j.id===we.profileId)&&(u(T,we.profileId,!0),u(I,t(T)===ua)),u(g,{...t(g),...we.receiver},!0),we.sender&&a()!==s()&&u(k,{...t(k),...we.sender},!0))}function G(Se){u(T,Se,!0),u(I,Se===ua);const we=t(y).find(ze=>ze.id===Se);if(!we||!t(l))return;const j=Se===be,U=i.meta.engine.applyProfile(we,j?t(f):L(),t(l),{keepCurrent:j}),Ne={};for(const ze of[...Object.keys(we.params),ei]){const _e=U.values[ze];_e!==void 0&&(Ne[ze]=_e)}u(g,{...t(g),...Ne},!0);const Le=U.problems.filter(ze=>ze.code==="unknown-parameter");Le.length>0&&i.notices.push("info",`${o("The profile names {count} parameters this firmware does not have",{},Le.length)}: ${Le.map(ze=>ze.param).join(", ")}`);for(const ze of U.problems.filter(_e=>_e.code!=="unknown-parameter"))i.notices.push("warn",`${ze.param}: ${ze.message}`)}function L(){const Se={...t(f)};for(const[we,j]of Object.entries(t(g)))(typeof j=="boolean"||typeof j=="number"||typeof j=="string")&&(Se[we]=j);return Se}function A(Se,we,j){return Object.prototype.hasOwnProperty.call(j,Se.name)?j[Se.name]:we[Se.name]??Se.description.DEFAULT}async function M(){await i.links.setInfo(t(Z),a(),s(),t(D),t(x))}function he(){const Se=t(P).map(we=>{const[j,U]=we.split(";");return{sender:j??"",receiver:U??""}});return[{sender:a(),receiver:s()},...Se]}function Te(){if(!t(l))return;u(ie,[],!0),u(ue,[],!0);const Se=he(),we=Qs(t(f),t(g),t(l),{interfaceName:t(Z),targets:Se.map(U=>`${U.receiver}←${U.sender}`)}),j=t(p)&&a()!==s()?Qs(t(b),t(k),t(p),{interfaceName:t(Z),targets:Se.map(U=>`${U.sender}←${U.receiver}`)}):void 0;u(X,T0(we,j,Se),!0),u(K,!0)}function Pe(){const Se=t(X);if(!Se)return;const we=fu(Se);if(we.receiverToSender===void 0&&we.senderToReceiver===void 0)return;const j=he();i.changeSet.stage({kind:"linkParamset",interfaceName:t(Z),title:`LINK — ${i.nameOf(a())} → ${i.nameOf(s())}`,links:j,values:we,calls:[...Se.calls??[]],lines:Se.entries.map(U=>({label:U.side==="sender"?`${o("Sender")}: ${U.param}`:U.param,from:U.from,to:U.to}))}),u(K,!1),n(!1)}async function Ve(){const Se=t(X);if(!Se)return;const we=fu(Se);if(we.receiverToSender===void 0&&we.senderToReceiver===void 0)return;const j=await i.paramsets.putLink(t(Z),he(),we);u(ie,j,!0);const U=[];if(we.receiverToSender!==void 0){const Ne=await i.paramsets.read(t(Z),s(),a());Ne&&t(l)&&(U.push(...ql(we.receiverToSender,Ne,t(l)).map(Le=>({...Le,side:"receiver"}))),u(f,Ne,!0),u(g,{},!0))}if(we.senderToReceiver!==void 0){const Ne=await i.paramsets.read(t(Z),a(),s());Ne&&t(p)&&(U.push(...ql(we.senderToReceiver,Ne,t(p)).map(Le=>({...Le,side:"sender"}))),u(b,Ne,!0),u(k,{},!0))}u(ue,U,!0),j.length>0&&j.every(Ne=>Ne.ok)&&!t(ue).some(Ne=>Ne.differs)&&u(K,!1)}var Ye=Lk(),ot=De(Ye);Tn(ot,{get title(){return t(ye)},width:"960px",height:"min(640px, calc(100vh - 32px))",minWidth:560,minHeight:320,testId:"link-paramset-dialog",get open(){return n()},set open(we){n(we)},buttons:we=>{var j=kk(),U=De(j),Ne=m(U,!0),Le=d(U,2),ze=m(Le,!0);E((_e,Ie)=>{h(Ne,_e),Le.disabled=!t(l),h(ze,Ie)},[()=>o("Close"),()=>o("Preview")]),ne("click",U,()=>n(!1)),ne("click",Le,Te),v(we,j)},children:(we,j)=>{var U=At(),Ne=De(U);{var Le=Ie=>{var Ce=wk(),Fe=m(Ce,!0);E(Oe=>h(Fe,Oe),[()=>o("Loading Homematic Manager...")]),v(Ie,Ce)},ze=Ie=>{var Ce=Ak(),Fe=m(Ce,!0);E(Oe=>h(Fe,Oe),[()=>o("No data")]),v(Ie,Ce)},_e=Ie=>{var Ce=Ok(),Fe=De(Ce),Oe=w(Fe),qe=w(Oe),Ke=m(qe,!0),Xe=d(qe,2),Qe=d(Oe,2),it=d(w(Qe),2),bt=d(Qe,2),vt=m(bt,!0),ke=d(Fe,2);{var Me=Ze=>{var et=Tk(),Be=w(et);{let ht=c(()=>o("Please choose one or more links")),Rt=c(()=>o("Please choose one or more links")),Ht=c(()=>o("Filter")),un=c(()=>o("Check all")),Ut=c(()=>o("Uncheck all"));di(Be,{get options(){return t(ce)},get label(){return t(ht)},get placeholder(){return t(Rt)},get filterLabel(){return t(Ht)},get checkAllLabel(){return t(un)},get uncheckAllLabel(){return t(Ut)},summary:Mt=>o("{count} links",{},Mt.length),testId:"link-targets",get selected(){return t(P)},set selected(Mt){u(P,Mt,!0)}})}v(Ze,et)};$(ke,Ze=>{t(ce).length>0&&Ze(Me)})}var $e=d(ke,2);{var ft=Ze=>{var et=xk(),Be=w(et),ht=w(Be),Rt=m(ht,!0),Ht=d(ht),un=d(Be,2);{var Ut=Mt=>{var yn=Rk();je(yn,21,()=>t(ve),Sn=>Sn.name,(Sn,on)=>{{let pn=c(()=>A(t(on),t(b),t(k))),ar=c(()=>i.meta.parameterLabel(t(on).name,t(Re))),Mn=c(()=>i.meta.parameterHelp(t(on).name,t(Re))),ln=c(()=>Object.prototype.hasOwnProperty.call(t(k),t(on).name));Es(Sn,{get field(){return t(on)},get value(){return t(pn)},get label(){return t(ar)},get help(){return t(Mn)},get changed(){return t(ln)},valueLabel:gt=>i.meta.valueLabel(t(on).name,gt,t(Re)),presetLabel:gt=>i.meta.uiLabel(gt),onchange:gt=>u(k,{...t(k),[t(on).name]:gt},!0)})}}),v(Mt,yn)};$(un,Mt=>{t(Q)&&Mt(Ut)})}E((Mt,yn)=>{R(ht,"aria-expanded",t(Q)),h(Rt,t(Q)?"−":"+"),h(Ht,` ${Mt??""}: ${yn??""} (${a()??""})`)},[()=>o("Sender"),()=>i.nameOf(a())]),ne("click",ht,()=>u(C,!t(Q))),v(Ze,et)};$($e,Ze=>{a()!==s()&&Ze(ft)})}var _t=d($e,2),nt=w(_t),$t=m(nt),xt=d(nt,2),Ft=w(xt),sn=w(Ft),mn=w(sn),En=m(mn,!0),Jt=d(mn,2);je(Jt,21,()=>t(y),Ze=>Ze.id,(Ze,et)=>{var Be=gu(),ht=m(Be,!0),Rt={};E((Ht,un)=>{h(ht,Ht),Rt!==(Rt=un)&&(Be.value=(Be.__value=Rt)??"")},[()=>hu(t(et),i.i18n.language),()=>String(t(et).id)]),v(Ze,Be)});var vn;qt(Jt);var In=d(sn,2),Kn=w(In),Yn=d(Kn,2),Xt=m(Yn,!0),Ot=d(Ft,2);{var Qt=Ze=>{var et=Ik(),Be=m(et,!0);E(ht=>h(Be,ht),[()=>I0(t(xe),i.i18n.language)]),v(Ze,et)};$(Ot,Ze=>{t(xe)&&!t(I)&&Ze(Qt)})}var qn=d(Ot,2),Dn=w(qn),Cr=w(Dn),Br=m(Cr,!0),$n=d(Cr,2),Bn=w($n),Pr=m(Bn,!0);Bn.value=Bn.__value="";var la=d(Bn);je(la,17,()=>t(V),Ze=>Ze.name,(Ze,et)=>{var Be=gu(),ht=m(Be),Rt={};E(()=>{h(ht,`${t(et).name??""}${t(et).profileName===void 0?"":` — ${t(et).profileName}`}`),Rt!==(Rt=t(et).name)&&(Be.value=(Be.__value=Rt)??"")}),v(Ze,Be)});var nr;qt($n);var wr=d(Dn,2),Hr=w(wr),ir=m(Hr,!0),Ar=d(Hr,2),or=d(wr,2),Jr=m(or,!0),Mr=d(or,2),fr=m(Mr,!0),hr=d(xt,2);{var se=Ze=>{var et=Dk(),Be=d(w(et),1,!0);E(ht=>h(Be,ht),[()=>o("Marked: the parameters the easy mode of this profile shows")]),v(Ze,et)},Ge=Ze=>{var et=Nk(),Be=m(et,!0);E(ht=>h(Be,ht),[()=>o("The CCU's form for this profile is not known here: every parameter is shown, the ones the profile fixes greyed out.")]),v(Ze,et)};$(hr,Ze=>{t(I)&&t(W).size>0?Ze(se):!t(I)&&!t(F)&&t(xe)&&t(xe).id!==ua&&Ze(Ge,1)})}var Yt=d(hr,2),gn=w(Yt);{var rr=Ze=>{{let et=c(()=>t(S)?.subsets);Yh(Ze,{get form(){return t(F)},testId:"link-easy-form",get fields(){return t(O)},get values(){return t(z)},changed:Be=>Object.prototype.hasOwnProperty.call(t(g),Be),get description(){return t(l)},get channelType(){return t(J)},get subsets(){return t(et)},get presets(){return i.meta.presets},get timeSelectors(){return i.meta.timeSelectors},onchange:Be=>u(g,{...t(g),...Be},!0)})}},rt=Ze=>{var et=At(),Be=De(et);je(Be,17,()=>t(pe),ht=>ht.name,(ht,Rt)=>{var Ht=Ck();let un;var Ut=w(Ht);{let Mt=c(()=>A(t(Rt),t(f),t(g))),yn=c(()=>i.meta.parameterLabel(t(Rt).name,t(J))),Sn=c(()=>i.meta.parameterHelp(t(Rt).name,t(J))),on=c(()=>Object.prototype.hasOwnProperty.call(t(g),t(Rt).name));Es(Ut,{get field(){return t(Rt)},get value(){return t(Mt)},get label(){return t(yn)},get help(){return t(Sn)},get changed(){return t(on)},get disabled(){return t(Rt).fixedByProfile},valueLabel:pn=>i.meta.valueLabel(t(Rt).name,pn,t(J)),presetLabel:pn=>i.meta.uiLabel(pn),onchange:pn=>u(g,{...t(g),[t(Rt).name]:pn},!0)})}E(Mt=>un=yt(Ht,1,"hmm-link-easy-mark hmm-param-table-span svelte-1xlqelt",null,un,{"hmm-link-easy-marked":Mt}),[()=>t(W).has(t(Rt).name)]),v(ht,Ht)}),v(Ze,et)};$(gn,Ze=>{t(F)&&t(l)?Ze(rr):Ze(rt,-1)})}var pt=d(_t,2);{var Dt=Ze=>{var et=Mk();je(et,21,()=>t(ie),Be=>`${Be.address}-${Be.peer??""}`,(Be,ht)=>{var Rt=Pk();let Ht;var un=w(Rt),Ut=m(un,!0),Mt=d(un);E(()=>{Ht=yt(Rt,1,"svelte-1xlqelt",null,Ht,{"hmm-link-failed":!t(ht).ok}),h(Ut,t(ht).address),h(Mt,` ${t(ht).ok?"✔":`✕ ${t(ht).faultString??""}`}`)}),v(Be,Rt)}),v(Ze,et)};$(pt,Ze=>{t(ie).length>0&&Ze(Dt)})}E((Ze,et,Be,ht,Rt,Ht,un,Ut,Mt,yn,Sn,on,pn)=>{h(Ke,Ze),h(vt,et),h($t,`${Be??""}: ${ht??""} (${s()??""})`),h(En,Rt),vn!==(vn=Ht)&&(Jt.value=(Jt.__value=vn)??"",Ln(Jt,vn)),h(Xt,un),h(Br,Ut),$n.disabled=t(V).length===0,h(Pr,Mt),nr!==(nr=t(Y))&&($n.value=($n.__value=nr)??"",Ln($n,nr)),h(ir,yn),or.disabled=Sn,h(Jr,on),Mr.disabled=t(Y)==="",h(fr,pn)},[()=>o("Name"),()=>o("Apply"),()=>o("Receiver"),()=>i.nameOf(s()),()=>o("Profile"),()=>String(t(T)),()=>o("Expert view"),()=>o("Template"),()=>t(V).length===0?o("No template for this pair of channel types"):o("Apply template"),()=>o("Template name"),()=>t(ae).trim()===""||t(ge)==="",()=>o("Save as template"),()=>o("Delete template")]),An(Xe,()=>t(D),Ze=>u(D,Ze)),An(it,()=>t(x),Ze=>u(x,Ze)),ne("click",bt,()=>{M()}),ne("change",Jt,Ze=>G(Number(Ze.currentTarget.value))),ur(Kn,()=>t(I),Ze=>u(I,Ze)),ne("change",$n,Ze=>{u(Y,Ze.currentTarget.value,!0),le(t(Y))}),An(Ar,()=>t(ae),Ze=>u(ae,Ze)),ne("click",or,()=>{Ee()}),ne("click",Mr,()=>{const Ze=t(Y);u(Y,""),i.links.removeTemplate(Ze,t(ge))}),v(Ie,Ce)};$(Ne,Ie=>{t(fe)&&!t(l)?Ie(Le):t(l)?Ie(_e,-1):Ie(ze,1)})}v(we,U)},$$slots:{buttons:!0,default:!0}});var Je=d(ot,2);$l(Je,{get preview(){return t(X)},paramset:"LINK",get results(){return t(ie)},get readBack(){return t(ue)},get writing(){return i.paramsets.writing},onstage:Pe,onconfirm:()=>{Ve()},get open(){return t(K)},set open(Se){u(K,Se,!0)}}),v(r,Ye),ct()}St(["click","change"]);var Fk=_('<span class="hmm-blind-warn svelte-6iyslx"> </span>'),Gk=_('<div class="hmm-blind-row svelte-6iyslx"><div class="hmm-blind-label svelte-6iyslx"><span> </span> <span class="hmm-blind-id svelte-6iyslx"> </span></div> <div class="hmm-blind-control svelte-6iyslx"><input class="hmm-input hmm-blind-number svelte-6iyslx" type="number" min="0" step="0.01"/> <span class="hmm-blind-unit svelte-6iyslx">s</span> <span class="hmm-blind-raw svelte-6iyslx"> </span></div> <div class="hmm-blind-meta svelte-6iyslx"><span> </span> <!></div></div>'),Uk=_('<div class="hmm-blind-row svelte-6iyslx"><div class="hmm-blind-label svelte-6iyslx"><span> </span> <span class="hmm-blind-id svelte-6iyslx"> </span></div> <div class="hmm-blind-control svelte-6iyslx"><input class="hmm-input hmm-blind-number svelte-6iyslx" type="number" step="0.1"/> <span class="hmm-blind-unit svelte-6iyslx">s</span></div> <div class="hmm-blind-meta svelte-6iyslx"><span> </span></div></div>'),Bk=_('<input type="checkbox"/>'),Hk=_('<input class="hmm-input hmm-blind-number svelte-6iyslx" type="number" step="1"/>'),Vk=_('<div class="hmm-blind-row svelte-6iyslx"><div class="hmm-blind-label svelte-6iyslx"><span> </span> <span class="hmm-blind-id svelte-6iyslx"> </span></div> <div class="hmm-blind-control svelte-6iyslx"><!></div> <div class="hmm-blind-meta svelte-6iyslx"></div></div>'),zk=_('<div class="hmm-editor svelte-6iyslx" data-testid="editor-blind-calibration"><h3 class="svelte-6iyslx"> </h3> <p class="hmm-editor-hint svelte-6iyslx"> </p> <!> <!> <!></div>');function jk(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t;let s=N(He({}));function i(C){return n.meta.parameterLabel(C,e.channelType)}function o(C,D){if(D==="")return;const x=t0(C,Number(D));x&&(u(s,x.exact||x.seconds===Number(D)?Object.fromEntries(Object.entries(t(s)).filter(([P])=>P!==C.id)):{...t(s),[C.id]:x.seconds},!0),e.onchange(x.values))}function l(C,D){D===""||!Number.isFinite(Number(D))||f(C.param,Number(D))}function f(C,D){e.onchange({[C]:D})}var p=zk(),b=w(p),g=m(b,!0),k=d(b,2),y=m(k,!0),S=d(k,2);je(S,17,()=>e.spec.runningTimes,C=>C.id,(C,D)=>{const x=c(()=>JS(t(D),e.values));var P=Gk(),K=w(P),X=w(K),ie=m(X,!0),ue=d(X,2),fe=m(ue,!0),B=d(K,2),re=w(B),de=d(re,4),ee=m(de,!0),ae=d(B,2),Y=w(ae),Z=m(Y,!0),te=d(Y,2);{var Re=J=>{var ye=Fk(),xe=m(ye,!0);E(ge=>{R(ye,"data-testid",`blind-${t(D).id}-inexact`),h(xe,ge)},[()=>a("The device can only do {seconds}",{seconds:vi(t(s)[t(D).id]??0)})]),v(J,ye)};$(te,J=>{t(s)[t(D).id]!==void 0&&J(Re)})}E((J,ye,xe,ge)=>{R(P,"data-testid",`blind-${t(D).id}`),h(ie,J),h(fe,t(D).id),re.disabled=!t(D).writable,R(re,"aria-label",ye),R(re,"data-testid",`blind-${t(D).id}-seconds`),an(re,t(x)??""),R(de,"data-testid",`blind-${t(D).id}-raw`),h(ee,xe),h(Z,ge)},[()=>i(t(D).id),()=>i(t(D).id),()=>e0(t(D),e.values),()=>t(x)===void 0?"—":vi(t(x))]),ne("input",re,J=>o(t(D),J.currentTarget.value)),v(C,P)});var T=d(S,2);je(T,17,()=>e.spec.delays,C=>C.param,(C,D)=>{var x=Uk(),P=w(x),K=w(P),X=m(K,!0),ie=d(K,2),ue=m(ie,!0),fe=d(P,2),B=w(fe),re=d(fe,2),de=w(re),ee=m(de);E((ae,Y,Z,te,Re,J)=>{R(x,"data-testid",`blind-${t(D).param}`),h(X,ae),h(ue,t(D).param),R(B,"min",Y),R(B,"max",Z),R(B,"aria-label",te),R(B,"data-testid",`blind-${t(D).param}-value`),an(B,e.values[t(D).param]??""),h(ee,`${Re??""} … ${J??""}`)},[()=>i(t(D).param),()=>Jn(t(D).description,"MIN"),()=>Jn(t(D).description,"MAX"),()=>i(t(D).param),()=>Jn(t(D).description,"MIN")??"−∞",()=>Jn(t(D).description,"MAX")??"∞"]),ne("input",B,ae=>l(t(D),ae.currentTarget.value)),v(C,x)});var I=d(T,2);je(I,17,()=>e.spec.extras,C=>C.param,(C,D)=>{var x=Vk(),P=w(x),K=w(P),X=m(K,!0),ie=d(K,2),ue=m(ie,!0),fe=d(P,2),B=w(fe);{var re=ee=>{var ae=Bk();E(Y=>{R(ae,"aria-label",Y),R(ae,"data-testid",`blind-${t(D).param}-value`),Nr(ae,e.values[t(D).param]===!0)},[()=>i(t(D).param)]),ne("change",ae,Y=>f(t(D).param,Y.currentTarget.checked)),v(ee,ae)},de=ee=>{var ae=Hk();E((Y,Z,te)=>{R(ae,"min",Y),R(ae,"max",Z),R(ae,"aria-label",te),R(ae,"data-testid",`blind-${t(D).param}-value`),an(ae,e.values[t(D).param]??"")},[()=>Jn(t(D).description,"MIN"),()=>Jn(t(D).description,"MAX"),()=>i(t(D).param)]),ne("input",ae,Y=>l(t(D),Y.currentTarget.value)),v(ee,ae)};$(B,ee=>{t(D).description.TYPE==="BOOL"?ee(re):ee(de,-1)})}E(ee=>{R(x,"data-testid",`blind-${t(D).param}`),h(X,ee),h(ue,t(D).param)},[()=>i(t(D).param)]),v(C,x)}),E((C,D)=>{h(g,C),h(y,D)},[()=>a("Blind calibration"),()=>a("The running times of a reference run, in plain seconds next to the value the device stores.")]),v(r,p),ct()}St(["input","change"]);var Wk=_("<option> </option>"),bu=_('<span class="hmm-duration-broken svelte-1jozrc9"> </span>'),Kk=_("<span> </span>"),Yk=_('<div class="hmm-duration svelte-1jozrc9"><div class="hmm-duration-label svelte-1jozrc9"><span> </span> <span class="hmm-duration-id svelte-1jozrc9"> </span></div> <div class="hmm-duration-control svelte-1jozrc9"><input class="hmm-input hmm-duration-seconds svelte-1jozrc9" type="number" min="0" step="0.1"/> <span class="hmm-duration-unit svelte-1jozrc9">s</span> <select class="hmm-select"></select> <input class="hmm-input hmm-duration-count svelte-1jozrc9" type="number" min="0" step="1"/> <label class="hmm-duration-notused svelte-1jozrc9"><input type="checkbox"/> <span> </span></label></div> <div class="hmm-duration-meta svelte-1jozrc9"><!> <!></div></div>'),qk=_('<div class="hmm-editor svelte-1jozrc9" data-testid="editor-duration-pairs"><h3 class="svelte-1jozrc9"> </h3> <p class="hmm-editor-hint svelte-1jozrc9"> </p> <!></div>');function $k(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t;let s=N(He({}));function i(x){return n.meta.parameterLabel(x.pair.unitParam,e.channelType)}function o(x){return Bh(x,e.values)}function l(x,P){const K=Hh(x,P);K&&(u(s,K.exact?Object.fromEntries(Object.entries(t(s)).filter(([X])=>X!==x.pair.name)):{...t(s),[x.pair.name]:K.seconds},!0),e.onchange(K.values))}function f(x,P){const K=Number(P);P===""||!Number.isFinite(K)||l(x,K)}function p(x,P){const K=Number(P),X=o(x),ie=x.pair.units[K];if(ie===void 0||X===void 0)return;const ue=Math.min(x.pair.maxCount,Math.max(0,Math.round(X/ie.seconds)));g({[x.pair.unitParam]:K,[x.pair.countParam]:ue})}function b(x,P){const K=Number(P);P===""||!Number.isInteger(K)||g({[x.pair.countParam]:K})}function g(x){e.onchange(x)}function k(x){const P=e.values[x.pair.unitParam];return typeof P=="number"?P:x.pair.units.findIndex(K=>K.name===P)}var y=qk(),S=w(y),T=m(S,!0),I=d(S,2),C=m(I,!0),D=d(I,2);je(D,17,()=>e.spec.pairs,x=>x.pair.name,(x,P)=>{const K=c(()=>o(t(P))),X=c(()=>qS(t(P),e.values));var ie=Yk(),ue=w(ie),fe=w(ue),B=m(fe,!0),re=d(fe,2),de=m(re),ee=d(ue,2),ae=w(ee),Y=d(ae,4);je(Y,23,()=>t(P).pair.units,F=>F.name,(F,W,O)=>{var z=Wk(),ce=m(z,!0),me={};E(be=>{h(ce,t(W).name),me!==(me=be)&&(z.value=(z.__value=me)??"")},[()=>String(t(O))]),v(F,z)});var Z;qt(Y);var te=d(Y,2),Re=d(te,2),J=w(Re),ye=d(J,2),xe=m(ye,!0),ge=d(ee,2),V=w(ge);{var pe=F=>{var W=bu(),O=m(W,!0);E(z=>h(O,z),[()=>a("The device holds a value this pair cannot express")]),v(F,W)},ve=F=>{var W=Kk(),O=m(W,!0);E(z=>h(O,z),[()=>vi(t(K))]),v(F,W)};$(V,F=>{t(K)===void 0?F(pe):F(ve,-1)})}var Q=d(V,2);{var oe=F=>{var W=bu(),O=m(W,!0);E(z=>{R(W,"data-testid",`duration-${t(P).pair.name}-inexact`),h(O,z)},[()=>a("The device can only do {seconds}",{seconds:vi(t(s)[t(P).pair.name]??0)})]),v(F,W)};$(Q,F=>{t(s)[t(P).pair.name]!==void 0&&F(oe)})}E((F,W,O,z,ce,me)=>{R(ie,"data-testid",`duration-${t(P).pair.name}`),h(B,F),h(de,`${t(P).pair.unitParam??""} / ${t(P).pair.countParam??""}`),ae.disabled=!t(P).writable||t(X),R(ae,"aria-label",W),R(ae,"data-testid",`duration-${t(P).pair.name}-seconds`),an(ae,t(K)??""),Y.disabled=!t(P).writable,R(Y,"aria-label",O),R(Y,"data-testid",`duration-${t(P).pair.name}-unit`),Z!==(Z=z)&&(Y.value=(Y.__value=Z)??"",Ln(Y,Z)),R(te,"max",t(P).pair.maxCount),te.disabled=!t(P).writable,R(te,"aria-label",ce),R(te,"data-testid",`duration-${t(P).pair.name}-count`),an(te,e.values[t(P).pair.countParam]??""),J.disabled=!t(P).writable,Nr(J,t(X)),R(J,"data-testid",`duration-${t(P).pair.name}-not-used`),h(xe,me),R(ge,"data-testid",`duration-${t(P).pair.name}-result`)},[()=>i(t(P)),()=>`${i(t(P))} ${a("seconds")}`,()=>`${i(t(P))} ${a("unit")}`,()=>String(k(t(P))),()=>`${i(t(P))} ${a("count")}`,()=>a("Not used / for ever")]),ne("input",ae,F=>f(t(P),F.currentTarget.value)),ne("change",Y,F=>p(t(P),F.currentTarget.value)),ne("input",te,F=>b(t(P),F.currentTarget.value)),ne("change",J,F=>l(t(P),F.currentTarget.checked?t(P).notUsedSeconds:0)),v(x,ie)}),E((x,P)=>{h(T,x),h(C,P)},[()=>a("Durations"),()=>a("A duration is stored as a unit and a count; both are shown next to the seconds.")]),v(r,y),ct()}St(["input","change"]);var _u=_("<option> </option>"),Xk=_("<span> </span>"),Qk=_('<div class="hmm-enum-row svelte-1d7xvi9"><div class="hmm-enum-label svelte-1d7xvi9"><span> </span> <span class="hmm-enum-id svelte-1d7xvi9"> </span></div> <div class="hmm-enum-control svelte-1d7xvi9"><select class="hmm-select"><!><!></select> <span class="hmm-enum-raw svelte-1d7xvi9"> </span></div> <div class="hmm-enum-meta svelte-1d7xvi9"><!></div></div>'),Zk=_('<div class="hmm-editor svelte-1d7xvi9" data-testid="editor-enum-options"><h3 class="svelte-1d7xvi9"> </h3> <p class="hmm-editor-hint svelte-1d7xvi9"> </p> <!></div>');function Jk(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t;function s(S){return n.meta.parameterLabel(S,e.channelType)}function i(S){const T=e.values[S.param];return typeof T=="number"?T:S.options.find(I=>I.raw===T)?.value??-1}function o(S){const T=i(S);return T>=0&&!S.options.some(I=>I.value===T)?T:void 0}function l(S,T){return S.description.VALUE_LIST?.[T]??String(T)}var f=Zk(),p=w(f),b=m(p,!0),g=d(p,2),k=m(g,!0),y=d(g,2);je(y,17,()=>e.spec.fields,S=>S.param,(S,T)=>{const I=c(()=>i(t(T))),C=c(()=>o(t(T)));var D=Qk(),x=w(D),P=w(x),K=m(P,!0),X=d(P,2),ie=m(X,!0),ue=d(x,2),fe=w(ue),B=w(fe);{var re=J=>{var ye=_u(),xe=m(ye),ge={};E((V,pe)=>{h(xe,`${V??""} (${t(C)??""})`),ge!==(ge=pe)&&(ye.value=(ye.__value=ge)??"")},[()=>l(t(T),t(C)),()=>String(t(C))]),v(J,ye)};$(B,J=>{t(C)!==void 0&&J(re)})}var de=d(B);je(de,17,()=>t(T).options,J=>J.value,(J,ye)=>{var xe=_u(),ge=m(xe,!0),V={};E(pe=>{h(ge,t(ye).label),V!==(V=pe)&&(xe.value=(xe.__value=V)??"")},[()=>String(t(ye).value)]),v(J,xe)});var ee;qt(fe);var ae=d(fe,2),Y=m(ae,!0),Z=d(ue,2),te=w(Z);{var Re=J=>{var ye=Xk(),xe=m(ye,!0);E(()=>{R(ye,"data-testid",`enum-${t(T).param}-preset`),h(xe,t(T).presetId)}),v(J,ye)};$(te,J=>{t(T).presetId!==void 0&&J(Re)})}E((J,ye,xe,ge)=>{R(D,"data-testid",`enum-${t(T).param}`),h(K,J),h(ie,t(T).param),fe.disabled=!t(T).writable,R(fe,"aria-label",ye),R(fe,"data-testid",`enum-${t(T).param}-select`),ee!==(ee=xe)&&(fe.value=(fe.__value=ee)??"",Ln(fe,ee)),R(ae,"data-testid",`enum-${t(T).param}-raw`),h(Y,ge)},[()=>s(t(T).param),()=>s(t(T).param),()=>String(t(I)),()=>t(I)<0?"—":`${l(t(T),t(I))} (${t(I)})`]),ne("change",fe,J=>e.onchange({[t(T).param]:Number(J.currentTarget.value)})),v(S,D)}),E((S,T)=>{h(b,S),h(k,T)},[()=>a("Named options"),()=>a("These values have names in the CCU string table that the description does not carry.")]),v(r,f),ct()}St(["change"]);var ew=_('<th class="svelte-hdzef5"> </th>'),tw=_('<label class="svelte-hdzef5"><input type="checkbox"/> <span> </span></label>'),nw=_('<div class="hmm-switch-days svelte-hdzef5"><!> <span class="hmm-switch-raw svelte-hdzef5"> </span></div>'),rw=_('<input class="hmm-input hmm-switch-time svelte-hdzef5" type="text" inputmode="numeric"/>'),aw=_('<input class="hmm-input hmm-switch-number svelte-hdzef5" type="number" min="0" step="0.1"/> <span class="hmm-switch-raw svelte-hdzef5"> </span>',1),sw=_("<option> </option>"),iw=_('<select class="hmm-select"></select>'),ow=_('<span class="hmm-switch-raw svelte-hdzef5"> </span>'),lw=_('<input class="hmm-input hmm-switch-number svelte-hdzef5" type="number"/> <!>',1),dw=_('<td class="svelte-hdzef5"><!></td>'),cw=_('<tr><td class="hmm-switch-index svelte-hdzef5"> </td><!></tr>'),uw=_('<div class="hmm-editor svelte-hdzef5" data-testid="editor-switch-week-profile"><h3 class="svelte-hdzef5"> </h3> <p class="hmm-editor-hint svelte-hdzef5"> </p> <label class="hmm-switch-option svelte-hdzef5"><input type="checkbox" data-testid="switch-show-unused"/> <span> </span></label> <div class="hmm-switch-scroll svelte-hdzef5"><table class="hmm-switch-table svelte-hdzef5"><thead><tr><th class="svelte-hdzef5"> </th><!></tr></thead><tbody></tbody></table></div></div>');function fw(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t;let s=N(!1);const i=c(()=>e.spec.slots.filter(ae=>t(s)||!f0(e.values,ae)));function o(ae){return ae.id==="TIME"?a("Time"):ae.id==="WEEKDAY"?a("Weekdays"):n.meta.parameterLabel(ae.id,e.channelType)}function l(ae,Y){return e.values[_a(ae,Y)]}function f(ae,Y,Z){e.onchange({[_a(ae,Y)]:Z})}function p(ae,Y){const Z=u0(ae,Y);Z&&e.onchange(Z)}function b(ae,Y){const Z=e.spec.durations[`${ae}:${Y.id}`];return Z===void 0?void 0:Rd(e.values,Z)?.seconds}function g(ae,Y,Z){const te=e.spec.durations[`${ae}:${Y.id}`],Re=Number(Z);if(te===void 0||Z===""||!Number.isFinite(Re))return;const J=xd(Re,te);J&&e.onchange(J)}function k(ae,Y,Z){const te=Number(Z);Z===""||!Number.isFinite(te)||f(ae,Y,te)}var y=uw(),S=w(y),T=m(S,!0),I=d(S,2),C=m(I,!0),D=d(I,2),x=w(D),P=d(x,2),K=m(P,!0),X=d(D,2),ie=w(X),ue=w(ie),fe=w(ue),B=w(fe),re=m(B,!0),de=d(B);je(de,17,()=>e.spec.columns,ae=>ae.id,(ae,Y)=>{var Z=ew(),te=m(Z,!0);E(Re=>h(te,Re),[()=>o(t(Y))]),v(ae,Z)});var ee=d(ue);je(ee,20,()=>t(i),ae=>ae,(ae,Y)=>{var Z=cw(),te=w(Z),Re=m(te,!0),J=d(te);je(J,17,()=>e.spec.columns,ye=>ye.id,(ye,xe)=>{var ge=dw(),V=w(ge);{var pe=W=>{var O=nw(),z=w(O);je(z,18,()=>o0,be=>be,(be,Ee,le)=>{var G=tw(),L=w(G),A=d(L,2),M=m(A,!0);E((he,Te,Pe,Ve)=>{R(G,"title",he),L.disabled=!e.spec.writable,R(L,"aria-label",Te),R(L,"data-testid",`switch-${Y}-day-${t(le)}`),Nr(L,Pe),h(M,Ve)},[()=>a(Ee),()=>a(Ee),()=>l0(l(Y,"WEEKDAY"),t(le)),()=>a(Ee).slice(0,2)]),ne("change",L,he=>f(Y,"WEEKDAY",d0(l(Y,"WEEKDAY"),t(le),he.currentTarget.checked))),v(be,G)});var ce=d(z,2),me=m(ce,!0);E(be=>{R(ce,"data-testid",`switch-${Y}-mask`),h(me,be)},[()=>String(l(Y,"WEEKDAY")??"—")]),v(W,O)},ve=W=>{var O=rw();E((z,ce)=>{O.disabled=!e.spec.writable,R(O,"aria-label",z),R(O,"data-testid",`switch-${Y}-time`),an(O,ce)},[()=>`${a("Time")} ${Y}`,()=>c0(e.values,Y)]),ne("change",O,z=>p(Y,z.currentTarget.value)),v(W,O)},Q=W=>{var O=aw(),z=De(O),ce=d(z,2),me=m(ce,!0);E((be,Ee,le)=>{z.disabled=!e.spec.writable,R(z,"aria-label",be),R(z,"data-testid",`switch-${Y}-${t(xe).id}`),an(z,Ee),R(ce,"data-testid",`switch-${Y}-${t(xe).id}-result`),h(me,le)},[()=>`${o(t(xe))} ${Y}`,()=>b(Y,t(xe))??"",()=>vi(b(Y,t(xe))??Number.NaN)]),ne("input",z,be=>g(Y,t(xe),be.currentTarget.value)),v(W,O)},oe=W=>{var O=iw();je(O,22,()=>Ma(t(xe).description)??[],ce=>ce,(ce,me,be)=>{var Ee=sw(),le=m(Ee,!0),G={};E((L,A)=>{h(le,L),G!==(G=A)&&(Ee.value=(Ee.__value=G)??"")},[()=>n.meta.valueLabel(t(xe).id,me,e.channelType),()=>String(t(be))]),v(ce,Ee)});var z;qt(O),E((ce,me)=>{O.disabled=!e.spec.writable,R(O,"aria-label",ce),R(O,"data-testid",`switch-${Y}-${t(xe).id}`),z!==(z=me)&&(O.value=(O.__value=z)??"",Ln(O,z))},[()=>`${o(t(xe))} ${Y}`,()=>String(l(Y,t(xe).id)??"")]),ne("change",O,ce=>f(Y,t(xe).id,Number(ce.currentTarget.value))),v(W,O)},F=W=>{var O=lw(),z=De(O),ce=d(z,2);{var me=Ee=>{var le=ow(),G=m(le,!0);E(L=>h(G,L),[()=>lo(t(xe).description)]),v(Ee,le)},be=c(()=>lo(t(xe).description)!=="");$(ce,Ee=>{t(be)&&Ee(me)})}E((Ee,le,G,L)=>{R(z,"min",Ee),R(z,"max",le),R(z,"step",t(xe).description.TYPE==="FLOAT"?.01:1),z.disabled=!e.spec.writable,R(z,"aria-label",G),R(z,"data-testid",`switch-${Y}-${t(xe).id}`),an(z,L)},[()=>Jn(t(xe).description,"MIN"),()=>Jn(t(xe).description,"MAX"),()=>`${o(t(xe))} ${Y}`,()=>l(Y,t(xe).id)??""]),ne("input",z,Ee=>k(Y,t(xe).id,Ee.currentTarget.value)),v(W,O)};$(V,W=>{t(xe).kind==="weekday"?W(pe):t(xe).kind==="time"?W(ve,1):t(xe).kind==="duration"?W(Q,2):t(xe).kind==="enum"?W(oe,3):W(F,-1)})}v(ye,ge)}),E(()=>{R(Z,"data-testid",`switch-slot-${Y}`),h(Re,Y)}),v(ae,Z)}),E((ae,Y,Z,te)=>{h(T,ae),h(C,Y),h(K,Z),h(re,te)},[()=>a("Switching programme"),()=>a("No weekday chosen - the slot does nothing"),()=>a("Unused"),()=>a("Slot")]),ur(x,()=>t(s),ae=>u(s,ae)),v(r,y),ct()}St(["change","input"]);var Eu=_('<button type="button"> </button>'),yu=_("<option> </option>"),hw=_('<div class="hmm-week-bar svelte-1du5x7x"><!> <span class="hmm-week-spacer svelte-1du5x7x"></span> <label class="hmm-week-copy svelte-1du5x7x"><span> </span> <select class="hmm-select" data-testid="week-copy-profile-target"><option>—</option><!></select></label> <button type="button" class="hmm-button" data-testid="week-copy-profile"> </button></div>'),mw=_('<span class="hmm-week-unit svelte-1du5x7x"> </span>'),vw=_('<tr><td class="hmm-week-index svelte-1du5x7x"> </td><td class="hmm-week-from svelte-1du5x7x"> </td><td class="svelte-1du5x7x"><input class="hmm-input hmm-week-time svelte-1du5x7x" type="text" inputmode="numeric"/></td><td class="svelte-1du5x7x"><input class="hmm-input hmm-week-value svelte-1du5x7x" type="number" step="0.5"/> <!></td></tr>'),pw=_("<li> </li>"),gw=_('<ul class="hmm-week-problems svelte-1du5x7x" data-testid="week-problems"></ul>'),bw=_('<div class="hmm-editor svelte-1du5x7x" data-testid="editor-week-profile"><h3 class="svelte-1du5x7x"> </h3> <p class="hmm-editor-hint svelte-1du5x7x"> </p> <!> <div class="hmm-week-bar svelte-1du5x7x"><!> <span class="hmm-week-spacer svelte-1du5x7x"></span> <label class="hmm-week-copy svelte-1du5x7x"><span> </span> <select class="hmm-select" data-testid="week-copy-day-target"><option> </option><!></select></label> <button type="button" class="hmm-button" data-testid="week-copy-day"> </button></div> <table class="hmm-week-table svelte-1du5x7x"><thead><tr><th class="svelte-1du5x7x"> </th><th class="svelte-1du5x7x"> </th><th class="svelte-1du5x7x"> </th><th class="svelte-1du5x7x"> </th></tr></thead><tbody></tbody></table> <!></div>');function _w(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t;let s=N(0),i=N(He($i[0]??"MONDAY")),o=N("*"),l=N("");const f=c(()=>e.spec.profiles[t(s)]??e.spec.profiles[0]),p=c(()=>lo(e.spec.valueDescription)),b=c(()=>p0(e.spec,e.values)),g=c(()=>os(Jn(e.spec.valueDescription,"MIN"),e.spec.valueDescription)),k=c(()=>os(Jn(e.spec.valueDescription,"MAX"),e.spec.valueDescription)),y=c(()=>n.meta.parameterLabel(e.spec.valueField,e.channelType)),S=c(()=>t(b).filter(A=>A.profile===(t(f)?.id??"")));function T(A){const M=e.spec.days.indexOf(A),he=m0[M];return he===void 0?A:a(he)}function I(A){return A===""?a("Week programme"):`${a("Profile")} ${A.slice(1)}`}function C(A){return!t(f)||A===1?Ks(0):Ks(Yl(e.spec,e.values,t(f),t(i),A-1).endTime??0)}function D(A,M){const he=_0(M);he===void 0||!t(f)||e.onchange({[qr(t(f).endTimePrefix,t(i),A)]:he})}function x(A,M){const he=Number(M);M===""||!Number.isFinite(he)||!t(f)||e.onchange({[qr(t(f).valuePrefix,t(i),A)]:he})}function P(){if(!t(f))return;const A=t(o)==="*"?e.spec.days:[t(o)];e.onchange(g0(e.spec,e.values,t(f),t(i),A))}function K(){const A=e.spec.profiles.find(M=>M.id===t(l));!t(f)||!A||e.onchange(b0(e.spec,e.values,t(f),[A]))}function X(A){const M={day:T(A.day),slot:String(A.slot),end:Ks(e.spec.dayEnd)};switch(A.code){case"not-increasing":return a("{day}: end time {slot} is not after the one before it",M);case"after-day-end":return a("{day}: end time {slot} comes after the day has ended",M);case"day-not-closed":return a("{day}: the last end time must be {end}",M)}}var ie=bw(),ue=w(ie),fe=m(ue,!0),B=d(ue,2),re=m(B,!0),de=d(B,2);{var ee=A=>{var M=hw(),he=w(M);je(he,19,()=>e.spec.profiles,j=>j.id,(j,U,Ne)=>{var Le=Eu();let ze;var _e=m(Le,!0);E(Ie=>{ze=yt(Le,1,"hmm-button svelte-1du5x7x",null,ze,{"hmm-week-active":t(Ne)===t(s)}),R(Le,"data-testid",`week-profile-${t(U).id}`),h(_e,Ie)},[()=>I(t(U).id)]),ne("click",Le,()=>u(s,t(Ne),!0)),v(j,Le)});var Te=d(he,4),Pe=w(Te),Ve=m(Pe,!0),Ye=d(Pe,2),ot=w(Ye);ot.value=ot.__value="";var Je=d(ot);je(Je,17,()=>e.spec.profiles,j=>j.id,(j,U)=>{var Ne=At(),Le=De(Ne);{var ze=_e=>{var Ie=yu(),Ce=m(Ie,!0),Fe={};E(Oe=>{h(Ce,Oe),Fe!==(Fe=t(U).id)&&(Ie.value=(Ie.__value=Fe)??"")},[()=>I(t(U).id)]),v(_e,Ie)};$(Le,_e=>{t(U).id!==t(f)?.id&&_e(ze)})}v(j,Ne)}),qt(Ye);var Se=d(Te,2),we=m(Se,!0);E((j,U)=>{h(Ve,j),Se.disabled=!e.spec.writable||t(l)==="",h(we,U)},[()=>a("Copy profile to"),()=>a("Copy")]),kr(Ye,()=>t(l),j=>u(l,j)),ne("click",Se,K),v(A,M)};$(de,A=>{e.spec.profiles.length>1&&A(ee)})}var ae=d(de,2),Y=w(ae);je(Y,16,()=>e.spec.days,A=>A,(A,M)=>{var he=Eu();let Te;var Pe=m(he,!0);E(Ve=>{Te=yt(he,1,"hmm-button svelte-1du5x7x",null,Te,{"hmm-week-active":M===t(i)}),R(he,"data-testid",`week-day-${M}`),h(Pe,Ve)},[()=>T(M)]),ne("click",he,()=>u(i,M,!0)),v(A,he)});var Z=d(Y,4),te=w(Z),Re=m(te,!0),J=d(te,2),ye=w(J),xe=m(ye,!0);ye.value=ye.__value="*";var ge=d(ye);je(ge,16,()=>e.spec.days,A=>A,(A,M)=>{var he=At(),Te=De(he);{var Pe=Ve=>{var Ye=yu(),ot=m(Ye,!0),Je={};E(Se=>{h(ot,Se),Je!==(Je=M)&&(Ye.value=(Ye.__value=Je)??"")},[()=>T(M)]),v(Ve,Ye)};$(Te,Ve=>{M!==t(i)&&Ve(Pe)})}v(A,he)}),qt(J);var V=d(Z,2),pe=m(V,!0),ve=d(ae,2),Q=w(ve),oe=w(Q),F=w(oe),W=m(F,!0),O=d(F),z=m(O,!0),ce=d(O),me=m(ce,!0),be=d(ce),Ee=m(be,!0),le=d(Q);je(le,20,()=>Array.from({length:e.spec.slots},(A,M)=>M+1),A=>A,(A,M)=>{const he=c(()=>t(f)?Yl(e.spec,e.values,t(f),t(i),M):void 0);var Te=vw(),Pe=w(Te),Ve=m(Pe,!0),Ye=d(Pe),ot=m(Ye,!0),Je=d(Ye),Se=w(Je),we=d(Je),j=w(we),U=d(j,2);{var Ne=Le=>{var ze=mw(),_e=m(ze,!0);E(()=>h(_e,t(p))),v(Le,ze)};$(U,Le=>{t(p)!==""&&Le(Ne)})}E((Le,ze,_e,Ie)=>{R(Te,"data-testid",`week-slot-${M}`),h(Ve,M),h(ot,Le),Se.disabled=!e.spec.writable,R(Se,"aria-label",ze),R(Se,"data-testid",`week-slot-${M}-endtime`),an(Se,_e),R(j,"min",t(g)),R(j,"max",t(k)),j.disabled=!e.spec.writable,R(j,"aria-label",Ie),R(j,"data-testid",`week-slot-${M}-value`),an(j,t(he)?.value??"")},[()=>C(M),()=>`${a("until")} ${M}`,()=>Ks(t(he)?.endTime),()=>`${a("Value")} ${M}`]),ne("change",Se,Le=>D(M,Le.currentTarget.value)),ne("input",j,Le=>x(M,Le.currentTarget.value)),v(A,Te)});var G=d(ve,2);{var L=A=>{var M=gw();je(M,21,()=>t(S),he=>`${he.day}-${he.slot}-${he.code}`,(he,Te)=>{var Pe=pw(),Ve=m(Pe,!0);E(Ye=>h(Ve,Ye),[()=>X(t(Te))]),v(he,Pe)}),v(A,M)};$(G,A=>{t(S).length>0&&A(L)})}E((A,M,he,Te,Pe,Ve,Ye,ot)=>{h(fe,A),h(re,M),h(Re,he),h(xe,Te),V.disabled=!e.spec.writable,h(pe,Pe),h(W,Ve),h(z,Ye),h(me,ot),h(Ee,t(y))},[()=>a("Week programme"),()=>a("The end times of a day rise until {end}, and the last one is {end}",{end:Ks(e.spec.dayEnd)}),()=>a("Copy day to"),()=>a("Weekdays"),()=>a("Copy"),()=>a("Slot"),()=>a("Time"),()=>a("until")]),kr(J,()=>t(o),A=>u(o,A)),ne("click",V,P),v(r,ie),ct()}St(["click","change","input"]);function Ew(r,e){var n=At(),a=De(n);je(a,17,()=>e.specs,s=>s.id,(s,i)=>{var o=At(),l=De(o);{var f=y=>{jk(y,{get spec(){return t(i)},get values(){return e.values},get channelType(){return e.channelType},get onchange(){return e.onchange}})},p=y=>{$k(y,{get spec(){return t(i)},get values(){return e.values},get channelType(){return e.channelType},get onchange(){return e.onchange}})},b=y=>{Jk(y,{get spec(){return t(i)},get values(){return e.values},get channelType(){return e.channelType},get onchange(){return e.onchange}})},g=y=>{fw(y,{get spec(){return t(i)},get values(){return e.values},get channelType(){return e.channelType},get onchange(){return e.onchange}})},k=y=>{_w(y,{get spec(){return t(i)},get values(){return e.values},get channelType(){return e.channelType},get onchange(){return e.onchange}})};$(l,y=>{t(i).kind==="blind-calibration"?y(f):t(i).kind==="duration-pairs"?y(p,1):t(i).kind==="enum-options"?y(b,2):t(i).kind==="switch-week-profile"?y(g,3):t(i).kind==="week-profile"&&y(k,4)})}v(s,o)}),v(r,n)}class yw extends Map{#e=new Map;#n=N(0);#t=N(0);#a=xa||-1;constructor(e){if(super(),e){for(var[n,a]of e)super.set(n,a);this.#t.v=super.size}}#s(e){return xa===this.#a?N(e):za(e)}has(e){var n=this.#e,a=n.get(e);if(a===void 0)if(super.has(e))a=this.#s(0),n.set(e,a);else return t(this.#n),!1;return t(a),!0}forEach(e,n){this.#r(),super.forEach(e,n)}get(e){var n=this.#e,a=n.get(e);if(a===void 0)if(super.has(e))a=this.#s(0),n.set(e,a);else{t(this.#n);return}return t(a),super.get(e)}getOrInsert(e,n){return super.has(e)||this.set(e,n),this.get(e)}getOrInsertComputed(e,n){return super.has(e)||this.set(e,n(e)),this.get(e)}set(e,n){var a=this.#e,s=a.get(e),i=super.get(e),o=super.set(e,n),l=this.#n;if(s===void 0)s=this.#s(0),a.set(e,s),u(this.#t,super.size),ha(l);else if(i!==n){ha(s);var f=l.reactions===null?null:new Set(l.reactions),p=f===null||!s.reactions?.every(b=>f.has(b));p&&ha(l)}return o}delete(e){var n=this.#e,a=n.get(e),s=super.delete(e);return a!==void 0&&(n.delete(e),u(a,-1)),s&&(u(this.#t,super.size),ha(this.#n)),s}clear(){if(super.size!==0){super.clear();var e=this.#e;u(this.#t,0);for(var n of e.values())u(n,-1);ha(this.#n),e.clear()}}#r(){t(this.#n);var e=this.#e;if(this.#t.v!==e.size){for(var n of super.keys())if(!e.has(n)){var a=this.#s(0);e.set(n,a)}}for([,a]of this.#e)t(a)}keys(){return t(this.#n),super.keys()}values(){return this.#r(),super.values()}entries(){return this.#r(),super.entries()}[Symbol.iterator](){return this.entries()}get size(){return t(this.#t),super.size}}const Xl="DYNAMIC_ROUTE_";function Wr(r,e,n){return r[`${Xl}${e}_${String(n)}`]}function tl(r){return typeof r=="string"?r:typeof r=="number"?String(r):""}function Ja(r){return r===!0||r===1||r==="true"||r==="1"}function Su(r){if(typeof r=="number"&&Number.isFinite(r))return r;if(typeof r=="string"&&r.trim()!==""&&Number.isFinite(Number(r)))return Number(r)}function Sw(r){const e=new Set;for(const n of Object.keys(r))if(n.startsWith(`${Xl}IP_DESTINATION_ADDRESS_`)){const a=Number(n.slice(`${Xl}IP_DESTINATION_ADDRESS_`.length));Number.isInteger(a)&&e.add(a)}return[...e].sort((n,a)=>n-a).map(n=>({index:n,destination:tl(Wr(r,"IP_DESTINATION_ADDRESS",n)),nextHop:tl(Wr(r,"NEXT_HOP_ADDRESS",n)),distance:Su(Wr(r,"DISTANCE",n))??0,rssi:Su(Wr(r,"RSSI",n)),isStatic:Ja(Wr(r,"IS_STATIC_ROUTE",n)),isNeighbour:Ja(Wr(r,"IS_NEIGHBOUR",n)),macSequenceValid:Ja(Wr(r,"IS_MAC_SEQUENCE_NUMBER_VALID",n)),accessController:Ja(Wr(r,"OM_ACCESS_CONTROLLER",n)),router:Ja(Wr(r,"OM_ROUTER",n)),portable:Ja(Wr(r,"OM_PORTABLE_DEVICE",n)),listenerMode:tl(Wr(r,"OM_LISTENER_MODE",n)),omValid:Ja(Wr(r,"OM_VALID",n))})).filter(n=>n.destination!=="")}function kw(r,e){const n=new Map([[r,{id:r,router:!0,accessController:!1,portable:!1}]]),a=new Map,s=(o,l)=>{o===""||n.has(o)||n.set(o,{id:o,router:l?.router??!1,accessController:l?.accessController??!1,portable:l?.portable??!1})},i=o=>{const l=`${o.from}>${o.to}`,f=a.get(l);(!f||f.distance===void 0&&o.distance!==void 0)&&a.set(l,o)};for(const o of e)s(o.destination,o),o.isNeighbour||o.nextHop===""||o.nextHop===o.destination?i({from:r,to:o.destination,distance:o.distance,rssi:o.rssi,isStatic:o.isStatic}):(s(o.nextHop),i({from:r,to:o.nextHop,distance:o.distance,rssi:o.rssi,isStatic:o.isStatic}),i({from:o.nextHop,to:o.destination,isStatic:o.isStatic}));return{self:r,nodes:[...n.values()],edges:[...a.values()]}}var ww=_("<p> </p>"),Aw=Pa('<text class="hmm-routing-edge svelte-10p79ns"> <!></text>'),Tw=Pa("<line></line><!>",1),Rw=Pa('<text text-anchor="middle" class="hmm-routing-mark svelte-10p79ns">AC</text>'),xw=Pa('<text text-anchor="middle" class="hmm-routing-mark svelte-10p79ns">R</text>'),Iw=Pa('<text text-anchor="middle" class="hmm-routing-mark svelte-10p79ns">P</text>'),Dw=Pa('<g><circle class="svelte-10p79ns"></circle><text text-anchor="middle" class="svelte-10p79ns"> </text><!></g>'),Nw=_('<tr><td class="svelte-10p79ns"> </td><td class="svelte-10p79ns"><span class="hmm-mono"> </span> </td><td class="svelte-10p79ns"><span class="hmm-mono"> </span></td><td class="svelte-10p79ns"> </td><td class="svelte-10p79ns"> </td><td class="svelte-10p79ns"> </td><td class="svelte-10p79ns"> </td><td class="svelte-10p79ns"> </td><td class="svelte-10p79ns"> </td><td class="svelte-10p79ns"> </td><td class="svelte-10p79ns"> </td><td class="svelte-10p79ns"> </td></tr>'),Cw=_('<svg class="hmm-routing-graph svelte-10p79ns" role="img"><!><!></svg> <table class="hmm-table hmm-routing-list svelte-10p79ns"><thead><tr><th class="svelte-10p79ns">#</th><th class="svelte-10p79ns"> </th><th class="svelte-10p79ns"> </th><th class="svelte-10p79ns"> </th><th class="svelte-10p79ns">RSSI</th><th class="svelte-10p79ns"> </th><th class="svelte-10p79ns"> </th><th class="svelte-10p79ns"> </th><th class="svelte-10p79ns"> </th><th class="svelte-10p79ns"> </th><th class="svelte-10p79ns"> </th><th class="svelte-10p79ns"> </th></tr></thead><tbody></tbody></table>',1),Pw=_('<div class="hmm-routing svelte-10p79ns" data-testid="routing-table"><p class="hmm-routing-hint svelte-10p79ns"> </p> <!></div>');function Mw(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t,s=c(()=>Sw(e.values)),i=c(()=>kw(e.self,t(s))),o=I=>{const C=n.nameOf(I);return C&&C!==I?C:I},l=560,f=c(()=>{const I=new yw,C=l/2,D=l/2;I.set(t(i).self,{x:C,y:D});const x=t(i).edges.filter(X=>X.from===t(i).self).map(X=>X.to),P=t(i).nodes.map(X=>X.id).filter(X=>X!==t(i).self&&!x.includes(X)),K=(X,ie,ue)=>{X.forEach((fe,B)=>{const re=ue+2*Math.PI*B/Math.max(X.length,1);I.set(fe,{x:C+ie*Math.cos(re),y:D+ie*Math.sin(re)})})};return K(x,l*.26,-Math.PI/2),K(P,l*.44,-Math.PI/2+Math.PI/Math.max(P.length,1)),I}),p=I=>t(f).get(I)??{x:l/2,y:l/2};var b=Pw(),g=w(b),k=m(g,!0),y=d(g,2);{var S=I=>{var C=ww(),D=m(C,!0);E(x=>h(D,x),[()=>a("No routes: the device reported an empty table.")]),v(I,C)},T=I=>{var C=Cw(),D=De(C),x=w(D);je(x,17,()=>t(i).edges,W=>`${W.from}>${W.to}`,(W,O)=>{const z=c(()=>p(t(O).from)),ce=c(()=>p(t(O).to));var me=Tw(),be=De(me);let Ee;var le=d(be);{var G=L=>{var A=Aw(),M=w(A),he=d(M);{var Te=Pe=>{var Ve=tr();E(()=>h(Ve,`, ${t(O).rssi??""} dBm`)),v(Pe,Ve)};$(he,Pe=>{t(O).rssi!==void 0&&Pe(Te)})}E(Pe=>{R(A,"x",(t(z).x+t(ce).x)/2),R(A,"y",(t(z).y+t(ce).y)/2-4),h(M,`${t(O).distance??""}
|
|
17
|
-
${Pe??""}`)},[()=>a("hops",{},t(O).distance)]),v(L,A)};$(le,L=>{t(O).distance!==void 0&&L(G)})}E(()=>{R(be,"x1",t(z).x),R(be,"y1",t(z).y),R(be,"x2",t(ce).x),R(be,"y2",t(ce).y),Ee=yt(be,0,"svelte-10p79ns",null,Ee,{"hmm-routing-static":t(O).isStatic})}),v(W,me)});var P=d(x);je(P,17,()=>t(i).nodes,W=>W.id,(W,O)=>{const z=c(()=>p(t(O).id));var ce=Dw();let me;var be=w(ce),Ee=d(be),le=m(Ee,!0),G=d(Ee);{var L=he=>{var Te=Rw();E(()=>{R(Te,"x",t(z).x),R(Te,"y",t(z).y+4)}),v(he,Te)},A=he=>{var Te=xw();E(()=>{R(Te,"x",t(z).x),R(Te,"y",t(z).y+4)}),v(he,Te)},M=he=>{var Te=Iw();E(()=>{R(Te,"x",t(z).x),R(Te,"y",t(z).y+4)}),v(he,Te)};$(G,he=>{t(O).accessController?he(L):t(O).router?he(A,1):t(O).portable&&he(M,2)})}E(he=>{me=yt(ce,0,"hmm-routing-node svelte-10p79ns",null,me,{"hmm-routing-self":t(O).id===t(i).self,"hmm-routing-router":t(O).router}),R(be,"cx",t(z).x),R(be,"cy",t(z).y),R(be,"r",t(O).id===t(i).self?22:16),R(Ee,"x",t(z).x),R(Ee,"y",t(z).y+30),h(le,he)},[()=>o(t(O).id)]),v(W,ce)});var K=d(D,2),X=w(K),ie=w(X),ue=d(w(ie)),fe=m(ue,!0),B=d(ue),re=m(B,!0),de=d(B),ee=m(de,!0),ae=d(de,2),Y=m(ae,!0),Z=d(ae),te=m(Z,!0),Re=d(Z),J=m(Re,!0),ye=d(Re),xe=m(ye,!0),ge=d(ye),V=m(ge,!0),pe=d(ge),ve=m(pe,!0),Q=d(pe),oe=m(Q,!0),F=d(X);je(F,21,()=>t(s),W=>W.index,(W,O)=>{var z=Nw(),ce=w(z),me=m(ce,!0),be=d(ce),Ee=w(be),le=m(Ee,!0),G=d(Ee),L=d(be),A=w(L),M=m(A,!0),he=d(L),Te=m(he,!0),Pe=d(he),Ve=m(Pe,!0),Ye=d(Pe),ot=m(Ye,!0),Je=d(Ye),Se=m(Je,!0),we=d(Je),j=m(we,!0),U=d(we),Ne=m(U,!0),Le=d(U),ze=m(Le,!0),_e=d(Le),Ie=m(_e,!0),Ce=d(_e),Fe=m(Ce,!0);E((Oe,qe,Ke)=>{R(z,"data-testid",Oe),h(me,t(O).index),h(le,t(O).destination),h(G,` ${qe??""}`),h(M,t(O).nextHop),h(Te,t(O).distance),h(Ve,Ke),h(ot,t(O).isNeighbour?"✔":""),h(Se,t(O).isStatic?"✔":""),h(j,t(O).router?"✔":""),h(Ne,t(O).accessController?"✔":""),h(ze,t(O).portable?"✔":""),h(Ie,t(O).listenerMode),h(Fe,t(O).omValid?"✔":"")},[()=>`route-${String(t(O).index)}`,()=>o(t(O).destination)!==t(O).destination?o(t(O).destination):"",()=>t(O).rssi===void 0?"":`${String(t(O).rssi)} dBm`]),v(W,z)}),E((W,O,z,ce,me,be,Ee,le,G,L,A,M)=>{R(D,"viewBox",W),R(D,"aria-label",O),h(fe,z),h(re,ce),h(ee,me),h(Y,be),h(te,Ee),h(J,le),h(xe,G),h(V,L),h(ve,A),h(oe,M)},[()=>`0 0 ${String(l)} ${String(l)}`,()=>a("Routing table"),()=>a("Destination"),()=>a("Next hop"),()=>a("Hops"),()=>a("Neighbour"),()=>a("Static"),()=>a("Router"),()=>a("Access controller"),()=>a("Portable"),()=>a("Listener mode"),()=>a("Valid")]),v(I,C)};$(y,I=>{t(s).length===0?I(S):I(T,-1)})}E(I=>h(k,I),[()=>a("Read from the device itself; every read costs duty cycle, so it is read once when this opens.")]),v(r,b),ct()}var Ow=_('<div><div class="hmm-param-label svelte-ery515"><span> </span></div> <div class="hmm-param-control svelte-ery515"><label class="hmm-param-suppress svelte-ery515"><input type="checkbox"/> <span> </span></label></div></div>');function Lw(r,e){dt(e,!0);let n=H(e,"title",3,void 0),a=H(e,"changed",3,!1);var s=Ow();let i;var o=w(s),l=w(o),f=m(l,!0),p=d(o,2),b=w(p),g=w(b),k=d(g,2),y=m(k,!0);E(()=>{i=yt(s,1,"hmm-param hmm-param-table-row svelte-ery515",null,i,{"hmm-param-changed":a()}),R(s,"data-testid",`suppress-row-${e.name}`),h(f,e.name),R(b,"title",n()),Nr(g,e.suppressed),R(g,"data-testid",`suppress-${e.name}`),h(y,e.label)}),ne("change",g,S=>e.onchange(S.currentTarget.checked)),v(r,s),ct()}St(["change"]);var Fw=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="paramset-preview"> </button>',1),Gw=_("<p> </p>"),Uw=_('<p data-testid="paramset-failed"> </p>'),Bw=_('<label class="hmm-paramset-option svelte-onngst"><input type="checkbox" data-testid="paramset-expert"/> <span> </span></label>'),Hw=_('<label class="hmm-paramset-option svelte-onngst"><input type="checkbox" data-testid="paramset-show-covered"/> <span> </span></label>'),Vw=_('<button type="button" class="hmm-button" data-testid="paramset-internal-key"> </button>'),zw=_('<label class="hmm-paramset-option svelte-onngst"><input type="checkbox" data-testid="paramset-show-hidden"/> <span> </span></label>'),jw=_("<li> </li>"),Ww=_('<ul class="hmm-paramset-warnings svelte-onngst" data-testid="paramset-warnings"></ul>'),Kw=_('<p class="hmm-paramset-legend svelte-onngst" data-testid="paramset-easy-legend"><span class="hmm-paramset-easy-swatch svelte-onngst" aria-hidden="true"></span> </p>'),Yw=_("<div><!></div>"),qw=_('<div class="hmm-paramset-suppress svelte-onngst" data-testid="paramset-service-messages"><span class="hmm-paramset-suppress-hint svelte-onngst"> </span> <button type="button" class="hmm-button" data-testid="suppress-all"> </button> <button type="button" class="hmm-button" data-testid="unsuppress-all"> </button> <button type="button" class="hmm-button" data-testid="suppress-apply"> </button></div>'),$w=_('<li><span class="hmm-mono"> </span> </li>'),Xw=_('<ul class="hmm-paramset-results svelte-onngst" data-testid="paramset-results"></ul>'),Qw=_('<div class="hmm-paramset-top svelte-onngst"><!> <label class="hmm-paramset-option svelte-onngst"><input type="checkbox" data-testid="paramset-write-all"/> <span> </span></label> <!> <!> <!> <!></div> <!> <!> <!> <!> <div><!> <!> <!></div> <!> <!>',1),Zw=_("<!> <!> <!> <!>",1);function Jw(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"interfaceName",3,""),s=H(e,"address",3,""),i=H(e,"paramset",3,"MASTER");const o=Bt(),l=o.i18n.t;let f=N(void 0),p=N(He({})),b=N(He({})),g=N(He({})),k=N(void 0),y=N(""),S=N(!1),T=N(He([])),I=N(!1),C=N(!1),D=N(!1),x=N(!1),P=N(!1),K=N(void 0),X=N(He([])),ie=N(He([])),ue=0,fe=N(void 0),B=N(He({})),re=N(void 0),de=N(!1),ee=N(void 0),ae=N(!1);const Y=c(()=>ci(a(),o.interfaces.typeOf(a()))),Z=c(()=>n()&&t(Y)&&/:0$/.test(s())&&(i()==="MASTER"||i()==="VALUES"));st(()=>{if(!t(Z)){u(fe,void 0),u(B,{},!0),u(re,void 0);return}const ke={interfaceName:a(),address:s(),paramset:i()};u(B,{},!0),Sr(()=>{o.paramsets.suppressedServiceMessages(ke.interfaceName,ke.address).then(Me=>{ke.address===s()&&ke.interfaceName===a()&&u(fe,Me,!0)}),ke.paramset==="MASTER"&&o.paramsets.describe(ke.interfaceName,ke.address,"VALUES").then(Me=>{ke.address===s()&&ke.interfaceName===a()&&u(re,Me,!0)})})});const te=c(()=>{if(t(fe)===void 0)return[];const ke=i()==="VALUES"?t(f):t(re);return ke?Wh(ke):[]}),Re=c(()=>i()==="MASTER"?t(te):[]);function J(ke){return t(B)[ke]??t(fe)?.includes(ke)===!0}function ye(ke){return ke in t(B)&&t(B)[ke]!==(t(fe)?.includes(ke)===!0)}const xe=c(()=>t(te).some(ke=>ye(ke)));function ge(ke,Me){u(B,{...t(B),[ke]:Me},!0)}function V(ke){u(B,Object.fromEntries(t(te).map(Me=>[Me,ke])),!0)}function pe(){u(ee,R0({address:s(),suppressed:t(fe)??[],edits:t(B),labels:{suppressed:l("suppressed"),unsuppressed:l("not suppressed")}}),!0),u(de,!0)}async function ve(){const ke=t(ee);if(ke){u(ae,!0);try{for(const Me of ke.entries)await o.paramsets.suppressServiceMessages(a(),s(),Me.param,t(B)[Me.param]===!0);u(fe,await o.paramsets.suppressedServiceMessages(a(),s()),!0),u(B,{},!0)}finally{u(ae,!1),u(de,!1)}}}const Q=c(()=>o.devices.index(a())),oe=c(()=>t(Q)?.get(s())?.TYPE??""),F=c(()=>`${i()} — ${o.nameOf(s())} (${s()})`),W=c(()=>t(f)?jh(t(f),t(k)):[]),O=c(()=>({optionByName:(ke,Me)=>o.meta.valueLabelIfKnown(ke,Me,t(oe)),optionByIndex:(ke,Me)=>o.meta.valueLabelIfKnown(ke,String(Me),t(oe)),preset:ke=>t(k)?.parameters.find(Me=>Me.name===ke)?.preset,uiLabel:ke=>o.meta.uiLabel(ke)})),z=c(()=>t(f)?k0({interfaceName:a(),address:s(),channelType:t(oe),paramset:i(),description:t(f)},t(O)):[]),ce=c(()=>t(D)||t(x)?new Set:w0(t(z))),me=c(()=>t(W).filter(ke=>(t(C)||ke.visible)&&!t(ce).has(ke.name))),be=c(()=>i()==="MASTER"&&t(f)?ph(t(k)?.controls,t(f)):void 0),Ee=c(()=>t(x)?void 0:t(be)),le=c(()=>t(x)?xl(t(be)):new Set),G=c(()=>new Map(t(W).map(ke=>[ke.name,ke]))),L=c(()=>xl(t(be))),A=c(()=>t(x)?[]:t(Ee)?t(z).filter(ke=>!ke.covers.every(Me=>t(L).has(Me))):t(z));st(()=>{n()&&i()==="MASTER"&&o.meta.loadPresets()});const M=c(()=>i()==="VALUES"),he=c(()=>i()==="MASTER"),Te=c(()=>{if(!t(he)||!t(Q)||s()===""||!t(Q).has(s()))return;const ke=t(Q).all().filter(Me=>Me.TYPE===t(oe)&&Me.ADDRESS!==s()).map(Me=>Me.ADDRESS);return y_(t(Q),s(),i(),ke)}),Pe=c(()=>t(Te)?[...t(Te).eligible.map(ke=>({value:ke,label:`${o.nameOf(ke)} (${ke})`})),...t(Te).ineligible.filter(ke=>ke.reason==="different-identity").map(ke=>({value:ke.address,label:`${o.nameOf(ke.address)} (${ke.address}) — ${l("other firmware or device type")}`,disabled:!0}))]:[]),Ve=c(()=>(t(k)?.problems??[]).map(ke=>`${ke.params.join(", ")}: ${o.meta.uiLabel(ke.errorKey)}`));st(()=>{if(!n()||a()===""||s()==="")return;const ke=ue+=1,Me={interfaceName:a(),address:s(),paramset:i()};o.paramsets.open(Me.interfaceName,Me.address,Me.paramset).then($e=>{ke===ue&&(u(f,$e?.description,!0),u(p,$e?.values??{},!0),u(b,{},!0),Me.paramset==="VALUES"&&Fe(ke),u(g,{},!0),u(X,[],!0),u(ie,[],!0),u(T,[],!0),u(I,!1),u(x,!1))})}),st(()=>{const ke=t(f);if(!n()||!ke||i()!=="MASTER"||t(oe)===""){u(k,void 0),Ye=void 0;return}const Me=Je(),$e=t(y),ft=ot(a(),s());o.meta.masterView(t(oe),ke,Me,$e,ft).then(_t=>{u(k,_t,!0)})});let Ye;function ot(ke,Me){const $e=`${ke}|${Me}`,ft=Me.indexOf(":"),_t=ft<0?Me:Me.slice(0,ft);return{deviceType:t(Q)?.get(Me)?.PARENT_TYPE||t(Q)?.get(_t)?.TYPE||"",channel:ft<0?-1:Number(Me.slice(ft+1)),channelMode:()=>(Ye?.key!==$e&&(Ye={key:$e,answer:o.paramsets.channelMode(ke,Me)}),Ye.answer)}}st(()=>{if(!n()||i()!=="MASTER"||s()===""){u(y,"");return}const ke=`${a()}|${s()}`;u(y,""),o.paramsets.paramsetId(a(),s()).then(Me=>o.meta.masterFormId(Me)).then(Me=>{`${a()}|${s()}`===ke&&u(y,Me,!0)})});function Je(){const ke={...t(p)};for(const[Me,$e]of Object.entries(t(g)))(typeof $e=="boolean"||typeof $e=="number"||typeof $e=="string")&&(ke[Me]=$e);return ke}function Se(ke){return Object.prototype.hasOwnProperty.call(t(g),ke.name)?t(g)[ke.name]:t(p)[ke.name]??ke.description.DEFAULT}function we(ke){return Object.prototype.hasOwnProperty.call(t(g),ke.name)}function j(ke,Me){u(g,{...t(g),[ke.name]:Me},!0)}function U(ke){u(g,{...t(g),...ke},!0)}function Ne(ke){return o.meta.parameterLabel(ke.name,t(oe))}function Le(ke){const Me=o.meta.parameterHelp(ke.name,t(oe));return Me===void 0?void 0:Me.replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim()}function ze(){t(f)&&(u(X,[],!0),u(ie,[],!0),u(K,Qs(t(p),t(g),t(f),{interfaceName:a(),targets:[s(),...t(T)],writeAll:t(I)}),!0),u(P,!0))}async function _e(){const ke=t(K);if(!ke||!t(f))return;const Me=await o.paramsets.put(a(),[...ke.targets],i(),ke.values,t(I)?{writeAll:!0}:void 0);u(X,Me,!0);const $e=await o.paramsets.read(a(),s(),i());$e&&(u(ie,ql(ke.values,$e,t(f)),!0),u(p,$e,!0),i()==="VALUES"&&Fe(ue),u(g,{},!0)),Me.length>0&&Me.every(ft=>ft.ok)&&!t(ie).some(ft=>ft.differs)&&u(P,!1)}function Ie(){const ke=t(K);!ke||ke.entries.length===0||(o.changeSet.stage({kind:"paramset",interfaceName:a(),title:`${i()} — ${o.nameOf(s())} (${s()})`,targets:[...ke.targets],paramset:i(),values:ke.values,writeAll:t(I),calls:ke.targets.map(Me=>`putParamset(${Me}, ${i()}, ${JSON.stringify(ke.values)})`),lines:ke.entries.map(Me=>({label:Me.param,from:Me.from,to:Me.to}))}),u(P,!1),n(!1))}function Ce(ke,Me){if(ke.kind==="enum"&&typeof Me=="number"){const $e=ke.valueList?.[Me];if($e!==void 0)return`${o.meta.valueLabel(ke.name,$e,t(oe))} (${Me})`}return String(Me)}async function Fe(ke){const Me=await o.paramsets.valueStates(a(),s());ke===ue&&u(b,Me,!0)}async function Oe(ke){const Me=Se(ke),$e=typeof Me=="boolean"||typeof Me=="number"||typeof Me=="string"?Me:!1;await o.paramsets.setValue(a(),s(),ke.name,$e)&&(u(g,Object.fromEntries(Object.entries(t(g)).filter(([_t])=>_t!==ke.name)),!0),u(p,{...t(p),[ke.name]:$e},!0),Fe(ue),o.notices.push("info",`setValue ${o.nameOf(s())} (${s()}) ${ke.name} = ${Ce(ke,$e)}`))}var qe=Zw(),Ke=De(qe);Tn(Ke,{get title(){return t(F)},width:"900px",height:"min(640px, calc(100vh - 32px))",minWidth:520,minHeight:320,testId:"paramset-dialog",get open(){return n()},set open(Me){n(Me)},buttons:Me=>{var $e=Fw(),ft=De($e),_t=m(ft,!0),nt=d(ft,2),$t=m(nt,!0);E((xt,Ft)=>{h(_t,xt),nt.disabled=!t(f),h($t,Ft)},[()=>l("Close"),()=>l("Preview")]),ne("click",ft,()=>n(!1)),ne("click",nt,ze),v(Me,$e)},children:(Me,$e)=>{var ft=At(),_t=De(ft);{var nt=Ft=>{var sn=Gw(),mn=m(sn,!0);E(En=>h(mn,En),[()=>l("Loading Homematic Manager...")]),v(Ft,sn)},$t=Ft=>{var sn=Uw(),mn=m(sn,!0);E(En=>h(mn,En),[()=>l("No data")]),v(Ft,sn)},xt=Ft=>{var sn=Qw(),mn=De(sn),En=w(mn);{var Jt=rt=>{{let pt=c(()=>l("Please choose one or more channels")),Dt=c(()=>l("Please choose one or more channels")),Ze=c(()=>l("Filter")),et=c(()=>l("Check all")),Be=c(()=>l("Uncheck all"));di(rt,{get options(){return t(Pe)},get label(){return t(pt)},get placeholder(){return t(Dt)},get filterLabel(){return t(Ze)},get checkAllLabel(){return t(et)},get uncheckAllLabel(){return t(Be)},summary:ht=>l("{count} channels selected",{},ht.length),testId:"paramset-targets",get selected(){return t(T)},set selected(ht){u(T,ht,!0)}})}};$(En,rt=>{t(he)&&t(Pe).length>0&&rt(Jt)})}var vn=d(En,2),In=w(vn),Kn=d(In,2),Yn=m(Kn,!0),Xt=d(vn,2);{var Ot=rt=>{var pt=Bw(),Dt=w(pt),Ze=d(Dt,2),et=m(Ze,!0);E(Be=>h(et,Be),[()=>l("Expert view")]),ur(Dt,()=>t(x),Be=>u(x,Be)),v(rt,pt)};$(Xt,rt=>{t(be)&&rt(Ot)})}var Qt=d(Xt,2);{var qn=rt=>{var pt=Hw(),Dt=w(pt),Ze=d(Dt,2),et=m(Ze,!0);E(Be=>h(et,Be),[()=>l("Show the raw parameters as well")]),ur(Dt,()=>t(D),Be=>u(D,Be)),v(rt,pt)};$(Qt,rt=>{t(z).length>0&&!t(be)&&rt(qn)})}var Dn=d(Qt,2);{var Cr=rt=>{var pt=Vw(),Dt=m(pt,!0);E(Ze=>h(Dt,Ze),[()=>l("Internal key…")]),ne("click",pt,()=>u(S,!0)),v(rt,pt)};$(Dn,rt=>{t(k)?.internalKey&&rt(Cr)})}var Br=d(Dn,2);{var $n=rt=>{var pt=zw(),Dt=w(pt),Ze=d(Dt,2),et=m(Ze,!0);E(Be=>h(et,Be),[()=>l("Show hidden parameters")]),ur(Dt,()=>t(C),Be=>u(C,Be)),v(rt,pt)},Bn=c(()=>t(W).some(rt=>!rt.visible)&&!t(Ee));$(Br,rt=>{t(Bn)&&rt($n)})}var Pr=d(mn,2);{var la=rt=>{var pt=Ww();je(pt,20,()=>t(Ve),Dt=>Dt,(Dt,Ze)=>{var et=jw(),Be=m(et,!0);E(()=>h(Be,Ze)),v(Dt,et)}),v(rt,pt)};$(Pr,rt=>{t(Ve).length>0&&rt(la)})}var nr=d(Pr,2);{let rt=c(Je);Ew(nr,{get specs(){return t(A)},get values(){return t(rt)},get channelType(){return t(oe)},onchange:U})}var wr=d(nr,2);{var Hr=rt=>{{let pt=c(()=>s().split(":")[0]??s());Mw(rt,{get values(){return t(p)},get self(){return t(pt)}})}};$(wr,rt=>{i()==="ROUTING_TABLE"&&rt(Hr)})}var ir=d(wr,2);{var Ar=rt=>{var pt=Kw(),Dt=d(w(pt),1,!0);E(Ze=>h(Dt,Ze),[()=>l("Marked: the parameters the easy mode of this channel shows")]),v(rt,pt)};$(ir,rt=>{t(x)&&t(le).size>0&&rt(Ar)})}var or=d(ir,2);let Jr;var Mr=w(or);{var fr=rt=>{{let pt=c(Je);Yh(rt,{get form(){return t(Ee)},get fields(){return t(G)},get values(){return t(pt)},changed:Dt=>Object.prototype.hasOwnProperty.call(t(g),Dt),get description(){return t(f)},get channelType(){return t(oe)},get presets(){return o.meta.presets},get timeSelectors(){return o.meta.timeSelectors},onchange:U,testId:"paramset-easy-form"})}};$(Mr,rt=>{t(Ee)&&t(f)&&rt(fr)})}var hr=d(Mr,2);je(hr,17,()=>t(Ee)?[]:t(me),rt=>rt.name,(rt,pt)=>{const Dt=c(()=>t(te).includes(t(pt).name));var Ze=Yw();let et;var Be=w(Ze);{let ht=c(()=>Se(t(pt))),Rt=c(()=>Ne(t(pt))),Ht=c(()=>Le(t(pt))),un=c(()=>we(t(pt))),Ut=c(()=>t(M)?t(b)[t(pt).name]:void 0),Mt=c(()=>t(M)&&t(pt).writable?()=>{Oe(t(pt))}:void 0),yn=c(()=>t(Dt)?J(t(pt).name):void 0),Sn=c(()=>t(Dt)?Mn=>ge(t(pt).name,Mn):void 0),on=c(()=>l("suppressed")),pn=c(()=>l("A suppressed one reports a value that raises no message; the CCU shows it as inactive.")),ar=c(()=>t(Dt)&&ye(t(pt).name));Es(Be,{get field(){return t(pt)},get value(){return t(ht)},get label(){return t(Rt)},get help(){return t(Ht)},get changed(){return t(un)},valueLabel:Mn=>o.meta.valueLabel(t(pt).name,Mn,t(oe)),presetLabel:Mn=>o.meta.uiLabel(Mn),get valueState(){return t(Ut)},onchange:Mn=>j(t(pt),Mn),get onset(){return t(Mt)},get suppressed(){return t(yn)},get onsuppress(){return t(Sn)},get suppressLabel(){return t(on)},get suppressTitle(){return t(pn)},get suppressChanged(){return t(ar)}})}E(ht=>et=yt(Ze,1,"hmm-paramset-easy-mark hmm-param-table-span svelte-onngst",null,et,{"hmm-paramset-easy-marked":ht}),[()=>t(le).has(t(pt).name)]),v(rt,Ze)});var se=d(hr,2);je(se,16,()=>t(Re),rt=>rt,(rt,pt)=>{{let Dt=c(()=>J(pt)),Ze=c(()=>ye(pt)),et=c(()=>l("suppressed")),Be=c(()=>l("A suppressed one reports a value that raises no message; the CCU shows it as inactive."));Lw(rt,{get name(){return pt},get suppressed(){return t(Dt)},get changed(){return t(Ze)},get label(){return t(et)},get title(){return t(Be)},onchange:ht=>ge(pt,ht)})}});var Ge=d(or,2);{var Yt=rt=>{var pt=qw(),Dt=w(pt),Ze=m(Dt),et=d(Dt,2),Be=m(et,!0),ht=d(et,2),Rt=m(ht,!0),Ht=d(ht,2),un=m(Ht,!0);E((Ut,Mt,yn,Sn,on)=>{h(Ze,`${Ut??""} — ${Mt??""}`),h(Be,yn),h(Rt,Sn),Ht.disabled=!t(xe)||t(ae),h(un,on)},[()=>l("Service message suppression"),()=>l("Nothing is sent until Apply; the preview lists every call first."),()=>l("Suppress all"),()=>l("Unsuppress all"),()=>l("Apply")]),ne("click",et,()=>V(!0)),ne("click",ht,()=>V(!1)),ne("click",Ht,pe),v(rt,pt)};$(Ge,rt=>{t(te).length>0&&rt(Yt)})}var gn=d(Ge,2);{var rr=rt=>{var pt=Xw();je(pt,21,()=>t(X),Dt=>`${Dt.address}-${Dt.paramset}`,(Dt,Ze)=>{var et=$w();let Be;var ht=w(et),Rt=m(ht,!0),Ht=d(ht);E(()=>{Be=yt(et,1,"svelte-onngst",null,Be,{"hmm-paramset-failed":!t(Ze).ok}),h(Rt,t(Ze).address),h(Ht,` ${t(Ze).ok?"✔":`✕ ${t(Ze).faultString??""}`}`)}),v(Dt,et)}),v(rt,pt)};$(gn,rt=>{t(X).length>0&&rt(rr)})}E(rt=>{h(Yn,rt),Jr=yt(or,1,"hmm-paramset-list hmm-param-table svelte-onngst",null,Jr,{"hmm-paramset-raw":i()==="ROUTING_TABLE"})},[()=>l("Write every parameter, not only the changed ones")]),ur(In,()=>t(I),rt=>u(I,rt)),v(Ft,sn)};$(_t,Ft=>{o.paramsets.loading&&!t(f)?Ft(nt):t(f)?Ft(xt,-1):Ft($t,1)})}v(Me,ft)},$$slots:{buttons:!0,default:!0}});var Xe=d(Ke,2);$l(Xe,{get preview(){return t(K)},get paramset(){return i()},get warnings(){return t(Ve)},get results(){return t(X)},get readBack(){return t(ie)},get writing(){return o.paramsets.writing},onstage:Ie,onconfirm:()=>{_e()},get open(){return t(P)},set open(ke){u(P,ke,!0)}});var Qe=d(Xe,2);{var it=ke=>{{let Me=c(()=>l("Apply")),$e=c(()=>l("{count} calls will be made",{},t(ee)?.entries.length??0));$l(ke,{get preview(){return t(ee)},paramset:"VALUES",get writing(){return t(ae)},get confirmLabel(){return t(Me)},get countText(){return t($e)},onconfirm:()=>{ve()},get open(){return t(de)},set open(ft){u(de,ft,!0)}})}};$(Qe,ke=>{t(de)&&ke(it)})}var bt=d(Qe,2);{var vt=ke=>{qh(ke,{get sender(){return s()},get receiver(){return s()},get open(){return t(S)},set open(Me){u(S,Me,!0)}})};$(bt,ke=>{t(S)&&ke(vt)})}v(r,qe),ct()}St(["click"]);const eA="modulepreload",tA=function(r,e){return new URL(r,e).href},ku={},nA=function(e,n,a){let s=Promise.resolve();if(n&&n.length>0){let p=function(b){return Promise.all(b.map(g=>Promise.resolve(g).then(k=>({status:"fulfilled",value:k}),k=>({status:"rejected",reason:k}))))};const o=document.getElementsByTagName("link"),l=document.querySelector("meta[property=csp-nonce]"),f=l?.nonce||l?.getAttribute("nonce");s=p(n.map(b=>{if(b=tA(b,a),b in ku)return;ku[b]=!0;const g=b.endsWith(".css"),k=g?'[rel="stylesheet"]':"";if(a)for(let S=o.length-1;S>=0;S--){const T=o[S];if(T.href===b&&(!g||T.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${b}"]${k}`))return;const y=document.createElement("link");if(y.rel=g?"stylesheet":eA,g||(y.as="script"),y.crossOrigin="",y.href=b,f&&y.setAttribute("nonce",f),document.head.appendChild(y),g)return new Promise((S,T)=>{y.addEventListener("load",S),y.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${b}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return s.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return e().catch(i)})};var rA=_('<video class="hmm-qr svelte-1e4doc5" autoplay="" playsinline=""></video>',2);function aA(r,e){dt(e,!0);let n=H(e,"active",3,!1),a=H(e,"onerror",3,void 0),s=H(e,"createReader",3,void 0),i=H(e,"insecureContextMessage",3,"The camera needs https or localhost."),o=H(e,"testId",3,void 0),l=N(void 0),f;st(()=>{if(!n()){g();return}const T=t(l);if(!T)return;if(!p()){a()?.(i());return}const I={cancelled:!1};return(async()=>{try{const D=await(s()?await s()():await b()).decodeFromVideoDevice(void 0,T,x=>{x&&e.onscan(x.getText())});I.cancelled?D.stop():f=D}catch(C){a()?.(C instanceof Error?C.message:String(C))}})(),()=>{I.cancelled=!0,g()}});function p(){return globalThis.navigator?.mediaDevices!==void 0&&globalThis.isSecureContext}async function b(){const{BrowserQRCodeReader:T}=await nA(async()=>{const{BrowserQRCodeReader:I}=await import("./index-BN6QZh6-.js");return{BrowserQRCodeReader:I}},[],import.meta.url);return new T}function g(){f?.stop(),f=void 0}bp(g);var k=At(),y=De(k);{var S=T=>{var I=rA();I.muted=!0,cn(I,C=>u(l,C),()=>t(l)),E(()=>R(I,"data-testid",o())),v(T,I)};$(y,T=>{n()&&T(S)})}v(r,k),ct()}var sA=_('<button type="button" class="hmm-button"> </button>'),iA=_('<p> </p> <button type="button" class="hmm-button" data-testid="add-device-search">searchDevices</button>',1),oA=_("<option> </option>"),lA=_('<label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf">KEY</span> <input data-testid="add-device-key"/></label> <div class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"></span> <p class="hmm-add-hint svelte-rkdrrf" data-testid="add-device-key-hint"> </p></div>',1),dA=_('<span class="hmm-add-error svelte-rkdrrf" data-testid="add-device-scan-error"> </span>'),cA=_('<label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf">SGTIN</span> <input data-testid="add-device-sgtin"/></label> <!> <div class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"> </span> <div class="svelte-rkdrrf"><button type="button" class="hmm-button" data-testid="add-device-scan"> </button> <!></div></div> <!>',1),uA=_('<label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"> </span> <select class="hmm-select svelte-rkdrrf" data-testid="add-device-hmip-mode"><option> </option><!><option> </option></select></label> <div class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"></span> <p class="hmm-add-hint svelte-rkdrrf" data-testid="add-device-hmip-hint"> </p></div> <div class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"></span> <p class="hmm-add-hint svelte-rkdrrf" data-testid="add-device-ap-hint"> </p></div> <!>',1),fA=_('<section class="hmm-add-key-question svelte-rkdrrf" role="alert" data-testid="add-device-key-mismatch"><h4 class="svelte-rkdrrf"> </h4> <p class="svelte-rkdrrf"> </p> <button type="button" class="hmm-button" data-testid="add-device-key-retry"> </button></section>'),hA=_('<label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"> </span> <select class="hmm-select svelte-rkdrrf" data-testid="add-device-mode"><option> </option><option> </option></select></label> <label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"> </span> <span class="hmm-add-inline svelte-rkdrrf"><input class="hmm-input hmm-mono svelte-rkdrrf" data-testid="add-device-serial"/> <button type="button" class="hmm-button" data-testid="add-device-serial-start"> </button></span></label> <label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"> </span> <input class="hmm-input hmm-mono svelte-rkdrrf" data-testid="add-device-temp-key"/></label> <div class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"></span> <p class="hmm-add-hint svelte-rkdrrf" data-testid="add-device-temp-key-hint"> </p></div> <!>',1),mA=_('<span data-testid="add-device-countdown"> </span> <button type="button" class="hmm-button" data-testid="add-device-stop"> </button>',1),vA=_('<p class="hmm-add-notice svelte-rkdrrf" role="status" data-testid="add-device-nothing-joined"> </p>'),pA=_('<label class="hmm-add-row svelte-rkdrrf"><span class="svelte-rkdrrf"> </span> <span class="svelte-rkdrrf"><input class="hmm-input hmm-add-seconds svelte-rkdrrf" type="number" min="10" max="300"/> s</span></label> <div class="hmm-add-actions svelte-rkdrrf"><button type="button" class="hmm-button" data-testid="add-device-start"> </button> <!></div> <!>',1),gA=_('<span data-testid="add-device-inbox-result"> </span>'),bA=_('<p class="hmm-add-notice svelte-rkdrrf" role="status" data-testid="add-device-names-waiting"> </p>'),_A=_('<div class="hmm-add-actions svelte-rkdrrf"><button type="button" class="hmm-button" data-testid="add-device-confirm-inbox"> </button> <!></div> <!>',1),EA=_('<label class="hmm-add-row svelte-rkdrrf"><span class="hmm-mono svelte-rkdrrf"> </span> <input class="hmm-input svelte-rkdrrf"/></label>'),yA=_('<section class="hmm-add-paired svelte-rkdrrf" data-testid="add-device-paired"><h4 class="svelte-rkdrrf"> </h4> <!> <label class="hmm-add-channels svelte-rkdrrf"><input type="checkbox" data-testid="add-device-rename-children"/> <span> </span></label> <button type="button" class="hmm-button" data-testid="add-device-name-save"> </button></section>'),SA=_("<!> <!> <!> <!>",1);function kA(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"createReader",3,void 0);const s=Bt(),i=s.i18n.t,o=1e3,l=5;let f=N(60),p=N(1),b=N(""),g=N(""),k=N("KEY"),y=N(void 0),S=N(""),T=N(""),I=N(!1),C=N(""),D=N(0),x=N(!1),P=N(He([])),K=N(He({})),X=N(!0),ie=N(""),ue=N(!1),fe=N(""),B,re=!1,de=N(void 0),ee=0,ae=0;const Y=c(()=>s.app.selectedInterface),Z=c(()=>s.interfaces.typeOf(t(Y))),te=c(()=>!t(Z).startsWith("BidCos")&&t(Z)!=="CUxD"),Re=c(()=>t(Z)==="BidCos-Wired"),J=c(()=>t(k)==="ANY"?!0:t(k)==="SGTIN"?Wi(t(S)):Wi(t(S))&&pc(t(T))),ye=c(()=>t(y)?.keyserver_mode==="LOCAL"),xe=c(()=>t(k)==="KEY"?i("Works offline: the key from the sticker is all the interface needs."):t(k)==="SGTIN"?i("The key comes from eQ-3's key server: the box needs internet access."):t(ye)?i("Pairs the next device in factory state that asks to join, if its key is on the system: the system's key mode never asks eQ-3's key server. {count} device keys are stored on the system.",{},t(y)?.device_keys??0):i("Pairs the next device in factory state that asks to join. Without a key the interface asks eQ-3's key server, so the box needs internet access unless a local key mapping is configured."));st(()=>{if(!n()||!t(te))return;let me=!0;return s.devices.hmipPairing().then(be=>{me&&u(y,be,!0)}),()=>{me=!1}}),st(()=>{t(ye)&&t(k)==="SGTIN"&&u(k,"KEY")}),st(()=>{n()||(u(I,!1),u(D,0),u(P,[],!0),u(K,{},!0),u(X,!0),u(ie,""),u(ue,!1),u(fe,""),u(g,""),F())}),st(()=>{t(k)==="ANY"&&u(I,!1)}),st(()=>{if(n())return s.transport.on("devices.changed",me=>{if(me.interfaceName!==t(Y)||me.kind!=="new")return;const be=me.addresses.filter(Ee=>!Ee.includes(":")&&!t(P).includes(Ee));be.length>0&&(u(P,[...t(P),...be],!0),u(fe,""),F())})}),st(()=>{if(!n()||t(D)<=0)return;const me=ae,be=setInterval(()=>{ee+=1,s.devices.installModeSeconds(t(Y)).then(Ee=>{me===ae&&(u(D,Ee,!0),Ee<=0&&(t(P).length===0&&u(ue,!0),F()))}),!t(te)&&ee%l===0&&s.devices.keyMismatchDevice(t(Y)).then(Ee=>{me===ae&&Ee!==""&&ve(Ee)})},o);return()=>{clearInterval(be)}});async function ge(me){u(x,!0),u(ue,!1),u(fe,""),ae+=1,ee=0;const{tempKey:be,...Ee}=me;B=Ee,be!==void 0&&(re=!0);const le=await s.devices.tryInstallMode(t(Y),!0,{seconds:t(f),...me});if(u(x,!1),le!==null){if(!t(te)&&me.address!==void 0&&await pe())return;s.notices.fromError(le,"setInstallMode");return}me.address===void 0&&u(D,t(f),!0)}async function V(){ae+=1,await s.devices.setInstallMode(t(Y),!1),u(D,0),await F()}async function pe(){const me=await s.devices.keyMismatchDevice(t(Y));return me===""?!1:(await Q(me),!0)}async function ve(me){ae+=1,u(D,0),await s.devices.setInstallMode(t(Y),!1),await Q(me)}async function Q(me){u(fe,me,!0),await As(),t(de)?.focus()}async function oe(){const me=t(g).trim();me===""||B===void 0||await ge({...B,tempKey:me})}async function F(){re&&(re=!1,await s.devices.setTempKey(t(Y),""))}async function W(){u(x,!0),await s.console.call(t(Y),"searchDevices",[""]),u(x,!1),await s.devices.load(t(Y),{refresh:!0})}function O(me){const be=Fb(me);if(!be){u(C,i("That is not a HomematicIP device code"),!0);return}u(C,""),u(S,be.sgtin,!0),be.key!==""&&u(T,be.key,!0),u(I,!1)}async function z(){u(x,!0);const me=await s.devices.confirmRegaInbox();u(x,!1),u(ie,me.length===0?i("The ReGa inbox is empty"):`${i("Confirmed")}: ${me.join(", ")}`,!0)}async function ce(){const me=t(P).flatMap(be=>Ed(be,t(K)[be]??"",s.devices.channels(t(Y),be).map(Ee=>Ee.ADDRESS),{channels:t(X)}));me.length!==0&&await s.names.rename(me)&&u(P,t(P).filter(be=>(t(K)[be]??"").trim()===""),!0)}{const me=Ee=>{var le=sA(),G=m(le,!0);E(L=>h(G,L),[()=>i("Close")]),ne("click",le,()=>n(!1)),v(Ee,le)};let be=c(()=>i("Add device"));Tn(r,{get title(){return t(be)},width:"680px",testId:"add-device-dialog",get open(){return n()},set open(Ee){n(Ee)},buttons:me,children:(Ee,le)=>{var G=SA(),L=De(G);{var A=Se=>{var we=iA(),j=De(we),U=m(j,!0),Ne=d(j,2);E(Le=>{h(U,Le),Ne.disabled=t(x)},[()=>i("BidCos-Wired has no install mode; the interface searches its bus for new devices.")]),ne("click",Ne,()=>{W()}),v(Se,we)},M=Se=>{var we=uA(),j=De(we),U=w(j),Ne=m(U,!0),Le=d(U,2),ze=w(Le),_e=m(ze,!0);ze.value=ze.__value="KEY";var Ie=d(ze);{var Ce=Me=>{var $e=oA(),ft=m($e,!0);$e.value=$e.__value="SGTIN",E(_t=>h(ft,_t),[()=>i("With SGTIN only (key server)")]),v(Me,$e)};$(Ie,Me=>{t(ye)||Me(Ce)})}var Fe=d(Ie),Oe=m(Fe,!0);Fe.value=Fe.__value="ANY",qt(Le);var qe=d(j,2),Ke=d(w(qe),2),Xe=m(Ke,!0),Qe=d(qe,2),it=d(w(Qe),2),bt=m(it,!0),vt=d(Qe,2);{var ke=Me=>{var $e=cA(),ft=De($e),_t=d(w(ft),2);let nt;var $t=d(ft,2);{var xt=Xt=>{var Ot=lA(),Qt=De(Ot),qn=d(w(Qt),2);let Dn;var Cr=d(Qt,2),Br=d(w(Cr),2),$n=m(Br,!0);E((Bn,Pr)=>{Dn=yt(qn,1,"hmm-input hmm-mono svelte-rkdrrf",null,Dn,{"hmm-add-invalid":Bn}),an(qn,t(T)),h($n,Pr)},[()=>t(T)!==""&&!pc(t(T)),()=>i("The key from the sticker (26 characters, dashes optional), or scan the QR code.")]),ne("input",qn,Bn=>u(T,oi(Bn.currentTarget.value),!0)),v(Xt,Ot)};$($t,Xt=>{t(k)==="KEY"&&Xt(xt)})}var Ft=d($t,2),sn=w(Ft),mn=m(sn,!0),En=d(sn,2),Jt=w(En),vn=m(Jt,!0),In=d(Jt,2);{var Kn=Xt=>{var Ot=dA(),Qt=m(Ot,!0);E(()=>h(Qt,t(C))),v(Xt,Ot)};$(In,Xt=>{t(C)!==""&&Xt(Kn)})}var Yn=d(Ft,2);{let Xt=c(()=>i("The camera is only available over https or on localhost. Open the page with its https address (the CCU serves it on its https port too, with a certificate warning) or type the key in by hand."));aA(Yn,{get active(){return t(I)},get createReader(){return a()},get insecureContextMessage(){return t(Xt)},onscan:O,onerror:Ot=>{u(C,Ot,!0),u(I,!1)},testId:"add-device-video"})}E((Xt,Ot,Qt)=>{nt=yt(_t,1,"hmm-input hmm-mono svelte-rkdrrf",null,nt,{"hmm-add-invalid":Xt}),an(_t,t(S)),h(mn,Ot),h(vn,Qt)},[()=>t(S)!==""&&!Wi(t(S)),()=>i("QR scanner"),()=>t(I)?i("Stop"):i("Scan")]),ne("input",_t,Xt=>u(S,oi(Xt.currentTarget.value),!0)),ne("click",Jt,()=>{u(C,""),u(I,!t(I))}),v(Me,$e)};$(vt,Me=>{t(k)!=="ANY"&&Me(ke)})}E((Me,$e,ft,_t)=>{h(Ne,Me),h(_e,$e),h(Oe,ft),h(Xe,t(xe)),h(bt,_t)},[()=>i("Mode"),()=>i("With SGTIN and key"),()=>i("Any device (no SGTIN)"),()=>i("An access point (HAP, DRAP) is paired like a device: factory-reset it, start the install mode, then power it. System and access point must be in the same network.")]),kr(Le,()=>t(k),Me=>u(k,Me)),v(Se,we)},he=Se=>{var we=hA(),j=De(we),U=w(j),Ne=m(U,!0),Le=d(U,2),ze=w(Le),_e=m(ze,!0);ze.value=ze.__value=1;var Ie=d(ze),Ce=m(Ie,!0);Ie.value=Ie.__value=2,qt(Le);var Fe=d(j,2),Oe=w(Fe),qe=m(Oe,!0),Ke=d(Oe,2),Xe=w(Ke),Qe=d(Xe,2),it=m(Qe,!0),bt=d(Fe,2),vt=w(bt),ke=m(vt,!0),Me=d(vt,2);cn(Me,xt=>u(de,xt),()=>t(de));var $e=d(bt,2),ft=d(w($e),2),_t=m(ft,!0),nt=d($e,2);{var $t=xt=>{var Ft=fA(),sn=w(Ft),mn=m(sn,!0),En=d(sn,2),Jt=m(En,!0),vn=d(En,2),In=m(vn,!0);E((Kn,Yn,Xt,Ot)=>{h(mn,Kn),h(Jt,Yn),vn.disabled=Xt,h(In,Ot)},[()=>i("Security key of the other system"),()=>i("The device {serial} could not be paired: it holds a security key this system does not know. Enter the security key of the system it was paired to and try again.",{serial:t(fe)}),()=>t(x)||t(g).trim()==="",()=>i("Set the key and try again")]),ne("click",vn,()=>{oe()}),v(xt,Ft)};$(nt,xt=>{t(fe)!==""&&xt($t)})}E((xt,Ft,sn,mn,En,Jt,vn,In)=>{h(Ne,xt),h(_e,Ft),h(Ce,sn),h(qe,mn),Qe.disabled=En,h(it,Jt),h(ke,vn),h(_t,In)},[()=>i("Mode"),()=>i("Normal install mode"),()=>i("Write the MASTER defaults and delete the existing links"),()=>i("Serial number"),()=>t(x)||t(b).trim()==="",()=>i("Add by serial number"),()=>i("Temporary key"),()=>i("The security key of the system the device was last paired to, if it holds one. Leave it empty otherwise: the system asks for it when a device is refused for its key.")]),kr(Le,()=>t(p),xt=>u(p,xt)),An(Xe,()=>t(b),xt=>u(b,xt)),ne("click",Qe,()=>{ge({mode:t(p),address:t(b).trim(),...t(g).trim()===""?{}:{tempKey:t(g).trim()}})}),An(Me,()=>t(g),xt=>u(g,xt)),v(Se,we)};$(L,Se=>{t(Re)?Se(A):t(te)?Se(M,1):Se(he,-1)})}var Te=d(L,2);{var Pe=Se=>{var we=pA(),j=De(we),U=w(j),Ne=m(U,!0),Le=d(U,2),ze=w(Le),_e=d(j,2),Ie=w(_e),Ce=m(Ie,!0),Fe=d(Ie,2);{var Oe=Xe=>{var Qe=mA(),it=De(Qe),bt=m(it,!0),vt=d(it,2),ke=m(vt,!0);E((Me,$e)=>{h(bt,Me),h(ke,$e)},[()=>i("{count} seconds left",{},t(D)),()=>i("Stop")]),ne("click",vt,()=>{V()}),v(Xe,Qe)};$(Fe,Xe=>{t(D)>0&&Xe(Oe)})}var qe=d(_e,2);{var Ke=Xe=>{var Qe=vA(),it=m(Qe,!0);E(bt=>h(it,bt),[()=>t(te)?i("The install mode has ended and no device has joined. A device that is still paired with another central sends no inclusion request: reset it to factory state and start again."):i("The install mode has ended and no device has joined. Put the device into its pairing mode and start again. A device that holds another system's security key is reported here and that key asked for; a factory reset does not remove it.")]),v(Xe,Qe)};$(qe,Xe=>{t(ue)&&Xe(Ke)})}E((Xe,Qe)=>{h(Ne,Xe),Ie.disabled=t(x)||t(te)&&!t(J),h(Ce,Qe)},[()=>i("Duration"),()=>i("Start install mode")]),An(ze,()=>t(f),Xe=>u(f,Xe)),ne("click",Ie,()=>{ge(t(te)?t(k)==="ANY"?{hmipKeyMode:"ANY"}:{hmipKeyMode:t(k),hmipKey:{sgtin:t(S),key:t(k)==="SGTIN"?"":t(T)}}:{mode:t(p),...t(g).trim()===""?{}:{tempKey:t(g).trim()}})}),v(Se,we)};$(Te,Se=>{t(Re)||Se(Pe)})}var Ve=d(Te,2);{var Ye=Se=>{var we=_A(),j=De(we),U=w(j),Ne=m(U,!0),Le=d(U,2);{var ze=Ce=>{var Fe=gA(),Oe=m(Fe,!0);E(()=>h(Oe,t(ie))),v(Ce,Fe)};$(Le,Ce=>{t(ie)!==""&&Ce(ze)})}var _e=d(j,2);{var Ie=Ce=>{var Fe=bA(),Oe=m(Fe,!0);E(qe=>h(Oe,qe),[()=>i("The names reach the CCU once the device is confirmed in the ReGa inbox.")]),v(Ce,Fe)};$(_e,Ce=>{(s.interfaces.rega.pendingNames?.length??0)>0&&Ce(Ie)})}E(Ce=>{U.disabled=t(x),h(Ne,Ce)},[()=>i("Confirm the ReGa inbox")]),ne("click",U,()=>{z()}),v(Se,we)};$(Ve,Se=>{s.interfaces.rega?.enabled===!0&&Se(Ye)})}var ot=d(Ve,2);{var Je=Se=>{var we=yA(),j=w(we),U=m(j,!0),Ne=d(j,2);je(Ne,16,()=>t(P),Oe=>Oe,(Oe,qe)=>{var Ke=EA(),Xe=w(Ke),Qe=m(Xe,!0),it=d(Xe,2);E((bt,vt)=>{h(Qe,qe),R(it,"placeholder",bt),R(it,"aria-label",vt),an(it,t(K)[qe]??"")},[()=>i("Name"),()=>`${i("Name")} ${qe}`]),ne("input",it,bt=>u(K,{...t(K),[qe]:bt.currentTarget.value},!0)),v(Oe,Ke)});var Le=d(Ne,2),ze=w(Le),_e=d(ze,2),Ie=m(_e,!0),Ce=d(Le,2),Fe=m(Ce,!0);E((Oe,qe,Ke)=>{h(U,Oe),h(Ie,qe),h(Fe,Ke)},[()=>i("New"),()=>i("Overwrite channel names"),()=>i("Apply")]),ur(ze,()=>t(X),Oe=>u(X,Oe)),ne("click",Ce,()=>{ce()}),v(Se,we)};$(ot,Se=>{t(P).length>0&&Se(Je)})}v(Ee,G)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click","input"]);const wA=10;function Ql(r,e,n){return r(e)?.enums.includes(n)===!0}function AA(r){return r.endsWith(":0")}function $h(r,e,n){if(Ql(n,r.ref,e))return"on";const a=r.channels.filter(i=>!AA(i)),s=a.filter(i=>Ql(n,i,e)).length;return s===0?"off":s===a.length?"on":"mixed"}function TA(r,e,n){let a=0,s=0;for(const i of r){const o=$h(i,e,n);o==="on"?a+=1:o==="off"&&(s+=1)}return r.length===0||s===r.length?"off":a===r.length?"on":"mixed"}function RA(r,e,n){return Object.fromEntries(e.map(a=>[a,TA(r,a,n)]))}function xA(r,e){return r==="mixed"?e==="mixed"?"on":e==="on"?"off":"mixed":e==="on"?"off":"on"}function IA(r,e,n){return r.filter(a=>{const s=n[a];return s!==void 0&&s!=="mixed"&&s!==(e[a]??"off")})}function DA(r,e,n,a){const s=[];for(const i of e){const o=n[i]==="on",l=new Set;for(const f of r){if(o){$h(f,i,a)!=="on"&&l.add(f.ref);continue}for(const p of[f.ref,...f.channels])Ql(a,p,i)&&l.add(p)}l.size>0&&s.push({path:i,on:o,refs:[...l]})}return s}function wu(r){return r.normalize("NFD").replace(/\p{M}/gu,"").toLocaleLowerCase()}function NA(r,e){const n=wu(e.trim());if(n==="")return[...r];const a=r.filter(s=>wu(s.label).includes(n));return r.filter(s=>a.includes(s)||a.some(i=>i.path.startsWith(`${s.path}/`)))}var CA=_('<input type="text" class="hmm-input hmm-assign-filter svelte-2lvopk"/>'),PA=_('<span class="hmm-assign-error svelte-2lvopk" data-testid="assign-error"> </span>'),MA=_('<label data-testid="assign-row"><input type="checkbox" data-testid="assign-check" class="svelte-2lvopk"/> <span class="hmm-assign-name svelte-2lvopk"> </span> <!></label>'),OA=_('<p class="hmm-assign-empty svelte-2lvopk"> </p>'),LA=_('<input type="text" class="hmm-input svelte-2lvopk"/> <button type="button" class="hmm-button"> </button>',1),FA=_('<button type="button" class="hmm-button"> </button>'),GA=_('<section class="hmm-assign-side svelte-2lvopk"><h3 class="hmm-assign-heading svelte-2lvopk"> </h3> <!> <div class="hmm-assign-list svelte-2lvopk" role="group"></div> <div class="hmm-assign-new svelte-2lvopk"><!></div></section>');function Au(r,e){dt(e,!0);let n=H(e,"desired",15),a=H(e,"failures",15);const s=Bt(),i=s.i18n.t,o=s.taxonomy;let l=N(""),f=N(!1),p=N(""),b=N(!1),g=N(void 0),k=N(void 0),y=N(void 0),S=N(void 0);const T=c(()=>o.options(e.enumId)),I=c(()=>NA(t(T),t(l))),C=c(()=>t(T).length>wA),D=c(()=>e.enumId==="room");function x(){u(l,""),u(S,void 0),u(f,!1),u(p,"")}function P(){if(t(k)!==void 0){t(k).focus();return}t(g)?.querySelector('input[type="checkbox"]')?.focus()}function K(Q){return n()[Q]??e.initial[Q]??"off"}function X(Q,oe){const F=W=>{Q.checked=W==="on",Q.indeterminate=W==="mixed"};return F(oe),{update:F}}function ie(Q,oe){const F=xA(e.initial[Q]??"off",K(Q));n({...n(),[Q]:F}),a()[Q]!==void 0&&a(Object.fromEntries(Object.entries(a()).filter(([W])=>W!==Q))),oe.checked=F==="on",oe.indeterminate=F==="mixed"}function ue(Q){Q.key==="Enter"&&(Q.preventDefault(),e.onsave())}function fe(Q){t(S)===void 0&&t(g)!==void 0&&t(g).offsetHeight>0&&u(S,t(g).offsetHeight,!0),u(l,Q.currentTarget.value,!0)}function B(Q){Q.key==="Enter"&&(Q.preventDefault(),t(g)?.querySelector('input[type="checkbox"]')?.focus())}async function re(){u(f,!0),await As(),t(y)?.focus()}async function de(){const Q=t(p).trim();if(Q===""||t(b))return;u(b,!0);const oe=await o.createNode(e.enumId,void 0,Q);u(b,!1),oe!==void 0&&(n({...n(),[oe]:"on"}),u(p,""),u(f,!1),await As(),t(g)?.querySelector(`[data-path="${CSS.escape(oe)}"] input`)?.focus())}function ee(Q){Q.key==="Enter"&&(Q.preventDefault(),de())}var ae={reset:x,focus:P},Y=GA(),Z=w(Y),te=m(Z,!0),Re=d(Z,2);{var J=Q=>{var oe=CA();cn(oe,F=>u(k,F),()=>t(k)),E((F,W)=>{an(oe,t(l)),R(oe,"placeholder",F),R(oe,"aria-label",W),R(oe,"data-testid",`assign-filter-${e.enumId}`)},[()=>t(D)?i("Filter rooms"):i("Filter functions"),()=>t(D)?i("Filter rooms"):i("Filter functions")]),ne("input",oe,fe),ne("keydown",oe,B),v(Q,oe)};$(Re,Q=>{t(C)&&Q(J)})}var ye=d(Re,2);let xe;je(ye,21,()=>t(I),Q=>Q.path,(Q,oe)=>{const F=c(()=>K(t(oe).path)),W=c(()=>a()[t(oe).path]);var O=MA();let z,ce;var me=w(O);Lf(me,(L,A)=>X?.(L,A),()=>t(F));var be=d(me,2),Ee=m(be,!0),le=d(be,2);{var G=L=>{var A=PA(),M=m(A,!0);E(he=>h(M,he),[()=>i("Not saved: {message}",{message:t(W)})]),v(L,A)};$(le,L=>{t(W)!==void 0&&L(G)})}E(L=>{z=yt(O,1,"hmm-assign-row svelte-2lvopk",null,z,{"hmm-assign-row-failed":t(W)!==void 0}),R(O,"data-path",t(oe).path),R(O,"data-state",t(F)),ce=On(O,"",ce,{"padding-inline-start":L}),me.disabled=e.saving,h(Ee,t(oe).label)},[()=>`${String(6+(t(oe).depth-1)*18)}px`]),ne("change",me,L=>ie(t(oe).path,L.currentTarget)),ne("keydown",me,ue),v(Q,O)},Q=>{var oe=OA(),F=m(oe,!0);E(W=>{R(oe,"data-testid",`assign-empty-${e.enumId}`),h(F,W)},[()=>t(T).length>0?i("No match"):t(D)?i("No rooms yet"):i("No functions yet")]),v(Q,oe)}),cn(ye,Q=>u(g,Q),()=>t(g));var ge=d(ye,2),V=w(ge);{var pe=Q=>{var oe=LA(),F=De(oe);cn(F,z=>u(y,z),()=>t(y));var W=d(F,2),O=m(W,!0);E((z,ce,me,be)=>{R(F,"aria-label",z),R(F,"placeholder",ce),F.disabled=t(b),R(F,"data-testid",`assign-new-name-${e.enumId}`),W.disabled=me,R(W,"data-testid",`assign-create-${e.enumId}`),h(O,be)},[()=>t(D)?i("Name of the new room"):i("Name of the new function"),()=>t(D)?i("Name of the new room"):i("Name of the new function"),()=>t(b)||t(p).trim()==="",()=>i("Create")]),ne("keydown",F,ee),An(F,()=>t(p),z=>u(p,z)),ne("click",W,()=>{de()}),v(Q,oe)},ve=Q=>{var oe=FA(),F=m(oe,!0);E(W=>{R(oe,"data-testid",`assign-new-${e.enumId}`),h(F,W)},[()=>t(D)?i("New room…"):i("New function…")]),ne("click",oe,()=>{re()}),v(Q,oe)};$(V,Q=>{t(f)?Q(pe):Q(ve,-1)})}return E((Q,oe,F,W)=>{R(Y,"aria-label",Q),R(Y,"data-testid",`assign-side-${e.enumId}`),h(te,oe),R(ye,"aria-label",F),R(ye,"data-testid",`assign-list-${e.enumId}`),xe=On(ye,"",xe,{"min-height":W})},[()=>t(D)?i("Rooms"):i("Functions"),()=>t(D)?i("Rooms"):i("Functions"),()=>t(D)?i("Rooms"):i("Functions"),()=>t(S)===void 0?void 0:`${String(t(S))}px`]),v(r,Y),ct(ae)}St(["input","keydown","change","click"]);var UA=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="assign-apply"> </button>',1),BA=_('<p class="hmm-assign-address svelte-17ogdox" data-testid="assign-address"> </p>'),HA=_('<label class="hmm-assign-children svelte-17ogdox"><input type="checkbox" data-testid="assign-rename-children"/> <span> </span></label>'),VA=_('<p class="hmm-assign-summary hmm-assign-name-error svelte-17ogdox" role="alert" data-testid="assign-name-error"> </p>'),zA=_('<div class="hmm-assign-name-row svelte-17ogdox"><label class="hmm-assign-name-field svelte-17ogdox"><span> </span> <input class="hmm-input svelte-17ogdox" data-testid="assign-name"/></label> <!></div> <!>',1),jA=_('<p class="hmm-assign-summary svelte-17ogdox" role="alert" data-testid="assign-summary"> </p>'),WA=_('<!> <!> <p class="hmm-assign-count svelte-17ogdox" data-testid="assign-count"> </p> <div class="hmm-assign-sides svelte-17ogdox"><!> <!></div> <!>',1);function KA(r,e){dt(e,!0);const n=["room","function"];let a=H(e,"open",15,!1),s=H(e,"targets",19,()=>[]),i=H(e,"address",3,""),o=H(e,"canRename",3,!1),l=H(e,"focus",3,"room");const f=Bt(),p=f.i18n.t,b=f.taxonomy,g=()=>({room:{},function:{}});let k=N(He(g())),y=N(He(g())),S=N(He({room:{},function:{}})),T=N(""),I=N(!0),C=N(!1),D=N(!1),x=N(void 0),P=N(void 0),K=N(void 0),X=!1;const ie=c(()=>i()!==""&&o()),ue=c(()=>i()!==""&&wa(i())),fe=c(()=>t(ue)?f.devices.channels(f.app.selectedInterface,i()).map(J=>J.ADDRESS):[]),B=c(()=>n.reduce((J,ye)=>J+Object.keys(t(S)[ye]).length,0)),re=J=>b.view(J);function de(J){return b.options(J).map(ye=>ye.path)}function ee(J){const ye=de(J);return[...ye,...Object.keys(t(y)[J]).filter(xe=>!ye.includes(xe))]}function ae(J,ye){return t(y)[J][ye]??t(k)[J][ye]??"off"}st(()=>{a()&&!X&&Sr(()=>{const J=g();for(const ye of n)J[ye]=RA(s(),de(ye),re);u(k,J,!0),u(y,{room:{...J.room},function:{...J.function}},!0),u(S,{room:{},function:{}},!0),u(T,i()===""?"":f.knownName(i())??"",!0),u(I,!0),u(C,!1),t(P)?.reset(),t(K)?.reset(),Y()}),X=a()});async function Y(){if(await As(),l()==="name"&&t(ie)){t(x)?.focus();return}(l()==="function"?t(K):t(P))?.focus()}function Z(){const J=t(T).trim();return!t(ie)||J===""||J===(f.knownName(i())??"")?[]:Ed(i(),J,t(fe),{channels:t(I)})}async function te(){if(!t(D)){u(D,!0);try{const J=Z(),ye=J.length===0?!0:await f.names.rename(J);u(C,!ye);const xe={room:[],function:[]},ge=[];for(const Q of n)xe[Q]=IA(ee(Q),t(k)[Q],t(y)[Q]),ge.push(...DA(s(),xe[Q],t(y)[Q],re));const V=ge.length===0?[]:await b.assignEach(ge),pe={room:{...t(k).room},function:{...t(k).function}},ve={room:{},function:{}};for(const Q of n)for(const oe of xe[Q]){const F=V.find(W=>W.path===oe);F!==void 0&&!F.ok?ve[Q][oe]=F.message:pe[Q][oe]=ae(Q,oe)}u(k,pe,!0),u(S,ve,!0),ye&&n.every(Q=>Object.keys(ve[Q]).length===0)&&a(!1)}finally{u(D,!1)}}}function Re(J){J.key==="Enter"&&(J.preventDefault(),te())}{const J=V=>{var pe=UA(),ve=De(pe),Q=m(ve,!0),oe=d(ve,2),F=m(oe,!0);E((W,O)=>{ve.disabled=t(D),h(Q,W),oe.disabled=t(D)||s().length===0,h(F,O)},[()=>p("Cancel"),()=>p("Apply")]),ne("click",ve,()=>a(!1)),ne("click",oe,()=>{te()}),v(V,pe)};let ye=c(()=>p("Rooms and functions")),xe=c(()=>!t(D)),ge=c(()=>p("Close"));Tn(r,{get title(){return t(ye)},width:"760px",minWidth:320,get closable(){return t(xe)},get closeLabel(){return t(ge)},testId:"assign-dialog",get open(){return a()},set open(V){a(V)},buttons:J,children:(V,pe)=>{var ve=WA(),Q=De(ve);{var oe=G=>{var L=BA(),A=m(L,!0);E(()=>h(A,i())),v(G,L)};$(Q,G=>{i()!==""&&G(oe)})}var F=d(Q,2);{var W=G=>{var L=zA(),A=De(L),M=w(A),he=w(M),Te=m(he,!0),Pe=d(he,2);cn(Pe,Se=>u(x,Se),()=>t(x));var Ve=d(M,2);{var Ye=Se=>{var we=HA(),j=w(we),U=d(j,2),Ne=m(U,!0);E(Le=>{j.disabled=t(D),h(Ne,Le)},[()=>p("Overwrite channel names")]),ur(j,()=>t(I),Le=>u(I,Le)),v(Se,we)};$(Ve,Se=>{t(ue)&&Se(Ye)})}var ot=d(A,2);{var Je=Se=>{var we=VA(),j=m(we,!0);E(U=>h(j,U),[()=>p("The name was not saved")]),v(Se,we)};$(ot,Se=>{t(C)&&Se(Je)})}E(Se=>{h(Te,Se),Pe.disabled=t(D)},[()=>p("Name")]),ne("keydown",Pe,Re),An(Pe,()=>t(T),Se=>u(T,Se)),v(G,L)};$(F,G=>{t(ie)&&G(W)})}var O=d(F,2),z=m(O,!0),ce=d(O,2),me=w(ce);cn(Au(me,{enumId:"room",get initial(){return t(k).room},get saving(){return t(D)},onsave:()=>{te()},get desired(){return t(y).room},set desired(G){t(y).room=G},get failures(){return t(S).room},set failures(G){t(S).room=G}}),G=>u(P,G,!0),()=>t(P));var be=d(me,2);cn(Au(be,{enumId:"function",get initial(){return t(k).function},get saving(){return t(D)},onsave:()=>{te()},get desired(){return t(y).function},set desired(G){t(y).function=G},get failures(){return t(S).function},set failures(G){t(S).function=G}}),G=>u(K,G,!0),()=>t(K));var Ee=d(ce,2);{var le=G=>{var L=jA(),A=m(L,!0);E(M=>h(A,M),[()=>p("{count} changes were not saved",{},t(B))]),v(G,L)};$(Ee,G=>{t(B)>0&&G(le)})}E(G=>h(z,G),[()=>p("{count} rows selected",{},s().length)]),v(V,ve)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click","keydown"]);var YA=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button hmm-danger svelte-y0v77l" data-testid="delete-device-confirm"> </button>',1),qA=_('<h4 class="svelte-y0v77l"> </h4> <p class="hmm-delete-address svelte-y0v77l"> </p> <select class="hmm-select hmm-delete-select svelte-y0v77l"><option> </option><option> </option></select> <p> </p> <select class="hmm-select hmm-delete-select svelte-y0v77l"><option> </option><option> </option></select> <p class="hmm-delete-flags svelte-y0v77l"> </p>',1);function $A(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"address",3,"");const s=Bt(),i=s.i18n.t;let o=N(1),l=N(4),f=N(!1);const p=c(()=>t(o)+t(l)),b=c(()=>s.nameOf(a()));st(()=>{n()&&(u(o,1),u(l,4))});async function g(){u(f,!0);const k=await s.devices.remove(s.app.selectedInterface,a(),t(p));u(f,!1),k&&n(!1)}{const k=S=>{var T=YA(),I=De(T),C=m(I,!0),D=d(I,2),x=m(D,!0);E((P,K)=>{h(C,P),D.disabled=t(f),h(x,K)},[()=>i("Cancel"),()=>i("Delete")]),ne("click",I,()=>n(!1)),ne("click",D,()=>{g()}),v(S,T)};let y=c(()=>i("Delete device"));Tn(r,{get title(){return t(y)},width:"560px",testId:"delete-device-dialog",get open(){return n()},set open(S){n(S)},buttons:k,children:(S,T)=>{var I=qA(),C=De(I),D=m(C,!0),x=d(C,2),P=m(x,!0),K=d(x,2),X=w(K),ie=m(X,!0);X.value=X.__value=1;var ue=d(X),fe=m(ue,!0);ue.value=ue.__value=0,qt(K);var B=d(K,2),re=m(B,!0),de=d(B,2),ee=w(de),ae=m(ee,!0);ee.value=ee.__value=4;var Y=d(ee),Z=m(Y,!0);Y.value=Y.__value=2,qt(de);var te=d(de,2),Re=m(te);E((J,ye,xe,ge,V,pe,ve,Q)=>{h(D,J),h(P,a()),R(K,"aria-label",ye),h(ie,xe),h(fe,ge),h(re,V),R(de,"aria-label",pe),h(ae,ve),h(Z,Q),h(Re,`FLAGS = ${t(p)??""}`)},[()=>i("Do you really want to delete the device {name}?",{name:t(b)}),()=>i("Delete device"),()=>i("Unlearn and reset the device to factory defaults"),()=>i("Unlearn only (direct links are kept)"),()=>i("If the device cannot be reached:"),()=>i("If the device cannot be reached:"),()=>i("Delete at the next opportunity"),()=>i("Delete from the interface process only")]),kr(K,()=>t(o),J=>u(o,J)),kr(de,()=>t(l),J=>u(l,J)),v(S,I)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click"]);var XA=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="rename-save"> </button>',1),QA=_('<label class="hmm-rename-children svelte-111tkcw"><input type="checkbox" data-testid="rename-children"/> <span> </span></label>'),ZA=_('<p class="hmm-rename-address svelte-111tkcw"> </p> <input class="hmm-input hmm-rename-input svelte-111tkcw" data-testid="rename-input"/> <!>',1);function JA(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"address",3,"");const s=Bt(),i=s.i18n.t;let o=N(""),l=N(!0),f=N(!1);const p=c(()=>a()!==""&&wa(a())),b=c(()=>t(p)?s.devices.channels(s.app.selectedInterface,a()).map(y=>y.ADDRESS):[]);st(()=>{n()&&(u(o,s.knownName(a())??"",!0),u(l,!0))});const g=c(()=>Ed(a(),t(o),t(b),{channels:t(l)}));async function k(){const y=t(g);if(y.length===0)return;u(f,!0);const S=await s.names.rename(y);u(f,!1),S&&n(!1)}{const y=T=>{var I=XA(),C=De(I),D=m(C,!0),x=d(C,2),P=m(x,!0);E((K,X)=>{h(D,K),x.disabled=t(f)||t(g).length===0,h(P,X)},[()=>i("Cancel"),()=>i("Apply")]),ne("click",C,()=>n(!1)),ne("click",x,()=>{k()}),v(T,I)};let S=c(()=>i("Rename"));Tn(r,{get title(){return t(S)},width:"520px",testId:"rename-dialog",get open(){return n()},set open(T){n(T)},buttons:y,children:(T,I)=>{var C=ZA(),D=De(C),x=m(D,!0),P=d(D,2),K=d(P,2);{var X=ie=>{var ue=QA(),fe=w(ue),B=d(fe,2),re=m(B,!0);E(de=>h(re,de),[()=>i("Overwrite channel names")]),ur(fe,()=>t(l),de=>u(l,de)),v(ie,ue)};$(K,ie=>{t(p)&&ie(X)})}E(ie=>{h(x,a()),R(P,"aria-label",ie)},[()=>i("Name")]),ne("keydown",P,ie=>{ie.key==="Enter"&&k()}),An(P,()=>t(o),ie=>u(o,ie)),v(T,C)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click","keydown"]);var eT=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="repair-confirm"> </button>',1),tT=_('<p class="hmm-repair-note svelte-g84sn7" data-testid="repair-bidcos-note"> </p>'),nT=_("<p> </p>"),rT=_('<p data-testid="repair-failed"> </p>'),aT=_('→ <span class="hmm-mono" data-testid="repair-pending-after"> </span>',1),sT=_('<li class="hmm-mono"> </li>'),iT=_('<div class="hmm-repair-unrepairable svelte-g84sn7" data-testid="repair-unrepairable"><p> </p> <ul class="svelte-g84sn7"></ul></div>'),oT=_('<tr><td class="hmm-mono svelte-g84sn7"> </td><td class="hmm-mono svelte-g84sn7"> </td><td class="svelte-g84sn7"> </td><td class="svelte-g84sn7"> </td><td class="svelte-g84sn7"> </td></tr>'),lT=_('<table class="hmm-repair-table svelte-g84sn7" data-testid="repair-corrections"><thead><tr><th class="svelte-g84sn7"> </th><th class="svelte-g84sn7"> </th><th class="svelte-g84sn7"> </th><th class="svelte-g84sn7"> </th><th class="svelte-g84sn7"> </th></tr></thead><tbody></tbody></table>'),dT=_('<p data-testid="repair-nothing"> </p>'),cT=_('<label class="hmm-repair-recovery svelte-g84sn7"><span> </span> <select class="hmm-select" data-testid="repair-recovery"><option>—</option><option>clearConfigCache</option><option>restoreConfigToDevice</option></select></label>'),uT=_('<li><span class="hmm-mono"> </span> </li>'),fT=_('<ul class="hmm-repair-results svelte-g84sn7" data-testid="repair-results"></ul>'),hT=_('<p>CONFIG_PENDING: <span class="hmm-mono"> </span> <!></p> <!> <!> <!> <!>',1),mT=_('<p class="hmm-repair-address svelte-g84sn7"> <span class="hmm-mono"> </span></p> <!> <!>',1);function vT(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"address",3,"");const s=Bt(),i=s.i18n.t;let o=N(void 0),l=N(void 0),f=N(!1),p=N(!1),b=N("none"),g=0;const k=c(()=>s.app.selectedInterface),y=c(()=>!s.interfaces.typeOf(t(k)).startsWith("BidCos")),S=c(()=>t(l)??t(o)),T=c(()=>t(S)?.channels.flatMap(C=>C.corrected.map(D=>({channel:C,c:D})))??[]);st(()=>{if(!n()||a()===""||t(k)==="")return;const C=g+=1;u(f,!0),u(l,void 0),u(b,"none"),s.devices.repairConfig(t(k),a(),{dryRun:!0}).then(D=>{C===g&&(u(o,D,!0),u(f,!1))})});async function I(){u(p,!0),u(l,await s.devices.repairConfig(t(k),a(),{...t(y)||t(b)==="none"?{}:{bidcosRecovery:t(b)}}),!0),u(p,!1),t(l)&&(await s.devices.load(t(k),{refresh:!0}),await s.serviceMessages.load())}{const C=x=>{var P=eT(),K=De(P),X=m(K,!0),ie=d(K,2),ue=m(ie,!0);E((fe,B)=>{h(X,fe),ie.disabled=t(p)||t(S)===void 0||t(l)!==void 0,h(ue,B)},[()=>i("Close"),()=>i("Repair configuration")]),ne("click",K,()=>n(!1)),ne("click",ie,()=>{I()}),v(x,P)};let D=c(()=>i("Repair configuration"));Tn(r,{get title(){return t(D)},width:"720px",testId:"repair-dialog",get open(){return n()},set open(x){n(x)},buttons:C,children:(x,P)=>{var K=mT(),X=De(K),ie=w(X),ue=d(ie),fe=m(ue,!0),B=d(X,2);{var re=Z=>{var te=tT(),Re=m(te,!0);E(J=>h(Re,J),[()=>i("On BidCos a pending configuration is normal: it is queued and the device takes it when it next wakes up.")]),v(Z,te)};$(B,Z=>{t(y)||Z(re)})}var de=d(B,2);{var ee=Z=>{var te=nT(),Re=m(te,!0);E(J=>h(Re,J),[()=>i("Loading Homematic Manager...")]),v(Z,te)},ae=Z=>{var te=rT(),Re=m(te,!0);E(J=>h(Re,J),[()=>i("No data")]),v(Z,te)},Y=Z=>{var te=hT(),Re=De(te),J=d(w(Re)),ye=m(J,!0),xe=d(J,2);{var ge=ce=>{var me=aT(),be=d(De(me)),Ee=m(be,!0);E(le=>h(Ee,le),[()=>String(t(l).configPendingAfter??"—")]),v(ce,me)};$(xe,ce=>{t(l)&&ce(ge)})}var V=d(Re,2);{var pe=ce=>{var me=iT(),be=w(me),Ee=m(be,!0),le=d(be,2);je(le,20,()=>t(S).unrepairable,G=>G,(G,L)=>{var A=sT(),M=m(A,!0);E(()=>h(M,L)),v(G,A)}),E(G=>h(Ee,G),[()=>i("These channels store a parameter their description does not have. No RPC method removes it: the device has to be deleted and paired again, or a CCU backup from before the bad write restored.")]),v(ce,me)};$(V,ce=>{t(S).unrepairable.length>0&&ce(pe)})}var ve=d(V,2);{var Q=ce=>{var me=lT(),be=w(me),Ee=w(be),le=w(Ee),G=m(le,!0),L=d(le),A=m(L,!0),M=d(L),he=m(M,!0),Te=d(M),Pe=m(Te,!0),Ve=d(Te),Ye=m(Ve,!0),ot=d(be);je(ot,21,()=>t(T),Je=>`${Je.channel.address}-${Je.c.parameter}`,(Je,Se)=>{var we=oT(),j=w(we),U=m(j,!0),Ne=d(j),Le=m(Ne,!0),ze=d(Ne),_e=m(ze,!0),Ie=d(ze),Ce=m(Ie,!0),Fe=d(Ie),Oe=m(Fe,!0);E((qe,Ke)=>{h(U,t(Se).channel.address),h(Le,t(Se).c.parameter),h(_e,qe),h(Ce,Ke),h(Oe,t(Se).c.reason)},[()=>Ns(t(Se).c.stored,void 0),()=>Ns(t(Se).c.replacement,void 0)]),v(Je,we)}),E((Je,Se,we,j,U)=>{h(G,Je),h(A,Se),h(he,we),h(Pe,j),h(Ye,U)},[()=>i("Channel"),()=>i("Parameter"),()=>i("Current value"),()=>i("New value"),()=>i("Message")]),v(ce,me)},oe=ce=>{var me=dT(),be=m(me,!0);E(Ee=>h(be,Ee),[()=>i("Nothing has to be corrected")]),v(ce,me)};$(ve,ce=>{t(T).length>0?ce(Q):ce(oe,-1)})}var F=d(ve,2);{var W=ce=>{var me=cT(),be=w(me),Ee=m(be,!0),le=d(be,2),G=w(le);G.value=G.__value="none";var L=d(G);L.value=L.__value="clearConfigCache";var A=d(L);A.value=A.__value="restoreConfigToDevice",qt(le),E(M=>h(Ee,M),[()=>i("Additional BidCos recovery")]),kr(le,()=>t(b),M=>u(b,M)),v(ce,me)};$(F,ce=>{t(y)||ce(W)})}var O=d(F,2);{var z=ce=>{var me=fT();je(me,21,()=>t(l).channels,be=>be.address,(be,Ee)=>{var le=uT();let G;var L=w(le),A=m(L,!0),M=d(L);E(()=>{G=yt(le,1,"svelte-g84sn7",null,G,{"hmm-repair-failed":!t(Ee).write.ok}),h(A,t(Ee).address),h(M,` ${t(Ee).write.ok?"✔":`✕ ${t(Ee).write.faultString??""}`}`)}),v(be,le)}),v(ce,me)};$(O,ce=>{t(l)&&ce(z)})}E(ce=>h(ye,ce),[()=>String(t(S).configPendingBefore??"—")]),v(Z,te)};$(de,Z=>{t(f)?Z(ee):t(S)?Z(Y,-1):Z(ae,1)})}E(Z=>{h(ie,`${Z??""} `),h(fe,a())},[()=>s.nameOf(a())]),v(x,K)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click"]);var pT=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="replace-device-confirm"> </button>',1),gT=_("<p> </p>"),bT=_('<p data-testid="replace-none"> </p>'),_T=_("<option> </option>"),ET=_('<select class="hmm-select hmm-replace-select svelte-novg4s"></select>'),yT=_('<h4 class="svelte-novg4s"> </h4> <p class="hmm-replace-new svelte-novg4s"> <span class="hmm-mono"> </span></p> <!>',1);function ST(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"address",3,"");const s=Bt(),i=s.i18n.t;let o=N(He([])),l=N(""),f=N(!1),p=N(!1);const b=c(()=>t(o).filter(k=>!k.ADDRESS.includes(":")));st(()=>{if(!n()||a()==="")return;const k=a();u(f,!0),u(l,""),s.devices.replaceable(s.app.selectedInterface,k).then(y=>{u(o,y,!0),u(l,y.find(S=>!S.ADDRESS.includes(":"))?.ADDRESS??"",!0),u(f,!1)})});async function g(){u(p,!0);const k=await s.devices.replace(s.app.selectedInterface,t(l),a());u(p,!1),k&&n(!1)}{const k=S=>{var T=pT(),I=De(T),C=m(I,!0),D=d(I,2),x=m(D,!0);E((P,K)=>{h(C,P),D.disabled=t(p)||t(l)==="",h(x,K)},[()=>i("Cancel"),()=>i("Replace")]),ne("click",I,()=>n(!1)),ne("click",D,()=>{g()}),v(S,T)};let y=c(()=>i("Replace device"));Tn(r,{get title(){return t(y)},width:"560px",testId:"replace-device-dialog",get open(){return n()},set open(S){n(S)},buttons:k,children:(S,T)=>{var I=yT(),C=De(I),D=m(C,!0),x=d(C,2),P=w(x),K=d(P),X=m(K,!0),ie=d(x,2);{var ue=re=>{var de=gT(),ee=m(de,!0);E(ae=>h(ee,ae),[()=>i("Loading Homematic Manager...")]),v(re,de)},fe=re=>{var de=bT(),ee=m(de,!0);E(ae=>h(ee,ae),[()=>i("No suitable device available")]),v(re,de)},B=re=>{var de=ET();je(de,21,()=>t(b),ee=>ee.ADDRESS,(ee,ae)=>{var Y=_T(),Z=m(Y),te={};E(Re=>{h(Z,`${Re??""} (${t(ae).ADDRESS??""})`),te!==(te=t(ae).ADDRESS)&&(Y.value=(Y.__value=te)??"")},[()=>s.nameOf(t(ae).ADDRESS)]),v(ee,Y)}),qt(de),E(ee=>R(de,"aria-label",ee),[()=>i("Replace device")]),kr(de,()=>t(l),ee=>u(l,ee)),v(re,de)};$(ie,re=>{t(f)?re(ue):t(b).length===0?re(fe,1):re(B,-1)})}E((re,de)=>{h(D,re),h(P,`${de??""}: `),h(X,a())},[()=>i("Which device do you want to replace?"),()=>i("New device")]),v(S,I)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click"]);var kT=_("<!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!>",1),Tu=_("<option> </option>"),wT=_('<select class="hmm-select hmm-taxonomy-filter svelte-1fmr35a" data-testid="devices-filter-room"><option> </option><!></select> <select class="hmm-select hmm-taxonomy-filter svelte-1fmr35a" data-testid="devices-filter-function"><option> </option><!></select>',1),AT=_('<button type="button" class="hmm-inline-button hmm-inline-button-first svelte-1fmr35a">✎</button> <span> </span>',1),TT=_('<button type="button" class="hmm-inline-button svelte-1fmr35a">⚒</button>'),RT=_("<!> <!>",1),xT=_('<span class="hmm-msg-cell svelte-1fmr35a"></span>'),Ru=_('<span class="hmm-firmware-status svelte-1fmr35a"> </span>'),IT=_('<button type="button" class="hmm-inline-button hmm-firmware-action svelte-1fmr35a"> </button>'),DT=_('<span class="hmm-firmware-cell svelte-1fmr35a"><span class="hmm-firmware-version svelte-1fmr35a"> </span> <!></span>'),NT=_('<button type="button" class="hmm-inline-button svelte-1fmr35a"> </button>'),CT=_("<span></span>"),PT=_('<span title="AES_ACTIVE" aria-label="AES_ACTIVE" role="img">🔑</span>'),MT=_('<span class="hmm-roaming svelte-1fmr35a" title="ROAMING" aria-label="ROAMING" role="img">⇄</span>'),OT=_("<span> </span> <!>",1),LT=_('<div class="hmm-page svelte-1fmr35a"><div class="hmm-page-grid svelte-1fmr35a"><!></div></div> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!>',1);function FT(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t,s=1e4;let i=N(He([])),o=N(He([])),l=N(!1),f=N(0),p=N(0),b=N(""),g=N(!1),k=N(!1),y=N(!1),S=N(!1),T=N(!1),I=N(""),C=N(!1),D=N(He([])),x=N(He([])),P=N(!1),K=N(!1),X=N(""),ie=N(void 0),ue=N(!1),fe=N(""),B=N("MASTER"),re=N(!1),de=N("room"),ee=N(He([])),ae=N(""),Y=N(""),Z=N("");const te=c(()=>n.app.selectedInterface),Re=c(()=>n.interfaces.typeOf(t(te))),J=c(()=>n.devices.index(t(te))),ye=c(()=>ci(t(te),t(Re))),xe=c(()=>t(ye)&&t(J)!==void 0?t(J).channels().filter(se=>eh(se)).map(se=>se.ADDRESS):[]);st(()=>{if(t(te)===""||t(J)===void 0||!t(ye))return;const se=t(te),Ge=t(xe);Sr(()=>{n.smokeGroups.sync(se,Ge)})});const ge=c(()=>n.smokeGroups.of(t(te))),V=c(()=>t(J)===void 0?[]:[...Ib(t(J)),...t(ye)?Db(t(ge)):[]]),pe=c(()=>Object.fromEntries(t(V).map(se=>[se.address,se]))),ve=c(()=>t(V).filter(se=>se.kind==="hmip").map(se=>Cb(se.number??0))),Q=c(()=>Nb(t(ge)));function oe(se){return se in t(pe)}function F(se){return(t(pe)[se]?.members??[]).map(Ge=>t(J)?.get(Ge)).filter(Ge=>Ge!==void 0)}function W(se){const Ge=[],Yt=t(J)===void 0?void 0:th(t(J),se);Yt!==void 0&&Ge.push(n.nameOf(Yt));for(const gn of t(ge)[se]??[])Ge.push(a("Smoke group {n}",{n:gn}));return Ge}function O(se){const Ge=t(pe)[se.ADDRESS];if(Ge!==void 0)return a("{count} detectors",{},Ge.members.length);const Yt=wa(se.ADDRESS)?n.devices.channels(t(te),se.ADDRESS).map(gn=>gn.ADDRESS):[se.ADDRESS];return[...new Set(Yt.flatMap(gn=>W(gn)))].join(", ")}function z(se){const Ge=t(pe)[se]?.number;return Za(se)&&Ge!==void 0?a("Smoke group {n}",{n:Ge}):n.nameOf(se)}function ce(se){if(!Za(se.ADDRESS))return Qo(se.ADDRESS,t(M));const Ge={};for(const Yt of F(se.ADDRESS))for(const gn of Qo(xs(Yt.ADDRESS),t(M),99))Ge[gn.datapoint]=gn;return Object.values(Ge)}function me(se){return F(se)[0]?.PARENT_TYPE??"HmIP-SWSD"}function be(se){u(ie,void 0),u(X,se,!0),u(K,!0)}function Ee(){t(Q)!==void 0&&(u(ie,{address:kd(t(Q)),kind:"hmip",number:t(Q),members:[]},!0),u(X,""),u(K,!0))}const le=c(()=>t(ie)??(t(X)===""?void 0:t(pe)[t(X)])),G=c(()=>t(ye)&&t(xe).length>0&&t(Q)!==void 0),L=c(()=>t(ye)?t(xe).length===0?a("This interface has no smoke detector"):a("All eight smoke groups are in use"):a("Only available on HmIP interfaces")),A=c(()=>[...t(ve),...n.devices.devices(t(te))]),M=c(()=>n.serviceMessages.of(t(te))),he=c(()=>n.radio.gateways(t(te)));st(()=>{t(Re)==="BidCos-RF"&&n.radio.ensureGateways(t(te))}),st(()=>{t(te),u(i,[],!0),u(o,[],!0),u(Y,""),u(Z,"")});const Te=c(()=>n.taxonomy),Pe=c(()=>t(Te).options("room")),Ve=c(()=>t(Te).options("function")),Ye=c(()=>[t(Y),t(Z)].filter(se=>se!==""));st(()=>{t(Y)!==""&&!t(Pe).some(se=>se.path===t(Y))&&u(Y,""),t(Z)!==""&&!t(Ve).some(se=>se.path===t(Z))&&u(Z,"")});function ot(se){return t(Te).refOf(t(te),se)}function Je(se){return t(Te).view(ot(se))}function Se(se){return n.devices.channels(t(te),se.ADDRESS).map(Ge=>Je(Ge.ADDRESS))}function we(se,Ge){return(wa(se.ADDRESS)?wS(Je(se.ADDRESS),Se(se),Ge):Kl(Je(se.ADDRESS),Ge)).join(", ")}const j=c(()=>t(Ye).length===0?t(A):t(A).filter(se=>t(Ye).every(Ge=>Za(se.ADDRESS)?F(se.ADDRESS).some(Yt=>U(Yt,Ge)):Gh(Je(se.ADDRESS),Se(se),Ge))));function U(se,Ge){return au(Je(se.ADDRESS),Je(xs(se.ADDRESS)),Ge)}st(()=>{t(te)!==""&&n.links.ensure(t(te))});const Ne=c(()=>n.devices.isLoading(t(te))?a("Loading Homematic Manager..."):n.devices.hasFailed(t(te))?a("The device list could not be read - press Refresh to try again"):t(J)===void 0?a("Loading Homematic Manager..."):t(A).length>0?a("No device matches the room or function filter"):a("No devices - the interface has not reported any yet")),Le=c(()=>t(i).length===1?t(i)[0]??"":""),ze=c(()=>t(Le)!==""&&wa(t(Le))?t(Le):""),_e=c(()=>t(i).filter(se=>!wa(se)&&!ts(se)));function Ie(se){return se!==""&&!ts(se)&&!Za(se)}const Ce=c(()=>Ie(t(Le))),Fe=c(()=>t(ze)!==""&&Mi(t(J)?.get(t(ze))?.FLAGS).dontDelete),Oe=c(()=>t(ze)!==""&&!Za(t(ze))?t(ze):""),qe=c(()=>t(Oe)!==""&&!t(Fe)),Ke=c(()=>t(Re).startsWith("BidCos")),Xe=c(()=>hb(t(Re)));function Qe(se){switch(se){case"device":return a("Select a device");case"channel":return a("Select one or more channels");case"delete":return t(Fe)?a("This device carries the DontDelete flag"):a("Select a device");case"bidcos":return a("Only available on BidCos interfaces")}}const it=c(()=>[{key:"icon",label:"",width:hi,fixed:!0,sortable:!1,filterable:!1,align:"center",value:()=>""},{key:"name",label:a("Name"),width:170,copy:"name",value:se=>z(se.ADDRESS)},{key:"ADDRESS",label:"ADDRESS",width:150,mono:!0,copy:"address"},{key:"rooms",label:a("Rooms"),width:120,value:se=>we(se,"room"),onactivate:se=>nt("room",se.ADDRESS)},{key:"functions",label:a("Functions"),width:110,value:se=>we(se,"function"),onactivate:se=>nt("function",se.ADDRESS)},{key:"smokeGroup",label:a("Smoke group"),width:150,minWidth:70,keepMinWidth:!0,hidden:t(V).length===0,value:se=>O(se)},{key:"msgs",label:"Msgs",width:tu,minWidth:tu,keepMinWidth:!0,align:"center",filterable:!1,sortable:!1,value:se=>ce(se).map(Ge=>Ge.datapoint).join(" ")},{key:"TYPE",label:"TYPE",width:150},{key:"SUBTYPE",label:"SUBTYPE",width:90,hidden:t(Re)!=="HmIP-RF"},{key:"FIRMWARE",label:"FIRMWARE",width:170,value:se=>`${se.FIRMWARE??""} ${se.AVAILABLE_FIRMWARE??""}`.trim()},{key:"PARAMSETS",label:"PARAMSETS",width:Li,minWidth:Li,keepMinWidth:!0,sortable:!1,value:se=>vt(se).names.join(" ")},{key:"FLAGS",label:"FLAGS",width:130,value:se=>Mi(se.FLAGS).labels.join(" ")},{key:"INTERFACE",label:"INTERFACE",width:130,hidden:t(Re)!=="BidCos-RF",value:se=>Ic(se,t(he))},{key:"RX_MODE",label:"RX_MODE",width:130,hidden:t(Re)==="BidCos-Wired",value:se=>Eb(se.RX_MODE).join(" ")}]),bt=c(()=>[{key:"name",label:a("Name"),width:170,copy:"name",value:se=>n.nameOf(se.ADDRESS)},{key:"ADDRESS",label:"ADDRESS",width:150,mono:!0,copy:"address"},{key:"rooms",label:a("Rooms"),width:120,value:se=>we(se,"room"),onactivate:se=>nt("room",se.ADDRESS)},{key:"functions",label:a("Functions"),width:110,value:se=>we(se,"function"),onactivate:se=>nt("function",se.ADDRESS)},{key:"smokeGroup",label:a("Smoke group"),width:150,hidden:t(V).length===0,value:se=>O(se)},{key:"TYPE",label:"TYPE",width:150},{key:"DIRECTION",label:"DIRECTION",width:100,value:se=>Sb(se.DIRECTION)},{key:"PARAMSETS",label:"PARAMSETS",width:Li,minWidth:Li,keepMinWidth:!0,sortable:!1,value:se=>vt(se).names.join(" ")},{key:"FLAGS",label:"FLAGS",width:130,value:se=>Mi(se.FLAGS).labels.join(" ")},{key:"links",label:a("Links"),width:60,align:"right",filterable:!1,value:se=>{const Ge=n.links.forAddress(t(te),se.ADDRESS).length;return Ge===0?"":Ge}},{key:"AES_ACTIVE",label:"AES_ACTIVE",width:90,hidden:t(Re)!=="BidCos-RF",value:se=>se.AES_ACTIVE?"🔑":""}]);function vt(se){const Ge=wa(se.ADDRESS)?void 0:t(J)?.parentOf(se.ADDRESS),Yt=ci(t(te),t(Re))&&ts(se.ADDRESS),gn=gb(se.ADDRESS)||is(se);return ES(se.PARAMSETS,rr=>{const rt=n.paramsets.contentOf(t(te),se,rr,Ge);return rr!=="MASTER"||rt!=="empty"||!Yt?rt:n.paramsets.contentOf(t(te),se,"VALUES",Ge,"service-messages")},{channel:gn})}function ke(se){const Ge=t(J)?.get(se);return{canSend:ya(Ge?.LINK_SOURCE_ROLES).length>0,canReceive:ya(Ge?.LINK_TARGET_ROLES).length>0,links:n.links.forAddress(t(te),se).length}}function Me(se){const Ge=n.devices.channels(t(te),se.ADDRESS),Yt=oe(se.ADDRESS)?F(se.ADDRESS):[];if(t(Ye).length===0)return[...Ge,...Yt];const gn=Je(se.ADDRESS);return[...Ge.filter(rr=>t(Ye).every(rt=>au(Je(rr.ADDRESS),gn,rt))),...Yt.filter(rr=>t(Ye).every(rt=>U(rr,rt)))]}function $e(se){return{ref:ot(se),channels:wa(se)?n.devices.channels(t(te),se).map(Ge=>ot(Ge.ADDRESS)):[]}}function ft(se,Ge){Ge.length!==0&&(u(de,se,!0),u(ee,Ge.map(Yt=>$e(Yt)),!0),u(ae,Ge.length===1?Ge[0]??"":"",!0),u(re,!0))}function _t(se,Ge){ft(se,Ge===void 0||t(i).includes(Ge)?t(i):[Ge])}function nt(se,Ge){t(Te).writable&&ft(se,[Ge])}const $t=c(()=>t(i).length>0&&t(Te).writable),xt=c(()=>t(Te).available?t(Te).writable?a("Select one or more rows"):a("The store does not take writes"):a("No store connected")),Ft=c(()=>Math.max(3,...t(j).map(se=>(se.FIRMWARE??"").length)));function sn(se){return Qo(se,t(M),99).some(Ge=>Ge.datapoint==="UPDATE_PENDING")}function mn(se){return kS(se,{busy:n.devices.firmwareBusy.includes(se.ADDRESS),updatePending:sn(se.ADDRESS)})}async function En(se){const Ge=mn(se);Ge.action==="install"?await n.devices.installFirmware(t(te),se.ADDRESS):Ge.action==="update"&&await n.devices.updateFirmware(t(te),[se.ADDRESS])}st(()=>{const se=t(te);if(se===""||!n.devices.firmwarePending(se))return;const Ge=setInterval(()=>{n.devices.load(se,{refresh:!0})},s);return()=>{clearInterval(Ge)}});function Jt(se){u(I,se,!0),u(g,!0)}function vn(se){u(I,se,!0),u(k,!0)}function In(se){u(I,se,!0),u(y,!0)}function Kn(se){u(I,se,!0),u(S,!0)}async function Yn(se){const Ge=[...t(_e)];if(Ge.length===0)return;const Yt=await n.devices.reportValueUsage(t(te),Ge,se);n.notices.push("info",a("reportValueUsage {value}: {count} datapoints on {channels} channels",{value:se,count:Yt,channels:Ge.length}))}function Xt(se,Ge){u(fe,se,!0),u(B,Ge,!0),u(ue,!0)}function Ot(se,Ge){u(b,se.ADDRESS,!0),u(f,Ge.clientX,!0),u(p,Ge.clientY,!0),u(l,!0)}const Qt=c(()=>{const se=t(J)?.get(t(b));return se===void 0?[]:vt(se).names.map(Ge=>({id:`paramset:${Ge}`,label:a(`${Ge} Paramset`)}))}),qn=c(()=>Za(t(b))?[{id:"smokeGroup",label:`${a("Members")}…`}]:wa(t(b))?[...oe(t(b))?[{id:"smokeGroup",label:`${a("Members")}…`},{id:"sep0",separator:!0}]:[],{id:"rename",label:a("Rename")},...t(Qt),{id:"sep1",separator:!0},{id:"restore",label:a("restoreConfigToDevice"),disabled:!t(Ke)},{id:"clear",label:a("clearConfigCache"),disabled:!t(Ke)},{id:"repair",label:a("Repair configuration")},{id:"sep2",separator:!0},{id:"assign:room",label:`${a("Assign to room")}…`,disabled:!t(Te).writable},{id:"assign:function",label:`${a("Assign to function")}…`,disabled:!t(Te).writable},{id:"sep3",separator:!0},{id:"replace",label:a("Replace"),disabled:Dn(t(b))},{id:"delete",label:a("Delete"),danger:!0,disabled:Dn(t(b))}]:[{id:"rename",label:a("Rename"),disabled:!Ie(t(b))},{id:"usage1",label:"reportValueUsage 1",disabled:ts(t(b))},{id:"usage0",label:"reportValueUsage 0",disabled:ts(t(b))},{id:"sep1",separator:!0},...t(Qt).length===0?[]:[...t(Qt),{id:"sep2",separator:!0}],{id:"assign:room",label:`${a("Assign to room")}…`,disabled:!t(Te).writable},{id:"assign:function",label:`${a("Assign to function")}…`,disabled:!t(Te).writable},{id:"sep3",separator:!0},{id:"link:sender",label:a("Create link as sender"),disabled:!ke(t(b)).canSend},{id:"link:receiver",label:a("Create link as receiver"),disabled:!ke(t(b)).canReceive},{id:"link:show",label:`${a("Show links")} (${String(ke(t(b)).links)})`,disabled:ke(t(b)).links===0},{id:"team",label:a("Team"),disabled:(t(J)?.get(t(b))?.TEAM_TAG??"")===""}]);function Dn(se){return Mi(t(J)?.get(se)?.FLAGS).dontDelete}async function Cr(se){const Ge=t(b);if(se.startsWith("paramset:")){Xt(Ge,se.slice(9));return}if(se==="assign:room"||se==="assign:function"){_t(se==="assign:room"?"room":"function",Ge);return}switch(se){case"link:sender":u(D,[Ge],!0),u(x,[],!0),u(C,!0);break;case"link:receiver":u(D,[],!0),u(x,[Ge],!0),u(C,!0);break;case"team":u(I,Ge,!0),u(P,!0);break;case"smokeGroup":be(Ge);break;case"link:show":n.app.linksFilter=Ge,n.app.setTab("links");break;case"rename":Jt(Ge);break;case"restore":await n.devices.restoreConfig(t(te),Ge);break;case"clear":await n.devices.clearConfigCache(t(te),Ge);break;case"repair":Kn(Ge);break;case"replace":In(Ge);break;case"delete":vn(Ge);break;case"usage1":case"usage0":await n.devices.reportValueUsage(t(te),[Ge],se==="usage1"?1:0);break}}var Br=LT(),$n=De(Br),Bn=w($n),Pr=w(Bn);{const se=et=>{var Be=kT(),ht=De(Be);{let at=c(()=>a("Pair device")),ut=c(()=>!t(Xe)),kt=c(()=>a("This interface cannot pair devices"));Oh(ht,{get caption(){return t(at)},icon:"+",get disabled(){return t(ut)},get reason(){return t(kt)},testId:"devices-add",onclick:()=>u(T,!0)})}var Rt=d(ht,2);{let at=c(()=>a("Rename device")),ut=c(()=>!t(Ce)),kt=c(()=>Qe("device"));Ct(Rt,{get title(){return t(at)},icon:"✎",get disabled(){return t(ut)},get reason(){return t(kt)},testId:"devices-rename",onclick:()=>Jt(t(Le))})}var Ht=d(Rt,2);{let at=c(()=>a("Assign to room")),ut=c(()=>!t($t));Ct(Ht,{get title(){return t(at)},icon:"⌂",get disabled(){return t(ut)},get reason(){return t(xt)},testId:"devices-assign-room",onclick:()=>_t("room")})}var un=d(Ht,2);{let at=c(()=>a("Assign to function")),ut=c(()=>!t($t));Ct(un,{get title(){return t(at)},icon:"⚑",get disabled(){return t(ut)},get reason(){return t(xt)},testId:"devices-assign-function",onclick:()=>_t("function")})}var Ut=d(un,2);{let at=c(()=>a("Rooms and functions")),ut=c(()=>!t(Te).available),kt=c(()=>a("No store connected"));Ct(Ut,{get title(){return t(at)},icon:"⊞",get disabled(){return t(ut)},get reason(){return t(kt)},testId:"devices-taxonomy",onclick:()=>{n.selectInterface(pd)}})}var Mt=d(Ut,2);{let at=c(()=>t(_e).length===0),ut=c(()=>Qe("channel"));Ct(Mt,{title:"reportValueUsage 1",icon:"⇩",get disabled(){return t(at)},get reason(){return t(ut)},testId:"devices-usage-1",onclick:()=>{Yn(1)}})}var yn=d(Mt,2);{let at=c(()=>t(_e).length===0),ut=c(()=>Qe("channel"));Ct(yn,{title:"reportValueUsage 0",icon:"⇧",get disabled(){return t(at)},get reason(){return t(ut)},testId:"devices-usage-0",onclick:()=>{Yn(0)}})}var Sn=d(yn,2);{let at=c(()=>a("restoreConfigToDevice")),ut=c(()=>t(ze)===""||!t(Ke)),kt=c(()=>t(Ke)?Qe("device"):Qe("bidcos"));Ct(Sn,{get title(){return t(at)},icon:"⟲",get disabled(){return t(ut)},get reason(){return t(kt)},testId:"devices-restore",onclick:()=>{n.devices.restoreConfig(t(te),t(ze))}})}var on=d(Sn,2);{let at=c(()=>a("clearConfigCache")),ut=c(()=>t(ze)===""||!t(Ke)),kt=c(()=>t(Ke)?Qe("device"):Qe("bidcos"));Ct(on,{get title(){return t(at)},icon:"⌫",get disabled(){return t(ut)},get reason(){return t(kt)},testId:"devices-clear",onclick:()=>{n.devices.clearConfigCache(t(te),t(ze))}})}var pn=d(on,2);{let at=c(()=>a("Repair configuration")),ut=c(()=>t(Oe)===""),kt=c(()=>Qe("device"));Ct(pn,{get title(){return t(at)},icon:"⚒",get disabled(){return t(ut)},get reason(){return t(kt)},testId:"devices-repair",onclick:()=>Kn(t(Oe))})}var ar=d(pn,2);{let at=c(()=>a("New smoke group")),ut=c(()=>!t(G));Ct(ar,{get title(){return t(at)},icon:"◎",get disabled(){return t(ut)},get reason(){return t(L)},testId:"devices-smoke-group-new",onclick:Ee})}var Mn=d(ar,2);{let at=c(()=>a("Replace device")),ut=c(()=>!t(qe)),kt=c(()=>Qe("delete"));Ct(Mn,{get title(){return t(at)},icon:"⇄",get disabled(){return t(ut)},get reason(){return t(kt)},testId:"devices-replace",onclick:()=>In(t(ze))})}var ln=d(Mn,2);{let at=c(()=>a("Delete device")),ut=c(()=>!t(qe)),kt=c(()=>Qe("delete"));Ct(ln,{get title(){return t(at)},icon:"🗑",get disabled(){return t(ut)},get reason(){return t(kt)},testId:"devices-delete",onclick:()=>vn(t(ze))})}var gt=d(ln,2);{let at=c(()=>a("Refresh"));Ct(gt,{get title(){return t(at)},icon:"⟳",testId:"devices-refresh",onclick:()=>{n.devices.load(t(te),{refresh:!0}),n.smokeGroups.refresh(t(te),t(xe))}})}v(et,Be)},Ge=et=>{var Be=At(),ht=De(Be);{var Rt=Ht=>{var un=wT(),Ut=De(un),Mt=w(Ut),yn=m(Mt,!0);Mt.value=Mt.__value="";var Sn=d(Mt);je(Sn,17,()=>t(Pe),ln=>ln.path,(ln,gt)=>{var at=Tu(),ut=m(at,!0),kt={};E(bn=>{h(ut,bn),kt!==(kt=t(gt).path)&&(at.value=(at.__value=kt)??"")},[()=>Wl(t(gt)," ")]),v(ln,at)}),qt(Ut);var on=d(Ut,2),pn=w(on),ar=m(pn,!0);pn.value=pn.__value="";var Mn=d(pn);je(Mn,17,()=>t(Ve),ln=>ln.path,(ln,gt)=>{var at=Tu(),ut=m(at,!0),kt={};E(bn=>{h(ut,bn),kt!==(kt=t(gt).path)&&(at.value=(at.__value=kt)??"")},[()=>Wl(t(gt)," ")]),v(ln,at)}),qt(on),E((ln,gt,at,ut)=>{R(Ut,"aria-label",ln),h(yn,gt),R(on,"aria-label",at),h(ar,ut)},[()=>a("Room"),()=>a("All rooms"),()=>a("Function"),()=>a("All functions")]),kr(Ut,()=>t(Y),ln=>u(Y,ln)),kr(on,()=>t(Z),ln=>u(Z,ln)),v(Ht,un)};$(ht,Ht=>{t(Te).available&&Ht(Rt)})}v(et,Be)},Yt=(et,Be=Wn,ht=Wn,Rt=Wn)=>{var Ht=At(),un=De(Ht);{var Ut=gt=>{const at=c(()=>Za(Be().ADDRESS)?me(Be().ADDRESS):Be().TYPE);{let ut=c(()=>n.host.deviceImageUrl(t(at))),kt=c(()=>`device-image-${Be().ADDRESS}`);mi(gt,{get deviceType(){return t(at)},get src(){return t(ut)},get testId(){return t(kt)}})}},Mt=gt=>{var at=AT(),ut=De(at),kt=d(ut,2),bn=m(kt,!0);E((kn,mr)=>{R(ut,"data-testid",`smoke-group-members-${Be().ADDRESS}`),R(ut,"title",kn),R(kt,"data-testid",`smoke-group-${Be().ADDRESS}`),h(bn,mr)},[()=>a("Members"),()=>O(Be())]),ne("click",ut,kn=>{kn.stopPropagation(),be(Be().ADDRESS)}),v(gt,at)},yn=c(()=>ht().key==="smokeGroup"&&oe(Be().ADDRESS)&&Rt().depth===0),Sn=gt=>{var at=xT();je(at,21,()=>ce(Be()),ut=>ut.datapoint,(ut,kt)=>{const bn=c(()=>Lh(t(kt).datapoint,!t(Ke)));var kn=RT(),mr=De(kn);{let Fn=c(()=>a(t(kt).label)),wn=c(()=>`${a(t(kt).label)} (${t(kt).datapoint} ${t(kt).address})${t(bn)===void 0?"":` — ${a(t(bn))}`}`);mS(mr,{get mark(){return t(kt)},get label(){return t(Fn)},get title(){return t(wn)}})}var vr=d(mr,2);{var ea=Fn=>{var wn=TT();E(Xn=>{R(wn,"data-testid",`repair-${Be().ADDRESS}`),R(wn,"title",Xn)},[()=>a("Repair configuration")]),ne("click",wn,Xn=>{Xn.stopPropagation(),Kn(Be().ADDRESS)}),v(Fn,wn)},Wa=c(()=>yS(t(kt).datapoint,!t(Ke)));$(vr,Fn=>{t(Wa)&&Fn(ea)})}v(ut,kn)}),E(()=>R(at,"data-testid",`msgs-${Be().ADDRESS}`)),v(gt,at)},on=gt=>{const at=c(()=>mn(Be()));var ut=DT();let kt;var bn=w(ut),kn=m(bn,!0),mr=d(bn,2);{var vr=Fn=>{var wn=Ru(),Xn=m(wn,!0);E(Vr=>h(Xn,Vr),[()=>a("in progress")]),v(Fn,wn)},ea=Fn=>{var wn=IT(),Xn=m(wn);E((Vr,Ka)=>{R(wn,"data-testid",`firmware-${Be().ADDRESS}`),R(wn,"title",Vr),h(Xn,`${Ka??""} ${t(at).available??""??""}`)},[()=>a("Install firmware {version}",{version:t(at).available??""}),()=>a("install")]),ne("click",wn,Vr=>{Vr.stopPropagation(),En(Be())}),v(Fn,wn)},Wa=Fn=>{var wn=Ru(),Xn=m(wn,!0);E((Vr,Ka)=>{R(wn,"title",Vr),h(Xn,Ka)},[()=>a(t(at).status),()=>a(t(at).status)]),v(Fn,wn)};$(mr,Fn=>{t(at).busy?Fn(vr):t(at).action?Fn(ea,1):t(at).status&&Fn(Wa,2)})}E(()=>{R(ut,"data-testid",`firmware-cell-${Be().ADDRESS}`),kt=On(ut,"",kt,{"grid-template-columns":`${t(Ft)}ch minmax(0, max-content)`}),h(kn,t(at).firmware)}),v(gt,ut)},pn=gt=>{const at=c(()=>vt(Be()));var ut=CT();je(ut,20,()=>t(at).names,kt=>kt,(kt,bn)=>{var kn=NT(),mr=m(kn,!0);E(()=>{R(kn,"data-testid",`paramset-${Be().ADDRESS}-${bn}`),h(mr,bn)}),ne("click",kn,vr=>{vr.stopPropagation(),Xt(Be().ADDRESS,bn)}),v(kt,kn)}),E(()=>{R(ut,"data-testid",`paramsets-${Be().ADDRESS}`),R(ut,"aria-busy",t(at).pending)}),v(gt,ut)},ar=gt=>{var at=At(),ut=De(at);{var kt=bn=>{var kn=PT();v(bn,kn)};$(ut,bn=>{Be().AES_ACTIVE&&bn(kt)})}v(gt,at)},Mn=gt=>{var at=OT(),ut=De(at),kt=m(ut,!0),bn=d(ut,2);{var kn=vr=>{var ea=MT();v(vr,ea)},mr=c(()=>yd(Be()));$(bn,vr=>{t(mr)&&vr(kn)})}E(vr=>{R(ut,"data-testid",`receiver-${Be().ADDRESS}`),h(kt,vr)},[()=>Ic(Be(),t(he))]),v(gt,at)},ln=gt=>{var at=tr();E(ut=>h(at,ut),[()=>ht().value?ht().value(Be())??"":Be()[ht().key]??""]),v(gt,at)};$(un,gt=>{ht().key==="icon"?gt(Ut):t(yn)?gt(Mt,1):ht().key==="msgs"&&Rt().depth===0?gt(Sn,2):ht().key==="FIRMWARE"&&Rt().depth===0?gt(on,3):ht().key==="PARAMSETS"?gt(pn,4):ht().key==="AES_ACTIVE"?gt(ar,5):ht().key==="INTERFACE"&&Rt().depth===0?gt(Mn,6):gt(ln,-1)})}v(et,Ht)};let gn=c(()=>a("Devices")),rr=c(()=>a("Filter")),rt=c(()=>a("No row matches the filter")),pt=c(()=>a("Clear filter")),Dt=c(()=>a("Devices")),Ze=c(()=>a("{count} devices",{},t(j).length));ja(Pr,{get rows(){return t(j)},get columns(){return t(it)},get subColumns(){return t(bt)},getId:et=>et.ADDRESS,subRows:Me,get scope(){return t(te)},get caption(){return t(gn)},get filterLabel(){return t(rr)},get emptyText(){return t(Ne)},get noMatchText(){return t(rt)},get clearFilterLabel(){return t(pt)},showingText:(et,Be)=>a("Showing {shown} of {total}",{shown:et,total:Be}),onrowcontextmenu:Ot,canRename:et=>Ie(et.ADDRESS),onrename:et=>Jt(et.ADDRESS),get toolbarLabel(){return t(Dt)},get countText(){return t(Ze)},tableId:"devices",subTableId:"devices-channels",testId:"devices-table",get selected(){return t(i)},set selected(et){u(i,et,!0)},get expanded(){return t(o)},set expanded(et){u(o,et,!0)},toolbar:se,status:Ge,cell:Yt,$$slots:{toolbar:!0,status:!0,cell:!0}})}var la=d($n,2);{let se=c(()=>a("Devices"));Pd(la,{get items(){return t(qn)},get x(){return t(f)},get y(){return t(p)},get label(){return t(se)},testId:"devices-menu",onselect:Ge=>{Cr(Ge)},get open(){return t(l)},set open(Ge){u(l,Ge,!0)}})}var nr=d(la,2);JA(nr,{get address(){return t(I)},get open(){return t(g)},set open(se){u(g,se,!0)}});var wr=d(nr,2);$A(wr,{get address(){return t(I)},get open(){return t(k)},set open(se){u(k,se,!0)}});var Hr=d(wr,2);ST(Hr,{get address(){return t(I)},get open(){return t(y)},set open(se){u(y,se,!0)}});var ir=d(Hr,2);kA(ir,{get open(){return t(T)},set open(se){u(T,se,!0)}});var Ar=d(ir,2);Uh(Ar,{get presetSenders(){return t(D)},get presetReceivers(){return t(x)},get open(){return t(C)},set open(se){u(C,se,!0)}});var or=d(Ar,2);YS(or,{get address(){return t(I)},get open(){return t(P)},set open(se){u(P,se,!0)}});var Jr=d(or,2);{let se=c(()=>t(ie)!==void 0);BS(Jr,{get group(){return t(le)},get isNew(){return t(se)},get open(){return t(K)},set open(Ge){u(K,Ge,!0)}})}var Mr=d(Jr,2);vT(Mr,{get address(){return t(I)},get open(){return t(S)},set open(se){u(S,se,!0)}});var fr=d(Mr,2);{let se=c(()=>Ie(t(ae)));KA(fr,{get focus(){return t(de)},get targets(){return t(ee)},get address(){return t(ae)},get canRename(){return t(se)},get open(){return t(re)},set open(Ge){u(re,Ge,!0)}})}var hr=d(fr,2);Jw(hr,{get interfaceName(){return t(te)},get address(){return t(fe)},get paramset(){return t(B)},get open(){return t(ue)},set open(se){u(ue,se,!0)}}),v(r,Br),ct()}St(["click"]);var GT=_('<!> <!> <input class="hmm-input hmm-events-filter svelte-dzof1w" type="search" placeholder="ADDRESS" data-testid="events-filter-address"/> <input class="hmm-input hmm-events-filter svelte-dzof1w" type="search" placeholder="PARAM" data-testid="events-filter-datapoint"/>',1),UT=_('<span data-testid="events-paused"> </span>'),BT=_('<div class="hmm-page svelte-dzof1w"><div class="hmm-page-grid svelte-dzof1w"><!></div></div>');function HT(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t;let s=N(He([])),i=N(""),o=N(""),l=N(!1),f=N(He([]));const p=c(()=>n.app.selectedInterface),b=c(()=>({interfaceName:t(p),...t(i).trim()===""?{}:{address:t(i).trim()},...t(o).trim()===""?{}:{datapoint:t(o).trim()}})),g=c(()=>n.events.filtered(t(b))),k=c(()=>t(l)?t(f):t(g)),y=c(()=>[{key:"timestamp",label:a("Timestamp"),width:110,value:D=>Vf(D.timestamp)},{key:"method",label:a("Method"),width:110},{key:"name",label:a("Name"),width:200,copy:"name",value:D=>D.address===void 0?"":n.nameOf(D.address)},{key:"address",label:"ADDRESS",width:150,mono:!0,copy:"address"},{key:"datapoint",label:"PARAM",width:180},{key:"value",label:"VALUE",width:140,value:D=>io(D.value??D.payload)},{key:"count",label:a("Events per device"),width:120,align:"right",filterable:!1,value:D=>D.address===void 0?"":n.events.countFor(D.address)}]);function S(){u(f,t(l)?[]:[...t(g)],!0),u(l,!t(l))}var T=BT(),I=w(T),C=w(I);{const D=fe=>{var B=GT(),re=De(B);{let Y=c(()=>a("Pause"));Ct(re,{get title(){return t(Y)},icon:"⏸",get pressed(){return t(l)},testId:"events-pause",onclick:()=>S()})}var de=d(re,2);{let Y=c(()=>a("Clear"));Ct(de,{get title(){return t(Y)},icon:"⌫",testId:"events-clear",onclick:()=>{n.events.clear()}})}var ee=d(de,2),ae=d(ee,2);E((Y,Z)=>{R(ee,"aria-label",Y),R(ae,"aria-label",Z)},[()=>`${a("Filter")} ADDRESS`,()=>`${a("Filter")} PARAM`]),An(ee,()=>t(i),Y=>u(i,Y)),An(ae,()=>t(o),Y=>u(o,Y)),v(fe,B)},x=fe=>{var B=At(),re=De(B);{var de=ee=>{var ae=UT(),Y=m(ae,!0);E(Z=>h(Y,Z),[()=>a("Pause")]),v(ee,ae)};$(re,ee=>{t(l)&&ee(de)})}v(fe,B)};let P=c(()=>a("Events")),K=c(()=>a("Filter")),X=c(()=>a("No data")),ie=c(()=>a("Events")),ue=c(()=>a("{count} events",{},t(k).length));ja(C,{get rows(){return t(k)},get scope(){return t(p)},get columns(){return t(y)},getId:fe=>String(fe.seq),get caption(){return t(P)},get filterLabel(){return t(K)},get emptyText(){return t(X)},get toolbarLabel(){return t(ie)},get countText(){return t(ue)},tableId:"events",testId:"events-table",get selected(){return t(s)},set selected(fe){u(s,fe,!0)},toolbar:D,status:x,$$slots:{toolbar:!0,status:!0}})}v(r,T),ct()}var VT=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button hmm-group-delete-danger svelte-o268m5" data-testid="group-delete-apply"> </button>',1),zT=_("<li> </li>"),jT=_('<ul class="hmm-group-delete-members svelte-o268m5" data-testid="group-delete-members"></ul>'),WT=_('<p class="hmm-group-delete-subject svelte-o268m5" data-testid="group-delete-subject"> </p> <p class="hmm-group-delete-note svelte-o268m5"> </p> <!>',1);function KT(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"group",3,void 0);const s=Bt(),i=s.i18n.t;let o=N(!1);st(()=>{n()&&u(o,!1)});function l(p){const b=s.names.name(p.id);return b===void 0?p.id:`${b} (${p.id})`}async function f(){if(t(o)||a()===void 0)return;u(o,!0);const p=await s.groups.remove(a().id);u(o,!1),p&&n(!1)}{const p=g=>{var k=VT(),y=De(k),S=m(y,!0),T=d(y,2),I=m(T,!0);E((C,D)=>{h(S,C),T.disabled=t(o)||a()===void 0,h(I,D)},[()=>i("Cancel"),()=>i("Delete")]),ne("click",y,()=>n(!1)),ne("click",T,()=>{f()}),v(g,k)};let b=c(()=>i("Delete group"));Tn(r,{get title(){return t(b)},width:"480px",testId:"group-delete-dialog",get open(){return n()},set open(g){n(g)},buttons:p,children:(g,k)=>{var y=At(),S=De(y);{var T=I=>{var C=WT(),D=De(C),x=m(D,!0),P=d(D,2),K=m(P,!0),X=d(P,2);{var ie=ue=>{var fe=jT();je(fe,21,()=>a().members,B=>B.id,(B,re)=>{var de=zT(),ee=m(de,!0);E(ae=>h(ee,ae),[()=>l(t(re))]),v(B,de)}),v(ue,fe)};$(X,ue=>{a().members.length>0&&ue(ie)})}E(ue=>{h(x,a().name),h(K,ue)},[()=>i("The members leave the group and the virtual device {device} is removed",{device:a().device})]),v(I,C)};$(S,I=>{a()!==void 0&&I(T)})}v(g,y)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click"]);var YT=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="group-save"> </button>',1),qT=_("<option> </option>"),$T=_('<select class="hmm-select" data-testid="group-type"></select>'),XT=_('<span data-testid="group-type"> </span>'),QT=_('<div class="hmm-group-row svelte-1gbrlxm"><span> </span> <span class="hmm-mono" data-testid="group-device"> </span></div>'),ZT=_('<p class="hmm-group-muted svelte-1gbrlxm"> </p>'),JT=_('<p class="hmm-group-muted svelte-1gbrlxm" data-testid="group-no-candidates"> </p>'),eR=_('<li class="svelte-1gbrlxm"><label class="hmm-group-member svelte-1gbrlxm"><input type="checkbox"/> <span class="hmm-group-member-name svelte-1gbrlxm"> </span> <span class="hmm-mono hmm-group-member-id svelte-1gbrlxm"> </span> <span class="hmm-group-member-type svelte-1gbrlxm"> </span></label></li>'),tR=_('<ul class="hmm-group-list svelte-1gbrlxm" data-testid="group-candidates"></ul>'),nR=_('<li class="hmm-group-member svelte-1gbrlxm"><span class="hmm-group-member-name svelte-1gbrlxm"> </span> <span class="hmm-mono hmm-group-member-id svelte-1gbrlxm"> </span> <span class="hmm-group-member-type svelte-1gbrlxm"> </span></li>'),rR=_('<p class="hmm-group-heading svelte-1gbrlxm"> </p> <ul class="hmm-group-list hmm-group-list-muted svelte-1gbrlxm" data-testid="group-connected"></ul>',1),aR=_('<div class="hmm-group-form svelte-1gbrlxm"><label class="hmm-group-row svelte-1gbrlxm"><span> </span> <input class="hmm-input" maxlength="64" data-testid="group-name"/></label> <label class="hmm-group-row svelte-1gbrlxm"><span> </span> <!></label> <!> <p class="hmm-group-heading svelte-1gbrlxm"> </p> <!> <!></div>');function sR(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"group",3,void 0);const s=Bt(),i=s.i18n.t;let o=N(""),l=N(""),f=N(He([])),p=N(He([])),b=N(He([])),g=N(He([])),k=N(He([])),y=N(!1),S=N(!1),T=N(He([]));const I=c(()=>a()===void 0),C=c(()=>t(p).find(de=>de.id===t(l))),D=c(()=>{if(t(I))return t(C)?.assignable??[];const de=new Set(t(k).map(ee=>ee.id));return[...t(k),...t(b).filter(ee=>!de.has(ee.id))]}),x=c(()=>t(I)?t(C)?.leftover??[]:t(g)),P=c(()=>a()!==void 0&&t(o).trim()!==a().name),K=c(()=>!t(I)&&[...t(f)].sort().join(`
|
|
18
|
-
`)!==t(T).join(`
|
|
19
|
-
`)),X=c(()=>!t(S)&&!t(y)&&t(o).trim()!==""&&(t(I)?t(l)!=="":t(P)||t(K)));st(()=>{n()&&(u(S,!1),ie(a()))});async function ie(de){u(y,!0),u(o,de?.name??"",!0),u(f,[],!0),u(p,[],!0),u(b,[],!0),u(g,[],!0),u(k,[],!0),u(T,[],!0);try{if(de===void 0){u(p,await s.groups.types(),!0),u(l,t(p)[0]?.id??"",!0);return}const ee=await s.groups.detail(de.id);if(ee===void 0){n(!1);return}u(o,ee.name,!0),u(l,ee.type,!0),u(p,ee.types.map(ae=>({...ae,assignable:[],leftover:[]})),!0),u(k,ee.members,!0),u(b,ee.assignable,!0),u(g,ee.leftover,!0),u(f,ee.members.map(ae=>ae.id),!0),u(T,[...t(f)].sort(),!0)}finally{u(y,!1)}}function ue(de){u(l,de,!0),u(f,[],!0)}function fe(de,ee){u(f,ee?[...t(f).filter(ae=>ae!==de),de]:t(f).filter(ae=>ae!==de),!0)}function B(de){const ee=s.names.name(de.id);return ee===void 0?de.id:ee}async function re(){if(!t(X))return;u(S,!0);const de=t(o).trim(),ee=a()===void 0?await s.groups.create(de,t(l),t(f)):await s.groups.update(a().id,t(P)?de:void 0,t(K)?t(f):void 0);u(S,!1),ee!==void 0&&n(!1)}{const de=ae=>{var Y=YT(),Z=De(Y),te=m(Z,!0),Re=d(Z,2),J=m(Re,!0);E((ye,xe)=>{h(te,ye),Re.disabled=!t(X),h(J,xe)},[()=>i("Cancel"),()=>t(I)?i("Create"):i("Save")]),ne("click",Z,()=>n(!1)),ne("click",Re,()=>{re()}),v(ae,Y)};let ee=c(()=>t(I)?i("New group"):i("Edit group"));Tn(r,{get title(){return t(ee)},width:"620px",minHeight:360,testId:"group-dialog",get open(){return n()},set open(ae){n(ae)},buttons:de,children:(ae,Y)=>{var Z=aR(),te=w(Z),Re=w(te),J=m(Re,!0),ye=d(Re,2),xe=d(te,2),ge=w(xe),V=m(ge,!0),pe=d(ge,2);{var ve=G=>{var L=$T();je(L,21,()=>t(p),M=>M.id,(M,he)=>{var Te=qT(),Pe=m(Te,!0),Ve={};E(Ye=>{h(Pe,Ye),Ve!==(Ve=t(he).id)&&(Te.value=(Te.__value=Ve)??"")},[()=>i(t(he).label)]),v(M,Te)});var A;qt(L),E(()=>{L.disabled=t(y)||t(p).length===0,A!==(A=t(l))&&(L.value=(L.__value=A)??"",Ln(L,A))}),ne("change",L,M=>ue(M.currentTarget.value)),v(G,L)},Q=G=>{var L=XT(),A=m(L,!0);E(M=>h(A,M),[()=>i(t(C)?.label??t(l))]),v(G,L)};$(pe,G=>{t(I)?G(ve):G(Q,-1)})}var oe=d(xe,2);{var F=G=>{var L=QT(),A=w(L),M=m(A,!0),he=d(A,2),Te=m(he,!0);E(Pe=>{h(M,Pe),h(Te,a().device)},[()=>i("Virtual device")]),v(G,L)};$(oe,G=>{a()!==void 0&&G(F)})}var W=d(oe,2),O=m(W,!0),z=d(W,2);{var ce=G=>{var L=ZT(),A=m(L,!0);E(M=>h(A,M),[()=>i("Loading")]),v(G,L)},me=G=>{var L=JT(),A=m(L,!0);E(M=>h(A,M),[()=>i("There are no other devices available")]),v(G,L)},be=G=>{var L=tR();je(L,21,()=>t(D),A=>A.id,(A,M)=>{var he=eR(),Te=w(he),Pe=w(Te),Ve=d(Pe,2),Ye=m(Ve,!0),ot=d(Ve,2),Je=m(ot,!0),Se=d(ot,2),we=m(Se,!0);E((j,U)=>{Nr(Pe,j),R(Pe,"data-testid",`group-member-${t(M).id}`),h(Ye,U),h(Je,t(M).id),h(we,t(M).type)},[()=>t(f).includes(t(M).id),()=>B(t(M))]),ne("change",Pe,j=>fe(t(M).id,j.currentTarget.checked)),v(A,he)}),v(G,L)};$(z,G=>{t(y)?G(ce):t(D).length===0?G(me,1):G(be,-1)})}var Ee=d(z,2);{var le=G=>{var L=rR(),A=De(L),M=m(A,!0),he=d(A,2);je(he,21,()=>t(x),Te=>Te.id,(Te,Pe)=>{var Ve=nR(),Ye=w(Ve),ot=m(Ye,!0),Je=d(Ye,2),Se=m(Je,!0),we=d(Je,2),j=m(we,!0);E(U=>{h(ot,U),h(Se,t(Pe).id),h(j,t(Pe).type)},[()=>B(t(Pe))]),v(Te,Ve)}),E(Te=>h(M,Te),[()=>i("Already connected devices")]),v(G,L)};$(Ee,G=>{!t(y)&&t(x).length>0&&G(le)})}E((G,L,A)=>{h(J,G),ye.disabled=t(y),h(V,L),h(O,A)},[()=>i("Group name"),()=>i("Group type"),()=>i("Addable devices")]),ne("keydown",ye,G=>{G.key==="Enter"&&re()}),An(ye,()=>t(o),G=>u(o,G)),v(ae,Z)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click","keydown","change"]);var iR=_('<p class="hmm-groups-unavailable svelte-v7q9p3" data-testid="groups-unavailable"> </p>'),oR=_("<!> <!> <!> <!>",1),lR=_('<span class="hmm-groups-pending svelte-v7q9p3" data-testid="groups-pending"> </span>'),dR=_('<span class="hmm-groups-none svelte-v7q9p3"> </span>'),cR=_("<span><!></span>"),uR=_('<div class="hmm-page svelte-v7q9p3"><div class="hmm-page-grid svelte-v7q9p3"><!></div></div> <!> <!>',1);function fR(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t,s=c(()=>n.groups);let i=N(He([])),o=N(!1),l=N(void 0),f=N(!1),p=N(void 0);const b=c(()=>t(s).groups.find(ee=>String(ee.id)===t(i)[0])),g=c(()=>n.app.session!==null&&n.app.session.level<8),k=c(()=>t(g)?a("Needs the administrator role on the system"):void 0);st(()=>{t(s).offered&&t(s).load()});function y(ee){const ae=n.names.name(ee.id);return ae===void 0?ee.id:`${ae} (${ee.id})`}function S(ee){return ee.members.map(y).join(", ")}function T(ee){return a(ee.typeLabel)}function I(){u(l,void 0),u(o,!0)}function C(ee){ee!==void 0&&(u(l,ee,!0),u(o,!0))}function D(ee){ee!==void 0&&(u(p,ee,!0),u(f,!0))}const x=c(()=>t(s).devicesToConfigure.length===0?"":a("Configuration pending: {list}",{list:t(s).devicesToConfigure.map(y).join(", ")})),P=c(()=>[{key:"name",label:a("Group name"),width:220,copy:"name"},{key:"type",label:a("Group type"),width:180,value:T},{key:"device",label:a("Virtual device"),width:140,mono:!0,copy:"address"},{key:"members",label:a("Members"),width:420,sortable:!1,value:S}]);var K=uR(),X=De(K),ie=w(X),ue=w(ie);{var fe=ee=>{var ae=iR(),Y=m(ae);E(Z=>h(Y,`${Z??""}${t(s).state?.message===void 0?"":`: ${t(s).state.message}`}`),[()=>a("Heating groups are not available here")]),v(ee,ae)},B=ee=>{{const ae=ge=>{var V=oR(),pe=De(V);{let F=c(()=>a("Refresh"));Ct(pe,{get title(){return t(F)},icon:"⟳",get busy(){return t(s).loading},testId:"groups-refresh",onclick:()=>{t(s).load()}})}var ve=d(pe,2);{let F=c(()=>a("New group"));Ct(ve,{get title(){return t(F)},icon:"+",get disabled(){return t(g)},get reason(){return t(k)},testId:"groups-new",onclick:I})}var Q=d(ve,2);{let F=c(()=>a("Edit group")),W=c(()=>t(g)||t(b)===void 0),O=c(()=>t(k)??a("Select a group"));Ct(Q,{get title(){return t(F)},icon:"✎",get disabled(){return t(W)},get reason(){return t(O)},testId:"groups-edit",onclick:()=>C(t(b))})}var oe=d(Q,2);{let F=c(()=>a("Delete group")),W=c(()=>t(g)||t(b)===void 0),O=c(()=>t(k)??a("Select a group"));Ct(oe,{get title(){return t(F)},icon:"✕",get disabled(){return t(W)},get reason(){return t(O)},testId:"groups-delete",onclick:()=>D(t(b))})}v(ge,V)},Y=ge=>{var V=At(),pe=De(V);{var ve=Q=>{{let oe=c(()=>a("The direct device connections of these devices are still being configured"));ai(Q,{get text(){return t(oe)},testId:"groups-pending-tooltip",children:(F,W)=>{var O=lR(),z=m(O,!0);E(()=>h(z,t(x))),v(F,O)},$$slots:{default:!0}})}};$(pe,Q=>{t(x)!==""&&Q(ve)})}v(ge,V)},Z=(ge,V=Wn,pe=Wn)=>{var ve=At(),Q=De(ve);{var oe=O=>{var z=cR(),ce=w(z);{var me=Ee=>{var le=dR(),G=m(le,!0);E(L=>h(G,L),[()=>a("There are no devices in the group")]),v(Ee,le)},be=Ee=>{var le=tr();E(G=>h(le,G),[()=>S(V())]),v(Ee,le)};$(ce,Ee=>{V().members.length===0?Ee(me):Ee(be,-1)})}E(Ee=>R(z,"data-testid",Ee),[()=>`group-members-${String(V().id)}`]),v(O,z)},F=O=>{var z=tr();E(ce=>h(z,ce),[()=>pe().value(V())??""]),v(O,z)},W=O=>{var z=tr();E(()=>h(z,V()[pe().key]??"")),v(O,z)};$(Q,O=>{pe().key==="members"?O(oe):pe().value?O(F,1):O(W,-1)})}v(ge,ve)};let te=c(()=>a("Heating groups")),Re=c(()=>a("Filter")),J=c(()=>t(s).loaded?a("No groups yet"):a("Loading")),ye=c(()=>a("Heating groups")),xe=c(()=>a("{count} groups",{},t(s).groups.length));ja(ee,{get rows(){return t(s).groups},get scope(){return n.app.selectedInterface},get columns(){return t(P)},getId:ge=>String(ge.id),get caption(){return t(te)},get filterLabel(){return t(Re)},get emptyText(){return t(J)},get toolbarLabel(){return t(ye)},get countText(){return t(xe)},onactivate:ge=>t(g)?void 0:C(ge),tableId:"groups",testId:"groups-table",get selected(){return t(i)},set selected(ge){u(i,ge,!0)},toolbar:ae,status:Y,cell:Z,$$slots:{toolbar:!0,status:!0,cell:!0}})}};$(ue,ee=>{t(s).offered?ee(B,-1):ee(fe)})}var re=d(X,2);sR(re,{get group(){return t(l)},get open(){return t(o)},set open(ee){u(o,ee,!0)}});var de=d(re,2);KT(de,{get group(){return t(p)},get open(){return t(f)},set open(ee){u(f,ee,!0)}}),v(r,K),ct()}var hR=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="remove-link-stage"> </button> <button type="button" class="hmm-button hmm-danger svelte-1suervc" data-testid="remove-link-confirm"> </button>',1),mR=_('<li><span class="hmm-mono"> </span> → <span class="hmm-mono"> </span> <span class="hmm-remove-names svelte-1suervc"> </span></li>'),vR=_('<p> </p> <ul class="hmm-remove-links svelte-1suervc"></ul>',1);function pR(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"links",19,()=>[]);const s=Bt(),i=s.i18n.t;let o=N(!1);function l(){const p=a().map(b=>({...b}));s.changeSet.stage({kind:"linkRemove",interfaceName:s.app.selectedInterface,title:i("{count} links",{},p.length),pairs:p,calls:p.map(b=>`removeLink(${b.sender}, ${b.receiver})`),lines:[]}),n(!1)}async function f(){u(o,!0);const p=await s.links.remove(s.app.selectedInterface,a());u(o,!1),p===a().length&&n(!1)}{const p=g=>{var k=hR(),y=De(k),S=m(y,!0),T=d(y,2),I=m(T,!0),C=d(T,2),D=m(C,!0);E((x,P,K)=>{h(S,x),T.disabled=t(o)||a().length===0,h(I,P),C.disabled=t(o)||a().length===0,h(D,K)},[()=>i("Cancel"),()=>i("Add to pending changes"),()=>i("Delete")]),ne("click",y,()=>n(!1)),ne("click",T,l),ne("click",C,()=>{f()}),v(g,k)};let b=c(()=>i("Delete link"));Tn(r,{get title(){return t(b)},width:"620px",testId:"remove-link-dialog",get open(){return n()},set open(g){n(g)},buttons:p,children:(g,k)=>{var y=vR(),S=De(y),T=m(S,!0),I=d(S,2);je(I,21,a,C=>`${C.sender}->${C.receiver}`,(C,D)=>{var x=mR(),P=w(x),K=m(P,!0),X=d(P,2),ie=m(X,!0),ue=d(X,2),fe=m(ue);E((B,re)=>{h(K,t(D).sender),h(ie,t(D).receiver),h(fe,`${B??""} → ${re??""}`)},[()=>s.nameOf(t(D).sender),()=>s.nameOf(t(D).receiver)]),v(C,x)}),E(C=>h(T,C),[()=>i("{count} links",{},a().length)]),v(g,y)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click"]);var xu=_("<!> <!>",1),gR=_("<!> <!> <!> <!> <!>",1),bR=_('<button type="button" class="hmm-links-handover svelte-1pum174" data-testid="links-filter-handover"> </button>'),_R=_('<span class="hmm-links-defective svelte-1pum174" data-testid="links-defective"> </span>'),ER=_('<span class="hmm-link-broken svelte-1pum174" role="img">⚠</span>'),yR=_('<div class="hmm-page svelte-1pum174"><div class="hmm-page-grid svelte-1pum174"><!></div></div> <!> <!> <!> <!>',1);function SR(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t;let s=N(He([])),i=N(!1),o=N(0),l=N(0),f=N(void 0),p=N(""),b=N(!1),g=N(!1),k=N(!1),y=N(""),S=N("");const T=c(()=>n.app.selectedInterface),I=c(()=>n.interfaces.typeOf(t(T)));st(()=>{const ge=n.app.linksFilter;ge!==""&&(u(p,ge,!0),n.app.linksFilter="")});const C=c(()=>n.links.of(t(T))),D=c(()=>n.links.defective(t(T)).length),x=c(()=>t(I)==="BidCos-RF"),P=c(()=>n.devices.index(t(T))),K=c(()=>t(P)===void 0||rh(t(P)).length>0),X=c(()=>t(s).map(ge=>{const[V,pe]=ge.split("->");return V===void 0||pe===void 0?void 0:{sender:V,receiver:pe}}).filter(ge=>ge!==void 0)),ie=c(()=>t(X).length===1?t(X)[0]:void 0),ue=c(()=>[{key:"senderIcon",label:"",width:hi,fixed:!0,sortable:!1,filterable:!1,align:"center",value:()=>""},{key:"senderName",label:`${a("Sender")} ${a("Name")}`,width:170,copy:"name",value:ge=>n.nameOf(ge.SENDER)},{key:"SENDER",label:"SENDER",width:140,mono:!0,copy:"address"},{key:"senderType",label:"TYPE",width:130,value:ge=>n.devices.index(t(T))?.get(ge.SENDER)?.TYPE??""},{key:"receiverIcon",label:"",width:hi,fixed:!0,sortable:!1,filterable:!1,align:"center",value:()=>""},{key:"receiverName",label:`${a("Receiver")} ${a("Name")}`,width:170,copy:"name",value:ge=>n.nameOf(ge.RECEIVER)},{key:"RECEIVER",label:"RECEIVER",width:140,mono:!0,copy:"address"},{key:"receiverType",label:"TYPE",width:130,value:ge=>n.devices.index(t(T))?.get(ge.RECEIVER)?.TYPE??""},{key:"FLAGS",label:"FLAGS",width:48,align:"center",sortable:!1,value:ge=>Tl(ge).broken?"broken":""},{key:"NAME",label:"NAME",width:180},{key:"DESCRIPTION",label:"DESCRIPTION"}]);function fe(ge){const V=n.devices.index(t(T));return V?.parentOf(ge)?.TYPE??V?.get(ge)?.TYPE??""}function B(ge){u(y,ge.sender,!0),u(S,ge.receiver,!0),u(k,!0)}function re(ge,V){u(f,{sender:ge.SENDER,receiver:ge.RECEIVER},!0),u(o,V.clientX,!0),u(l,V.clientY,!0),u(i,!0)}const de=c(()=>[{id:"edit",label:a("Edit link")},{id:"short",label:a("Activate short"),disabled:!t(x)},{id:"long",label:a("Activate long"),disabled:!t(x)},{id:"sep",separator:!0},{id:"delete",label:a("Delete link"),danger:!0}]);async function ee(ge){const V=t(f);if(V)switch(ge){case"edit":B(V);break;case"short":await n.links.activate(t(T),V.receiver,V.sender,!1);break;case"long":await n.links.activate(t(T),V.receiver,V.sender,!0);break;case"delete":u(s,[`${V.sender}->${V.receiver}`],!0),u(g,!0);break}}var ae=yR(),Y=De(ae),Z=w(Y),te=w(Z);{const ge=O=>{var z=gR(),ce=De(z);{let L=c(()=>a("Add link")),A=c(()=>!t(K)),M=c(()=>a("No channel of this interface can be the sender of a link"));Oh(ce,{get caption(){return t(L)},icon:"+",get disabled(){return t(A)},get reason(){return t(M)},testId:"links-add",onclick:()=>u(b,!0)})}var me=d(ce,2);{let L=c(()=>a("Edit link")),A=c(()=>t(ie)===void 0),M=c(()=>a("Select one link"));Ct(me,{get title(){return t(L)},icon:"⚙",get disabled(){return t(A)},get reason(){return t(M)},testId:"links-edit",onclick:()=>t(ie)&&B(t(ie))})}var be=d(me,2);{var Ee=L=>{var A=xu(),M=De(A);{let Te=c(()=>a("Activate short")),Pe=c(()=>t(ie)===void 0),Ve=c(()=>a("Select one link"));Ct(M,{get title(){return t(Te)},icon:"▸",get disabled(){return t(Pe)},get reason(){return t(Ve)},testId:"links-play-short",onclick:()=>t(ie)&&void n.links.activate(t(T),t(ie).receiver,t(ie).sender,!1)})}var he=d(M,2);{let Te=c(()=>a("Activate long")),Pe=c(()=>t(ie)===void 0),Ve=c(()=>a("Select one link"));Ct(he,{get title(){return t(Te)},icon:"▸▸",get disabled(){return t(Pe)},get reason(){return t(Ve)},testId:"links-play-long",onclick:()=>t(ie)&&void n.links.activate(t(T),t(ie).receiver,t(ie).sender,!0)})}v(L,A)};$(be,L=>{t(x)&&L(Ee)})}var le=d(be,2);{let L=c(()=>a("Delete link")),A=c(()=>t(X).length===0),M=c(()=>a("Please choose one or more links"));Ct(le,{get title(){return t(L)},icon:"🗑",get disabled(){return t(A)},get reason(){return t(M)},testId:"links-delete",onclick:()=>u(g,!0)})}var G=d(le,2);{let L=c(()=>a("Refresh"));Ct(G,{get title(){return t(L)},icon:"⟳",testId:"links-refresh",onclick:()=>{n.links.load(t(T))}})}v(O,z)},V=O=>{var z=xu(),ce=De(z);{var me=le=>{var G=bR(),L=m(G);E(A=>{R(G,"title",A),h(L,`${t(p)??""} ✕`)},[()=>a("Filter")]),ne("click",G,()=>u(p,"")),v(le,G)};$(ce,le=>{t(p)!==""&&le(me)})}var be=d(ce,2);{var Ee=le=>{var G=_R(),L=m(G,!0);E(A=>h(L,A),[()=>a("{count} defective links",{},t(D))]),v(le,G)};$(be,le=>{t(D)>0&&le(Ee)})}v(O,z)},pe=(O,z=Wn,ce=Wn)=>{var me=At(),be=De(me);{var Ee=A=>{{let M=c(()=>fe(z().SENDER)),he=c(()=>n.host.deviceImageUrl(fe(z().SENDER)));mi(A,{get deviceType(){return t(M)},get src(){return t(he)}})}},le=A=>{{let M=c(()=>fe(z().RECEIVER)),he=c(()=>n.host.deviceImageUrl(fe(z().RECEIVER)));mi(A,{get deviceType(){return t(M)},get src(){return t(he)}})}},G=A=>{const M=c(()=>Tl(z()));var he=At(),Te=De(he);{var Pe=Ve=>{var Ye=ER();E((ot,Je)=>{R(Ye,"aria-label",ot),R(Ye,"title",Je)},[()=>a("Defective link"),()=>`${t(M).senderBroken?"SENDER_BROKEN ":""}${t(M).receiverBroken?"RECEIVER_BROKEN":""}`.trim()]),v(Ve,Ye)};$(Te,Ve=>{t(M).broken&&Ve(Pe)})}v(A,he)},L=A=>{var M=tr();E(he=>h(M,he),[()=>ce().value?ce().value(z())??"":z()[ce().key]??""]),v(A,M)};$(be,A=>{ce().key==="senderIcon"?A(Ee):ce().key==="receiverIcon"?A(le,1):ce().key==="FLAGS"?A(G,2):A(L,-1)})}v(O,me)};let ve=c(()=>a("Links")),Q=c(()=>a("Filter")),oe=c(()=>a("No data")),F=c(()=>a("Links")),W=c(()=>a("{count} links",{},t(C).length));ja(te,{get rows(){return t(C)},get scope(){return t(T)},get columns(){return t(ue)},getId:O=>`${O.SENDER}->${O.RECEIVER}`,get caption(){return t(ve)},get filterLabel(){return t(Q)},get emptyText(){return t(oe)},onactivate:O=>B({sender:O.SENDER,receiver:O.RECEIVER}),onrowcontextmenu:re,get toolbarLabel(){return t(F)},get countText(){return t(W)},tableId:"links",testId:"links-table",get selected(){return t(s)},set selected(O){u(s,O,!0)},get filter(){return t(p)},set filter(O){u(p,O,!0)},toolbar:ge,status:V,cell:pe,$$slots:{toolbar:!0,status:!0,cell:!0}})}var Re=d(Y,2);{let ge=c(()=>a("Links"));Pd(Re,{get items(){return t(de)},get x(){return t(o)},get y(){return t(l)},get label(){return t(ge)},testId:"links-menu",onselect:V=>{ee(V)},get open(){return t(i)},set open(V){u(i,V,!0)}})}var J=d(Re,2);Uh(J,{onedit:ge=>B(ge),get open(){return t(b)},set open(ge){u(b,ge,!0)}});var ye=d(J,2);pR(ye,{get links(){return t(X)},get open(){return t(g)},set open(ge){u(g,ge,!0)}});var xe=d(ye,2);qh(xe,{get sender(){return t(y)},get receiver(){return t(S)},get open(){return t(k)},set open(ge){u(k,ge,!0)}}),v(r,ae),ct()}St(["click"]);function Xh(r){let e=0;const n=new Set;for(const a of r){const s=Dd(a),i=s?.address??a,o=i.indexOf(":");o>=0&&(e+=1);const l=o>=0?i.slice(0,o):i;n.add(s?`${s.interfaceName}.${l}`:l)}return{devices:n.size,channels:e}}function Qh(r,e,n){const a=r[n];return a?ki(n,a).map(s=>({id:s.path,kind:"node",enumId:n,path:s.path,name:s.node.name,depth:s.depth,hasChildren:(s.node.children?.length??0)>0,...Xh(Eo(e,s.path))})):[]}function kR(r,e,n){return Object.entries(r).map(([a,s])=>{const i=Qh(r,e,a);return{id:a,kind:"enum",enumId:a,name:wh(a,s,n),depth:0,hasChildren:i.length>0,...Xh(Eo(e,a)),nodes:i}})}function wR(r){const e=new Map;for(const n of r){e.set(n.id,n);for(const a of n.nodes??[])e.set(a.id,a)}return e}function AR(r,e=14){return Math.max(0,r-1)*e}function TR(r,e){const n=e.split("/")[0]??"";return Fh(r,n).filter(a=>AS(e,a.path))}function RR(r,e){return Eo(r,e.kind==="enum"?e.enumId:e.path??"")}function Iu(r,e,n){return{...r,en:e,[n]:e}}var xR=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button hmm-meta-delete-danger svelte-1af2i6v"> </button>',1),IR=_('<p class="hmm-meta-delete-empty svelte-1af2i6v"> </p>'),DR=_("<li> </li>"),NR=_('<p class="hmm-meta-delete-title svelte-1af2i6v"> </p> <ul class="hmm-meta-delete-members svelte-1af2i6v"></ul>',1),CR=_('<p class="hmm-meta-delete-subject svelte-1af2i6v"> </p> <!>',1);function PR(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"labelOf",3,void 0),s=H(e,"testId",3,"meta-delete"),i=N(!1);st(()=>{n()&&u(i,!1)});async function o(){if(t(i))return;u(i,!0);const l=await e.onapply(e.members.length>0);u(i,!1),l&&n(!1)}{const l=p=>{var b=xR(),g=De(b),k=m(g,!0),y=d(g,2),S=m(y,!0);E((T,I)=>{h(k,T),y.disabled=t(i),R(y,"data-testid",`${s()}-apply`),h(S,I)},[()=>e.t("Cancel"),()=>e.members.length===0?e.t("Delete"):e.t("Delete and detach")]),ne("click",g,()=>n(!1)),ne("click",y,()=>{o()}),v(p,b)};let f=c(()=>`${s()}-dialog`);Tn(r,{get title(){return e.title},width:"480px",get testId(){return t(f)},get open(){return n()},set open(p){n(p)},buttons:l,children:(p,b)=>{var g=CR(),k=De(g),y=m(k,!0),S=d(k,2);{var T=C=>{var D=IR(),x=m(D,!0);E(P=>h(x,P),[()=>e.t("Nothing is assigned here")]),v(C,D)},I=C=>{var D=NR(),x=De(D),P=m(x,!0),K=d(x,2);je(K,20,()=>e.members,X=>X,(X,ie)=>{var ue=DR(),fe=m(ue,!0);E(B=>h(fe,B),[()=>a()===void 0?ie:a()(ie)]),v(X,ue)}),E(X=>{h(P,X),R(K,"data-testid",`${s()}-members`)},[()=>e.t("Still assigned here - the assignments are removed with the node:")]),v(C,D)};$(S,C=>{e.members.length===0?C(T):C(I,-1)})}E(()=>h(y,e.subject)),v(p,g)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click"]);var MR=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button"> </button>',1),OR=_("<option> </option>"),LR=_('<p class="hmm-meta-move-subject svelte-wmqa0d"> </p> <label class="hmm-meta-move-row svelte-wmqa0d"><span> </span> <select class="hmm-select hmm-meta-move-select svelte-wmqa0d"><option> </option><!></select></label>',1);function FR(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"current",3,""),s=H(e,"testId",3,"meta-move"),i=N(""),o=N(!1);st(()=>{n()&&(u(i,a()),u(o,!1))});async function l(){if(t(o))return;u(o,!0);const f=await e.onapply(t(i)===""?null:t(i));u(o,!1),f&&n(!1)}{const f=b=>{var g=MR(),k=De(g),y=m(k,!0),S=d(k,2),T=m(S,!0);E((I,C)=>{h(y,I),S.disabled=t(o),R(S,"data-testid",`${s()}-apply`),h(T,C)},[()=>e.t("Cancel"),()=>e.t("Apply")]),ne("click",k,()=>n(!1)),ne("click",S,()=>{l()}),v(b,g)};let p=c(()=>`${s()}-dialog`);Tn(r,{get title(){return e.title},width:"440px",get testId(){return t(p)},get open(){return n()},set open(b){n(b)},buttons:f,children:(b,g)=>{var k=LR(),y=De(k),S=m(y,!0),T=d(y,2),I=w(T),C=m(I,!0),D=d(I,2),x=w(D),P=m(x,!0);x.value=x.__value="";var K=d(x);je(K,17,()=>e.targets,X=>X.path,(X,ie)=>{var ue=OR(),fe=m(ue,!0),B={};E(re=>{h(fe,re),B!==(B=t(ie).path)&&(ue.value=(ue.__value=B)??"")},[()=>Wl(t(ie)," ")]),v(X,ue)}),qt(D),E((X,ie,ue,fe)=>{h(S,e.subject),h(C,X),R(D,"size",ie),R(D,"aria-label",ue),R(D,"data-testid",`${s()}-parent`),h(P,fe)},[()=>e.t("Move to"),()=>Math.min(12,Math.max(4,e.targets.length+1)),()=>e.t("Move to"),()=>e.t("Top level")]),kr(D,()=>t(i),X=>u(i,X)),v(b,k)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click"]);var GR=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button"> </button>',1),UR=_('<label class="hmm-meta-name-row svelte-ue9nlv"><span> </span> <input class="hmm-input hmm-meta-name-input svelte-ue9nlv"/></label>');function BR(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"initial",3,""),s=H(e,"testId",3,"meta-name"),i=N(""),o=N(!1),l=N(void 0);st(()=>{n()&&(u(i,a()),u(o,!1),queueMicrotask(()=>{t(l)?.focus(),t(l)?.select()}))});async function f(){const p=t(i).trim();if(p===""||t(o))return;u(o,!0);const b=await e.onapply(p);u(o,!1),b&&n(!1)}{const p=g=>{var k=GR(),y=De(k),S=m(y,!0),T=d(y,2),I=m(T,!0);E((C,D,x)=>{h(S,C),T.disabled=D,R(T,"data-testid",`${s()}-apply`),h(I,x)},[()=>e.t("Cancel"),()=>t(o)||t(i).trim()==="",()=>e.t("Apply")]),ne("click",y,()=>n(!1)),ne("click",T,()=>{f()}),v(g,k)};let b=c(()=>`${s()}-dialog`);Tn(r,{get title(){return e.title},width:"440px",get testId(){return t(b)},get open(){return n()},set open(g){n(g)},buttons:p,children:(g,k)=>{var y=UR(),S=w(y),T=m(S,!0),I=d(S,2);cn(I,C=>u(l,C),()=>t(l)),E(()=>{h(T,e.label),R(I,"aria-label",e.label),R(I,"data-testid",`${s()}-input`)}),ne("keydown",I,C=>{C.key==="Enter"&&(C.preventDefault(),f())}),An(I,()=>t(i),C=>u(i,C)),v(g,y)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click","keydown"]);var HR=_("<!> <!> <!> <!> <!> <!> <!>",1),VR=_("<span> </span>"),zR=_('<span class="hmm-meta-path svelte-147hcfo"> </span>'),jR=_('<div class="hmm-page svelte-147hcfo"><div class="hmm-page-grid svelte-147hcfo"><!></div></div> <!> <!> <!>',1);function WR(r,e){dt(e,!0);let n=H(e,"enumId",3,void 0),a=H(e,"flat",3,!1),s=H(e,"available",3,!0),i=H(e,"writable",3,!0),o=H(e,"language",3,"en"),l=H(e,"labelOf",3,void 0),f=H(e,"emptyText",3,void 0),p=H(e,"countText",3,void 0),b=H(e,"tableId",3,void 0),g=H(e,"testId",3,"meta-table"),k=N(He([])),y=N(He([])),S=N(!1),T=N(!1),I=N("add"),C=N(""),D=N(""),x=N(""),P=N(!1),K=N(!1),X=N(void 0);const ie=c(()=>n()===void 0),ue=c(()=>!a()),fe=c(()=>n()===void 0?kR(e.enums,e.objects,o()):Qh(e.enums,e.objects,n())),B=c(()=>wR(t(fe))),re=c(()=>t(k).length===1?t(B).get(t(k)[0]??""):void 0),de=c(()=>t(re)?.kind==="node"?t(re):void 0),ee=[];st(()=>{if(!t(ie))return;const A=Object.keys(e.enums).filter(M=>!ee.includes(M));A.length>0&&(ee.push(...A),u(y,[...t(y),...A],!0))}),st(()=>{t(k).some(A=>!t(B).has(A))&&u(k,t(k).filter(A=>t(B).has(A)),!0)});const ae=c(()=>s()?i()?e.t("Select a row"):e.t("The store does not take writes"):e.t("No store connected")),Y=c(()=>s()&&i()&&!t(S)),Z=c(()=>n()??t(re)?.enumId),te=c(()=>t(Y)&&t(Z)!==void 0),Re=c(()=>t(Y)&&t(ie)?e.t("Select a taxonomy or a node"):t(ae)),J=c(()=>t(Y)?e.t("Select a node"):t(ae)),ye=c(()=>[{key:"name",label:e.t("Name"),width:240,sortable:!t(ie),value:A=>A.name},{key:"devices",label:e.t("Devices"),width:96,align:"right",filterable:!1,sortable:!t(ie),value:A=>A.devices===0?"":A.devices},{key:"channels",label:e.t("Channels"),width:96,align:"right",filterable:!1,sortable:!t(ie),value:A=>A.channels===0?"":A.channels},{key:"path",label:e.t("Path"),width:220,mono:!0,sortable:!t(ie),value:A=>A.path??A.enumId}]);function xe(A){return A.nodes??[]}function ge(A,M){switch(u(I,A,!0),u(X,M,!0),A){case"enum":u(C,e.t("New taxonomy"),!0),u(D,e.t("Name"),!0),u(x,"");break;case"add":u(C,e.t("Add"),!0),u(D,e.t("Name"),!0),u(x,"");break;case"add-below":u(C,e.t("Add below"),!0),u(D,`${e.t("Add below")}: ${M?.name??""}`),u(x,"");break;case"rename":u(C,e.t("Rename"),!0),u(D,e.t("New name"),!0),u(x,M?.name??"",!0);break}u(T,!0)}async function V(A){u(S,!0);try{switch(t(I)){case"enum":return await e.actions.createEnum(Ah(A,Object.keys(e.enums)),Iu(void 0,A,o()));case"add":return t(Z)===void 0?!1:await e.actions.createNode(t(Z),void 0,A)!==void 0;case"add-below":{const M=t(X);return M?.path===void 0?!1:await e.actions.createNode(M.enumId,M.path,A)!==void 0}case"rename":{const M=t(X);return M===void 0?!1:M.kind==="enum"?await e.actions.renameEnum(M.enumId,Iu(e.enums[M.enumId]?.name,A,o())):await e.actions.renameNode(M.path??"",A)}}}finally{u(S,!1)}}function pe(A){A?.path!==void 0&&(u(X,A,!0),u(P,!0))}async function ve(A){const M=t(X);if(M?.path===void 0)return!1;u(S,!0);try{return await e.actions.moveNode(M.path,A)}finally{u(S,!1)}}function Q(A){A!==void 0&&(u(X,A,!0),u(K,!0))}async function oe(A){const M=t(X);if(M===void 0)return!1;u(S,!0);try{return M.kind==="enum"?await e.actions.deleteEnum(M.enumId,A):await e.actions.deleteNode(M.path??"",A)}finally{u(S,!1)}}async function F(){u(S,!0),await e.actions.refresh(),u(S,!1)}function W(A){t(Y)&&ge("rename",A)}const O=c(()=>t(X)?.path===void 0?void 0:t(X)),z=c(()=>t(X)===void 0?[]:RR(e.objects,t(X)));var ce=jR(),me=De(ce),be=w(me),Ee=w(be);{const A=we=>{var j=HR(),U=De(j);{var Ne=Ke=>{{let Xe=c(()=>e.t("New taxonomy")),Qe=c(()=>!t(Y));Ct(Ke,{get title(){return t(Xe)},icon:"⊞",get disabled(){return t(Qe)},get reason(){return t(ae)},testId:"meta-new-enum",onclick:()=>ge("enum",void 0)})}};$(U,Ke=>{t(ie)&&Ke(Ne)})}var Le=d(U,2);{let Ke=c(()=>e.t("Add")),Xe=c(()=>!t(te));Ct(Le,{get title(){return t(Ke)},icon:"+",get disabled(){return t(Xe)},get reason(){return t(Re)},testId:"meta-add",onclick:()=>ge("add",t(re))})}var ze=d(Le,2);{var _e=Ke=>{{let Xe=c(()=>e.t("Add below")),Qe=c(()=>!t(Y)||t(de)===void 0);Ct(Ke,{get title(){return t(Xe)},icon:"⊕",get disabled(){return t(Qe)},get reason(){return t(J)},testId:"meta-add-below",onclick:()=>ge("add-below",t(de))})}};$(ze,Ke=>{t(ue)&&Ke(_e)})}var Ie=d(ze,2);{let Ke=c(()=>e.t("Rename")),Xe=c(()=>!t(Y)||t(re)===void 0);Ct(Ie,{get title(){return t(Ke)},icon:"✎",get disabled(){return t(Xe)},get reason(){return t(ae)},testId:"meta-rename",onclick:()=>ge("rename",t(re))})}var Ce=d(Ie,2);{var Fe=Ke=>{{let Xe=c(()=>e.t("Move")),Qe=c(()=>!t(Y)||t(de)===void 0);Ct(Ke,{get title(){return t(Xe)},icon:"⤴",get disabled(){return t(Qe)},get reason(){return t(J)},testId:"meta-move",onclick:()=>pe(t(de))})}};$(Ce,Ke=>{t(ue)&&Ke(Fe)})}var Oe=d(Ce,2);{let Ke=c(()=>e.t("Delete")),Xe=c(()=>!t(Y)||t(re)===void 0);Ct(Oe,{get title(){return t(Ke)},icon:"🗑",get disabled(){return t(Xe)},get reason(){return t(ae)},testId:"meta-delete",onclick:()=>Q(t(re))})}var qe=d(Oe,2);{let Ke=c(()=>e.t("Refresh")),Xe=c(()=>!s());Ct(qe,{get title(){return t(Ke)},icon:"⟳",get disabled(){return t(Xe)},get busy(){return t(S)},testId:"meta-refresh",onclick:()=>{F()}})}v(we,j)},M=(we,j=Wn,U=Wn)=>{var Ne=At(),Le=De(Ne);{var ze=Ce=>{var Fe=VR();let Oe,qe;var Ke=m(Fe,!0);E(Xe=>{Oe=yt(Fe,1,"hmm-meta-name svelte-147hcfo",null,Oe,{"hmm-meta-name-enum":j().kind==="enum"}),R(Fe,"data-depth",j().depth),qe=On(Fe,"",qe,{"padding-left":Xe}),h(Ke,j().name)},[()=>`${String(AR(j().depth))}px`]),v(Ce,Fe)},_e=Ce=>{var Fe=zR(),Oe=m(Fe,!0);E(()=>h(Oe,j().path??j().enumId)),v(Ce,Fe)},Ie=Ce=>{var Fe=tr();E(Oe=>h(Fe,Oe),[()=>U().value?U().value(j())??"":""]),v(Ce,Fe)};$(Le,Ce=>{U().key==="name"?Ce(ze):U().key==="path"?Ce(_e,1):Ce(Ie,-1)})}v(we,Ne)};let he=c(()=>t(ie)?xe:void 0),Te=c(()=>n()??"metadata"),Pe=c(()=>n()===void 0?e.t("Metadata"):n()==="room"?e.t("Rooms"):e.t("Functions")),Ve=c(()=>e.t("Filter")),Ye=c(()=>s()?f()??"":e.t("No store connected")),ot=c(()=>e.t("No row matches the filter")),Je=c(()=>e.t("Clear filter")),Se=c(()=>p()===void 0?void 0:p()(t(fe).length));ja(Ee,{get rows(){return t(fe)},get columns(){return t(ye)},getId:we=>we.id,get subRows(){return t(he)},get scope(){return t(Te)},get caption(){return t(Pe)},get filterLabel(){return t(Ve)},get emptyText(){return t(Ye)},get noMatchText(){return t(ot)},get clearFilterLabel(){return t(Je)},showingText:(we,j)=>e.t("Showing {shown} of {total}",{shown:we,total:j}),get countText(){return t(Se)},onactivate:W,get tableId(){return b()},get testId(){return g()},get selected(){return t(k)},set selected(we){u(k,we,!0)},get expanded(){return t(y)},set expanded(we){u(y,we,!0)},toolbar:A,cell:M,$$slots:{toolbar:!0,cell:!0}})}var le=d(me,2);BR(le,{get title(){return t(C)},get label(){return t(D)},get initial(){return t(x)},get t(){return e.t},onapply:V,testId:"meta-name",get open(){return t(T)},set open(A){u(T,A,!0)}});var G=d(le,2);{let A=c(()=>e.t("Move")),M=c(()=>t(O)?.name??""),he=c(()=>t(O)?.path===void 0?[]:TR(e.enums,t(O).path)),Te=c(()=>t(O)?.path===void 0?"":J_(t(O).path)??"");FR(G,{get title(){return t(A)},get subject(){return t(M)},get targets(){return t(he)},get current(){return t(Te)},get t(){return e.t},onapply:ve,testId:"meta-move",get open(){return t(P)},set open(Pe){u(P,Pe,!0)}})}var L=d(G,2);{let A=c(()=>e.t("Delete")),M=c(()=>t(X)?.name??"");PR(L,{get title(){return t(A)},get subject(){return t(M)},get members(){return t(z)},get labelOf(){return l()},get t(){return e.t},onapply:oe,testId:"meta-delete",get open(){return t(K)},set open(he){u(K,he,!0)}})}v(r,ce),ct()}function nl(r,e){dt(e,!0);let n=H(e,"enumId",3,void 0);const a=Bt(),s=a.i18n.t,i=c(()=>a.taxonomy),o={createEnum:(b,g)=>a.taxonomy.createEnum(b,g),renameEnum:(b,g)=>a.taxonomy.renameEnum(b,g),deleteEnum:(b,g)=>a.taxonomy.deleteEnum(b,g),createNode:(b,g,k)=>a.taxonomy.createNode(b,g,k),renameNode:(b,g)=>a.taxonomy.renameNode(b,g),moveNode:(b,g)=>a.taxonomy.moveNode(b,g),deleteNode:(b,g)=>a.taxonomy.deleteNode(b,g),refresh:()=>a.taxonomy.refresh()};function l(b){const g=Dd(b)?.address??b,k=a.names.name(g);return k===void 0?g:`${k} (${g})`}const f=c(()=>n()==="room"?s("No rooms yet"):n()==="function"?s("No functions yet"):s("No taxonomies yet"));function p(b){switch(n()){case"room":return s("{count} rooms",{},b);case"function":return s("{count} functions",{},b);default:return s("{count} taxonomies",{},b)}}{let b=c(()=>n()===void 0?"meta":`meta-${n()}`),g=c(()=>n()===void 0?"meta-table":`meta-table-${n()}`);WR(r,{get enums(){return t(i).enums},get objects(){return t(i).objects},get enumId(){return n()},get flat(){return t(i).flatOnly},get available(){return t(i).available},get writable(){return t(i).writable},get language(){return a.i18n.language},get t(){return s},get actions(){return o},labelOf:l,get emptyText(){return t(f)},countText:p,get tableId(){return t(b)},get testId(){return t(g)}})}ct()}var KR=_('<span class="hmm-rssi hmm-rssi-unknown svelte-1wk3r6l" data-rssi="unknown">—</span>'),YR=_("<span></span>"),qR=_('<span role="img"><span class="hmm-rssi-value"> </span><span class="hmm-rssi-bars svelte-1wk3r6l" aria-hidden="true"></span></span>');function Cs(r,e){dt(e,!0);let n=H(e,"value",3,void 0),a=H(e,"labelOf",3,k=>k.label),s=H(e,"testId",3,void 0);const i=c(()=>V_(n())),o=c(()=>t(i)===void 0?void 0:`${String(n())} dBm · ${a()(t(i))}`),l=[1,2,3,4];var f=At(),p=De(f);{var b=k=>{var y=KR();E(()=>R(y,"data-testid",s())),v(k,y)},g=k=>{var y=qR(),S=w(y),T=m(S,!0),I=d(S);je(I,20,()=>l,C=>C,(C,D)=>{var x=YR();let P;E(()=>P=yt(x,1,"hmm-rssi-bar svelte-1wk3r6l",null,P,{"hmm-rssi-bar-off":D>t(i).bars})),v(C,x)}),E(()=>{yt(y,1,`hmm-rssi hmm-rssi-${t(i).step??""}`,"svelte-1wk3r6l"),R(y,"title",t(o)),R(y,"aria-label",t(o)),R(y,"data-rssi",t(i).step),R(y,"data-bars",t(i).bars),R(y,"data-testid",s()),h(T,n())}),v(k,y)};$(p,k=>{t(i)===void 0?k(b):k(g,-1)})}v(r,f),ct()}var $R=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="best-receiver-confirm"> </button>',1),XR=_('<p class="hmm-best-receiver-empty svelte-1gd5w9r" data-testid="best-receiver-empty"> </p>'),QR=_('<tr><td class="svelte-1gd5w9r"><input type="checkbox"/></td><td class="svelte-1gd5w9r"> </td><td class="hmm-mono svelte-1gd5w9r"> </td><td class="svelte-1gd5w9r"> </td><td class="svelte-1gd5w9r"><!></td><td class="svelte-1gd5w9r"> </td><td class="svelte-1gd5w9r"><!></td><td class="hmm-best-receiver-gain svelte-1gd5w9r"> </td><td class="hmm-best-receiver-note svelte-1gd5w9r"><!></td></tr>'),ZR=_('<div class="hmm-best-receiver-scroll svelte-1gd5w9r"><table class="hmm-best-receiver-table svelte-1gd5w9r"><thead><tr><th class="svelte-1gd5w9r"></th><th class="svelte-1gd5w9r"> </th><th class="svelte-1gd5w9r">ADDRESS</th><th class="svelte-1gd5w9r"> </th><th class="svelte-1gd5w9r">→ dBm</th><th class="svelte-1gd5w9r"> </th><th class="svelte-1gd5w9r">→ dBm</th><th class="svelte-1gd5w9r"> </th><th class="svelte-1gd5w9r"></th></tr></thead><tbody></tbody></table></div>'),JR=_('<p class="hmm-best-receiver-progress svelte-1gd5w9r" data-testid="best-receiver-progress"> </p>'),ex=_('<p class="hmm-best-receiver-intro svelte-1gd5w9r"> </p> <div class="hmm-best-receiver-margin svelte-1gd5w9r"><label class="svelte-1gd5w9r"><span> </span> <input class="hmm-input svelte-1gd5w9r" type="number" min="0" max="60" step="1" data-testid="best-receiver-margin"/> <span>dB</span></label> <span class="hmm-best-receiver-hint svelte-1gd5w9r"> </span></div> <!> <p class="hmm-best-receiver-rest svelte-1gd5w9r" data-testid="best-receiver-rest"> </p> <!>',1);function tx(r,e){dt(e,!0);let n=H(e,"open",15,!1);const a=Bt(),s=a.i18n.t;let i=N(He(Il)),o=N(He({})),l=N(!1),f=N(He({done:0,total:0}));const p=c(()=>a.app.selectedInterface),b=c(()=>a.devices.devices(t(p))),g=c(()=>a.radio.gateways(t(p))),k=c(()=>a.radio.proposeReceivers(t(p),t(b),t(i))),y=c(()=>t(k).filter(P=>P.verdict==="switch"||P.verdict==="marginal"||P.verdict==="unheard")),S=c(()=>({keep:t(k).filter(P=>P.verdict==="keep").length,unmeasured:t(k).filter(P=>P.verdict==="unmeasured").length,roaming:t(k).filter(P=>P.verdict==="roaming").length})),T=c(()=>t(y).filter(P=>I(P)));function I(P){return t(o)[P.address]??P.verdict==="switch"}function C(P){if(P===void 0||P==="")return"—";const K=t(g).find(X=>X.ADDRESS===P);return K?Is(K):P}function D(P){const K=Number.parseInt(P,10);u(i,Number.isFinite(K)?Math.max(0,K):Il,!0),u(o,{},!0)}st(()=>{n()&&(u(o,{},!0),u(f,{done:0,total:0},!0))});async function x(){const P=t(T).filter(X=>X.best!==void 0);u(l,!0),u(f,{done:0,total:P.length},!0);let K=0;for(const X of P)await a.radio.setBidcosInterface(t(p),X.address,X.best??"",!1)||(K+=1),u(f,{done:t(f).done+1,total:P.length},!0);await a.devices.load(t(p),{refresh:!0}),await a.radio.load(t(p)),u(o,{},!0),u(l,!1),K===0&&n(!1)}{const P=X=>{var ie=$R(),ue=De(ie),fe=m(ue,!0),B=d(ue,2),re=m(B,!0);E((de,ee)=>{ue.disabled=t(l),h(fe,de),B.disabled=t(l)||t(T).length===0,h(re,ee)},[()=>s("Cancel"),()=>s("Assign ({count})",{count:t(T).length})]),ne("click",ue,()=>n(!1)),ne("click",B,()=>{x()}),v(X,ie)};let K=c(()=>s("Best receiver"));Tn(r,{get title(){return t(K)},width:"800px",testId:"best-receiver-dialog",get open(){return n()},set open(X){n(X)},buttons:P,children:(X,ie)=>{var ue=ex(),fe=De(ue),B=m(fe,!0),re=d(fe,2),de=w(re),ee=w(de),ae=m(ee,!0),Y=d(ee,2),Z=d(de,2),te=m(Z,!0),Re=d(re,2);{var J=ve=>{var Q=XR(),oe=m(Q,!0);E(F=>h(oe,F),[()=>s("Every device is on the receiver that hears it best")]),v(ve,Q)},ye=ve=>{var Q=ZR(),oe=w(Q),F=w(oe),W=w(F),O=d(w(W)),z=m(O,!0),ce=d(O,2),me=m(ce,!0),be=d(ce,2),Ee=m(be,!0),le=d(be,2),G=m(le,!0),L=d(F);je(L,21,()=>t(y),A=>A.address,(A,M)=>{var he=QR(),Te=w(he),Pe=w(Te),Ve=d(Te),Ye=m(Ve,!0),ot=d(Ve),Je=m(ot,!0),Se=d(ot),we=m(Se,!0),j=d(Se),U=w(j);Cs(U,{get value(){return t(M).configuredTx},labelOf:Xe=>s(Xe.label)});var Ne=d(j),Le=m(Ne,!0),ze=d(Ne),_e=w(ze);Cs(_e,{get value(){return t(M).bestTx},labelOf:Xe=>s(Xe.label)});var Ie=d(ze),Ce=m(Ie,!0),Fe=d(Ie),Oe=w(Fe);{var qe=Xe=>{var Qe=tr();E(it=>h(Qe,it),[()=>s("Below the margin")]),v(Xe,Qe)},Ke=Xe=>{var Qe=tr();E(it=>h(Qe,it),[()=>s("Not heard by the configured receiver")]),v(Xe,Qe)};$(Oe,Xe=>{t(M).verdict==="marginal"?Xe(qe):t(M).verdict==="unheard"&&Xe(Ke,1)})}E((Xe,Qe,it,bt,vt)=>{R(he,"data-testid",`best-receiver-row-${t(M).address}`),R(he,"data-verdict",t(M).verdict),Nr(Pe,Xe),Pe.disabled=t(l),R(Pe,"aria-label",t(M).address),R(Pe,"data-testid",`best-receiver-check-${t(M).address}`),h(Ye,Qe),h(Je,t(M).address),h(we,it),h(Le,bt),R(Ie,"data-testid",`best-receiver-gain-${t(M).address}`),h(Ce,vt)},[()=>I(t(M)),()=>a.nameOf(t(M).address),()=>C(t(M).configured),()=>C(t(M).best),()=>t(M).gain===void 0?"—":`+${String(t(M).gain)} dB`]),ne("change",Pe,Xe=>{u(o,{...t(o),[t(M).address]:Xe.currentTarget.checked},!0)}),v(A,he)}),E((A,M,he,Te)=>{h(z,A),h(me,M),h(Ee,he),h(G,Te)},[()=>s("Name"),()=>s("Configured"),()=>s("Proposed"),()=>s("Gain")]),v(ve,Q)};$(Re,ve=>{t(y).length===0?ve(J):ve(ye,-1)})}var xe=d(Re,2),ge=m(xe,!0),V=d(xe,2);{var pe=ve=>{var Q=JR(),oe=m(Q,!0);E(F=>h(oe,F),[()=>s("{done} of {total} assigned",t(f))]),v(ve,Q)};$(V,ve=>{t(l)&&ve(pe)})}E((ve,Q,oe,F)=>{h(B,ve),h(ae,Q),an(Y,t(i)),Y.disabled=t(l),h(te,oe),h(ge,F)},[()=>s("Which interface receives each device best, from the levels the interfaces last measured. Nothing is written until you confirm; every device is one setBidcosInterface."),()=>s("Margin"),()=>s("A switch is proposed only when the best interface receives the device at least this much better than the configured one - two reads of the same link differ by a few dB."),()=>s("Not listed: {keep} on their best receiver, {unmeasured} without a measurement, {roaming} roaming",t(S))]),ne("input",Y,ve=>D(ve.currentTarget.value)),v(X,ue)},$$slots:{buttons:!0,default:!0}})}ct()}St(["click","input","change"]);var nx=_('<button type="button" class="hmm-button"> </button> <button type="button" class="hmm-button" data-testid="set-interface-confirm"> </button>',1),rx=_("<option> </option>"),ax=_('<span class="hmm-set-interface-name svelte-1s1hrfj"> </span>'),sx=_('<tr><td class="hmm-set-interface-mark svelte-1s1hrfj"> </td><td class="svelte-1s1hrfj"><span class="hmm-mono"> </span> <!></td><td class="svelte-1s1hrfj"><!></td><td class="svelte-1s1hrfj"><!></td></tr>'),ix=_('<p class="hmm-set-interface-best-note svelte-1s1hrfj" data-testid="set-interface-best"> </p>'),ox=_('<table class="hmm-set-interface-table svelte-1s1hrfj"><thead><tr><th class="svelte-1s1hrfj"></th><th class="svelte-1s1hrfj"> </th><th class="svelte-1s1hrfj">← dBm</th><th class="svelte-1s1hrfj">→ dBm</th></tr></thead><tbody></tbody></table> <!>',1),lx=_('<p class="hmm-set-interface-device svelte-1s1hrfj"> <span class="hmm-mono"> </span></p> <p class="hmm-set-interface-current svelte-1s1hrfj"> <span class="hmm-mono" data-testid="set-interface-current"> </span></p> <label class="hmm-set-interface-row svelte-1s1hrfj"><span> </span> <select class="hmm-select" data-testid="set-interface-select"></select></label> <label class="hmm-set-interface-row svelte-1s1hrfj"><span>ROAMING</span> <input type="checkbox" data-testid="set-interface-roaming"/></label> <!>',1);function dx(r,e){dt(e,!0);let n=H(e,"open",15,!1),a=H(e,"address",3,""),s=H(e,"preset",3,"");const i=Bt(),o=i.i18n.t;let l=N(""),f=N(!1),p=N(!1);const b=c(()=>i.app.selectedInterface),g=c(()=>i.devices.index(t(b))?.get(a())),k=c(()=>i.radio.gateways(t(b))),y=c(()=>i.radio.bestGatewayFor(t(b),a())),S=c(()=>t(g)?.INTERFACE??"");st(()=>{if(!n())return;const I=t(k).some(C=>C.ADDRESS===s());u(l,I?s():t(g)?.INTERFACE??t(k)[0]?.ADDRESS??"",!0),u(f,t(g)===void 0?!1:yd(t(g)),!0)});async function T(){u(p,!0);const I=await i.radio.setBidcosInterface(t(b),a(),t(l),t(f));I&&await i.devices.load(t(b),{refresh:!0}),u(p,!1),I&&n(!1)}Tn(r,{title:"setBidcosInterface",width:"560px",testId:"set-interface-dialog",get open(){return n()},set open(C){n(C)},buttons:C=>{var D=nx(),x=De(D),P=m(x,!0),K=d(x,2),X=m(K,!0);E((ie,ue)=>{h(P,ie),K.disabled=t(p)||t(l)==="",h(X,ue)},[()=>o("Cancel"),()=>o("Apply")]),ne("click",x,()=>n(!1)),ne("click",K,()=>{T()}),v(C,D)},children:(C,D)=>{var x=lx(),P=De(x),K=w(P),X=d(K),ie=m(X,!0),ue=d(P,2),fe=w(ue),B=d(fe),re=m(B,!0),de=d(ue,2),ee=w(de),ae=m(ee,!0),Y=d(ee,2);je(Y,21,()=>t(k),ye=>ye.ADDRESS,(ye,xe)=>{var ge=rx(),V=m(ge),pe={};E(()=>{h(V,`${t(xe).ADDRESS??""}
|
|
20
|
-
${t(xe).DESCRIPTION??t(xe).TYPE??""}`),pe!==(pe=t(xe).ADDRESS)&&(ge.value=(ge.__value=pe)??"")}),v(ye,ge)}),qt(Y);var Z=d(de,2),te=d(w(Z),2),Re=d(Z,2);{var J=ye=>{var xe=ox(),ge=De(xe),V=w(ge),pe=w(V),ve=d(w(pe)),Q=m(ve,!0),oe=d(V);je(oe,21,()=>t(k),O=>O.ADDRESS,(O,z)=>{const ce=c(()=>i.radio.pair(t(b),a(),t(z).ADDRESS));var me=sx();let be;var Ee=w(me),le=m(Ee,!0),G=d(Ee),L=w(G),A=m(L,!0),M=d(L,2);{var he=Je=>{var Se=ax(),we=m(Se,!0);E(j=>h(we,j),[()=>Is(t(z))]),v(Je,Se)},Te=c(()=>Is(t(z))!==t(z).ADDRESS);$(M,Je=>{t(Te)&&Je(he)})}var Pe=d(G),Ve=w(Pe);{let Je=c(()=>t(ce)?.rx);Cs(Ve,{get value(){return t(Je)},labelOf:Se=>o(Se.label)})}var Ye=d(Pe),ot=w(Ye);{let Je=c(()=>t(ce)?.tx),Se=c(()=>`set-interface-tx-${t(z).ADDRESS}`);Cs(ot,{get value(){return t(Je)},labelOf:we=>o(we.label),get testId(){return t(Se)}})}E(Je=>{R(me,"data-testid",`set-interface-row-${t(z).ADDRESS}`),R(me,"aria-current",t(S)===t(z).ADDRESS?"true":void 0),be=yt(me,1,"svelte-1s1hrfj",null,be,{"hmm-set-interface-configured":t(S)===t(z).ADDRESS}),R(Ee,"title",Je),h(le,t(S)===t(z).ADDRESS?"◉":""),h(A,t(z).ADDRESS)},[()=>t(S)===t(z).ADDRESS?o("Configured"):void 0]),v(O,me)});var F=d(ge,2);{var W=O=>{var z=ix(),ce=m(z,!0);E(me=>h(ce,me),[()=>o("Heard best by {address}",{address:t(y).address})]),v(O,z)};$(F,O=>{t(y)&&O(W)})}E(O=>h(Q,O),[()=>o("Interface")]),v(ye,xe)};$(Re,ye=>{t(k).length>0&&ye(J)})}E((ye,xe,ge)=>{h(K,`${ye??""} `),h(ie,a()),h(fe,`${xe??""}: `),h(re,t(S)===""?"—":t(S)),h(ae,ge)},[()=>i.nameOf(a()),()=>o("Configured"),()=>o("Interface")]),kr(Y,()=>t(l),ye=>u(l,ye)),ur(te,()=>t(f),ye=>u(f,ye)),v(C,x)},$$slots:{buttons:!0,default:!0}}),ct()}St(["click"]);var cx=_("<!> <!>",1),ux=_("<!> <!> <!>",1),fx=_('<button type="button"> </button>'),hx=_('<div class="hmm-page svelte-7f5yr6"><div class="hmm-radio-gateways svelte-7f5yr6"><!></div> <div class="hmm-page-grid svelte-7f5yr6"><!></div></div> <!> <!>',1);function mx(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t;let s=N(He([])),i=N(He([])),o=N(He([])),l=N(!1),f=N(!1),p=N(""),b=N("");const g=c(()=>n.app.selectedInterface),k=c(()=>n.radio.gateways(t(g))),y=c(()=>n.interfaces.typeOf(t(g)).startsWith("BidCos"));function S(Z,te=""){u(p,Z,!0),u(b,te,!0),u(l,!0)}const T=c(()=>n.devices.devices(t(g))),I=c(()=>t(i).length===1?t(i)[0]??"":""),C=[{key:"ADDRESS",label:"ADDRESS",width:180,mono:!0,copy:"address"},{key:"DESCRIPTION",label:"DESCRIPTION",width:220},{key:"TYPE",label:"TYPE",width:130},{key:"FIRMWARE_VERSION",label:"FIRMWARE_VERSION",width:150},{key:"CONNECTED",label:"CONNECTED",width:110,align:"center",value:Z=>Z.CONNECTED===!0?"✔":"✕"},{key:"DEFAULT",label:"DEFAULT",width:90,align:"center",value:Z=>Z.DEFAULT===!0?"✔":""},{key:"DUTY_CYCLE",label:"DUTY_CYCLE",width:100,align:"right",value:Z=>Z.DUTY_CYCLE===void 0?"":`${Z.DUTY_CYCLE} %`},{key:"CARRIER_SENSE_LEVEL",label:"CARRIER_SENSE_LEVEL",align:"right"}],D=c(()=>[{key:"icon",label:"",width:hi,fixed:!0,sortable:!1,filterable:!1,align:"center",value:()=>""},{key:"name",label:a("Name"),width:180,copy:"name",value:Z=>n.nameOf(Z.ADDRESS)},{key:"ADDRESS",label:"ADDRESS",width:140,mono:!0,copy:"address"},{key:"TYPE",label:"TYPE",width:150},{key:"INTERFACE",label:"INTERFACE",width:140,mono:!0,hidden:!t(y)},{key:"RF_ADDRESS",label:"RF_ADDRESS",width:100,align:"right",value:Z=>Z.RF_ADDRESS===void 0?"":Z.RF_ADDRESS.toString(16).toUpperCase()},{key:"ROAMING",label:"ROAMING",width:90,align:"center",hidden:!t(y),value:Z=>yd(Z)?"✔":""},{key:"unreach",label:a("Unreach"),width:90,align:"right",filterable:!1,value:Z=>{const te=n.unreach.countOf(t(g),Z.ADDRESS);return te===0?"":te}},...t(k).flatMap(Z=>[{key:`rx:${Z.ADDRESS}`,label:"← dBm",width:90,align:"right",filterable:!1,value:te=>n.radio.pair(t(g),te.ADDRESS,Z.ADDRESS)?.rx??""},{key:`tx:${Z.ADDRESS}`,label:"→ dBm",width:90,align:"right",filterable:!1,value:te=>n.radio.pair(t(g),te.ADDRESS,Z.ADDRESS)?.tx??""},{key:`set:${Z.ADDRESS}`,label:"",hidden:!t(y),width:yy,fixed:!0,align:"center",sortable:!1,filterable:!1,value:te=>te.INTERFACE===Z.ADDRESS?"◉":""}])]),x=c(()=>t(k).map(Z=>({key:Z.ADDRESS,label:Z.ADDRESS,sublabel:Is(Z)===Z.ADDRESS?void 0:`(${Is(Z)})`,columns:t(y)?[`rx:${Z.ADDRESS}`,`tx:${Z.ADDRESS}`,`set:${Z.ADDRESS}`]:[`rx:${Z.ADDRESS}`,`tx:${Z.ADDRESS}`]}))),P=c(()=>[{key:"name",label:a("Name"),width:180,copy:"name",value:Z=>n.nameOf(Z.ADDRESS)},{key:"ADDRESS",label:a("Peer"),width:200,mono:!0,copy:"address"},{key:"rx",label:"← dBm",width:120,align:"right",filterable:!1,value:()=>""},{key:"tx",label:"→ dBm",width:120,align:"right",filterable:!1,value:()=>""}]);function K(Z){const te=n.devices.index(t(g));return n.radio.peersOf(t(g),Z.ADDRESS).map(Re=>te?.get(Re)??{ADDRESS:Re,TYPE:"",PARENT:Z.ADDRESS}).map(Re=>({...Re,PARENT:Z.ADDRESS}))}function X(Z){return n.devices.index(t(g))?.get(Z)?.ADDRESS??Z}async function ie(){await Promise.all([n.radio.load(t(g)),n.devices.load(t(g),{refresh:!0}),n.interfaces.load(),n.unreach.load()])}st(()=>{const Z=t(g);Z!==""&&n.radio.ensureMatrix(Z)}),st(()=>{n.unreach.counters.length===0&&n.unreach.load()});var ue=hx(),fe=De(ue),B=w(fe),re=w(B);{let Z=c(()=>a("Interfaces")),te=c(()=>a("Filter")),Re=c(()=>a("No data"));ja(re,{get rows(){return t(k)},get columns(){return C},getId:J=>J.ADDRESS,height:110,columnFilterRow:!1,get caption(){return t(Z)},get filterLabel(){return t(te)},get emptyText(){return t(Re)},tableId:"radio-interfaces",testId:"radio-gateways",get selected(){return t(s)},set selected(J){u(s,J,!0)}})}var de=d(B,2),ee=w(de);{const Z=ve=>{var Q=ux(),oe=De(Q);{let z=c(()=>a("Refresh")),ce=c(()=>n.radio.loading||n.devices.isLoading(t(g)));Ct(oe,{get title(){return t(z)},icon:"⟳",get busy(){return t(ce)},testId:"radio-refresh",onclick:()=>{ie()}})}var F=d(oe,2);{var W=z=>{var ce=cx(),me=De(ce);{let Ee=c(()=>t(I)===""),le=c(()=>a("Select a device"));Ct(me,{title:"setBidcosInterface",icon:"⇄",get disabled(){return t(Ee)},get reason(){return t(le)},testId:"radio-set-interface",onclick:()=>S(t(I))})}var be=d(me,2);{let Ee=c(()=>a("Assign the best receiver")),le=c(()=>t(k).length<2),G=c(()=>a("Only one interface"));Ct(be,{get title(){return t(Ee)},icon:"⇶",get disabled(){return t(le)},get reason(){return t(G)},testId:"radio-best-receivers",onclick:()=>u(f,!0)})}v(z,ce)};$(F,z=>{t(y)&&z(W)})}var O=d(F,2);{let z=c(()=>a("Reset the unreach counters")),ce=c(()=>n.unreach.of(t(g)).length===0),me=c(()=>a("No data"));Ct(O,{get title(){return t(z)},icon:"⟲",get disabled(){return t(ce)},get reason(){return t(me)},testId:"radio-reset-unreach",onclick:()=>{n.unreach.reset(t(g))}})}v(ve,Q)},te=(ve,Q=Wn,oe=Wn,F=Wn)=>{var W=At(),O=De(W);{var z=L=>{{let A=c(()=>n.host.deviceImageUrl(Q().TYPE));mi(L,{get deviceType(){return Q().TYPE},get src(){return t(A)}})}},ce=L=>{const A=c(()=>n.radio.pair(t(g),X(F().rootId),Q().ADDRESS));{let M=c(()=>oe().key==="rx"?t(A)?.rx:t(A)?.tx),he=c(()=>`rssi-${F().rootId}-${Q().ADDRESS}-${oe().key}`);Cs(L,{get value(){return t(M)},labelOf:Te=>a(Te.label),get testId(){return t(he)}})}},me=L=>{const A=c(()=>oe().key.slice(4)),M=c(()=>Q().INTERFACE===t(A));var he=fx();let Te;var Pe=m(he,!0);E(Ve=>{Te=yt(he,1,"hmm-receiver-mark svelte-7f5yr6",null,Te,{"hmm-receiver-configured":t(M)}),R(he,"aria-pressed",t(M)),R(he,"title",Ve),R(he,"data-testid",`receiver-${Q().ADDRESS}-${t(A)}`),h(Pe,t(M)?"◉":"○")},[()=>t(M)?`${a("Configured")}: ${t(A)}`:a("Use {interface} as receiver",{interface:t(A)})]),ne("click",he,Ve=>{Ve.stopPropagation(),S(Q().ADDRESS,t(A))}),v(L,he)},be=c(()=>oe().key.startsWith("set:")&&F().depth===0),Ee=L=>{const A=c(()=>oe().key.slice(3)),M=c(()=>n.radio.pair(t(g),Q().ADDRESS,t(A)));{let he=c(()=>oe().key.startsWith("rx:")?t(M)?.rx:t(M)?.tx),Te=c(()=>`rssi-${Q().ADDRESS}-${t(A)}-${oe().key.slice(0,2)}`);Cs(L,{get value(){return t(he)},labelOf:Pe=>a(Pe.label),get testId(){return t(Te)}})}},le=c(()=>oe().key.startsWith("rx:")||oe().key.startsWith("tx:")),G=L=>{var A=tr();E(M=>h(A,M),[()=>oe().value?oe().value(Q())??"":Q()[oe().key]??""]),v(L,A)};$(O,L=>{oe().key==="icon"?L(z):F().depth>0&&(oe().key==="rx"||oe().key==="tx")?L(ce,1):t(be)?L(me,2):t(le)?L(Ee,3):L(G,-1)})}v(ve,W)};let Re=c(()=>a("RSSI")),J=c(()=>a("Filter")),ye=c(()=>a("No data")),xe=c(()=>a("No row matches the filter")),ge=c(()=>a("Clear filter")),V=c(()=>a("RSSI")),pe=c(()=>a("{count} devices",{},t(T).length));ja(ee,{get rows(){return t(T)},get columns(){return t(D)},get columnGroups(){return t(x)},get subColumns(){return t(P)},get scope(){return t(g)},getId:ve=>ve.ADDRESS,subRows:K,get caption(){return t(Re)},get filterLabel(){return t(J)},get emptyText(){return t(ye)},get noMatchText(){return t(xe)},get clearFilterLabel(){return t(ge)},showingText:(ve,Q)=>a("Showing {shown} of {total}",{shown:ve,total:Q}),onactivate:ve=>S(ve.ADDRESS),get toolbarLabel(){return t(V)},get countText(){return t(pe)},tableId:"radio",subTableId:"radio-peers",testId:"radio-table",get selected(){return t(i)},set selected(ve){u(i,ve,!0)},get expanded(){return t(o)},set expanded(ve){u(o,ve,!0)},toolbar:Z,cell:te,$$slots:{toolbar:!0,cell:!0}})}var ae=d(fe,2);dx(ae,{get address(){return t(p)},get preset(){return t(b)},get open(){return t(l)},set open(Z){u(l,Z,!0)}});var Y=d(ae,2);tx(Y,{get open(){return t(f)},set open(Z){u(f,Z,!0)}}),v(r,ue),ct()}St(["click"]);function vx(r,e,n=[]){const a=new Map;for(const b of r)a.set(b.interfaceName,(a.get(b.interfaceName)??0)+1);const s=[...new Set([...n,...a.keys()])],i=a.get(e)??0,o=s.filter(b=>b!==e&&(a.get(b)??0)>0).map(b=>({interfaceName:b,count:a.get(b)??0})),l=s.indexOf(e),p=[...s.slice(l+1),...s.slice(0,Math.max(l,0))].find(b=>o.some(g=>g.interfaceName===b));return{own:i,total:r.length,others:o,next:p}}var px=_('<button type="button" class="hmm-total-button svelte-u6ol56" data-testid="messages-total"> </button>'),gx=_("<!> <!> <!>",1),rl=_("<span> </span>"),bx=_('<button type="button" class="hmm-inline-button svelte-u6ol56"> </button> <span hidden=""> </span>',1),_x=_('<div class="hmm-page svelte-u6ol56"><div class="hmm-page-grid svelte-u6ol56"><!></div></div>');function Ex(r,e){dt(e,!0);const n=Bt(),a=n.i18n.t;let s=N(He([])),i=N(!1);const o=c(()=>n.app.selectedInterface),l=c(()=>n.interfaces.typeOf(t(o)).startsWith("BidCos")),f=c(()=>!t(l)&&ci(t(o),n.interfaces.typeOf(t(o)))),p=c(()=>n.serviceMessages.of(t(o))),b=c(()=>n.serviceMessages.acknowledgeable(t(o))),g=c(()=>t(p).filter(B=>t(s).includes(T(B)))),k=c(()=>t(g).filter(B=>uo(B.datapoint))),y=c(()=>vx(n.serviceMessages.messages,t(o),n.interfaces.states.map(B=>B.name))),S=c(()=>t(y).next===void 0?"":a("Also on this box: {list}. Click to switch to {next}.",{list:t(y).others.map(B=>`${B.interfaceName} (${String(B.count)})`).join(", "),next:t(y).next}));function T(B){return`${B.address}/${B.datapoint}`}function I(B,re){return re?a("The CCU reports {datapoint} for this channel again: lifts the suppression (suppressServiceMessages with suppress=false).",{datapoint:B.datapoint}):a("The CCU stops reporting {datapoint} for this channel: the HmIP interface reports a value that raises no message (suppressServiceMessages). The device's other messages are not affected. Undo with “Unsuppress”.",{datapoint:B.datapoint})}function C(B){return n.devices.index(t(o))?.get(xs(B))?.TYPE??""}st(()=>{t(f)&&t(p).length>0&&n.serviceMessages.loadSuppressed(t(o))}),st(()=>{t(p).some(B=>typeof B.value=="number")&&n.serviceMessages.loadDescriptions(t(o))});function D(B){const re=n.serviceMessages.valueName(B);if(re===void 0)return io(B.value);const de=n.devices.index(t(o))?.get(B.address)?.TYPE??"";return n.meta.valueLabel(B.datapoint,re,de)}function x(B){const re=n.serviceMessages.valueName(B);return re===void 0?void 0:`${re} (${io(B.value)})`}async function P(B,re){u(i,!0);const de=await n.serviceMessages.suppress(t(o),B.address,B.datapoint,re);u(i,!1),de&&n.notices.push("info",`suppressServiceMessages ${B.address} ${B.datapoint} = ${re?"true":"false"}`)}const K=c(()=>[{key:"icon",label:"",width:hi,fixed:!0,sortable:!1,filterable:!1,align:"center",value:()=>""},{key:"name",label:a("Name"),width:220,copy:"name",value:B=>n.nameOf(B.address)},{key:"address",label:"ADDRESS",width:160,mono:!0,copy:"address"},{key:"device",label:`${a("Device")} ADDRESS`,width:140,mono:!0,value:B=>xs(B.address)},{key:"datapoint",label:a("Message"),width:180},{key:"value",label:a("Value"),width:160,value:D},{key:"explanation",label:"",sortable:!1,value:B=>{const re=Lh(B.datapoint,!t(l));return re===void 0?"":a(re)}},{key:"since",label:a("Since"),width:170,value:B=>Js(B.since)},...t(f)?[{key:"suppress",label:"",width:nu,minWidth:nu,keepMinWidth:!0,sortable:!1,filterable:!1,value:B=>n.serviceMessages.isSuppressed(B)?a("suppressed"):""}]:[]]);async function X(B){u(i,!0);const re=await n.serviceMessages.acknowledgeMany(B);u(i,!1),n.notices.push("info",a("{count} service messages",{},re))}var ie=_x(),ue=w(ie),fe=w(ue);{const B=Re=>{var J=At(),ye=De(J);{var xe=ge=>{const V=c(()=>t(y).next);ai(ge,{get text(){return t(S)},testId:"messages-total-tooltip",children:(pe,ve)=>{var Q=px(),oe=m(Q,!0);E(F=>h(oe,F),[()=>a("{count} of {total} on this box",{total:t(y).total},t(y).own)]),ne("click",Q,()=>{n.selectInterface(t(V))}),v(pe,Q)},$$slots:{default:!0}})};$(ye,ge=>{t(y).next!==void 0&&ge(xe)})}v(Re,J)},re=Re=>{var J=gx(),ye=De(J);{let V=c(()=>a("Refresh"));Ct(ye,{get title(){return t(V)},icon:"⟳",get busy(){return n.serviceMessages.loading},testId:"messages-refresh",onclick:()=>{n.serviceMessages.refresh(t(o))}})}var xe=d(ye,2);{let V=c(()=>a("Acknowledge service messages")),pe=c(()=>t(i)||t(k).length===0),ve=c(()=>a("Only STICKY_UNREACH and SABOTAGE can be acknowledged"));Ct(xe,{get title(){return t(V)},icon:"✔",get disabled(){return t(pe)},get reason(){return t(ve)},testId:"messages-ack",onclick:()=>{X(t(k))}})}var ge=d(xe,2);{let V=c(()=>a("Acknowledge all service messages")),pe=c(()=>t(i)||t(b).length===0),ve=c(()=>a("Only STICKY_UNREACH and SABOTAGE can be acknowledged"));Ct(ge,{get title(){return t(V)},icon:"✔✔",get disabled(){return t(pe)},get reason(){return t(ve)},testId:"messages-ack-all",onclick:()=>{X(t(b))}})}v(Re,J)},de=(Re,J=Wn,ye=Wn)=>{var xe=At(),ge=De(xe);{var V=W=>{{let O=c(()=>C(J().address)),z=c(()=>n.host.deviceImageUrl(C(J().address)));mi(W,{get deviceType(){return t(O)},get src(){return t(z)}})}},pe=W=>{var O=rl();let z;var ce=m(O,!0);E((me,be)=>{z=yt(O,1,"hmm-msg-name svelte-u6ol56",null,z,{"hmm-msg-ackable":me,"hmm-msg-rega":J().source==="rega"}),R(O,"title",be),R(O,"data-listed-by",J().source??"interface"),R(O,"data-testid",`message-${J().address}-${J().datapoint}`),h(ce,J().datapoint)},[()=>uo(J().datapoint),()=>J().source==="rega"?a("Listed by the CCU only; the interface no longer reports it"):void 0]),v(W,O)},ve=W=>{var O=rl(),z=m(O,!0);E((ce,me)=>{R(O,"title",ce),R(O,"data-testid",`message-value-${J().address}-${J().datapoint}`),h(z,me)},[()=>x(J()),()=>D(J())]),v(W,O)},Q=W=>{var O=rl(),z=m(O,!0);E((ce,me)=>{R(O,"title",ce),R(O,"data-testid",`message-since-${J().address}-${J().datapoint}`),R(O,"data-source",J().sinceSource??"local"),h(z,me)},[()=>J().sinceSource==="rega"?a("First reported, from the CCU"):J().sinceSource==="system"?a("Last changed, from the openccu-lite system"):a("First seen by the Homematic Manager"),()=>Js(J().since)]),v(W,O)},oe=W=>{const O=c(()=>n.serviceMessages.isSuppressed(J())),z=c(()=>I(J(),t(O))),ce=c(()=>`suppress-help-${J().address}-${J().datapoint}`);{let me=c(()=>`suppress-tooltip-${J().address}-${J().datapoint}`);ai(W,{get text(){return t(z)},get testId(){return t(me)},children:(be,Ee)=>{var le=bx(),G=De(le),L=m(G,!0),A=d(G,2),M=m(A,!0);E(he=>{G.disabled=t(i),R(G,"aria-describedby",t(ce)),R(G,"data-testid",`suppress-${J().address}-${J().datapoint}`),h(L,he),R(A,"id",t(ce)),h(M,t(z))},[()=>t(O)?a("Unsuppress"):a("Suppress")]),ne("click",G,he=>{he.stopPropagation(),P(J(),!t(O))}),v(be,le)},$$slots:{default:!0}})}},F=W=>{var O=tr();E(z=>h(O,z),[()=>ye().value?ye().value(J())??"":J()[ye().key]??""]),v(W,O)};$(ge,W=>{ye().key==="icon"?W(V):ye().key==="datapoint"?W(pe,1):ye().key==="value"?W(ve,2):ye().key==="since"?W(Q,3):ye().key==="suppress"?W(oe,4):W(F,-1)})}v(Re,xe)};let ee=c(()=>a("Service messages")),ae=c(()=>a("Filter")),Y=c(()=>a("No data")),Z=c(()=>a("Service messages")),te=c(()=>t(y).next===void 0?a("{count} service messages",{},t(p).length):void 0);ja(fe,{get rows(){return t(p)},get scope(){return t(o)},get columns(){return t(K)},getId:T,get caption(){return t(ee)},get filterLabel(){return t(ae)},get emptyText(){return t(Y)},get toolbarLabel(){return t(Z)},get countText(){return t(te)},tableId:"messages",testId:"messages-table",get selected(){return t(s)},set selected(Re){u(s,Re,!0)},status:B,toolbar:re,cell:de,$$slots:{status:!0,toolbar:!0,cell:!0}})}v(r,ie),ct()}St(["click"]);var yx=_('<span class="hmm-header-user svelte-1n46o8q" data-testid="session-user"> </span> <a class="hmm-header-logout svelte-1n46o8q" href="logout" data-testid="session-logout"> </a>',1),Sx=_('<button type="button" class="hmm-button hmm-header-changes" data-testid="change-set-open"> </button>'),kx=_('<div class="hmm-page-failed svelte-1n46o8q" data-testid="page-failed"><p> </p> <p class="hmm-page-failed-reason svelte-1n46o8q"> </p> <button type="button" class="hmm-button"> </button></div>'),wx=_('<p class="hmm-empty svelte-1n46o8q"> </p>'),Ax=_('<div class="hmm-app svelte-1n46o8q" data-testid="app"><header class="hmm-header svelte-1n46o8q"><!> <!> <div class="hmm-header-actions svelte-1n46o8q"><!> <!> <!> <!> <!> <!></div></header> <!> <main class="hmm-main svelte-1n46o8q"><div class="hmm-panel svelte-1n46o8q" role="tabpanel"><!></div></main> <!> <!> <!> <!> <!> <!></div>');function Tx(r,e){dt(e,!0);const n="https://github.com/hobbyquaker/homematic-manager",a=`${n}/releases`;let s=H(e,"stores",7);jg(Sr(()=>s())),Ep({columnWidths:Sr(()=>s().app.columnWidths),t:(V,pe)=>s().i18n.t(V,pe)});let i=N(!1);const o=c(()=>s().i18n.t),l=c(()=>s().app);function f(V){s().console.recall(V),t(l).selectedInterface!==V.interfaceName&&s().selectInterface(V.interfaceName),t(l).setTab("console")}const p={local:()=>t(o)("This profile"),occulite:()=>"occulited",rega:()=>"ReGaHSS"},b={devices:"Devices",groups:"Groups",links:"Links",rssi:"RSSI",console:"RPC Console",messages:"Service messages",events:"Events",rooms:"Rooms",functions:"Functions",metadata:"Metadata"},g=c(()=>{const V=s().taxonomy.state;if(V===void 0)return;const pe=p[V.provider]();return{id:pd,label:pe,mark:Wp(V),title:Kp(V,{label:pe,reachable:t(o)("Reachable"),unreachable:t(o)("Unreachable"),readOnly:t(o)("Read-only"),writable:t(o)("Writable"),detail:ve=>t(o)("revision {revision}, {count} objects",{revision:ve.revision,count:ve.objects}),certificate:ve=>t(o)("The certificate of {url} is not trusted ({code})",{url:ve.url,code:ve.code})}),selectable:V.reachable,provider:V.provider}}),k=c(()=>s().tabs.map(V=>({id:V,label:t(o)(b[V]),...V==="messages"?{badge:s().serviceMessages.countOf(t(l).selectedInterface)}:{}}))),y=c(()=>Object.fromEntries(s().interfaces.states.map(V=>{const pe=s().devices.index(V.name),ve=s().radio.gateways(V.name).map(Q=>Q.DUTY_CYCLE).filter(Q=>typeof Q=="number");return[V.name,{...pe===void 0?{}:{devices:pe.devices().length},...ve.length===0?{}:{dutyCycle:Math.max(...ve)}}]})));st(()=>{document.documentElement.lang=s().i18n.language});const S=c(()=>s().shell.theme??t(l).theme);st(()=>{const V=document.documentElement;t(S)==="system"?V.removeAttribute("data-theme"):V.setAttribute("data-theme",t(S)),s().host.setTheme(t(S))}),st(()=>s().host.onMenuAction(()=>{t(l).configDialogOpen=!0}));var T=Ax(),I=w(T),C=w(I);{let V=c(()=>t(o)("Select an interface")),pe=c(()=>t(o)("Interfaces")),ve=c(()=>t(o)("Connected")),Q=c(()=>t(o)("Not connected")),oe=c(()=>t(o)("Not present")),F=c(()=>t(o)("Not answering")),W=c(()=>t(o)("Retry now")),O=c(()=>t(o)("Subscribing")),z=c(()=>t(o)("Waiting")),ce=c(()=>t(o)("Reconnecting")),me=c(()=>t(o)("All interfaces are connected")),be=c(()=>t(o)("Not every interface is connected")),Ee=c(()=>t(o)("Port")),le=c(()=>t(l).config?.publishCallbackPorts===!0),G=c(()=>t(o)("Publish this port unchanged")),L=c(()=>t(o)("Use automatic"));Vp(C,{get interfaces(){return s().interfaces.states},get selected(){return t(l).selectedInterface},get host(){return t(l).host},get backendConnected(){return t(l).connected},get details(){return t(y)},get label(){return t(V)},get listLabel(){return t(pe)},get connectedText(){return t(ve)},get notConnectedText(){return t(Q)},get notPresentText(){return t(oe)},get notAnsweringText(){return t(F)},get retryText(){return t(W)},onretry:A=>{for(const M of A)s().interfaces.reconnect(M)},get subscribingText(){return t(O)},get waitingText(){return t(z)},get reconnectingText(){return t(ce)},get allConnectedText(){return t(me)},get someNotConnectedText(){return t(be)},get portLabel(){return t(Ee)},devicesLabel:A=>t(o)("{count} devices",{count:A},A),dutyCycleLabel:A=>t(o)("Duty cycle {value} %",{value:A}),get publishCallbackPorts(){return t(le)},callbackPortInUseLabel:A=>t(o)("Callback port {port} is in use",{port:String(A)}),callbackPortFailedLabel:A=>t(o)("Callback port {port} cannot be opened",{port:String(A)}),get publishPortText(){return t(G)},callbackWarningLabel:A=>A.reason==="notLocal"?t(o)("The callback address {address} is not an address of this machine; {auto} is used instead",{address:A.address,auto:A.auto}):t(o)("The callback address {address} is not in the CCU's network; the CCU may not reach it and send no events",{address:A.address}),get useAutomaticText(){return t(L)},onuseautomatic:()=>{t(l).useAutomaticCallback().then(A=>A?s().start():void 0)},testId:"interface-select",onselect:A=>{s().selectInterface(A)},get store(){return t(g)},storeTestId:"meta-indicator"})}var D=d(C,2);{let V=c(()=>t(o)("Devices"));wg(D,{get tabs(){return t(k)},get active(){return t(l).tab},get label(){return t(V)},onselect:pe=>t(l).setTab(pe)})}var x=d(D,2),P=w(x);{var K=V=>{var pe=yx(),ve=De(pe),Q=m(ve,!0),oe=d(ve,2),F=m(oe,!0);E((W,O)=>{R(ve,"title",W),h(Q,t(l).session.user),h(F,O)},[()=>t(o)("Logged in as {user}",{user:t(l).session.user}),()=>t(o)("Log out")]),v(V,pe)};$(P,V=>{t(l).session&&!s().shell.embedded&&V(K)})}var X=d(P,2);{var ie=V=>{var pe=Sx(),ve=m(pe);E(Q=>h(ve,`${Q??""} (${s().changeSet.count??""})`),[()=>t(o)("Pending changes")]),ne("click",pe,()=>u(i,!0)),v(V,pe)};$(X,V=>{s().changeSet.count>0&&V(ie)})}var ue=d(X,2);{let V=c(()=>t(o)("RPC log"));Ct(ue,{get title(){return t(V)},icon:"≣",get pressed(){return t(l).rpcLogOpen},testId:"rpclog-toggle",onclick:()=>t(l).rpcLogOpen=!t(l).rpcLogOpen})}var fe=d(ue,2);{var B=V=>{Tg(V,{get theme(){return t(l).theme},labelFor:pe=>t(o)(`Theme: ${pe}`),testId:"theme-switch",onclick:()=>t(l).cycleTheme()})};$(fe,V=>{s().shell.embedded||V(B)})}var re=d(fe,2);{let V=c(()=>t(o)("Settings"));Ct(re,{get title(){return t(V)},icon:"⚙",testId:"settings-button",onclick:()=>t(l).configDialogOpen=!0})}var de=d(re,2);{let V=c(()=>t(o)("Homematic Manager on GitHub"));wp(de,{href:n,get label(){return t(V)},openExternal:pe=>s().host.openExternal(pe),testId:"github-link"})}var ee=d(I,2);{let V=c(()=>({available:t(o)("A new version is available"),downloading:t(o)("Downloading"),downloaded:t(o)("The update is ready and will be installed when you quit"),installOnQuit:t(o)("The update will be installed when you quit"),download:t(o)("Download"),install:t(o)("Install on quit"),dismiss:t(o)("Dismiss"),checkFailed:t(o)("The update check failed"),downloadFailed:t(o)("The download of the update failed"),failed:t(o)("The update failed"),releases:t(o)("Releases on GitHub"),downloadInBrowser:t(o)("Opens the installer of the new version in your browser")}));Gg(ee,{get state(){return s().host.updateNotice},get labels(){return t(V)},releasesUrl:a,openExternal:pe=>s().host.openExternal(pe),testId:"update-notice",ondownload:()=>{s().host.downloadUpdate()},oninstall:()=>{s().host.installUpdateOnQuit()},ondismiss:()=>{s().host.dismissUpdate()}})}var ae=d(ee,2),Y=w(ae),Z=w(Y);np(Z,()=>`${t(l).selectedInterface}/${t(l).tab}`,V=>{var pe=At(),ve=De(pe);Of(ve,{onerror:oe=>s().notices.fromError(oe,`page ${t(l).tab}`),failed:(oe,F=Wn,W=Wn)=>{var O=kx(),z=w(O),ce=m(z,!0),me=d(z,2),be=m(me,!0),Ee=d(me,2),le=m(Ee,!0);E((G,L,A)=>{h(ce,G),h(be,L),h(le,A)},[()=>t(o)("This tab could not be drawn."),()=>F()instanceof Error?F().message:String(F()),()=>t(o)("Try again")]),ne("click",Ee,function(...G){W()?.apply(this,G)}),v(oe,O)}},oe=>{var F=At(),W=De(F);{var O=A=>{var M=wx(),he=m(M,!0);E(Te=>h(he,Te),[()=>t(o)("Select an interface")]),v(A,M)},z=A=>{var M=At(),he=De(M);{var Te=Ye=>{nl(Ye,{enumId:"room"})},Pe=Ye=>{nl(Ye,{enumId:"function"})},Ve=Ye=>{nl(Ye,{})};$(he,Ye=>{t(l).tab==="rooms"?Ye(Te):t(l).tab==="functions"?Ye(Pe,1):Ye(Ve,-1)})}v(A,M)},ce=A=>{FT(A,{})},me=A=>{fR(A,{})},be=A=>{SR(A,{})},Ee=A=>{mx(A,{})},le=A=>{ry(A,{})},G=A=>{Ex(A,{})},L=A=>{HT(A,{})};$(W,A=>{t(l).selectedInterface===""?A(O):t(l).storeSelected?A(z,1):t(l).tab==="devices"?A(ce,2):t(l).tab==="groups"?A(me,3):t(l).tab==="links"?A(be,4):t(l).tab==="rssi"?A(Ee,5):t(l).tab==="console"?A(le,6):t(l).tab==="messages"?A(G,7):A(L,-1)})}v(oe,F)}),v(V,pe)});var te=d(ae,2);{let V=c(()=>t(o)("RPC log")),pe=c(()=>t(o)("No RPC calls yet")),ve=c(()=>t(o)("in progress")),Q=c(()=>t(o)("Clear")),oe=c(()=>t(o)("Close")),F=c(()=>t(o)("Resize the RPC log")),W=c(()=>t(o)("Hide background calls")),O=c(()=>t(o)("Open in console")),z=c(()=>({console:t(o)("Origin: console"),ui:t(o)("Origin: UI"),background:t(o)("Origin: background")}));hg(te,{get entries(){return s().rpcLog.visible},get pending(){return s().rpcLog.pending},get title(){return t(V)},get emptyText(){return t(pe)},get pendingText(){return t(ve)},get clearLabel(){return t(Q)},get closeLabel(){return t(oe)},get resizeLabel(){return t(F)},get hideBackgroundLabel(){return t(W)},get openLabel(){return t(O)},get originLabels(){return t(z)},testId:"rpclog",onclear:()=>{s().rpcLog.clear()},onopen:f,get open(){return t(l).rpcLogOpen},set open(ce){t(l).rpcLogOpen=ce},get hideBackground(){return s().rpcLog.hideBackground},set hideBackground(ce){s().rpcLog.hideBackground=ce}})}var Re=d(te,2);{let V=c(()=>t(o)("Dismiss")),pe=c(()=>t(o)("Show fewer"));eg(Re,{get notices(){return s().notices.items},get dismissLabel(){return t(V)},moreLabel:ve=>t(o)("{count} more",{},ve),get lessLabel(){return t(pe)},testId:"notices",ondismiss:ve=>s().notices.dismiss(ve)})}var J=d(Re,2);{let V=c(()=>t(o)("RPC execution")),pe=c(()=>t(o)("Cancel"));Kf(J,{get progress(){return s().rpcLog.progress},get title(){return t(V)},get cancelLabel(){return t(pe)},testId:"rpc-progress",oncancel:()=>{s().rpcLog.cancel()}})}var ye=d(J,2);RE(ye,{get open(){return t(l).configDialogOpen},set open(V){t(l).configDialogOpen=V}});var xe=d(ye,2);sb(xe,{get open(){return t(i)},set open(V){u(i,V,!0)}});var ge=d(xe,2);{let V=c(()=>t(o)("Loading Homematic Manager..."));jp(ge,{get visible(){return t(l).loading},get text(){return t(V)},testId:"loader"})}E(()=>{R(Y,"id",`panel-${t(l).tab}`),R(Y,"aria-labelledby",`tab-${t(l).tab}`)}),v(r,T),ct()}St(["click"]);const Zh="hmm.columnWidths";function Rx(r){const e=r.trim().toLowerCase().replace(/[^a-z0-9._-]/g,"_");return e===""?"unconfigured":e}const xx=Object.freeze({});function Du(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)}function Ix(r){let e;try{const a=r?.getItem(Zh);e=a==null?void 0:JSON.parse(a)}catch{return{}}const n={};if(!Du(e))return n;for(const[a,s]of Object.entries(e)){if(!Du(s))continue;const i={};for(const[o,l]of Object.entries(s)){const f=by(l);Object.keys(f).length>0&&(i[o]=f)}Object.keys(i).length>0&&(n[a]=i)}return n}class Dx{#e=N({});#n;#t;constructor(e,n){this.#n=e,this.#t=n,u(this.#e,Ix(e))}widths(e){return t(this.#e)[this.#t()]?.[e]??xx}set(e,n,a){const s=this.#t(),i=t(this.#e)[s]??{},o=i[e]??{},l=fi(a);o[n]!==l&&(u(this.#e,{...t(this.#e),[s]:{...i,[e]:{...o,[n]:l}}}),this.#a())}reset(e){const n=this.#t(),a=t(this.#e)[n];if(a?.[e]===void 0)return;const s=Object.fromEntries(Object.entries(a).filter(([o])=>o!==e)),i=Object.fromEntries(Object.entries(t(this.#e)).filter(([o])=>o!==n));u(this.#e,Object.keys(s).length===0?i:{...i,[n]:s}),this.#a()}#a(){try{this.#n?.setItem(Zh,JSON.stringify(t(this.#e)))}catch{}}}const al=["system","light","dark"],Nu="hmm.theme",sl="hmm.language";function Nx(){return typeof window>"u"?{hash:""}:window.location}function Cx(r){return typeof window>"u"?()=>{}:(window.addEventListener("hashchange",r),()=>{window.removeEventListener("hashchange",r)})}function Px(){try{return typeof localStorage>"u"?void 0:localStorage}catch{return}}class Mx{#e=N(void 0);get config(){return t(this.#e)}set config(e){u(this.#e,e,!0)}#n=N(!0);get loading(){return t(this.#n)}set loading(e){u(this.#n,e,!0)}#t=N(!1);get connected(){return t(this.#t)}set connected(e){u(this.#t,e,!0)}#a=N("");get saveError(){return t(this.#a)}set saveError(e){u(this.#a,e,!0)}#s=N(void 0);get callbackAddresses(){return t(this.#s)}set callbackAddresses(e){u(this.#s,e,!0)}#r=0;#i=N(void 0);get pairing(){return t(this.#i)}set pairing(e){u(this.#i,e,!0)}#l=N("");get selectedInterface(){return t(this.#l)}set selectedInterface(e){u(this.#l,e,!0)}#o=N(He(ji));get tab(){return t(this.#o)}set tab(e){u(this.#o,e,!0)}#d=N(He(ji));get interfaceTab(){return t(this.#d)}set interfaceTab(e){u(this.#d,e,!0)}#c=N("");get linksFilter(){return t(this.#c)}set linksFilter(e){u(this.#c,e,!0)}#u=N("en");get language(){return t(this.#u)}set language(e){u(this.#u,e,!0)}#f=N("auto");get languageChoice(){return t(this.#f)}set languageChoice(e){u(this.#f,e,!0)}#h=N("system");get theme(){return t(this.#h)}set theme(e){u(this.#h,e,!0)}#m=N(null);get session(){return t(this.#m)}set session(e){u(this.#m,e,!0)}#p=N(!1);get configDialogOpen(){return t(this.#p)}set configDialogOpen(e){u(this.#p,e,!0)}#_=N(!1);get rpcLogOpen(){return t(this.#_)}set rpcLogOpen(e){u(this.#_,e,!0)}columnWidths;#v;#b;#y;#g;#S;#E=[];#k=[];constructor(e,n,a={}){this.#v=e,this.#b=n,this.#y=a.location??Nx(),this.#g=a.storage===void 0?Px():a.storage,this.#S=a.languages,this.columnWidths=new Dx(this.#g,()=>Rx(this.config?.connection.host??""));const s=this.#g?.getItem(Nu);(s==="light"||s==="dark"||s==="system")&&(this.theme=s);const i=this.#g?.getItem(sl);(i==="de"||i==="en"||i==="auto")&&(this.languageChoice=i),this.#w(),this.readRoute(),this.connected=e.connected,this.#E.push(e.onConnectionChange(o=>{this.connected=o}),e.on("config.changed",o=>{this.config=o}),e.on("pairing.changed",o=>{this.pairing=o}),(a.onHashChange??Cx)(()=>{const o=this.selectedInterface;if(this.readRoute(),this.selectedInterface!==o)for(const l of[...this.#k])l(o)}))}onInterfaceRouted(e){return this.#k.push(e),()=>{const n=this.#k.indexOf(e);n>=0&&this.#k.splice(n,1)}}readRoute(){const e=Yg(this.#y.hash);e.interfaceName!==""&&(this.selectedInterface=e.interfaceName),si(e.tab)?this.tab=this.storeSelected?e.tab:ji:(this.tab=e.tab,this.interfaceTab=e.tab)}writeRoute(){const e=qg(this.selectedInterface,this.tab);this.#y.hash!==e&&(this.#y.hash=e)}setTab(e){this.tab=e,si(e)||(this.interfaceTab=e),this.writeRoute()}get storeSelected(){return Qf(this.selectedInterface)}setInterface(e){this.selectedInterface=e,this.writeRoute()}setLanguage(e){this.languageChoice=e,this.#w(),this.#g?.setItem(sl,e)}#w(){this.language=y1(this.languageChoice,this.#S)}setTheme(e){this.theme=e,this.#g?.setItem(Nu,e)}cycleTheme(){const e=al.indexOf(this.theme);this.setTheme(al[(e+1)%al.length]??"system")}get configuredInterfaces(){return this.config?.connection.interfaces??[]}get host(){return this.config?.connection.host??""}async load(){try{const e=await this.#v.request("config.get");this.applyConfig(e)}catch(e){this.#b.fromError(e,"config.get")}finally{this.loading=!1}await this.loadSession()}async loadSession(){try{this.session=await this.#v.request("session.info")}catch{this.session=null}}async save(e,n){this.saveError="";try{return this.applyConfig(await(n===void 0?this.#v.request("config.set",e):this.#v.request("config.set",e,n))),this.configDialogOpen=!1,!0}catch(a){return this.saveError=a instanceof Error?a.message:String(a),this.#b.fromError(a,"config.set"),!1}}async loadCallbackAddresses(e){this.#r+=1;const n=this.#r;let a;try{a=await(e===void 0?this.#v.request("config.callbackAddresses"):this.#v.request("config.callbackAddresses",e))}catch{a=void 0}n===this.#r&&(this.callbackAddresses=a)}async useAutomaticCallback(){const e=this.config?.connection;if(e===void 0)return!1;const n=Ui(e);return this.save({...n,callback:{...n.callback,ip:""}})}async testConnection(e){try{return await this.#v.request("connection.test",e)}catch(n){this.#b.fromError(n,"connection.test");return}}async pair(e){this.pairing={state:"requesting"};try{await this.#v.request("connection.pair",e)}catch(n){this.pairing={state:"failed",message:n instanceof Error?n.message:String(n)},this.#b.fromError(n,"connection.pair")}}async cancelPairing(){try{await this.#v.request("connection.pairCancel")}catch(e){this.#b.fromError(e,"connection.pairCancel")}this.pairing=void 0}async discover(){try{const e=await this.#v.request("config.discover");this.config&&(this.config={...this.config,discovered:e})}catch(e){this.#b.fromError(e,"config.discover")}}async clearCaches(){try{await this.#v.request("config.clearCaches")}catch(e){this.#b.fromError(e,"config.clearCaches")}}applyConfig(e){this.config=e,this.#g?.getItem(sl)==null&&(this.languageChoice=e.connection.language??"auto",this.#w()),!this.storeSelected&&(this.selectedInterface===""||!e.connection.interfaces.includes(this.selectedInterface))&&(this.selectedInterface=e.connection.interfaces[0]??""),this.writeRoute(),e.connection.host===""&&(this.configDialogOpen=!0)}dispose(){for(const e of this.#E)e();this.#E.length=0,this.#k.length=0}}class Ox{#e=N(He([]));get changes(){return t(this.#e)}set changes(e){u(this.#e,e,!0)}#n=N(He([]));get outcomes(){return t(this.#n)}set outcomes(e){u(this.#n,e,!0)}#t=N(!1);get applying(){return t(this.#t)}set applying(e){u(this.#t,e,!0)}#a=N(0);get applied(){return t(this.#a)}set applied(e){u(this.#a,e,!0)}#s=0;#r=1;#i;#l;#o;constructor(e,n,a){this.#i=e,this.#l=n,this.#o=a}get count(){return this.changes.length}get empty(){return this.changes.length===0}get interfaces(){const e=[];for(const n of this.changes)e.includes(n.interfaceName)||e.push(n.interfaceName);return e}stage(e){const n=`c${String(this.#r)}`;return this.#r+=1,this.changes=[...this.changes,{...e,id:n}],this.outcomes=[],n}remove(e){this.changes=this.changes.filter(n=>n.id!==e),this.outcomes=this.outcomes.filter(n=>n.id!==e)}clear(){this.changes=[],this.outcomes=[],this.applied=0}outcome(e){return this.outcomes.find(n=>n.id===e)}async apply(){if(this.applying||this.empty)return 0;this.applying=!0;const e=this.#s+=1;this.applied=0,this.outcomes=[];const n=[];try{for(const a of this.changes){if(this.#s!==e)break;const s=await this.#d(a);this.outcomes=[...this.outcomes,s],this.applied+=1,s.ok&&n.push(a.id)}}finally{this.applying=!1,this.changes=this.changes.filter(a=>!n.includes(a.id))}return n.length}async cancel(){return this.#s+=1,this.#o.cancel()}async#d(e){try{switch(e.kind){case"paramset":{const n=await this.#i.request("paramset.put",e.interfaceName,[...e.targets],e.paramset,e.values,e.writeAll?{writeAll:!0}:void 0);return this.#c(e.id,n)}case"linkParamset":{const n=await this.#i.request("paramset.putLink",e.interfaceName,e.links.map(a=>({...a})),e.values);return this.#c(e.id,n)}case"linkAdd":{for(const n of e.pairs)await this.#i.request("links.add",e.interfaceName,n.sender,n.receiver,n.name,n.description);return{id:e.id,ok:!0,results:[]}}case"linkRemove":{for(const n of e.pairs)await this.#i.request("links.remove",e.interfaceName,n.sender,n.receiver);return{id:e.id,ok:!0,results:[]}}}}catch(n){return this.#l.fromError(n,e.title),{id:e.id,ok:!1,results:[],error:Si(n).message}}}#c(e,n){const a=n.filter(s=>!s.ok);return{id:e,ok:n.length>0&&a.length===0,results:n,...a.length===0?{}:{error:a.map(s=>`${s.address}: ${s.faultString??"failed"}`).join(", ")}}}}class Lx{#e=N(He({}));get methods(){return t(this.#e)}set methods(e){u(this.#e,e,!0)}#n=N(!1);get running(){return t(this.#n)}set running(e){u(this.#n,e,!0)}#t=N(void 0);get pendingRecall(){return t(this.#t)}set pendingRecall(e){u(this.#t,e,!0)}#a;#s;#r;#i=1;constructor(e,n,a={}){this.#a=e,this.#s=n,this.#r=a.now??(()=>Date.now())}of(e){return this.methods[e]??[]}method(e,n){return this.of(e).find(a=>a.name===n)}async load(e){if(!(e===""||this.methods[e]))try{this.methods={...this.methods,[e]:await this.#a.request("rpc.methods",e)}}catch(n){this.#s.fromError(n,`rpc.methods ${e}`)}}async call(e,n,a){this.running=!0;const s=this.#r(),i=this.#i;this.#i+=1;try{const o=await this.#a.request("rpc.call",e,n,a);return{id:i,timestamp:s,interfaceName:e,method:n,params:a,ok:!0,result:o,durationMs:this.#r()-s}}catch(o){const l=o;return{id:i,timestamp:s,interfaceName:e,method:n,params:a,ok:!1,error:l.message??String(o),...l.faultCode===void 0?{}:{faultCode:l.faultCode},durationMs:this.#r()-s}}finally{this.running=!1}}recall(e){this.pendingRecall={interfaceName:e.interfaceName,method:e.method,params:[...e.params]}}takeRecall(e){const n=this.pendingRecall;if(!(n===void 0||n.interfaceName!==e))return this.pendingRecall=void 0,n}}class Fx{#e=N(He({}));get indexes(){return t(this.#e)}set indexes(e){u(this.#e,e,!0)}#n=N(He({}));get loading(){return t(this.#n)}set loading(e){u(this.#n,e,!0)}#t=N(He({}));get failed(){return t(this.#t)}set failed(e){u(this.#t,e,!0)}#a=N(He([]));get firmwareBusy(){return t(this.#a)}set firmwareBusy(e){u(this.#a,e,!0)}#s;#r;#i=[];constructor(e,n){this.#s=e,this.#r=n,this.#i.push(e.on("devices.changed",a=>{this.indexes[a.interfaceName]&&this.load(a.interfaceName,{refresh:!1})}))}index(e){return this.indexes[e]}devices(e){return this.indexes[e]?.devices()??[]}channels(e,n){return this.indexes[e]?.childrenOf(n)??[]}isLoading(e){return this.loading[e]===!0}hasFailed(e){return this.failed[e]===!0}async load(e,n={}){if(e!==""){this.loading={...this.loading,[e]:!0};try{const a=await this.#s.request("devices.list",e,{refresh:n.refresh??!1});this.indexes={...this.indexes,[e]:new wb(e,a)},this.failed={...this.failed,[e]:!1},this.settleFirmware(e)}catch(a){this.failed={...this.failed,[e]:!0},this.#r.fromError(a,`devices.list ${e}`)}finally{this.loading={...this.loading,[e]:!1}}}}async teams(e){try{return await this.#s.request("teams.list",e)}catch(n){return this.#r.fromError(n,`listTeams ${e}`),[]}}async setTeam(e,n,a){return await this.setTeams(e,[{address:n,teamAddress:a}])===1}async setTeams(e,n){let a=0;for(const{address:s,teamAddress:i}of n)try{await this.#s.request("teams.set",e,s,i),a+=1}catch(o){this.#r.fromError(o,`setTeam ${s}`)}return n.length>0&&await this.load(e,{refresh:!0}),a}async confirmRegaInbox(){try{return await this.#s.request("rega.confirmInbox")}catch(e){return this.#r.fromError(e,"rega.confirmInbox"),[]}}async ensure(e){e===""||this.indexes[e]||this.isLoading(e)||await this.load(e)}async retry(e){this.isLoading(e)||await this.load(e,{refresh:!0})}firmwarePending(e){return this.firmwareBusy.length>0?!0:this.devices(e).some(n=>["DELIVER_FIRMWARE_IMAGE","PERFORMING_UPDATE","READY_FOR_UPDATE"].includes(n.FIRMWARE_UPDATE_STATE??""))}async updateFirmware(e,n){if(n.length===0)return[];this.firmwareBusy=[...this.firmwareBusy,...n.filter(a=>!this.firmwareBusy.includes(a))];try{const a=await this.#s.request("devices.updateFirmware",e,n);return await this.load(e,{refresh:!0}),a}catch(a){return this.#r.fromError(a,`devices.updateFirmware ${n.join(" ")}`),this.firmwareBusy=this.firmwareBusy.filter(s=>!n.includes(s)),[]}}async installFirmware(e,n){this.firmwareBusy=this.firmwareBusy.includes(n)?this.firmwareBusy:[...this.firmwareBusy,n];try{const a=await this.#s.request("devices.installFirmware",e,n);return await this.load(e,{refresh:!0}),a}catch(a){return this.#r.fromError(a,`devices.installFirmware ${n}`),this.firmwareBusy=this.firmwareBusy.filter(s=>s!==n),!1}}settleFirmware(e){const n=this.indexes[e];if(!n)return;const a=this.firmwareBusy.filter(s=>{const i=n.get(s);return i!==void 0&&(i.AVAILABLE_FIRMWARE===void 0||i.AVAILABLE_FIRMWARE===i.FIRMWARE)});a.length>0&&(this.firmwareBusy=this.firmwareBusy.filter(s=>!a.includes(s)))}async remove(e,n,a){try{return await this.#s.request("devices.delete",e,n,a),await this.load(e,{refresh:!0}),!0}catch(s){return this.#r.fromError(s,`deleteDevice ${n}`),!1}}async replaceable(e,n){try{return await this.#s.request("devices.replaceable",e,n)}catch(a){return this.#r.fromError(a,`devices.replaceable ${n}`),[]}}async replace(e,n,a){try{const s=await this.#s.request("devices.replace",e,n,a);return await this.load(e,{refresh:!0}),s}catch(s){return this.#r.fromError(s,`replaceDevice ${n} ${a}`),!1}}async repairConfig(e,n,a){try{return await this.#s.request("devices.repairConfig",e,n,a)}catch(s){this.#r.fromError(s,`devices.repairConfig ${n}`);return}}async restoreConfig(e,n){try{return await this.#s.request("devices.restoreConfig",e,n),!0}catch(a){return this.#r.fromError(a,`restoreConfigToDevice ${n}`),!1}}async clearConfigCache(e,n){try{return await this.#s.request("devices.clearConfigCache",e,n),!0}catch(a){return this.#r.fromError(a,`clearConfigCache ${n}`),!1}}async reportValueUsage(e,n,a){let s=0;for(const i of n){let o;try{o=await this.#s.request("paramset.description",e,i,"VALUES")}catch(l){this.#r.fromError(l,`getParamsetDescription ${i} VALUES`);continue}for(const l of Object.keys(o))try{await this.#s.request("devices.reportValueUsage",e,i,l,a),s+=1}catch(f){this.#r.fromError(f,`reportValueUsage ${i} ${l}`);break}}return s}async setInstallMode(e,n,a){try{return await this.#s.request("devices.installMode.set",e,n,a),!0}catch(s){return this.#r.fromError(s,"setInstallMode"),!1}}async hmipPairing(){try{return await this.#s.request("meta.pairing")??void 0}catch{return}}async tryInstallMode(e,n,a){try{return await this.#s.request("devices.installMode.set",e,n,a),null}catch(s){return Si(s)}}async keyMismatchDevice(e){try{return await this.#s.request("devices.installMode.keyMismatch",e)}catch{return""}}async setTempKey(e,n){try{return await this.#s.request("devices.installMode.tempKey",e,n),!0}catch(a){return this.#r.fromError(a,"setTempKey"),!1}}async installModeSeconds(e){try{return await this.#s.request("devices.installMode.get",e)}catch(n){return this.#r.fromError(n,"getInstallMode"),0}}forget(e){if(e===void 0){this.indexes={};return}this.indexes=Object.fromEntries(Object.entries(this.indexes).filter(([n])=>n!==e))}dispose(){for(const e of this.#i)e();this.#i.length=0}}class Gx{buffer;#e=N(0);#n=0;#t=c(()=>(t(this.#e),this.buffer.toArray().reverse()));get records(){return t(this.#t)}set records(e){u(this.#t,e)}#a;#s;#r;constructor(e,n,a={}){this.buffer=new K_(a.capacity??bh),this.#a=e,this.#s=n,this.#r=e.on("rpc.event",s=>{this.push(s)})}get size(){return t(this.#e),this.buffer.size}push(e){this.buffer.push({...e,seq:this.#n}),this.#n+=1,u(this.#e,t(this.#e)+1)}filtered(e){return t(this.#e),q_(this.buffer,e).reverse()}countFor(e){return t(this.#e),this.buffer.filter(n=>n.address===e).length}async load(e,n){try{const a=await this.#a.request("events.recent",e,n);for(const s of a)this.buffer.push({...s,seq:this.#n}),this.#n+=1;u(this.#e,t(this.#e)+1)}catch(a){this.#s.fromError(a,"events.recent")}}async clear(){this.buffer.clear(),u(this.#e,t(this.#e)+1);try{await this.#a.request("events.clear")}catch(e){this.#s.fromError(e,"events.clear")}}dispose(){this.#r()}}class Ux{#e=N(void 0);get state(){return t(this.#e)}set state(e){u(this.#e,e,!0)}#n=N(He([]));get groups(){return t(this.#n)}set groups(e){u(this.#n,e,!0)}#t=N(He([]));get devicesToConfigure(){return t(this.#t)}set devicesToConfigure(e){u(this.#t,e,!0)}#a=N(!1);get loading(){return t(this.#a)}set loading(e){u(this.#a,e,!0)}#s=N(!1);get loaded(){return t(this.#s)}set loaded(e){u(this.#s,e,!0)}#r;#i;#l=[];#o="";#d;constructor(e,n){this.#r=e,this.#i=n,this.#l.push(e.on("meta.changed",a=>{this.follow(a)}))}fallbackName(e){const n=e.indexOf(":"),a=n===-1?e:e.slice(0,n),s=this.groups.find(i=>i.device===a);return s===void 0||s.name===""?void 0:`${s.name} ${e}`}get offered(){return this.state?.available===!0}async follow(e){const n=e?.provider==="occulite"&&e.reachable,a=n?`occulite/${e.url??""}`:"none";if(a===this.#o&&(this.state!==void 0||this.#d!==void 0)){await this.#d;return}if(this.#o=a,!n){this.state={available:!1,reason:"no-box"},this.groups=[],this.devicesToConfigure=[],this.loaded=!1;return}this.#d=this.#c();try{await this.#d}finally{this.#d=void 0}}async#c(){try{this.state=await this.#r.request("groups.state")}catch(e){this.state={available:!1,reason:"error",message:Si(e).message}}this.state.available&&await this.#u()}async#u(){try{const e=await this.#r.request("groups.list");this.groups=e.groups,this.devicesToConfigure=e.devicesToConfigure,this.loaded=!0}catch{}}async load(){this.loading=!0;try{const e=await this.#r.request("groups.list");return this.groups=e.groups,this.devicesToConfigure=e.devicesToConfigure,this.loaded=!0,!0}catch(e){return this.#i.fromError(e,"groups.list"),!1}finally{this.loading=!1}}async types(){try{return await this.#r.request("groups.types")}catch(e){return this.#i.fromError(e,"groups.types"),[]}}async detail(e){try{return await this.#r.request("groups.get",e)}catch(n){this.#i.fromError(n,"groups.get");return}}async create(e,n,a){try{const s=await this.#r.request("groups.create",e,n,[...a]);return await this.#f(s),s}catch(s){this.#i.fromError(s,"groups.create");return}}async update(e,n,a){try{const s=await this.#r.request("groups.update",e,n,a===void 0?void 0:[...a]);return await this.#f(s),s}catch(s){this.#i.fromError(s,"groups.update");return}}async remove(e){try{const n=await this.#r.request("groups.delete",e);return await this.load(),this.devicesToConfigure=n,!0}catch(n){return this.#i.fromError(n,"groups.delete"),!1}}async#f(e){await this.load(),this.devicesToConfigure=e.devicesToConfigure}dispose(){for(const e of this.#l)e();this.#l.length=0}}const Bx="__HMM_HOST__";function Hx(r){if(typeof r!="object"||r===null)return!1;const e=r,n=e.update;return typeof e.info=="function"&&typeof e.deviceImageUrl=="function"&&typeof e.setTheme=="function"&&typeof e.onSystemTheme=="function"&&typeof e.onMenuAction=="function"&&typeof n=="object"&&n!==null&&typeof n.state=="function"&&typeof n.check=="function"&&typeof n.download=="function"&&typeof n.installOnQuit=="function"&&typeof n.dismiss=="function"&&typeof n.on=="function"}function Vx(r=globalThis){const e=r[Bx];return Hx(e)?e:void 0}class zx{#e=N(void 0);get info(){return t(this.#e)}set info(e){u(this.#e,e,!0)}#n=N(void 0);get update(){return t(this.#n)}set update(e){u(this.#n,e,!0)}#t=N(!1);get systemDark(){return t(this.#t)}set systemDark(e){u(this.#t,e,!0)}#a;#s=[];constructor(e={}){this.#a=e.bridge??Vx(e.scope??globalThis),this.#a&&this.#s.push(this.#a.onSystemTheme(n=>{this.systemDark=n}),this.#a.update.on(n=>{this.update=n}))}get available(){return this.#a!==void 0}get updateNotice(){const e=this.update;if(!(!e||e.dismissed))return["available","downloading","downloaded","installOnQuit","error"].includes(e.phase)?e:void 0}deviceImageUrl(e){if(e!=="")return this.#a?this.#a.deviceImageUrl(e):`images/${encodeURIComponent(e)}`}async load(){if(!this.#a)return;const[e,n]=await Promise.all([this.#a.info(),this.#a.update.state()]);this.info=e,this.update=n}async setTheme(e){await this.#a?.setTheme(e)}onMenuAction(e){return this.#a?.onMenuAction(e)??(()=>{})}async openExternal(e){const n=this.#a;return n?.openExternal?(await n.openExternal(e),!0):!1}async checkForUpdate(){this.update=await this.#a?.update.check()}async downloadUpdate(){this.update=await this.#a?.update.download()}async installUpdateOnQuit(){this.update=await this.#a?.update.installOnQuit()}async dismissUpdate(){this.update=await this.#a?.update.dismiss()}dispose(){for(const e of this.#s)e();this.#s.length=0}}class jx{#e=N(He([]));get states(){return t(this.#e)}set states(e){u(this.#e,e,!0)}#n=N(void 0);get rega(){return t(this.#n)}set rega(e){u(this.#n,e,!0)}#t=N(!1);get loading(){return t(this.#t)}set loading(e){u(this.#t,e,!0)}#a;#s;#r=[];constructor(e,n){this.#a=e,this.#s=n,this.#r.push(e.on("interfaces.changed",a=>{this.states=a}),e.on("rega.changed",a=>{this.rega=a}))}get(e){return this.states.find(n=>n.name===e)}typeOf(e){return this.get(e)?.type??""}isConnected(e){return this.get(e)?.connected===!0}get allConnected(){const e=this.states.filter(n=>n.absent!==!0);return e.length>0&&e.every(n=>n.connected)}async load(){this.loading=!0;try{this.states=await this.#a.request("interfaces.list")}catch(e){this.#s.fromError(e,"interfaces.list")}finally{this.loading=!1}try{this.rega=await this.#a.request("rega.state")}catch(e){this.rega={enabled:!0,reachable:!1,names:0,error:String(e)}}}async reconnect(e){try{await this.#a.request("interfaces.reconnect",e)}catch(n){this.#s.fromError(n,"interfaces.reconnect")}}dispose(){for(const e of this.#r)e();this.#r.length=0}}class Wx{#e;#n=new Map;constructor(e){this.#e=e}get requested(){return[...this.#n.keys()]}async#t(e){let n=this.#n.get(e);return n===void 0&&(n=this.#e.request("data.file",`data/${e}`).catch(()=>{}),this.#n.set(e,n)),await n}manifest(){return this.#t(ca.manifest)}receiverProfiles(e){return this.#t(ca.profiles(e))}async receiverTypeAliases(){return await this.#t(ca.receiverTypeAliases)??{}}async masterMetadata(){return await this.#t(ca.masterMetadata)??{}}async optionPresets(){return await this.#t(ca.optionPresets)??{}}async crossValidations(){return await this.#t(ca.crossValidations)??[]}translations(e){return this.#t(ca.translations(e))}async deviceIcons(){return await this.#t(ca.deviceIcons)??{}}async masterForms(){return(await this.#t(ca.masterForms))?.byParamsetId??{}}async timeSelectors(){return(await this.#t(ca.timeSelectors))?.types??{}}}class Kx{#e=N(He(new Vc));get lookup(){return t(this.#e)}set lookup(e){u(this.#e,e,!0)}#n=N(void 0);get manifest(){return t(this.#n)}set manifest(e){u(this.#n,e,!0)}#t=N(!1);get available(){return t(this.#t)}set available(e){u(this.#t,e,!0)}#a=N(He({}));get presets(){return t(this.#a)}set presets(e){u(this.#a,e,!0)}#s=N(He({}));get timeSelectors(){return t(this.#s)}set timeSelectors(e){u(this.#s,e,!0)}source;engine;#r;#i;constructor(e,n={}){this.source=n.source??new Wx(e),this.engine=new R_(this.source)}async setLanguage(e){if(this.#r===e){await this.#i;return}this.#r=e;const n=(async()=>{const s=[e,...["en","de"].filter(f=>f!==e)],i=await Promise.all(s.map(f=>this.source.translations(f))),[o,...l]=i;this.lookup=new Vc(o,...l),this.available=i.some(f=>f!==void 0),this.manifest=await this.source.manifest()})();this.#i=n,await n}async loadPresets(){if(Object.keys(this.presets).length===0){const[e,n]=await Promise.all([this.source.optionPresets(),this.source.timeSelectors()]);this.presets=e,this.timeSelectors=n}return this.presets}masterView(e,n,a={},s="",i){return this.engine.masterMetadataFor(e,n,a,s,i)}masterFormId(e){return e===""?Promise.resolve(""):this.engine.masterFormId(e)}profilesFor(e,n){return this.engine.profilesFor(e,n)}linkMetadataFor(e,n){return this.engine.linkMetadataFor(e,n)}parameterLabel(e,n){return this.lookup.parameter(e,n)}parameterHelp(e,n){return this.lookup.parameterHelp(e,n)}valueLabel(e,n,a){return this.lookup.parameterValue(e,n,a)}specialLabel(e,n,a){return this.lookup.specialValue(e,n,a)}valueLabelIfKnown(e,n,a){const s=this.lookup.parameterValue(e,n,a);return s===n?void 0:s}channelTypeLabel(e){return this.lookup.channelType(e)}deviceModelLabel(e){return this.lookup.deviceModel(e)}uiLabel(e){return this.lookup.uiLabel(e)}}class Yx{#e=N(He({}));get links(){return t(this.#e)}set links(e){u(this.#e,e,!0)}#n=N(He({}));get loading(){return t(this.#n)}set loading(e){u(this.#n,e,!0)}#t;#a;constructor(e,n){this.#t=e,this.#a=n}of(e){return this.links[e]??[]}isLoading(e){return this.loading[e]===!0}forAddress(e,n){return this.of(e).filter(a=>a.SENDER===n||a.RECEIVER===n)}async load(e){if(e!==""){this.loading={...this.loading,[e]:!0};try{this.links={...this.links,[e]:await this.#t.request("links.list",e)}}catch(n){this.#a.fromError(n,`links.list ${e}`)}finally{this.loading={...this.loading,[e]:!1}}}}defective(e){return this.of(e).filter(n=>Tl(n).broken)}async add(e,n,a,s,i){const o=n.flatMap(l=>a.map(f=>({sender:l,receiver:f,...s===void 0?{}:{name:s},...i===void 0?{}:{description:i}})));return this.addPairs(e,o)}async addPairs(e,n){let a=0;for(const s of n)try{await this.#t.request("links.add",e,s.sender,s.receiver,s.name,s.description),a+=1}catch(i){this.#a.fromError(i,`addLink ${s.sender} ${s.receiver}`)}return a>0&&await this.load(e),a}async remove(e,n){let a=0;for(const s of n)try{await this.#t.request("links.remove",e,s.sender,s.receiver),a+=1}catch(i){this.#a.fromError(i,`removeLink ${s.sender} ${s.receiver}`)}return a>0&&await this.load(e),a}async info(e,n,a){try{return await this.#t.request("links.info.get",e,n,a)}catch(s){this.#a.fromError(s,`getLinkInfo ${n} ${a}`);return}}async setInfo(e,n,a,s,i){try{return await this.#t.request("links.info.set",e,n,a,s,i),await this.load(e),!0}catch(o){return this.#a.fromError(o,`setLinkInfo ${n} ${a}`),!1}}async activate(e,n,a,s){try{return await this.#t.request("links.activate",e,n,a,s),!0}catch(i){return this.#a.fromError(i,`activateLinkParamset ${n} ${a}`),!1}}#s=N(He([]));get templates(){return t(this.#s)}set templates(e){u(this.#s,e,!0)}async loadTemplates(e){try{this.templates=await this.#t.request("linkTemplates.list",e)}catch(n){this.#a.fromError(n,"linkTemplates.list"),this.templates=[]}return this.templates}async saveTemplate(e){try{return await this.#t.request("linkTemplates.save",e),await this.loadTemplates(e.identity),!0}catch(n){return this.#a.fromError(n,"linkTemplates.save"),!1}}async removeTemplate(e,n){try{return await this.#t.request("linkTemplates.remove",e),await this.loadTemplates(n),!0}catch(a){return this.#a.fromError(a,"linkTemplates.remove"),!1}}async ensure(e){e===""||this.links[e]||this.isLoading(e)||await this.load(e)}forget(e){if(e===void 0){this.links={};return}this.links=Object.fromEntries(Object.entries(this.links).filter(([n])=>n!==e))}}class qx{#e=N(He({}));get names(){return t(this.#e)}set names(e){u(this.#e,e,!0)}#n;#t;#a;constructor(e,n){this.#n=e,this.#t=n,this.#a=e.on("names.changed",a=>{this.names=a})}name(e){return this.names[e]}nameOf(e){return this.names[e]??e}get size(){return Object.keys(this.names).length}async load(){try{this.names=await this.#n.request("names.get")}catch(e){this.#t.fromError(e,"names.get")}}async rename(e){try{return this.names=await this.#n.request("names.set",e),!0}catch(n){return this.#t.fromError(n,"names.set"),!1}}dispose(){this.#a()}}function Qi(r,e,n){return`${r}|${e}|${n}`}function $x(r,e,n,a){try{return ii(r,e,n,a)}catch{return Qi(r,e.ADDRESS,n)}}class Xx{#e=N(He({}));get descriptions(){return t(this.#e)}set descriptions(e){u(this.#e,e,!0)}#n=N(!1);get loading(){return t(this.#n)}set loading(e){u(this.#n,e,!0)}#t=N(He([]));get results(){return t(this.#t)}set results(e){u(this.#t,e,!0)}#a=N(!1);get writing(){return t(this.#a)}set writing(e){u(this.#a,e,!0)}#s=N(He({}));get contents(){return t(this.#s)}set contents(e){u(this.#s,e,!0)}#r;#i;#l=[];constructor(e,n){this.#r=e,this.#i=n}description(e,n,a){return this.descriptions[Qi(e,n,a)]}async describe(e,n,a){const s=Qi(e,n,a),i=this.descriptions[s];if(i)return i;try{const o=await this.#r.request("paramset.description",e,n,a);return this.descriptions={...this.descriptions,[s]:o},o}catch(o){this.#i.fromError(o,`getParamsetDescription ${n} ${a}`);return}}contentOf(e,n,a,s,i="parameters"){const o=`${$x(e,n,a,s)}#${i}`,l=this.contents[o];if(l!==void 0||this.#l.includes(o))return l;this.#l.push(o);const f=n.ADDRESS;queueMicrotask(()=>{this.#o(o,e,f,a,i)})}async#o(e,n,a,s,i){let o;try{const l=this.descriptions[Qi(n,a,s)]??await this.#r.request("paramset.description",n,a,s);o=(i==="service-messages"?Wh(l):Object.keys(l)).length===0?"empty":"parameters"}catch{o="failed"}this.#l=this.#l.filter(l=>l!==e),this.contents={...this.contents,[e]:o}}async read(e,n,a){try{return await this.#r.request("paramset.get",e,n,a)}catch(s){this.#i.fromError(s,`getParamset ${n} ${a}`);return}}async paramsetId(e,n){try{return await this.#r.request("paramset.id",e,n)}catch{return""}}async channelMode(e,n){try{return await this.#r.request("channel.mode",e,n)}catch{return""}}async open(e,n,a){this.loading=!0;try{const[s,i]=await Promise.all([this.describe(e,n,a),this.read(e,n,a)]);return s?{description:s,values:i??{}}:void 0}finally{this.loading=!1}}async put(e,n,a,s,i){this.writing=!0;try{const o=await this.#r.request("paramset.put",e,n,a,s,i);return this.results=o,o}catch(o){return this.#i.fromError(o,`putParamset ${a}`),this.results=[],[]}finally{this.writing=!1}}async putLink(e,n,a,s){this.writing=!0;try{const i=await this.#r.request("paramset.putLink",e,n,a,s);return this.results=i,i}catch(i){return this.#i.fromError(i,"putParamset LINK"),this.results=[],[]}finally{this.writing=!1}}async setValue(e,n,a,s){try{return await this.#r.request("value.set",e,n,a,s),!0}catch(i){return this.#i.fromError(i,`setValue ${n} ${a}`),!1}}async getValue(e,n,a){try{return await this.#r.request("value.get",e,n,a)}catch(s){this.#i.fromError(s,`getValue ${n} ${a}`);return}}async valueStates(e,n){try{return await this.#r.request("paramset.valueStates",e,n)}catch{return{}}}async suppressedServiceMessages(e,n){return xh(this.#r,e,n)}async suppressServiceMessages(e,n,a,s){try{return await Ih(this.#r,e,n,a,s),!0}catch(i){return this.#i.fromError(i,`suppressServiceMessages ${n} ${a||"*"}`),!1}}clearResults(){this.results=[]}}class Qx{#e=N(He({}));get interfaces(){return t(this.#e)}set interfaces(e){u(this.#e,e,!0)}#n=N(!1);get loading(){return t(this.#n)}set loading(e){u(this.#n,e,!0)}#t=N(0);#a={};#s={};#r=N(He({}));#i;#l;#o;constructor(e,n){this.#i=e,this.#l=n,this.#o=e.on("rpc.event",a=>{if(a.address===void 0||a.datapoint===void 0||a.value===void 0)return;const s=a.value;if(typeof s!="boolean"&&typeof s!="number"&&typeof s!="string")return;this.#a[a.interfaceName]?.applyHmipValue(xs(a.address),a.datapoint,s)===!0&&u(this.#t,t(this.#t)+1)})}#d(e){const n=this.#a[e]??new z_;return this.#a[e]=n,n}hasMatrix(e){return t(this.#r)[e]!==void 0}async ensureMatrix(e){e===""||t(this.#r)[e]!==void 0||await this.load(e)}gateways(e){return this.interfaces[e]??[]}gatewayAddresses(e){return this.gateways(e).map(n=>n.ADDRESS)}pair(e,n,a){return t(this.#t),this.#a[e]?.get(n,a)}peersOf(e,n){return t(this.#t),this.#a[e]?.peersOf(n)??[]}bestGatewayFor(e,n){return t(this.#t),this.#a[e]?.bestInterfaceFor(n,this.gatewayAddresses(e))}proposeReceivers(e,n,a){t(this.#t);const s=this.#a[e];return s?W_(n,this.gatewayAddresses(e),s,{marginDb:a}):[]}async ensureGateways(e){if(!(e===""||this.interfaces[e]!==void 0||this.#s[e]!==void 0)){this.#s[e]="busy";try{await this.#c(e),this.#s[e]="done"}catch(n){this.#s[e]="failed",this.#l.fromError(n,`listBidcosInterfaces ${e}`)}}}async#c(e){const n=await this.#i.request("bidcos.interfaces",e);this.interfaces={...this.interfaces,[e]:n};const a=n.find(s=>s.DEFAULT===!0)??n[0];a&&this.#d(e).setCentralAddress(a.ADDRESS)}async load(e){if(e!==""){u(this.#r,{...t(this.#r),[e]:"busy"},!0),this.loading=!0;try{await this.#c(e)}catch(n){this.#l.fromError(n,`listBidcosInterfaces ${e}`)}try{this.#d(e).applyRssiInfo(await this.#i.request("rssi.get",e)),u(this.#t,t(this.#t)+1),u(this.#r,{...t(this.#r),[e]:"done"},!0)}catch(n){u(this.#r,{...t(this.#r),[e]:"failed"},!0),this.#l.fromError(n,`rssiInfo ${e}`)}finally{this.loading=!1}}}async setBidcosInterface(e,n,a,s){try{return await this.#i.request("bidcos.setInterface",e,n,a,s),!0}catch(i){return this.#l.fromError(i,`setBidcosInterface ${n} ${a}`),!1}}dispose(){this.#o()}}class Zx{#e=N(He([]));get messages(){return t(this.#e)}set messages(e){u(this.#e,e,!0)}#n=N(!1);get loading(){return t(this.#n)}set loading(e){u(this.#n,e,!0)}#t=N(He({}));get suppressed(){return t(this.#t)}set suppressed(e){u(this.#t,e,!0)}#a=N(He({}));get descriptions(){return t(this.#a)}set descriptions(e){u(this.#a,e,!0)}#s;#r;#i;#l=[];#o=!1;#d=[];#c=[];constructor(e,n){this.#s=e,this.#r=n,this.#i=e.on("serviceMessages.changed",a=>{this.apply(il(a))})}apply(e){const n=this.#l,a=e.filter(s=>!n.includes(Cu(s)));if(this.messages=e,this.#l=e.map(s=>Cu(s)),!this.#o){this.#o=!0;return}for(const s of a)this.#r.push("warn",`${s.address} ${s.datapoint}`,s.interfaceName)}acknowledgeable(e){return this.of(e).filter(n=>uo(n.datapoint))}of(e){return this.messages.filter(n=>n.interfaceName===e)}countOf(e){return this.of(e).length}async load(e){this.loading=!0;try{this.#u(e,il(await this.#s.request("serviceMessages.list",e)))}catch(n){this.#r.fromError(n,"serviceMessages.list")}finally{this.loading=!1}}async refresh(e){this.loading=!0;try{this.#u(e,il(await this.#s.request("serviceMessages.refresh",e)))}catch(n){this.#r.fromError(n,"serviceMessages.refresh")}finally{this.loading=!1}}#u(e,n){if(e===void 0){this.apply(n);return}this.apply([...this.messages.filter(a=>a.interfaceName!==e),...n.filter(a=>a.interfaceName===e)])}async acknowledge(e,n,a){try{return await this.#s.request("serviceMessages.ack",e,n,a),!0}catch(s){return this.#r.fromError(s,`serviceMessages.ack ${n} ${a}`),!1}}async acknowledgeMany(e){let n=0;for(const a of e)uo(a.datapoint)&&await this.acknowledge(a.interfaceName,a.address,a.datapoint)&&(n+=1);return n>0&&await this.load(),n}suppressedOf(e,n){return this.suppressed[es(e,n)]}isSuppressed(e){return this.suppressedOf(e.interfaceName,e.address)?.includes(e.datapoint)===!0}async loadSuppressed(e){const n=this.of(e).map(a=>a.address).filter((a,s,i)=>i.indexOf(a)===s).filter(a=>!this.#d.includes(es(e,a)));await Promise.all(n.map(a=>this.#f(e,a)))}async suppress(e,n,a,s){try{await Ih(this.#s,e,n,a,s)}catch(i){return this.#r.fromError(i,`suppressServiceMessages ${n} ${a}`),!1}return await this.#f(e,n),await this.load(),!0}valueName(e){const n=this.descriptions[es(e.interfaceName,e.address)];return U_(n?.[e.datapoint],e.value)}async loadDescriptions(e){const n=this.of(e).filter(a=>typeof a.value=="number").map(a=>a.address).filter((a,s,i)=>i.indexOf(a)===s).filter(a=>!this.#c.includes(es(e,a)));this.#c=[...this.#c,...n.map(a=>es(e,a))],await Promise.all(n.map(async a=>{try{const s=await this.#s.request("paramset.description",e,a,"VALUES");this.descriptions={...this.descriptions,[es(e,a)]:s}}catch{}}))}async#f(e,n){const a=es(e,n);this.#d.includes(a)||(this.#d=[...this.#d,a]);const s=await xh(this.#s,e,n);s!==void 0&&(this.suppressed={...this.suppressed,[a]:s})}dispose(){this.#i()}}function Cu(r){return`${r.interfaceName}|${r.address}|${r.datapoint}`}function es(r,e){return`${r}|${e}`}function il(r){return Array.isArray(r)?r:[]}class Pu{#e=N(!1);get embedded(){return t(this.#e)}set embedded(e){u(this.#e,e,!0)}#n=N(void 0);get theme(){return t(this.#n)}set theme(e){u(this.#n,e,!0)}#t;#a=e=>{this.#s(e)};constructor(e=typeof window>"u"?void 0:window){if(this.#t=e,!e||!Jx(e))return;const n=Mu(/[?&]theme=([a-z]+)/u.exec(e.location.search)?.[1]);n!==void 0&&(this.embedded=!0,this.theme=n),e.addEventListener("message",this.#a)}#s(e){const n=this.#t;if(!n||e.origin!==n.location.origin||e.source!==n.parent)return;const a=e.data;a===null||typeof a!="object"||a.type!=="openccu-lite:theme"||(this.embedded=!0,this.theme=Mu(a.theme)??this.theme??"system")}dispose(){this.#t?.removeEventListener("message",this.#a)}}function Mu(r){return r==="system"||r==="light"||r==="dark"?r:void 0}function Jx(r){try{return r.self!==r.top&&r.parent.location.origin===r.location.origin}catch{return!1}}class eI{#e=N(He({}));get memberships(){return t(this.#e)}set memberships(e){u(this.#e,e,!0)}#n=N(He({}));get loading(){return t(this.#n)}set loading(e){u(this.#n,e,!0)}#t=N(!1);get writing(){return t(this.#t)}set writing(e){u(this.#t,e,!0)}#a;#s;constructor(e,n){this.#a=e,this.#s=n}of(e){return this.memberships[e]??{}}isLoading(e){return this.loading[e]===!0}async sync(e,n){const a=this.memberships[e]??{},s=n.filter(l=>!(l in a)),i=Object.keys(a).filter(l=>!n.includes(l));if(s.length===0&&i.length===0)return;const o=Object.fromEntries(Object.entries(a).filter(([l])=>n.includes(l)));if(s.length===0){this.memberships={...this.memberships,[e]:o};return}await this.#r(e,s,o)}async refresh(e,n){n.length!==0&&await this.#r(e,n,this.memberships[e]??{})}async#r(e,n,a){this.loading={...this.loading,[e]:!0};const s={...a};try{for(const i of n)try{const o=await this.#a.request("paramset.get",e,i,"MASTER");s[i]=xb(o)??null}catch(o){this.#s.fromError(o,`getParamset ${i} MASTER`)}this.memberships={...this.memberships,[e]:s}}finally{this.loading={...this.loading,[e]:!1}}}async setMembers(e,n,a,s){const i=Jf(n),o=[];this.writing=!0;try{for(const[l,f]of[[a,!0],[s,!1]])for(const p of l)try{o.push(...await this.#a.request("paramset.put",e,[p],"MASTER",{[i]:f}))}catch(b){this.#s.fromError(b,`putParamset ${p} MASTER ${i}`)}}finally{this.writing=!1}return await this.refresh(e,[...a,...s]),o}forget(e){if(e===void 0){this.memberships={};return}this.memberships=Object.fromEntries(Object.entries(this.memberships).filter(([n])=>n!==e))}}class tI{#e=N(void 0);get state(){return t(this.#e)}set state(e){u(this.#e,e,!0)}#n=N(He({}));get enums(){return t(this.#n)}set enums(e){u(this.#n,e,!0)}#t=N(He({}));get objects(){return t(this.#t)}set objects(e){u(this.#t,e,!0)}#a=c(()=>c1(this.enums));get flat(){return t(this.#a)}set flat(e){u(this.#a,e)}#s;#r;#i=[];constructor(e,n){this.#s=e,this.#r=n,this.#i.push(e.on("meta.changed",a=>{this.state=a}),e.on("meta.enums.changed",a=>{this.enums=a}),e.on("meta.objects.changed",a=>{this.objects=a}))}get available(){return this.state!==void 0&&this.state.reachable}get writable(){return this.state!==void 0&&this.state.reachable&&this.state.writable}get flatOnly(){return this.state?.flat===!0}refOf(e,n){return Z_(e,n)}view(e){return this.objects[e]}titleOf(e,n){return wh(e,this.enums[e],n)}options(e){return Fh(this.enums,e)}nameOf(e){for(const n of Object.values(this.flat)){const a=n.find(s=>s.path===e);if(a)return a.node.name}return e}matches(e,n){return Ds(this.objects[e],n)}deviceMatches(e,n,a){return Gh(this.objects[e],n.map(s=>this.objects[s]),a)}members(e){return Eo(this.objects,e)}async load(){try{const e=await this.#s.request("meta.get");this.state=e.state,this.enums=e.enums,this.objects=e.objects}catch{this.state=void 0}}async refresh(){try{return this.state=await this.#s.request("meta.refresh"),!0}catch(e){return this.#r.fromError(e,"meta.refresh"),!1}}async assign(e,n,a){if(e.length===0)return!1;try{return await this.#s.request("meta.assign",[...e],n,a),!0}catch(s){return this.#r.fromError(s,"meta.assign"),!1}}async assignEach(e){const n=[];for(const a of e)try{await this.#s.request("meta.assign",[...a.refs],a.path,a.on),n.push({path:a.path,ok:!0})}catch(s){n.push({path:a.path,ok:!1,message:Si(s).message})}return n}async createEnum(e,n){try{return await this.#s.request("meta.enum.create",e,n),!0}catch(a){return this.#r.fromError(a,"meta.enum.create"),!1}}async renameEnum(e,n){try{return await this.#s.request("meta.enum.update",e,n),!0}catch(a){return this.#r.fromError(a,"meta.enum.update"),!1}}async deleteEnum(e,n){try{return await this.#s.request("meta.enum.delete",e,n),!0}catch(a){return this.#r.fromError(a,"meta.enum.delete"),!1}}async createNode(e,n,a){try{return await this.#s.request("meta.node.create",e,n,a)}catch(s){this.#r.fromError(s,"meta.node.create");return}}async renameNode(e,n){try{return await this.#s.request("meta.node.update",e,{name:n}),!0}catch(a){return this.#r.fromError(a,"meta.node.update"),!1}}async moveNode(e,n){try{return await this.#s.request("meta.node.update",e,{parent:n}),!0}catch(a){return this.#r.fromError(a,"meta.node.update"),!1}}async deleteNode(e,n){try{return await this.#s.request("meta.node.delete",e,n),!0}catch(a){return this.#r.fromError(a,"meta.node.delete"),!1}}dispose(){for(const e of this.#i)e();this.#i.length=0}}class nI{#e=N(He([]));get counters(){return t(this.#e)}set counters(e){u(this.#e,e,!0)}#n;#t;#a;constructor(e,n){this.#n=e,this.#t=n,this.#a=e.on("unreach.changed",a=>{this.counters=a})}countOf(e,n){const a=n.split(":")[0]??n;return this.counters.find(s=>s.interfaceName===e&&s.address===a)?.count??0}isUnreach(e,n){const a=n.split(":")[0]??n;return this.counters.find(s=>s.interfaceName===e&&s.address===a)?.unreach===!0}of(e){return this.counters.filter(n=>n.interfaceName===e)}async load(){try{this.counters=await this.#n.request("unreach.list")}catch(e){this.#t.fromError(e,"unreach.list")}}async reset(e,n){try{return await this.#n.request("unreach.reset",e,n),await this.load(),!0}catch(a){return this.#t.fromError(a,"unreach.reset"),!1}}dispose(){this.#a()}}class rI{#e=N(He([]));get entries(){return t(this.#e)}set entries(e){u(this.#e,e,!0)}#n=N(He([]));get pending(){return t(this.#n)}set pending(e){u(this.#n,e,!0)}#t=N(void 0);get progress(){return t(this.#t)}set progress(e){u(this.#t,e,!0)}#a=N(!1);get hideBackground(){return t(this.#a)}set hideBackground(e){u(this.#a,e,!0)}#s;#r;#i;#l;#o=[];#d=1;constructor(e,n,a={}){this.#s=e,this.#r=n,this.#i=a.max??200,this.#l=a.now??(()=>Date.now()),this.#o.push(e.on("rpcLog.appended",s=>{this.append(s)}),e.on("write.progress",s=>{this.progress=s.done>=s.total?void 0:s}))}get busy(){return this.pending.length>0||this.progress!==void 0}get newestFirst(){return[...this.entries].reverse()}get visible(){const e=this.newestFirst;return this.hideBackground?e.filter(n=>n.origin!=="background"):e}append(e){const n=[...this.entries,e];this.entries=n.length>this.#i?n.slice(n.length-this.#i):n}beginPending(e,n,a){const s=this.#d;return this.#d+=1,this.pending=[...this.pending,{id:s,interfaceName:e,method:n,params:a,startedAt:this.#l()}],s}endPending(e){this.pending=this.pending.filter(n=>n.id!==e)}async load(e){try{this.entries=await this.#s.request("rpcLog.list",e)}catch(n){this.#r.fromError(n,"rpcLog.list")}}async cancel(e){try{return await this.#s.request("write.cancel",e)}catch(n){return this.#r.fromError(n,"write.cancel"),0}}async clear(){this.entries=[];try{await this.#s.request("rpcLog.clear")}catch(e){this.#r.fromError(e,"rpcLog.clear")}}dispose(){for(const e of this.#o)e();this.#o.length=0}}class aI{transport;i18n;notices;app;interfaces;devices;names;links;serviceMessages;unreach;events;rpcLog;host;meta;taxonomy;groups;smokeGroups;paramsets;radio;console;changeSet;shell;#e=!1;constructor(e,n={}){this.transport=e,this.notices=new $p(e,{hintFor:a=>B1(this.host.info?.platform,a)?this.i18n.t(Dh):void 0}),this.app=new Mx(e,this.notices,n),this.i18n=new S1(this.app.language),this.interfaces=new jx(e,this.notices),this.devices=new Fx(e,this.notices),this.names=new qx(e,this.notices),this.links=new Yx(e,this.notices),this.serviceMessages=new Zx(e,this.notices),this.unreach=new nI(e,this.notices),this.events=new Gx(e,this.notices,{...n.eventCapacity===void 0?{}:{capacity:n.eventCapacity}}),this.rpcLog=new rI(e,this.notices),this.meta=new Kx(e,{...n.dataSource===void 0?{}:{source:n.dataSource}}),this.taxonomy=new tI(e,this.notices),this.groups=new Ux(e,this.notices),this.smokeGroups=new eI(e,this.notices),this.paramsets=new Xx(e,this.notices),this.radio=new Qx(e,this.notices),this.console=new Lx(e,this.notices),this.changeSet=new Ox(e,this.notices,this.rpcLog),this.app.onInterfaceRouted(a=>{this.#e&&this.#n(Qf(a))}),this.shell="shellWindow"in n?new Pu(n.shellWindow):new Pu,this.host=new zx({...n.hostBridge===void 0?{}:{bridge:n.hostBridge},...n.hostScope===void 0?{}:{scope:n.hostScope}})}get tabs(){return this.app.storeSelected?fc(this.taxonomy.state):$g(this.interfaces.typeOf(this.app.selectedInterface),{heatingGroups:this.groups.offered})}knownName=e=>this.names.name(e)??this.groups.fallbackName(e);nameOf=e=>this.knownName(e)??e;async start(){await this.app.load(),this.i18n.language=this.app.language,this.meta.setLanguage(this.app.language).catch(()=>{}),this.host.load().catch(()=>{}),await Promise.all([this.interfaces.load(),this.names.load(),this.rpcLog.load(),this.taxonomy.load()]),await this.groups.follow(this.taxonomy.state);const e=this.app.storeSelected&&fc(this.taxonomy.state).length===0?this.app.configuredInterfaces[0]??"":this.app.selectedInterface;await this.selectInterface(e),this.#e=!0}async selectInterface(e){const n=this.app.storeSelected;this.app.setInterface(e),await this.#n(n)}async#n(e){const n=this.app.selectedInterface;if(this.app.storeSelected){(!si(this.app.tab)||!this.tabs.includes(this.app.tab))&&this.app.setTab(this.tabs[0]??"metadata");return}(e||si(this.app.tab))&&this.app.setTab(this.app.interfaceTab),this.tabs.includes(this.app.tab)||this.app.setTab("devices"),n!==""&&await Promise.all([this.devices.ensure(n),this.links.ensure(n),this.serviceMessages.load(),this.events.load()])}async refresh(){const e=this.app.selectedInterface;e===""||this.app.storeSelected||await Promise.all([this.devices.load(e,{refresh:!0}),this.links.load(e),this.serviceMessages.load(),this.interfaces.load()])}dispose(){this.shell.dispose(),this.radio.dispose(),this.host.dispose(),this.rpcLog.dispose(),this.events.dispose(),this.serviceMessages.dispose(),this.groups.dispose(),this.taxonomy.dispose(),this.names.dispose(),this.devices.dispose(),this.interfaces.dispose(),this.app.dispose(),this.notices.dispose()}}function sI(r,e={}){return new aI(r,e)}const Jh=["BidCos-RF","HmIP-RF"],em=[{ADDRESS:"BidCoS-RF",TYPE:"HM-RCV-50",PARENT:"",CHILDREN:["BidCoS-RF:0","BidCoS-RF:1","BidCoS-RF:2"],PARAMSETS:["MASTER"],FIRMWARE:"2.31.25",VERSION:1,FLAGS:9,RX_MODE:1,INTERFACE:"",RF_ADDRESS:1234567},{ADDRESS:"BidCoS-RF:0",TYPE:"MAINTENANCE",PARENT:"BidCoS-RF",PARENT_TYPE:"HM-RCV-50",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:1},{ADDRESS:"BidCoS-RF:1",TYPE:"VIRTUAL_KEY",PARENT:"BidCoS-RF",PARENT_TYPE:"HM-RCV-50",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH KEYMATIC WINMATIC",LINK_TARGET_ROLES:"",FLAGS:1,VERSION:1},{ADDRESS:"BidCoS-RF:2",TYPE:"VIRTUAL_KEY",PARENT:"BidCoS-RF",PARENT_TYPE:"HM-RCV-50",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:2,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH KEYMATIC WINMATIC",LINK_TARGET_ROLES:"",FLAGS:1,VERSION:1},{ADDRESS:"MEQ0123456",TYPE:"HM-LC-Sw1-Pl-CT-R1",PARENT:"",CHILDREN:["MEQ0123456:0","MEQ0123456:1"],PARAMSETS:["MASTER"],FIRMWARE:"2.5",AVAILABLE_FIRMWARE:"2.5",VERSION:8,FLAGS:1,RX_MODE:1,INTERFACE:"BidCoS-RF",ROAMING:0,RF_ADDRESS:4132819,UPDATABLE:1},{ADDRESS:"MEQ0123456:0",TYPE:"MAINTENANCE",PARENT:"MEQ0123456",PARENT_TYPE:"HM-LC-Sw1-Pl-CT-R1",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:8},{ADDRESS:"MEQ0123456:1",TYPE:"SWITCH",PARENT:"MEQ0123456",PARENT_TYPE:"HM-LC-Sw1-Pl-CT-R1",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:2,LINK_SOURCE_ROLES:"",LINK_TARGET_ROLES:"SWITCH",FLAGS:1,VERSION:8},{ADDRESS:"NEQ1000001",TYPE:"HM-Sec-SD-2",PARENT:"",CHILDREN:["NEQ1000001:0","NEQ1000001:1"],PARAMSETS:["MASTER"],FIRMWARE:"1.4",VERSION:1,FLAGS:1,RX_MODE:12,RF_ADDRESS:5000001},{ADDRESS:"NEQ1000001:0",TYPE:"MAINTENANCE",PARENT:"NEQ1000001",PARENT_TYPE:"HM-Sec-SD-2",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:1},{ADDRESS:"NEQ1000001:1",TYPE:"SMOKE_DETECTOR",PARENT:"NEQ1000001",PARENT_TYPE:"HM-Sec-SD-2",PARAMSETS:["MASTER","VALUES"],INDEX:1,DIRECTION:1,FLAGS:1,VERSION:1,TEAM:"*NEQ1000001:1",TEAM_TAG:"smoke_detector"},{ADDRESS:"NEQ1000002",TYPE:"HM-Sec-SD-2",PARENT:"",CHILDREN:["NEQ1000002:0","NEQ1000002:1"],PARAMSETS:["MASTER"],FIRMWARE:"1.4",VERSION:1,FLAGS:1,RX_MODE:12,RF_ADDRESS:5000002},{ADDRESS:"NEQ1000002:0",TYPE:"MAINTENANCE",PARENT:"NEQ1000002",PARENT_TYPE:"HM-Sec-SD-2",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:1},{ADDRESS:"NEQ1000002:1",TYPE:"SMOKE_DETECTOR",PARENT:"NEQ1000002",PARENT_TYPE:"HM-Sec-SD-2",PARAMSETS:["MASTER","VALUES"],INDEX:1,DIRECTION:1,FLAGS:1,VERSION:1,TEAM:"*NEQ1000001:1",TEAM_TAG:"smoke_detector"},{ADDRESS:"*NEQ1000001",TYPE:"HM-Sec-SD-2-Team",PARENT:"",CHILDREN:["*NEQ1000001:0","*NEQ1000001:1"],PARAMSETS:["MASTER"],FIRMWARE:"1.0",VERSION:3,FLAGS:9,RX_MODE:0},{ADDRESS:"*NEQ1000001:0",TYPE:"MAINTENANCE",PARENT:"*NEQ1000001",PARENT_TYPE:"HM-Sec-SD-2-Team",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:3},{ADDRESS:"*NEQ1000001:1",TYPE:"SMOKE_DETECTOR_TEAM_V2",PARENT:"*NEQ1000001",PARENT_TYPE:"HM-Sec-SD-2-Team",PARAMSETS:["MASTER","VALUES"],INDEX:1,DIRECTION:0,FLAGS:1,VERSION:3,TEAM_TAG:"smoke_detector",TEAM_CHANNELS:["NEQ1000001:1","NEQ1000002:1"]},{ADDRESS:"JEQ0234567",TYPE:"HM-PBI-4-FM",PARENT:"",CHILDREN:["JEQ0234567:0","JEQ0234567:1","JEQ0234567:2"],PARAMSETS:["MASTER"],FIRMWARE:"1.4",VERSION:15,FLAGS:1,RX_MODE:12,INTERFACE:"BidCoS-RF",ROAMING:0,RF_ADDRESS:4298112},{ADDRESS:"JEQ0234567:0",TYPE:"MAINTENANCE",PARENT:"JEQ0234567",PARENT_TYPE:"HM-PBI-4-FM",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:15},{ADDRESS:"JEQ0234567:1",TYPE:"KEY",PARENT:"JEQ0234567",PARENT_TYPE:"HM-PBI-4-FM",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH KEYMATIC WINMATIC",LINK_TARGET_ROLES:"",FLAGS:1,VERSION:15},{ADDRESS:"JEQ0234567:2",TYPE:"KEY",PARENT:"JEQ0234567",PARENT_TYPE:"HM-PBI-4-FM",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:2,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH KEYMATIC WINMATIC",LINK_TARGET_ROLES:"",FLAGS:1,VERSION:15},{ADDRESS:"KEQ0345678",TYPE:"HM-CC-RT-DN",PARENT:"",CHILDREN:["KEQ0345678:0","KEQ0345678:4"],PARAMSETS:["MASTER"],FIRMWARE:"1.10",AVAILABLE_FIRMWARE:"1.11",VERSION:20,FLAGS:1,RX_MODE:12,INTERFACE:"BidCoS-RF",ROAMING:0,RF_ADDRESS:5012733,UPDATABLE:1},{ADDRESS:"KEQ0345678:0",TYPE:"MAINTENANCE",PARENT:"KEQ0345678",PARENT_TYPE:"HM-CC-RT-DN",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:20},{ADDRESS:"KEQ0345678:4",TYPE:"CLIMATECONTROL_RT_TRANSCEIVER",PARENT:"KEQ0345678",PARENT_TYPE:"HM-CC-RT-DN",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:4,DIRECTION:1,LINK_SOURCE_ROLES:"THERMALCONTROL_TRANSMIT",LINK_TARGET_ROLES:"",FLAGS:1,VERSION:20},{ADDRESS:"LEQ0456789",TYPE:"HM-Sec-SC-2",PARENT:"",CHILDREN:["LEQ0456789:0","LEQ0456789:1"],PARAMSETS:["MASTER"],FIRMWARE:"2.2",VERSION:16,FLAGS:1,RX_MODE:12,INTERFACE:"BidCoS-RF",ROAMING:0,RF_ADDRESS:5298004},{ADDRESS:"LEQ0456789:0",TYPE:"MAINTENANCE",PARENT:"LEQ0456789",PARENT_TYPE:"HM-Sec-SC-2",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:16},{ADDRESS:"LEQ0456789:1",TYPE:"SHUTTER_CONTACT",PARENT:"LEQ0456789",PARENT_TYPE:"HM-Sec-SC-2",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"WINDOW_SWITCH_RECEIVER",LINK_TARGET_ROLES:"",FLAGS:1,VERSION:16},{ADDRESS:"GEQ0567890",TYPE:"HM-LC-Dim1T-FM",PARENT:"",CHILDREN:["GEQ0567890:0","GEQ0567890:1"],PARAMSETS:["MASTER"],FIRMWARE:"2.2",VERSION:34,FLAGS:1,RX_MODE:1,INTERFACE:"BidCoS-RF",ROAMING:0,RF_ADDRESS:3912004},{ADDRESS:"GEQ0567890:0",TYPE:"MAINTENANCE",PARENT:"GEQ0567890",PARENT_TYPE:"HM-LC-Dim1T-FM",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:34},{ADDRESS:"GEQ0567890:1",TYPE:"DIMMER",PARENT:"GEQ0567890",PARENT_TYPE:"HM-LC-Dim1T-FM",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:2,LINK_SOURCE_ROLES:"",LINK_TARGET_ROLES:"SWITCH",FLAGS:1,VERSION:34}],iI=[{ADDRESS:"HmIP-RCV-50",TYPE:"HmIP-RCV-50",PARENT:"",CHILDREN:["HmIP-RCV-50:0","HmIP-RCV-50:1"],PARAMSETS:["MASTER"],FIRMWARE:"1.0.0",VERSION:1,FLAGS:9,RX_MODE:1,SUBTYPE:""},{ADDRESS:"HmIP-RCV-50:0",TYPE:"MAINTENANCE",PARENT:"HmIP-RCV-50",PARENT_TYPE:"HmIP-RCV-50",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:1},{ADDRESS:"HmIP-RCV-50:1",TYPE:"VIRTUAL_KEY",PARENT:"HmIP-RCV-50",PARENT_TYPE:"HmIP-RCV-50",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH",FLAGS:1,VERSION:1},{ADDRESS:"000A1B2C3D4E5F",TYPE:"HmIP-BSM",SUBTYPE:"BSM",PARENT:"",CHILDREN:["000A1B2C3D4E5F:0","000A1B2C3D4E5F:1","000A1B2C3D4E5F:4"],PARAMSETS:["MASTER"],FIRMWARE:"2.10.4",AVAILABLE_FIRMWARE:"2.12.0",VERSION:40,FLAGS:1,RX_MODE:1,INTERFACE:"HmIP-RF",UPDATABLE:1},{ADDRESS:"000A1B2C3D4E5F:0",TYPE:"MAINTENANCE",PARENT:"000A1B2C3D4E5F",PARENT_TYPE:"HmIP-BSM",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:40},{ADDRESS:"000A1B2C3D4E5F:1",TYPE:"KEY_TRANSCEIVER",PARENT:"000A1B2C3D4E5F",PARENT_TYPE:"HmIP-BSM",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH",FLAGS:1,VERSION:40},{ADDRESS:"000A1B2C3D4E5F:4",TYPE:"SWITCH_VIRTUAL_RECEIVER",PARENT:"000A1B2C3D4E5F",PARENT_TYPE:"HmIP-BSM",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:4,DIRECTION:2,LINK_TARGET_ROLES:"SWITCH",FLAGS:1,VERSION:40},{ADDRESS:"0011D3C9A1B2C3",TYPE:"HmIP-SWDO",SUBTYPE:"SWDO",PARENT:"",CHILDREN:["0011D3C9A1B2C3:0","0011D3C9A1B2C3:1"],PARAMSETS:["MASTER"],FIRMWARE:"1.4.6",VERSION:12,FLAGS:1,RX_MODE:8,INTERFACE:"HmIP-RF"},{ADDRESS:"0011D3C9A1B2C3:0",TYPE:"MAINTENANCE",PARENT:"0011D3C9A1B2C3",PARENT_TYPE:"HmIP-SWDO",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:12},{ADDRESS:"0011D3C9A1B2C3:1",TYPE:"SHUTTER_CONTACT",PARENT:"0011D3C9A1B2C3",PARENT_TYPE:"HmIP-SWDO",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"WINDOW_SWITCH_RECEIVER",FLAGS:1,VERSION:12},{ADDRESS:"3014F711A0001F",TYPE:"HmIP-eTRV-2",SUBTYPE:"eTRV",PARENT:"",CHILDREN:["3014F711A0001F:0","3014F711A0001F:1"],PARAMSETS:["MASTER"],FIRMWARE:"2.4.4",VERSION:34,FLAGS:1,RX_MODE:8,INTERFACE:"HmIP-RF"},{ADDRESS:"3014F711A0001F:0",TYPE:"MAINTENANCE",PARENT:"3014F711A0001F",PARENT_TYPE:"HmIP-eTRV-2",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:34},{ADDRESS:"3014F711A0001F:1",TYPE:"HEATING_CLIMATECONTROL_TRANSCEIVER",PARENT:"3014F711A0001F",PARENT_TYPE:"HmIP-eTRV-2",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:2,LINK_TARGET_ROLES:"THERMALCONTROL_TRANSMIT",FLAGS:1,VERSION:34},{ADDRESS:"0001D8A9B7C6D5",TYPE:"HmIP-WRC2",SUBTYPE:"WRC2",PARENT:"",CHILDREN:["0001D8A9B7C6D5:0","0001D8A9B7C6D5:1","0001D8A9B7C6D5:2"],PARAMSETS:["MASTER"],FIRMWARE:"1.2.6",VERSION:10,FLAGS:1,RX_MODE:8,INTERFACE:"HmIP-RF"},{ADDRESS:"0001D8A9B7C6D5:0",TYPE:"MAINTENANCE",PARENT:"0001D8A9B7C6D5",PARENT_TYPE:"HmIP-WRC2",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:10},{ADDRESS:"0001D8A9B7C6D5:1",TYPE:"KEY_TRANSCEIVER",PARENT:"0001D8A9B7C6D5",PARENT_TYPE:"HmIP-WRC2",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:1,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH",FLAGS:1,VERSION:10},{ADDRESS:"0001D8A9B7C6D5:2",TYPE:"KEY_TRANSCEIVER",PARENT:"0001D8A9B7C6D5",PARENT_TYPE:"HmIP-WRC2",PARAMSETS:["MASTER","LINK","VALUES"],INDEX:2,DIRECTION:1,LINK_SOURCE_ROLES:"SWITCH",FLAGS:1,VERSION:10},...["0001D3C9000001","0001D3C9000002","0001D3C9000003"].flatMap(r=>[{ADDRESS:r,TYPE:"HmIP-SWSD",PARENT:"",CHILDREN:[`${r}:0`,`${r}:1`],PARAMSETS:["MASTER"],FIRMWARE:"1.0.12",VERSION:1,FLAGS:1,RX_MODE:12,INTERFACE:"HmIP-RF"},{ADDRESS:`${r}:0`,TYPE:"MAINTENANCE",PARENT:r,PARENT_TYPE:"HmIP-SWSD",PARAMSETS:["MASTER","VALUES"],INDEX:0,DIRECTION:0,FLAGS:3,VERSION:1},{ADDRESS:`${r}:1`,TYPE:"SMOKE_DETECTOR",PARENT:r,PARENT_TYPE:"HmIP-SWSD",PARAMSETS:["MASTER","VALUES"],INDEX:1,DIRECTION:1,FLAGS:1,VERSION:1}])],tm={"BidCos-RF":em,"HmIP-RF":iI},fa={"BidCoS-RF":"CCU",MEQ0123456:"Licht Küche","MEQ0123456:1":"Licht Küche:1",JEQ0234567:"Taster Flur","JEQ0234567:1":"Taster Flur:1","JEQ0234567:2":"Taster Flur:2",KEQ0345678:"Thermostat Bad","KEQ0345678:4":"Thermostat Bad:4",LEQ0456789:"Fenster Schlafzimmer","LEQ0456789:1":"Fenster Schlafzimmer:1",GEQ0567890:"Dimmer Wohnzimmer","GEQ0567890:1":"Dimmer Wohnzimmer:1","000A1B2C3D4E5F":"Schaltaktor Terrasse","000A1B2C3D4E5F:4":"Schaltaktor Terrasse:4","0011D3C9A1B2C3":"Fenster Arbeitszimmer","3014F711A0001F":"Heizung Arbeitszimmer","0001D8A9B7C6D5":"Wandtaster Diele",NEQ1000001:"Rauchmelder Flur","NEQ1000001:1":"Rauchmelder Flur:1",NEQ1000002:"Rauchmelder Küche","NEQ1000002:1":"Rauchmelder Küche:1","*NEQ1000001":"Rauchmelder Gruppe","0001D3C9000001":"Rauchmelder Schlafzimmer","0001D3C9000001:1":"Rauchmelder Schlafzimmer:1","0001D3C9000002":"Rauchmelder Kinderzimmer","0001D3C9000002:1":"Rauchmelder Kinderzimmer:1","0001D3C9000003":"Rauchmelder Keller","0001D3C9000003:1":"Rauchmelder Keller:1"},ol={"BidCos-RF":[{SENDER:"JEQ0234567:1",RECEIVER:"MEQ0123456:1",NAME:"Taster Flur - Licht Küche",DESCRIPTION:"Standardverknüpfung Taster - Schaltaktor",FLAGS:0},{SENDER:"JEQ0234567:2",RECEIVER:"GEQ0567890:1",NAME:"Taster Flur - Dimmer Wohnzimmer",DESCRIPTION:"Dimmer - ein/aus & heller/dunkler",FLAGS:0}],"HmIP-RF":[{SENDER:"0001D8A9B7C6D5:1",RECEIVER:"000A1B2C3D4E5F:4",NAME:"Wandtaster Diele - Schaltaktor Terrasse",DESCRIPTION:"",FLAGS:0}]},Fi=[{interfaceName:"BidCos-RF",address:"LEQ0456789:0",datapoint:"LOWBAT",value:!0,since:Date.parse("2026-09-04T18:22:00Z")},{interfaceName:"BidCos-RF",address:"KEQ0345678:0",datapoint:"STICKY_UNREACH",value:!0,since:Date.parse("2026-09-05T06:14:00Z")}],oI={"BidCos-RF":{MEQ0123456:{"BidCoS-RF":[-52,-56],JEQ0234567:[-70,65536]},JEQ0234567:{"BidCoS-RF":[-60,-36]},KEQ0345678:{"BidCoS-RF":[-88,-91]},LEQ0456789:{"BidCoS-RF":[-112,65536]},GEQ0567890:{"BidCoS-RF":[-47,-45]}},"HmIP-RF":{"000A1B2C3D4E5F":{"3014F711A0000418971558":[-55,-61]},"0001D3C99C1234":{"3014F711A0000418971558":[-73,65536]}}},lI=[{ADDRESS:"3014F711A0000418971558",TYPE:"HMIP_CCU2",DESCRIPTION:"HMIP_CCU2 3014F711A0000418971558",CONNECTED:!0,DEFAULT:!0,DUTY_CYCLE:1,FIRMWARE_VERSION:"4.4.18"}],dI=[{ADDRESS:"BidCoS-RF",TYPE:"CCU2",DESCRIPTION:"CCU2-Coprocessor",CONNECTED:!0,DEFAULT:!0,DUTY_CYCLE:1,FIRMWARE_VERSION:"2.8.6"}],nm=[{name:"BidCos-RF",type:"BidCos-RF",protocol:"xmlrpc",host:"demo.local",port:2001,connected:!0,lastEvent:Date.parse("2026-09-05T09:59:30Z")},{name:"HmIP-RF",type:"HmIP-RF",protocol:"xmlrpc",host:"demo.local",port:2010,connected:!0,lastEvent:Date.parse("2026-09-05T09:59:12Z")},{name:"BidCos-Wired",type:"BidCos-Wired",protocol:"xmlrpc",host:"demo.local",port:2e3,connected:!1,absent:!0,error:"connect ECONNREFUSED demo.local:2000"},{name:"CUxD",type:"CUxD",protocol:"binrpc",host:"demo.local",port:8701,connected:!0,subscribing:!0,lastEvent:Date.parse("2026-09-05T09:59:58Z")},{name:"VirtualDevices",type:"VirtualDevices",protocol:"xmlrpc",host:"demo.local",port:9292,connected:!1,unreachable:!0,error:"VirtualDevices: init timed out after 10000 ms"}],Ou=[{interfaceName:"BidCos-RF",address:"MEQ0123456",count:7,lastAt:Date.parse("2026-09-05T08:12:00Z")},{interfaceName:"BidCos-RF",address:"JEQ0234567",count:2,lastAt:Date.parse("2026-09-05T09:58:00Z"),unreach:!0}],cI=em.filter(r=>(r.TEAM_CHANNELS??[]).length>0),uI={format:1,revision:7,objects:{"BidCos-RF.MEQ0123456:1":{name:fa["MEQ0123456:1"]??"",enums:["room/eg/kueche","function/licht"],meta:{}},"BidCos-RF.JEQ0234567:1":{name:fa["JEQ0234567:1"]??"",enums:["room/eg/flur"],meta:{}},"BidCos-RF.KEQ0345678:4":{name:fa["KEQ0345678:4"]??"",enums:["room/og/bad","function/heizung"],meta:{}},"BidCos-RF.LEQ0456789:1":{name:fa["LEQ0456789:1"]??"",enums:["room/og/schlafzimmer","function/sicherheit"],meta:{}},"BidCos-RF.GEQ0567890:1":{name:fa["GEQ0567890:1"]??"",enums:["room/eg/wohnzimmer","function/licht"],meta:{}},"HmIP-RF.000A1B2C3D4E5F:4":{name:fa["000A1B2C3D4E5F:4"]??"",enums:["room/aussen","function/licht"],meta:{}}},enums:{room:{name:{de:"Räume",en:"Rooms"},tree:[{id:"eg",name:"Erdgeschoss",children:[{id:"kueche",name:"Küche"},{id:"wohnzimmer",name:"Wohnzimmer"},{id:"flur",name:"Flur"}]},{id:"og",name:"Obergeschoss",children:[{id:"bad",name:"Bad"},{id:"schlafzimmer",name:"Schlafzimmer"}]},{id:"aussen",name:"Außen"}]},function:{name:{de:"Gewerke",en:"Functions"},tree:[{id:"licht",name:"Licht"},{id:"heizung",name:"Heizung"},{id:"sicherheit",name:"Sicherheit"}]},floor:{name:{de:"Etagen",en:"Floors"},tree:[]}}},fI={enabled:!0,reachable:!0,names:Object.keys(fa).length},Zl={host:"demo.local",interfaces:nm.map(r=>r.name),autoDetect:!0,extraInterfaces:[],tls:!1,rega:!0,callback:{ip:"192.168.1.20",xmlrpcPort:0,binrpcPort:0},language:"de",writePaceMs:250,rpcLogFolder:""},ll={version:"3.0.0-dev.0",connection:Zl,localAddresses:["192.168.1.20","10.0.0.5"],discovered:[{address:"demo.local",name:"Demo-CCU",serial:"KEQ0000001",firmware:"3.89.8",interfaces:[...Jh]}]};function hI(r=Zl.host){const e=r===Zl.host;return{host:r,...r===""?{}:{hostAddress:e?"192.168.1.2":"172.16.0.2"},auto:{address:"192.168.1.20",reason:r===""?"first":e?"subnet":"route"},addresses:[{address:"192.168.1.20",inSubnet:e},{address:"10.0.0.5",inSubnet:!1},{address:"127.0.0.1",inSubnet:!1}]}}const Lu=[{timestamp:Date.parse("2026-09-05T09:58:41Z"),interfaceName:"BidCos-RF",method:"event",address:"JEQ0234567:1",datapoint:"PRESS_SHORT",value:!0},{timestamp:Date.parse("2026-09-05T09:58:41Z"),interfaceName:"BidCos-RF",method:"event",address:"MEQ0123456:1",datapoint:"STATE",value:!0},{timestamp:Date.parse("2026-09-05T09:59:12Z"),interfaceName:"HmIP-RF",method:"event",address:"0011D3C9A1B2C3:1",datapoint:"STATE",value:1},{timestamp:Date.parse("2026-09-05T09:59:30Z"),interfaceName:"BidCos-RF",method:"event",address:"KEQ0345678:4",datapoint:"ACTUAL_TEMPERATURE",value:21.5}],mI=[{id:1,timestamp:Date.parse("2026-09-05T09:57:02Z"),interfaceName:"BidCos-RF",method:"putParamset",params:["MEQ0123456:1","MASTER",{LOGGING:1}],ok:!0,result:"",durationMs:184,origin:"ui"},{id:2,timestamp:Date.parse("2026-09-05T09:57:44Z"),interfaceName:"HmIP-RF",method:"putParamset",params:["000A1B2C3D4E5F:4","MASTER",{PROFILE_MODE:3}],ok:!1,error:"Unknown parameter PROFILE_MODE",durationMs:902,origin:"ui"},{id:3,timestamp:Date.parse("2026-09-05T09:58:00Z"),interfaceName:"HmIP-RF",method:"ping",params:["hmm"],ok:!0,result:"",durationMs:8,origin:"background"},{id:4,timestamp:Date.parse("2026-09-05T09:58:30Z"),interfaceName:"BidCos-RF",method:"getVersion",params:[],ok:!0,result:"2.3.4",durationMs:15,origin:"console"}],vI=[{name:"listDevices",help:"Returns the device descriptions of the interface.",params:[]},{name:"getParamset",help:"Reads a paramset of a device or channel.",params:[{name:"address",type:"String"},{name:"paramsetKey",type:"String",values:["MASTER","VALUES"]}]},{name:"setValue",help:"Writes one value of the VALUES paramset.",params:[{name:"address",type:"String"},{name:"valueKey",type:"String"},{name:"value",type:"Any"}]},{name:"rssiInfo",help:"Returns the RSSI matrix.",params:[]},{name:"putParamset",help:"Writes a paramset of a device or channel.",params:[{name:"address",type:"String"},{name:"paramsetKey",type:"String",values:["MASTER","VALUES"]},{name:"set",type:"Struct"}]},{name:"deleteDevice",help:"Removes a device from the interface process.",params:[{name:"address",type:"String"},{name:"flags",type:"Integer"}]},{name:"listBidcosInterfaces",help:"Returns the BidCos interfaces.",params:[]}],Fu=[{interfaceName:"BidCos-RF",method:"event",address:"JEQ0234567:1",datapoint:"PRESS_SHORT",value:!0},{interfaceName:"BidCos-RF",method:"event",address:"MEQ0123456:1",datapoint:"STATE",value:!0},{interfaceName:"BidCos-RF",method:"event",address:"MEQ0123456:1",datapoint:"STATE",value:!1},{interfaceName:"BidCos-RF",method:"event",address:"KEQ0345678:4",datapoint:"ACTUAL_TEMPERATURE",value:21.7},{interfaceName:"HmIP-RF",method:"event",address:"0011D3C9A1B2C3:1",datapoint:"STATE",value:0},{interfaceName:"HmIP-RF",method:"event",address:"3014F711A0001F:1",datapoint:"LEVEL",value:.35},{interfaceName:"BidCos-RF",method:"event",address:"GEQ0567890:1",datapoint:"LEVEL",value:.9}];function Ys(r){return Jh.includes(r)}const dl=Object.fromEntries([["REPEAT_ENABLE",{TYPE:"BOOL",OPERATIONS:3,FLAGS:1,DEFAULT:!0,TAB_ORDER:0}],...Array.from({length:8},(r,e)=>[`GROUP_${String(e+1)}`,{TYPE:"BOOL",OPERATIONS:3,FLAGS:1,DEFAULT:!1,TAB_ORDER:e+1}])]),Gu={"SWITCH|MASTER":{LOGGING:{TYPE:"ENUM",OPERATIONS:3,FLAGS:1,VALUE_LIST:["OFF","ON"],DEFAULT:1,TAB_ORDER:1},TRANSMIT_TRY_MAX:{TYPE:"INTEGER",OPERATIONS:3,FLAGS:1,MIN:1,MAX:10,DEFAULT:6,TAB_ORDER:2},ON_TIME:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:0,MAX:8590,UNIT:"s",DEFAULT:0,TAB_ORDER:3,SPECIAL:[{ID:"NOT_USED",VALUE:111600}]},STATUSINFO_MINDELAY:{TYPE:"INTEGER",OPERATIONS:3,FLAGS:1,MIN:0,MAX:15,DEFAULT:2,TAB_ORDER:4}},"SWITCH|VALUES":{STATE:{TYPE:"BOOL",OPERATIONS:7,FLAGS:1,DEFAULT:!1,TAB_ORDER:1},WORKING:{TYPE:"BOOL",OPERATIONS:5,FLAGS:1,DEFAULT:!1,TAB_ORDER:2},INHIBIT:{TYPE:"BOOL",OPERATIONS:7,FLAGS:1,DEFAULT:!1,TAB_ORDER:3}},"DIMMER|MASTER":{LOGGING:{TYPE:"ENUM",OPERATIONS:3,FLAGS:1,VALUE_LIST:["OFF","ON"],DEFAULT:1,TAB_ORDER:1},DIM_STEP:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:0,MAX:1,UNIT:"100%",DEFAULT:.05,TAB_ORDER:2}},"DIMMER|VALUES":{LEVEL:{TYPE:"FLOAT",OPERATIONS:7,FLAGS:1,MIN:0,MAX:1,UNIT:"100%",DEFAULT:0,TAB_ORDER:1},WORKING:{TYPE:"BOOL",OPERATIONS:5,FLAGS:1,DEFAULT:!1,TAB_ORDER:2}},"KEY|MASTER":{LONG_PRESS_TIME:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:.3,MAX:1.8,UNIT:"s",DEFAULT:.4},DBL_PRESS_TIME:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:0,MAX:1.5,UNIT:"s",DEFAULT:0}},"KEY|VALUES":{PRESS_SHORT:{TYPE:"ACTION",OPERATIONS:6,FLAGS:1},PRESS_LONG:{TYPE:"ACTION",OPERATIONS:6,FLAGS:1}},"SWITCH_VIRTUAL_RECEIVER|MASTER":{LOGGING:{TYPE:"ENUM",OPERATIONS:3,FLAGS:1,VALUE_LIST:["OFF","ON"],DEFAULT:1}},"SWITCH_VIRTUAL_RECEIVER|LINK":{SHORT_ON_TIME:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:0,MAX:8590,UNIT:"s",DEFAULT:111600,SPECIAL:[{ID:"NOT_USED",VALUE:111600}]},SHORT_ON_LEVEL:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:0,MAX:1,UNIT:"100%",DEFAULT:1},SHORT_ACTION_TYPE:{TYPE:"ENUM",OPERATIONS:3,FLAGS:1,VALUE_LIST:["INACTIVE","JUMP_TO_TARGET","TOGGLE_TO_COUNTER","TOGGLE_INVERSE_TO_COUNTER"],DEFAULT:1},UI_HINT:{TYPE:"STRING",OPERATIONS:3,FLAGS:2,DEFAULT:""}},"KEY_TRANSCEIVER|LINK":{LONG_PRESS_TIME:{TYPE:"FLOAT",OPERATIONS:3,FLAGS:1,MIN:.3,MAX:1.8,UNIT:"s",DEFAULT:.4}},"MAINTENANCE|VALUES":{UNREACH:{TYPE:"BOOL",OPERATIONS:5,FLAGS:9,DEFAULT:!1},STICKY_UNREACH:{TYPE:"BOOL",OPERATIONS:7,FLAGS:9,DEFAULT:!1},LOWBAT:{TYPE:"BOOL",OPERATIONS:5,FLAGS:9,DEFAULT:!1}},"CLIMATECONTROL_RT_TRANSCEIVER|VALUES":{FAULT_REPORTING:{TYPE:"ENUM",OPERATIONS:5,FLAGS:9,DEFAULT:0,MIN:0,MAX:7,VALUE_LIST:["NO_FAULT","VALVE_TIGHT","ADJUSTING_RANGE_TOO_LARGE","ADJUSTING_RANGE_TOO_SMALL","COMMUNICATION_ERROR","","LOWBAT","VALVE_ERROR_POSITION"]}},"|MASTER":{ARR_TIMEOUT:{TYPE:"INTEGER",OPERATIONS:3,FLAGS:1,MIN:1,MAX:20,DEFAULT:10}},"0001D3C9000001:1|MASTER":dl,"0001D3C9000002:1|MASTER":dl,"0001D3C9000003:1|MASTER":dl},cl={REPEAT_ENABLE:!0,GROUP_1:!1,GROUP_2:!1,GROUP_3:!1,GROUP_4:!1,GROUP_5:!1,GROUP_6:!1,GROUP_7:!1,GROUP_8:!1},Uu={"SWITCH|MASTER":{LOGGING:1,TRANSMIT_TRY_MAX:6,ON_TIME:111600,STATUSINFO_MINDELAY:2},"SWITCH|VALUES":{STATE:!0,WORKING:!1,INHIBIT:!1},"DIMMER|MASTER":{LOGGING:1,DIM_STEP:.05},"DIMMER|VALUES":{LEVEL:.9,WORKING:!1},"KEY|MASTER":{LONG_PRESS_TIME:.4,DBL_PRESS_TIME:0},"SWITCH_VIRTUAL_RECEIVER|MASTER":{LOGGING:1},"SWITCH_VIRTUAL_RECEIVER|LINK":{SHORT_ON_TIME:111600,SHORT_ON_LEVEL:1,SHORT_ACTION_TYPE:1,UI_HINT:""},"KEY_TRANSCEIVER|LINK":{LONG_PRESS_TIME:.4},"MAINTENANCE|VALUES":{UNREACH:!1,STICKY_UNREACH:!1,LOWBAT:!1},"|MASTER":{ARR_TIMEOUT:10},"0001D3C9000001:1|MASTER":{...cl,GROUP_1:!0},"0001D3C9000002:1|MASTER":{...cl,GROUP_1:!0},"0001D3C9000003:1|MASTER":cl};function rm(r){for(const e of Object.values(tm)){const n=e.find(a=>a.ADDRESS===r);if(n)return n.PARENT===void 0||n.PARENT===""?"":n.TYPE}return""}function pI(r,e){return Gu[`${r}|${e}`]??Gu[`${rm(r)}|${e}`]??{}}function gI(r,e){return Uu[`${r}|${e}`]??Uu[`${rm(r)}|${e}`]??{}}const bI={"data/manifest.json":{generatedAt:"2026-09-05T00:00:00.000Z",sources:[{name:"openccu-data",version:"2026.7.2"}],receiverTypes:["SWITCH_VIRTUAL_RECEIVER"],languages:["de","en"]},"data/receiver-type-aliases.json":{},"data/master-metadata.json":{SWITCH:{channelType:"SWITCH",parameterOrder:["TRANSMIT_TRY_MAX","LOGGING","ON_TIME"],conditionalVisibility:[{trigger:"LOGGING",triggerValue:1,show:["STATUSINFO_MINDELAY"]}],optionPresets:{ON_TIME:"duration"}}},"data/option-presets.json":{duration:{id:"duration",allowCustom:!0,presets:[{template:"5s",value:5},{template:"30s",value:30},{template:"${not_used}",value:111600}]}},"data/cross-validations.json":[{id:"onTime",rule:"lte",paramA:"STATUSINFO_MINDELAY",paramB:"TRANSMIT_TRY_MAX",errorKey:"delay_max"}],"data/translations/de.json":{language:"de",channelTypes:{SWITCH:"Schaltaktor"},deviceModels:{},parameters:{LOGGING:"Statusmeldungen","SWITCH|ON_TIME":"Einschaltdauer",NOT_USED:"Nicht benutzt"},parameterValues:{"LOGGING|ON":"an","LOGGING|OFF":"aus","CLIMATECONTROL_RT_TRANSCEIVER|FAULT_REPORTING|COMMUNICATION_ERROR":"Kommunikationsstörung"},parameterHelp:{LOGGING:"<b>Sendet</b> zyklisch den Status."},uiLabels:{not_used:"nicht benutzt",delay_max:"Verzögerung größer als die Sendeversuche"}},"data/translations/en.json":{language:"en",channelTypes:{SWITCH:"Switch actuator"},deviceModels:{},parameters:{LOGGING:"Status messages",NOT_USED:"Unused"},parameterValues:{"CLIMATECONTROL_RT_TRANSCEIVER|FAULT_REPORTING|COMMUNICATION_ERROR":"Communication error"},parameterHelp:{},uiLabels:{not_used:"not used",delay_max:"delay larger than the transmit tries"}},"data/profiles/SWITCH_VIRTUAL_RECEIVER.json":{receiverType:"SWITCH_VIRTUAL_RECEIVER",senders:{KEY_TRANSCEIVER:[{id:1,key:"switch_on",name:{de:"Einschalten",en:"Switch on"},description:{de:"Schaltet ein",en:"Switches on"},params:{SHORT_ACTION_TYPE:{kind:"fixed",value:1},SHORT_ON_LEVEL:{kind:"fixed",value:1},SHORT_ON_TIME:{kind:"fixed",value:111600}}},{id:2,key:"staircase",name:{de:"Treppenhauslicht",en:"Staircase light"},description:{de:"Schaltet für eine Zeit ein",en:"Switches on for a while"},params:{SHORT_ACTION_TYPE:{kind:"fixed",value:1},SHORT_ON_LEVEL:{kind:"fixed",value:1},SHORT_ON_TIME:{kind:"range",min:0,max:8590,default:60},SHORT_OPTICAL_SIGNAL_COLOR:{kind:"fixed",value:1},SHORT_OPTICAL_SIGNAL_BEHAVIOUR:{kind:"fixed",value:1}}}]},senderMetadata:{KEY_TRANSCEIVER:{parameterOrder:["SHORT_ACTION_TYPE","SHORT_ON_LEVEL","SHORT_ON_TIME"],optionPresets:{SHORT_ON_TIME:"duration"}}}},"data/device-icons.json":{}};class am{calls=[];#e=new Map;#n=new Map;#t=new Set;#a;constructor(e={}){this.#a=e.connected??!0,e.demo===!0&&this.useDemoData()}get connected(){return this.#a}respond(e,n){return this.#e.set(e,n),this}handlerFor(e){const n=this.#e.get(e);if(!n)throw new _r({message:`no mock handler for ${e}`,kind:"internal"});return n}result(e,n){return this.respond(e,(()=>n))}fail(e,n){const a=typeof n=="string"?{message:n,kind:"internal"}:n;return this.respond(e,(()=>{throw new _r(a)}))}emit(e,n){const a=this.#n.get(e);if(a)for(const s of[...a])s(n)}setConnected(e){if(this.#a!==e){this.#a=e;for(const n of[...this.#t])n(e)}}countOf(e){return this.calls.filter(n=>n.method===e).length}lastCall(e){for(let n=this.calls.length-1;n>=0;n-=1){const a=this.calls[n];if(a&&a.method===e)return a.params}}reset(){this.calls.length=0}async request(e,...n){this.calls.push({method:e,params:n});const a=this.#e.get(e);if(!a)throw new _r({message:`no mock handler for ${e}`,kind:"internal"});return await a(...n)}on(e,n){const a=this.#n.get(e)??new Set;return a.add(n),this.#n.set(e,a),()=>{a.delete(n)}}onConnectionChange(e){return this.#t.add(e),()=>{this.#t.delete(e)}}listenerCount(e){return this.#n.get(e)?.size??0}useDemoData(){this.result("config.get",ll),this.respond("config.set",n=>({...ll,connection:n})),this.result("config.discover",ll.discovered),this.result("config.clearCaches",null),this.respond("config.callbackAddresses",n=>hI(n)),this.respond("connection.test",n=>({kind:"ccu",reachable:!0,url:`http://${n.host}`})),this.result("connection.pair",null),this.result("connection.pairCancel",null),this.result("interfaces.list",nm),this.result("interfaces.reconnect",null),this.result("rega.state",fI),this.respond("devices.list",n=>Ys(n)?tm[n]:[]),this.result("names.get",fa),this.respond("names.set",n=>{const a={...fa};for(const s of n)a[s.address]=s.name;return a}),this.respond("links.list",n=>Ys(n)?ol[n]:[]),this.respond("rssi.get",n=>Ys(n)?oI[n]:{}),this.respond("bidcos.interfaces",n=>n==="HmIP-RF"?lI:dI),this.respond("serviceMessages.list",n=>n===void 0?Fi:Fi.filter(a=>a.interfaceName===n)),this.respond("serviceMessages.refresh",n=>n===void 0?Fi:Fi.filter(a=>a.interfaceName===n)),this.result("serviceMessages.ack",null),this.result("rega.confirmInbox",[]),this.respond("teams.list",n=>n==="BidCos-RF"?cI:[]),this.result("teams.set",null),this.respond("unreach.list",n=>n===void 0?Ou:Ou.filter(a=>a.interfaceName===n)),this.result("unreach.reset",null);const e=[];return this.respond("linkTemplates.list",n=>n===void 0?e:e.filter(a=>a.identity===n)),this.respond("linkTemplates.save",n=>{const a=e.findIndex(s=>s.name===n.name);return a===-1?e.push(n):e[a]=n,e}),this.respond("linkTemplates.remove",n=>{const a=e.findIndex(s=>s.name===n);return a!==-1&&e.splice(a,1),e}),this.respond("events.recent",n=>n===void 0?Lu:Lu.filter(a=>a.interfaceName===n)),this.result("events.clear",null),this.result("rpcLog.list",mI),this.result("rpcLog.clear",null),this.result("rpc.methods",vI),this.respond("rpc.call",(n,a,s)=>({method:a,params:s})),this.respond("paramset.description",(n,a,s)=>pI(a,s)),this.respond("paramset.get",(n,a,s)=>gI(a,s)),this.result("paramset.id",""),this.result("paramset.valueStates",{}),this.result("channel.mode",""),this.respond("paramset.put",(n,a,s,i)=>a.map(o=>({interfaceName:n,address:o,paramset:s,sent:i,ok:!0,problems:[],durationMs:42}))),this.respond("paramset.putLink",(n,a,s)=>a.map(i=>({interfaceName:n,address:i.receiver,peer:i.sender,paramset:"LINK",sent:s.receiverToSender??s.senderToReceiver??{},ok:!0,problems:[],durationMs:42}))),this.result("value.set",null),this.result("devices.installMode.set",null),this.result("devices.installMode.get",0),this.result("devices.installMode.keyMismatch",""),this.result("devices.installMode.tempKey",null),this.respond("devices.repairConfig",(n,a,s)=>({interfaceName:n,address:a,configPendingBefore:!0,configPendingAfter:s?.dryRun===!0,channels:[{address:`${a}:1`,unknown:[],corrected:[{parameter:"TRANSMIT_TRY_MAX",stored:62,replacement:10,reason:"above MAX 10"}],write:{interfaceName:n,address:`${a}:1`,paramset:"MASTER",sent:{TRANSMIT_TRY_MAX:10},ok:!0,problems:[]}}],unrepairable:[],...s?.bidcosRecovery===void 0||s.bidcosRecovery==="none"?{}:{bidcosRecovery:s.bidcosRecovery}})),this.result("links.add",null),this.result("links.remove",null),this.result("links.info.set",null),this.result("links.activate",null),this.respond("links.info.get",(n,a,s)=>(Ys(n)?ol[n]:[]).find(o=>o.SENDER===a&&o.RECEIVER===s)??{SENDER:a,RECEIVER:s}),this.respond("links.peers",(n,a)=>(Ys(n)?ol[n]:[]).filter(i=>i.SENDER===a||i.RECEIVER===a).map(i=>i.SENDER===a?i.RECEIVER:i.SENDER)),this.respond("data.file",n=>{const a=bI[n];if(a===void 0)throw new _r({message:`no demo data file ${n}`,kind:"config"});return a}),this.useDemoMeta(),this.result("session.info",null),this}useDemoMeta(){const e=new l1({document:Ol(structuredClone(uI))}),n=()=>({provider:"local",reachable:!0,writable:!0,revision:e.revision,objects:e.size}),a=()=>{const o=e.document(),l={};for(const[f,p]of Object.entries(o.objects)){const b=u1(o.enums,p);l[f]={name:b.name,enums:[...p.enums],rooms:[...b.rooms],functions:[...b.functions],...b.orphaned?{orphaned:!0}:{}}}return l},s=()=>structuredClone(e.enums()),i=()=>{this.emit("meta.changed",n()),this.emit("meta.enums.changed",s()),this.emit("meta.objects.changed",a())};return this.respond("meta.state",n),this.respond("meta.get",()=>({state:n(),enums:s(),objects:a()})),this.respond("meta.enums",s),this.respond("meta.objects",a),this.respond("meta.setMembership",o=>{const l={};for(const f of o)l[f.ref]={enums:f.paths};return e.bulk(l),i(),null}),this.respond("meta.assign",(o,l,f)=>{const p={};for(const b of o){const g=e.find(b),k=g?.enums??[];if(k.includes(l)===f)continue;const S=f?[...k,l]:k.filter(I=>I!==l),T=b.slice(b.indexOf(".")+1);p[b]=g?{enums:S}:{name:fa[T]??T,enums:S}}return e.bulk(p),i(),null}),this.respond("meta.enum.create",(o,l)=>(e.createEnum(o,l),i(),null)),this.respond("meta.enum.update",(o,l)=>(e.updateEnum(o,l),i(),null)),this.respond("meta.enum.delete",(o,l)=>(e.deleteEnum(o,l===!0?"detach":"refuse"),i(),null)),this.respond("meta.node.create",(o,l,f,p)=>{const b=e.getEnum(o).tree,g=l===void 0?void 0:_s(l),k=g===void 0?b:Ua(b,g.ids)?.children??[],y=Ah(f,k.map(S=>S.id));return e.createNode(o,l??null,y,f,p??{}),i(),`${l??o}/${y}`}),this.respond("meta.node.update",(o,l)=>(e.updateNode(o,l),i(),null)),this.respond("meta.node.delete",(o,l)=>(e.deleteNode(o,l===!0?"detach":"refuse"),i(),null)),this.respond("meta.refresh",()=>(i(),n())),this.result("meta.pairing",null),this.respond("meta.export",()=>e.document()),this.respond("meta.import",(o,l)=>(e.import(o,l??"replace"),i(),null)),this}}const _I=1;class EI{url;#e;#n;#t;#a;#s;#r=new Map;#i=new Map;#l=new Set;#o=new Set;#d;#c=!1;#u=!1;#f=1;#h;#m;constructor(e){this.url=e.url,this.#e=e.factory??(n=>new WebSocket(n)),this.#n=e.requestTimeoutMs??3e4,this.#t=e.reconnect??!0,this.#a=e.minBackoffMs??500,this.#s=e.maxBackoffMs??15e3,this.#h=this.#a,(e.autoConnect??!0)&&this.connect()}get connected(){return this.#c}get backoffMs(){return this.#h}connect(){if(this.#u=!1,this.#d)return;const e=this.#e(this.url);this.#d=e,e.onopen=()=>{this.#h=this.#a,this.#g(!0);for(const n of[...this.#o])this.#o.delete(n),n.resolve()},e.onmessage=n=>{this.#_(n.data)},e.onerror=()=>{},e.onclose=()=>{this.#b()}}close(){this.#u=!0,this.#m!==void 0&&(clearTimeout(this.#m),this.#m=void 0);const e=this.#d;this.#d=void 0,e?.close(),this.#y("transport closed"),this.#g(!1)}async request(e,...n){await this.#p(e);const a=this.#d;if(!a||a.readyState!==_I)throw new _r({message:`not connected to ${this.url}`,kind:"connection"});const s=this.#f;this.#f+=1;const i={t:"req",id:s,m:e,p:n};return new Promise((o,l)=>{const f={method:e,resolve:o,reject:l,timer:void 0};f.timer=setTimeout(()=>{this.#r.delete(s),l(new _r({message:`${e} timed out after ${this.#n} ms`,kind:"connection"}))},this.#n),this.#r.set(s,f);try{a.send(JSON.stringify(i))}catch(p){this.#v(s,void 0,{message:p instanceof Error?p.message:String(p),kind:"connection"})}})}on(e,n){const a=this.#i.get(e)??new Set;return a.add(n),this.#i.set(e,a),()=>{a.delete(n)}}onConnectionChange(e){return this.#l.add(e),()=>{this.#l.delete(e)}}#p(e){return this.#c?Promise.resolve():this.#u?Promise.reject(new _r({message:"transport closed",kind:"connection"})):new Promise((n,a)=>{const s={resolve:()=>{clearTimeout(i),n()},reject:o=>{clearTimeout(i),a(o)}},i=setTimeout(()=>{this.#o.delete(s),a(new _r({message:`${e} gave up waiting for ${this.url}`,kind:"connection"}))},this.#n);this.#o.add(s)})}#_(e){if(typeof e!="string")return;let n;try{n=JSON.parse(e)}catch{return}if(typeof n!="object"||n===null)return;const a=n;switch(a.t){case"res":this.#v(a.id,a.r,void 0);break;case"err":this.#v(a.id,void 0,Hf(a.e)?a.e:{message:"malformed error frame",kind:"internal"});break;case"ev":{const s=this.#i.get(a.n);if(s)for(const i of[...s])i(a.d);break}}}#v(e,n,a){const s=this.#r.get(e);s&&(this.#r.delete(e),s.timer!==void 0&&clearTimeout(s.timer),a?s.reject(new _r(a)):s.resolve(n))}#b(){if(this.#d=void 0,this.#g(!1),this.#y(`connection to ${this.url} was lost`),this.#u||!this.#t)return;const e=this.#h;this.#h=Math.min(this.#h*2,this.#s),this.#m=setTimeout(()=>{this.#m=void 0,this.connect()},e)}#y(e){for(const[n,a]of[...this.#r])this.#r.delete(n),a.timer!==void 0&&clearTimeout(a.timer),a.reject(new _r({message:e,kind:"connection"}));for(const n of[...this.#o])this.#o.delete(n),n.reject(new _r({message:e,kind:"connection"}))}#g(e){if(this.#c!==e){this.#c=e;for(const n of[...this.#l])n(e)}}}const yI={},SI="__HMM_TRANSPORT__";function kI(r,e="api"){const n=r.protocol==="https:"?"wss:":"ws:",a=r.pathname.replace(/[^/]*$/,"");return`${n}//${r.host}${a}${e}`}function wI(r){return yI?.VITE_HMM_DEMO==="true"?!0:r?new URLSearchParams(r.search).has("demo"):!1}function AI(r={}){const n=(r.host??globalThis)[SI];if(TI(n))return n;const a=r.location??(typeof window>"u"?void 0:window.location);if(r.demo===!0||wI(a))return new am({demo:!0});if(!a)throw new Error("createTransport needs a location when there is no window and no injected transport");return new EI({url:kI(a,r.path??"api")})}function TI(r){if(typeof r!="object"||r===null)return!1;const e=r;return typeof e.request=="function"&&typeof e.on=="function"&&typeof e.onConnectionChange=="function"}function RI(r,e={}){const n=e.intervalMs??2500,a=e.now??(()=>Date.now());let s=0;const i=setInterval(()=>{const o=Fu[s%Fu.length];if(s+=1,!o)return;const l={...o,timestamp:a()};r.emit("rpc.event",l)},n);return()=>{clearInterval(i)}}const Jl=AI(),sm=sI(Jl);Jl instanceof am&&RI(Jl);const im=document.querySelector("#app");if(!im)throw new Error("no #app element to mount into");Zv(Tx,{target:im,props:{stores:sm}});sm.start();
|
|
21
|
-
//# sourceMappingURL=index-Bg15IzY0.js.map
|