@riddix/hamh 2.1.0-alpha.646 → 2.1.0-alpha.647

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.
@@ -9,7 +9,7 @@ Error generating stack: `+e.message+`
9
9
  `).replace(iee,``)}function Nd(e,t){return t=Md(t),Md(e)===t}function Pd(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||zt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&zt(e,``+r);break;case`className`:Ct(e,`class`,r);break;case`tabIndex`:Ct(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:Ct(e,n,r);break;case`style`:Ht(e,r,o);break;case`data`:if(t!==`object`){Ct(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=Kt(``+r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}else typeof o==`function`&&(n===`formAction`?(t!==`input`&&Pd(e,t,`name`,a.name,a,null),Pd(e,t,`formEncType`,a.formEncType,a,null),Pd(e,t,`formMethod`,a.formMethod,a,null),Pd(e,t,`formTarget`,a.formTarget,a,null)):(Pd(e,t,`encType`,a.encType,a,null),Pd(e,t,`method`,a.method,a,null),Pd(e,t,`target`,a.target,a,null)));if(r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=Kt(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=qt);break;case`onScroll`:r!=null&&Cd(`scroll`,e);break;case`onScrollEnd`:r!=null&&Cd(`scrollend`,e);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=Kt(``+r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``+r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:Cd(`beforetoggle`,e),Cd(`toggle`,e),St(e,`popover`,r);break;case`xlinkActuate`:wt(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:wt(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:wt(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:wt(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:wt(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:wt(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:wt(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:wt(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:wt(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:St(e,`is`,r);break;case`innerText`:case`textContent`:break;default:(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)&&(n=Wt.get(n)||n,St(e,n,r))}}function Fd(e,t,n,r,a,o){switch(n){case`style`:Ht(e,r,o);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`children`:typeof r==`string`?zt(e,r):(typeof r==`number`||typeof r==`bigint`)&&zt(e,``+r);break;case`onScroll`:r!=null&&Cd(`scroll`,e);break;case`onScrollEnd`:r!=null&&Cd(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=qt);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:break;case`innerText`:case`textContent`:break;default:if(!ht.hasOwnProperty(n))a:{if(n[0]===`o`&&n[1]===`n`&&(a=n.endsWith(`Capture`),t=n.slice(2,a?n.length-7:void 0),o=e[tt]||null,o=o==null?null:o[n],typeof o==`function`&&e.removeEventListener(t,o,a),typeof r==`function`)){typeof o!=`function`&&o!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,r,a);break a}n in e?e[n]=r:!0===r?e.setAttribute(n,``):St(e,n,r)}}}function Id(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:Cd(`error`,e),Cd(`load`,e);var r=!1,a=!1,o;for(o in n)if(n.hasOwnProperty(o)){var s=n[o];if(s!=null)switch(o){case`src`:r=!0;break;case`srcSet`:a=!0;break;case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:Pd(e,t,o,s,n,null)}}a&&Pd(e,t,`srcSet`,n.srcSet,n,null),r&&Pd(e,t,`src`,n.src,n,null);return;case`input`:Cd(`invalid`,e);var c=o=s=a=null,l=null,u=null;for(r in n)if(n.hasOwnProperty(r)){var d=n[r];if(d!=null)switch(r){case`name`:a=d;break;case`type`:s=d;break;case`checked`:l=d;break;case`defaultChecked`:u=d;break;case`value`:o=d;break;case`defaultValue`:c=d;break;case`children`:case`dangerouslySetInnerHTML`:if(d!=null)throw Error(i(137,t));break;default:Pd(e,t,r,d,n,null)}}Pt(e,o,c,l,u,s,a,!1);return;case`select`:for(a in Cd(`invalid`,e),r=s=o=null,n)if(n.hasOwnProperty(a)&&(c=n[a],c!=null))switch(a){case`value`:o=c;break;case`defaultValue`:s=c;break;case`multiple`:r=c;default:Pd(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&It(e,!!r,n,!0):It(e,!!r,t,!1);return;case`textarea`:for(s in Cd(`invalid`,e),o=a=r=null,n)if(n.hasOwnProperty(s)&&(c=n[s],c!=null))switch(s){case`value`:r=c;break;case`defaultValue`:a=c;break;case`children`:o=c;break;case`dangerouslySetInnerHTML`:if(c!=null)throw Error(i(91));break;default:Pd(e,t,s,c,n,null)}Rt(e,r,a,o);return;case`option`:for(l in n)if(n.hasOwnProperty(l)&&(r=n[l],r!=null))switch(l){case`selected`:e.selected=r&&typeof r!=`function`&&typeof r!=`symbol`;break;default:Pd(e,t,l,r,n,null)}return;case`dialog`:Cd(`beforetoggle`,e),Cd(`toggle`,e),Cd(`cancel`,e),Cd(`close`,e);break;case`iframe`:case`object`:Cd(`load`,e);break;case`video`:case`audio`:for(r=0;r<bd.length;r++)Cd(bd[r],e);break;case`image`:Cd(`error`,e),Cd(`load`,e);break;case`details`:Cd(`toggle`,e);break;case`embed`:case`source`:case`link`:Cd(`error`,e),Cd(`load`,e);case`area`:case`base`:case`br`:case`col`:case`hr`:case`keygen`:case`meta`:case`param`:case`track`:case`wbr`:case`menuitem`:for(u in n)if(n.hasOwnProperty(u)&&(r=n[u],r!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:Pd(e,t,u,r,n,null)}return;default:if(Ut(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&Fd(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&Pd(e,t,c,r,n,null))}function Ld(e,t,n,r){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`input`:var a=null,o=null,s=null,c=null,l=null,u=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case`checked`:break;case`value`:break;case`defaultValue`:l=f;default:r.hasOwnProperty(m)||Pd(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(m!=null||f!=null))switch(p){case`type`:o=m;break;case`name`:a=m;break;case`checked`:u=m;break;case`defaultChecked`:d=m;break;case`value`:s=m;break;case`defaultValue`:c=m;break;case`children`:case`dangerouslySetInnerHTML`:if(m!=null)throw Error(i(137,t));break;default:m!==f&&Pd(e,t,p,m,r,f)}}Nt(e,s,c,l,u,d,o,a);return;case`select`:for(o in m=s=c=p=null,n)if(l=n[o],n.hasOwnProperty(o)&&l!=null)switch(o){case`value`:break;case`multiple`:m=l;default:r.hasOwnProperty(o)||Pd(e,t,o,null,r,l)}for(a in r)if(o=r[a],l=n[a],r.hasOwnProperty(a)&&(o!=null||l!=null))switch(a){case`value`:p=o;break;case`defaultValue`:c=o;break;case`multiple`:s=o;default:o!==l&&Pd(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?It(e,!!n,n?[]:``,!1):It(e,!!n,t,!0)):It(e,!!n,p,!1);return;case`textarea`:for(c in m=p=null,n)if(a=n[c],n.hasOwnProperty(c)&&a!=null&&!r.hasOwnProperty(c))switch(c){case`value`:break;case`children`:break;default:Pd(e,t,c,null,r,a)}for(s in r)if(a=r[s],o=n[s],r.hasOwnProperty(s)&&(a!=null||o!=null))switch(s){case`value`:p=a;break;case`defaultValue`:m=a;break;case`children`:break;case`dangerouslySetInnerHTML`:if(a!=null)throw Error(i(91));break;default:a!==o&&Pd(e,t,s,a,r,o)}Lt(e,p,m);return;case`option`:for(var h in n)if(p=n[h],n.hasOwnProperty(h)&&p!=null&&!r.hasOwnProperty(h))switch(h){case`selected`:e.selected=!1;break;default:Pd(e,t,h,null,r,p)}for(l in r)if(p=r[l],m=n[l],r.hasOwnProperty(l)&&p!==m&&(p!=null||m!=null))switch(l){case`selected`:e.selected=p&&typeof p!=`function`&&typeof p!=`symbol`;break;default:Pd(e,t,l,p,r,m)}return;case`img`:case`link`:case`area`:case`base`:case`br`:case`col`:case`embed`:case`hr`:case`keygen`:case`meta`:case`param`:case`source`:case`track`:case`wbr`:case`menuitem`:for(var g in n)p=n[g],n.hasOwnProperty(g)&&p!=null&&!r.hasOwnProperty(g)&&Pd(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(p!=null||m!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:if(p!=null)throw Error(i(137,t));break;default:Pd(e,t,u,p,r,m)}return;default:if(Ut(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&Fd(e,t,_,void 0,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||p===void 0&&m===void 0||Fd(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&Pd(e,t,v,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||p==null&&m==null||Pd(e,t,f,p,r,m)}function Rd(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function zd(){if(typeof performance.getEntriesByType==`function`){for(var e=0,t=0,n=performance.getEntriesByType(`resource`),r=0;r<n.length;r++){var i=n[r],a=i.transferSize,o=i.initiatorType,s=i.duration;if(a&&s&&Rd(o)){for(o=0,s=i.responseEnd,r+=1;r<n.length;r++){var c=n[r],l=c.startTime;if(l>s)break;var u=c.transferSize,d=c.initiatorType;u&&Rd(d)&&(c=c.responseEnd,o+=u*(c<s?1:(s-l)/(c-l)))}if(--r,t+=8*(a+o)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e==`number`)?e:5}var Bd=null,Vd=null;function Hd(e){return e.nodeType===9?e:e.ownerDocument}function Ud(e){switch(e){case`http://www.w3.org/2000/svg`:return 1;case`http://www.w3.org/1998/Math/MathML`:return 2;default:return 0}}function Wd(e,t){if(e===0)switch(t){case`svg`:return 1;case`math`:return 2;default:return 0}return e===1&&t===`foreignObject`?0:e}function Gd(e,t){return e===`textarea`||e===`noscript`||typeof t.children==`string`||typeof t.children==`number`||typeof t.children==`bigint`||typeof t.dangerouslySetInnerHTML==`object`&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Kd=null;function qd(){var e=window.event;return e&&e.type===`popstate`?e===Kd?!1:(Kd=e,!0):(Kd=null,!1)}var Jd=typeof setTimeout==`function`?setTimeout:void 0,Yd=typeof clearTimeout==`function`?clearTimeout:void 0,Xd=typeof Promise==`function`?Promise:void 0,Zd=typeof queueMicrotask==`function`?queueMicrotask:Xd===void 0?Jd:function(e){return Xd.resolve(null).then(e).catch(Qd)};function Qd(e){setTimeout(function(){throw e})}function $d(e){return e===`head`}function ef(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8)if(n=i.data,n===`/$`||n===`/&`){if(r===0){e.removeChild(i),Np(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)hf(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,hf(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[st]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&hf(e.ownerDocument.body);n=i}while(n);Np(t)}function tf(e,t){var n=e;e=0;do{var r=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display=`none`):(n.style.display=n._stashedDisplay||``,n.getAttribute(`style`)===``&&n.removeAttribute(`style`)):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=``):n.nodeValue=n._stashedText||``),r&&r.nodeType===8)if(n=r.data,n===`/$`){if(e===0)break;e--}else n!==`$`&&n!==`$?`&&n!==`$~`&&n!==`$!`||e++;n=r}while(n)}function nf(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case`HTML`:case`HEAD`:case`BODY`:nf(n),ct(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function rf(e,t,n,r){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!==`INPUT`||e.type!==`hidden`))break}else if(!r)if(t===`input`&&e.type===`hidden`){var a=i.name==null?null:``+i.name;if(i.type===`hidden`&&e.getAttribute(`name`)===a)return e}else return e;else if(!e[st])switch(t){case`meta`:if(!e.hasAttribute(`itemprop`))break;return e;case`link`:if(a=e.getAttribute(`rel`),a===`stylesheet`&&e.hasAttribute(`data-precedence`)||a!==i.rel||e.getAttribute(`href`)!==(i.href==null||i.href===``?null:i.href)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute(`title`)!==(i.title==null?null:i.title))break;return e;case`style`:if(e.hasAttribute(`data-precedence`))break;return e;case`script`:if(a=e.getAttribute(`src`),(a!==(i.src==null?null:i.src)||e.getAttribute(`type`)!==(i.type==null?null:i.type)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin))&&a&&e.hasAttribute(`async`)&&!e.hasAttribute(`itemprop`))break;return e;default:return e}if(e=uf(e.nextSibling),e===null)break}return null}function af(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=uf(e.nextSibling),e===null))return null;return e}function of(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=uf(e.nextSibling),e===null))return null;return e}function sf(e){return e.data===`$?`||e.data===`$~`}function cf(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function lf(e,t){var n=e.ownerDocument;if(e.data===`$~`)e._reactRetry=t;else if(e.data!==`$?`||n.readyState!==`loading`)t();else{var r=function(){t(),n.removeEventListener(`DOMContentLoaded`,r)};n.addEventListener(`DOMContentLoaded`,r),e._reactRetry=r}}function uf(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===`$`||t===`$!`||t===`$?`||t===`$~`||t===`&`||t===`F!`||t===`F`)break;if(t===`/$`||t===`/&`)return null}}return e}var df=null;function ff(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return uf(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function pf(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`$`||n===`$!`||n===`$?`||n===`$~`||n===`&`){if(t===0)return e;t--}else n!==`/$`&&n!==`/&`||t++}e=e.previousSibling}return null}function mf(e,t,n){switch(t=Hd(n),e){case`html`:if(e=t.documentElement,!e)throw Error(i(452));return e;case`head`:if(e=t.head,!e)throw Error(i(453));return e;case`body`:if(e=t.body,!e)throw Error(i(454));return e;default:throw Error(i(451))}}function hf(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);ct(e)}var gf=new Map,_f=new Set;function vf(e){return typeof e.getRootNode==`function`?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var yf=L.d;L.d={f:bf,r:xf,D:wf,C:Tf,L:Ef,m:Df,X:kf,S:Of,M:Af};function bf(){var e=yf.f(),t=Cu();return e||t}function xf(e){var t=ut(e);t!==null&&t.tag===5&&t.type===`form`?Cs(t):yf.r(e)}var Sf=typeof document>`u`?null:document;function Cf(e,t,n){var r=Sf;if(r&&typeof t==`string`&&t){var i=Mt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),_f.has(i)||(_f.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Id(t,`link`,e),pt(t),r.head.appendChild(t)))}}function wf(e){yf.D(e),Cf(`dns-prefetch`,e,null)}function Tf(e,t){yf.C(e,t),Cf(`preconnect`,e,t)}function Ef(e,t,n){yf.L(e,t,n);var r=Sf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Mt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Mt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Mt(n.imageSizes)+`"]`)):i+=`[href="`+Mt(e)+`"]`;var a=i;switch(t){case`style`:a=Mf(e);break;case`script`:a=If(e)}gf.has(a)||(e=f({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),gf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Nf(a))||t===`script`&&r.querySelector(Lf(a))||(t=r.createElement(`link`),Id(t,`link`,e),pt(t),r.head.appendChild(t)))}}function Df(e,t){yf.m(e,t);var n=Sf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Mt(r)+`"][href="`+Mt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=If(e)}if(!gf.has(a)&&(e=f({rel:`modulepreload`,href:e},t),gf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Lf(a)))return}r=n.createElement(`link`),Id(r,`link`,e),pt(r),n.head.appendChild(r)}}}function Of(e,t,n){yf.S(e,t,n);var r=Sf;if(r&&e){var i=ft(r).hoistableStyles,a=Mf(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Nf(a)))s.loading=5;else{e=f({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=gf.get(a))&&Bf(e,n);var c=o=r.createElement(`link`);pt(c),Id(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,zf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function kf(e,t){yf.X(e,t);var n=Sf;if(n&&e){var r=ft(n).hoistableScripts,i=If(e),a=r.get(i);a||(a=n.querySelector(Lf(i)),a||(e=f({src:e,async:!0},t),(t=gf.get(i))&&Vf(e,t),a=n.createElement(`script`),pt(a),Id(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Af(e,t){yf.M(e,t);var n=Sf;if(n&&e){var r=ft(n).hoistableScripts,i=If(e),a=r.get(i);a||(a=n.querySelector(Lf(i)),a||(e=f({src:e,async:!0,type:`module`},t),(t=gf.get(i))&&Vf(e,t),a=n.createElement(`script`),pt(a),Id(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function jf(e,t,n,r){var a=(a=ie.current)?vf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Mf(n.href),n=ft(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Mf(n.href);var o=ft(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Nf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),gf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},gf.set(e,n),o||Ff(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=If(n),n=ft(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Mf(e){return`href="`+Mt(e)+`"`}function Nf(e){return`link[rel="stylesheet"][`+e+`]`}function Pf(e){return f({},e,{"data-precedence":e.precedence,precedence:null})}function Ff(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Id(t,`link`,n),pt(t),e.head.appendChild(t))}function If(e){return`[src="`+Mt(e)+`"]`}function Lf(e){return`script[async]`+e}function Rf(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Mt(n.href)+`"]`);if(r)return t.instance=r,pt(r),r;var a=f({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),pt(r),Id(r,`style`,a),zf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Mf(n.href);var o=e.querySelector(Nf(a));if(o)return t.state.loading|=4,t.instance=o,pt(o),o;r=Pf(n),(a=gf.get(a))&&Bf(r,a),o=(e.ownerDocument||e).createElement(`link`),pt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Id(o,`link`,r),t.state.loading|=4,zf(o,n.precedence,e),t.instance=o;case`script`:return o=If(n.src),(a=e.querySelector(Lf(o)))?(t.instance=a,pt(a),a):(r=n,(a=gf.get(o))&&(r=f({},n),Vf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),pt(a),Id(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,zf(r,n.precedence,e));return t.instance}function zf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o<r.length;o++){var s=r[o];if(s.dataset.precedence===t)a=s;else if(a!==i)break}a?a.parentNode.insertBefore(e,a.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Bf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function Vf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Hf=null;function Uf(e,t,n){if(Hf===null){var r=new Map,i=Hf=new Map;i.set(n,r)}else i=Hf,r=i.get(n),r||(r=new Map,i.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var a=n[i];if(!(a[st]||a[et]||e===`link`&&a.getAttribute(`rel`)===`stylesheet`)&&a.namespaceURI!==`http://www.w3.org/2000/svg`){var o=a.getAttribute(t)||``;o=e+o;var s=r.get(o);s?s.push(a):r.set(o,[a])}}return r}function Wf(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function Gf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Kf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function qf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Mf(r.href),a=t.querySelector(Nf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Xf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,pt(a);return}a=t.ownerDocument||t,r=Pf(r),(i=gf.get(i))&&Bf(r,i),a=a.createElement(`link`),pt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Id(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Xf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Jf=0;function Yf(e,t){return e.stylesheets&&e.count===0&&Qf(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&Qf(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&Jf===0&&(Jf=62500*zd());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Qf(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>Jf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Xf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Qf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Zf=null;function Qf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Zf=new Map,t.forEach($f,e),Zf=null,Xf.call(e))}function $f(e,t){if(!(t.state.loading&4)){var n=Zf.get(e);if(n)var r=n.get(null);else{n=new Map,Zf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a<i.length;a++){var o=i[a];(o.nodeName===`LINK`||o.getAttribute(`media`)!==`not all`)&&(n.set(o.dataset.precedence,o),r=o)}r&&n.set(null,r)}i=t.instance,o=i.getAttribute(`data-precedence`),a=n.get(o)||r,a===r&&n.set(null,i),n.set(o,i),this.count++,r=Xf.bind(this),i.addEventListener(`load`,r),i.addEventListener(`error`,r),a?a.parentNode.insertBefore(i,a.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var ep={$$typeof:C,Provider:null,Consumer:null,_currentValue:R,_currentValue2:R,_threadCount:0};function tp(e,t,n,r,i,a,o,s,c){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Ue(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ue(0),this.hiddenUpdates=Ue(null),this.identifierPrefix=r,this.onUncaughtError=i,this.onCaughtError=a,this.onRecoverableError=o,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=c,this.incompleteTransitions=new Map}function np(e,t,n,r,i,a,o,s,c,l,u,d){return e=new tp(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=ei(3,null,null,t),e.current=a,a.stateNode=e,t=ta(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},Pa(a),e}function rp(e){return e?(e=$r,e):$r}function ip(e,t,n,r,i,a){i=rp(i),r.context===null?r.context=i:r.pendingContext=i,r=Ia(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=La(e,r,t),n!==null&&(vu(n,e,t),Ra(n,e,t))}function ap(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function op(e,t){ap(e,t),(e=e.alternate)&&ap(e,t)}function sp(e){if(e.tag===13||e.tag===31){var t=Xr(e,67108864);t!==null&&vu(t,e,67108864),op(e,67108864)}}function cp(e){if(e.tag===13||e.tag===31){var t=gu();t=Ye(t);var n=Xr(e,t);n!==null&&vu(n,e,t),op(e,t)}}var lp=!0;function aee(e,t,n,r){var i=I.T;I.T=null;var a=L.p;try{L.p=2,up(e,t,n,r)}finally{L.p=a,I.T=i}}function oee(e,t,n,r){var i=I.T;I.T=null;var a=L.p;try{L.p=8,up(e,t,n,r)}finally{L.p=a,I.T=i}}function up(e,t,n,r){if(lp){var i=dp(r);if(i===null)Od(e,t,r,fp,n),Cp(e,r);else if(Tp(i,e,t,n,r))r.stopPropagation();else if(Cp(e,r),t&4&&-1<Sp.indexOf(e)){for(;i!==null;){var a=ut(i);if(a!==null)switch(a.tag){case 3:if(a=a.stateNode,a.current.memoizedState.isDehydrated){var o=Re(a.pendingLanes);if(o!==0){var s=a;for(s.pendingLanes|=2,s.entangledLanes|=2;o;){var c=1<<31-je(o);s.entanglements[1]|=c,o&=~c}sd(a),!(Ll&6)&&(iu=ye()+500,cd(0,!1))}}break;case 31:case 13:s=Xr(a,2),s!==null&&vu(s,a,2),Cu(),op(a,2)}if(a=dp(r),a===null&&Od(e,t,r,fp,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else Od(e,t,r,null,n)}}function dp(e){return e=Yt(e),pp(e)}var fp=null;function pp(e){if(fp=null,e=lt(e),e!==null){var t=o(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=s(t),e!==null)return e;e=null}else if(n===31){if(e=c(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return fp=e,null}function mp(e){switch(e){case`beforetoggle`:case`cancel`:case`click`:case`close`:case`contextmenu`:case`copy`:case`cut`:case`auxclick`:case`dblclick`:case`dragend`:case`dragstart`:case`drop`:case`focusin`:case`focusout`:case`input`:case`invalid`:case`keydown`:case`keypress`:case`keyup`:case`mousedown`:case`mouseup`:case`paste`:case`pause`:case`play`:case`pointercancel`:case`pointerdown`:case`pointerup`:case`ratechange`:case`reset`:case`resize`:case`seeked`:case`submit`:case`toggle`:case`touchcancel`:case`touchend`:case`touchstart`:case`volumechange`:case`change`:case`selectionchange`:case`textInput`:case`compositionstart`:case`compositionend`:case`compositionupdate`:case`beforeblur`:case`afterblur`:case`beforeinput`:case`blur`:case`fullscreenchange`:case`focus`:case`hashchange`:case`popstate`:case`select`:case`selectstart`:return 2;case`drag`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`mousemove`:case`mouseout`:case`mouseover`:case`pointermove`:case`pointerout`:case`pointerover`:case`scroll`:case`touchmove`:case`wheel`:case`mouseenter`:case`mouseleave`:case`pointerenter`:case`pointerleave`:return 8;case`message`:switch(be()){case xe:return 2;case Se:return 8;case Ce:case we:return 32;case Te:return 268435456;default:return 32}default:return 32}}var hp=!1,gp=null,_p=null,vp=null,yp=new Map,bp=new Map,xp=[],Sp=`mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset`.split(` `);function Cp(e,t){switch(e){case`focusin`:case`focusout`:gp=null;break;case`dragenter`:case`dragleave`:_p=null;break;case`mouseover`:case`mouseout`:vp=null;break;case`pointerover`:case`pointerout`:yp.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:bp.delete(t.pointerId)}}function wp(e,t,n,r,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},t!==null&&(t=ut(t),t!==null&&sp(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function Tp(e,t,n,r,i){switch(t){case`focusin`:return gp=wp(gp,e,t,n,r,i),!0;case`dragenter`:return _p=wp(_p,e,t,n,r,i),!0;case`mouseover`:return vp=wp(vp,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return yp.set(a,wp(yp.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,bp.set(a,wp(bp.get(a)||null,e,t,n,r,i)),!0}return!1}function Ep(e){var t=lt(e.target);if(t!==null){var n=o(t);if(n!==null){if(t=n.tag,t===13){if(t=s(n),t!==null){e.blockedOn=t,Qe(e.priority,function(){cp(n)});return}}else if(t===31){if(t=c(n),t!==null){e.blockedOn=t,Qe(e.priority,function(){cp(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Dp(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=dp(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);Jt=r,n.target.dispatchEvent(r),Jt=null}else return t=ut(n),t!==null&&sp(t),e.blockedOn=n,!1;t.shift()}return!0}function Op(e,t,n){Dp(e)&&n.delete(t)}function kp(){hp=!1,gp!==null&&Dp(gp)&&(gp=null),_p!==null&&Dp(_p)&&(_p=null),vp!==null&&Dp(vp)&&(vp=null),yp.forEach(Op),bp.forEach(Op)}function Ap(e,n){e.blockedOn===n&&(e.blockedOn=null,hp||(hp=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,kp)))}var jp=null;function Mp(e){jp!==e&&(jp=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){jp===e&&(jp=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],i=e[t+2];if(typeof r!=`function`){if(pp(r||n)===null)continue;break}var a=ut(n);a!==null&&(e.splice(t,3),t-=3,xs(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function Np(e){function t(t){return Ap(t,e)}gp!==null&&Ap(gp,e),_p!==null&&Ap(_p,e),vp!==null&&Ap(vp,e),yp.forEach(t),bp.forEach(t);for(var n=0;n<xp.length;n++){var r=xp[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<xp.length&&(n=xp[0],n.blockedOn===null);)Ep(n),n.blockedOn===null&&xp.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(r=0;r<n.length;r+=3){var i=n[r],a=n[r+1],o=i[tt]||null;if(typeof a==`function`)o||Mp(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[tt]||null)s=o.formAction;else if(pp(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Mp(n)}}}function Pp(){function e(e){e.canIntercept&&e.info===`react-transition`&&e.intercept({handler:function(){return new Promise(function(e){return i=e})},focusReset:`manual`,scroll:`manual`})}function t(){i!==null&&(i(),i=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&e.url!=null&&navigation.navigate(e.url,{state:e.getState(),info:`react-transition`,history:`replace`})}}if(typeof navigation==`object`){var r=!1,i=null;return navigation.addEventListener(`navigate`,e),navigation.addEventListener(`navigatesuccess`,t),navigation.addEventListener(`navigateerror`,t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener(`navigate`,e),navigation.removeEventListener(`navigatesuccess`,t),navigation.removeEventListener(`navigateerror`,t),i!==null&&(i(),i=null)}}}function Fp(e){this._internalRoot=e}Ip.prototype.render=Fp.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;ip(n,gu(),e,t,null,null)},Ip.prototype.unmount=Fp.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;ip(e.current,2,null,e,null,null),Cu(),t[nt]=null}};function Ip(e){this._internalRoot=e}Ip.prototype.unstable_scheduleHydration=function(e){if(e){var t=Ze();e={blockedOn:null,target:e,priority:t};for(var n=0;n<xp.length&&t!==0&&t<xp[n].priority;n++);xp.splice(n,0,e),n===0&&Ep(e)}};var Lp=n.version;if(Lp!==`19.2.5`)throw Error(i(527,Lp,`19.2.5`));L.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render==`function`?Error(i(188)):(e=Object.keys(e).join(`,`),Error(i(268,e)));return e=u(t),e=e===null?null:d(e),e=e===null?null:e.stateNode,e};var Rp={bundleType:0,version:`19.2.5`,rendererPackageName:`react-dom`,currentDispatcherRef:I,reconcilerVersion:`19.2.5`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var zp=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!zp.isDisabled&&zp.supportsFiber)try{Oe=zp.inject(Rp),ke=zp}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=nee,s=Ws,c=Gs;return t!=null&&(!0===t.unstable_strictMode&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(o=t.onUncaughtError),t.onCaughtError!==void 0&&(s=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError)),t=np(e,1,!1,null,null,n,r,null,o,s,c,Pp),e[nt]=t.current,Ed(e),new Fp(t)}})),y=s(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=v()})),b=s((e=>{var t=p();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useSyncExternalStore,a=t.useRef,o=t.useEffect,s=t.useMemo,c=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,l,u){var d=a(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=s(function(){function e(e){if(!i){if(i=!0,a=e,e=l(e),u!==void 0&&f.hasValue){var t=f.value;if(u(t,e))return o=t}return o=e}if(t=o,r(a,e))return t;var n=l(e);return u!==void 0&&u(t,n)?(a=e,t):(a=e,o=n)}var i=!1,a,o,s=n===void 0?null:n;return[function(){return e(t())},s===null?void 0:function(){return e(s())}]},[t,n,l,u]);var p=i(e,d[0],d[1]);return o(function(){f.hasValue=!0,f.value=p},[p]),c(p),p}})),x=s(((e,t)=>{t.exports=b()})),S=y(),C=u(p(),1),w=x();function T(e){e()}function E(){let e=null,t=null;return{clear(){e=null,t=null},notify(){T(()=>{let t=e;for(;t;)t.callback(),t=t.next})},get(){let t=[],n=e;for(;n;)t.push(n),n=n.next;return t},subscribe(n){let r=!0,i=t={callback:n,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){!r||e===null||(r=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}var D={notify(){},get:()=>[]};function O(e,t){let n,r=D,i=0,a=!1;function o(e){u();let t=r.subscribe(e),n=!1;return()=>{n||(n=!0,t(),d())}}function s(){r.notify()}function c(){m.onStateChange&&m.onStateChange()}function l(){return a}function u(){i++,n||(n=t?t.addNestedSub(c):e.subscribe(c),r=E())}function d(){i--,n&&i===0&&(n(),n=void 0,r.clear(),r=D)}function f(){a||(a=!0,u())}function p(){a&&(a=!1,d())}let m={addNestedSub:o,notifyNestedSubs:s,handleChangeWrapper:c,isSubscribed:l,trySubscribe:f,tryUnsubscribe:p,getListeners:()=>r};return m}var k=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,A=typeof navigator<`u`&&navigator.product===`ReactNative`,j=k||A?C.useLayoutEffect:C.useEffect,M=Symbol.for(`react-redux-context`),N=typeof globalThis<`u`?globalThis:{};function P(){if(!C.createContext)return{};let e=N[M]??=new Map,t=e.get(C.createContext);return t||(t=C.createContext(null),e.set(C.createContext,t)),t}var F=P();function I(e){let{children:t,context:n,serverState:r,store:i}=e,a=C.useMemo(()=>({store:i,subscription:O(i),getServerState:r?()=>r:void 0}),[i,r]),o=C.useMemo(()=>i.getState(),[i]);j(()=>{let{subscription:e}=a;return e.onStateChange=e.notifyNestedSubs,e.trySubscribe(),o!==i.getState()&&e.notifyNestedSubs(),()=>{e.tryUnsubscribe(),e.onStateChange=void 0}},[a,o]);let s=n||F;return C.createElement(s.Provider,{value:a},t)}var L=I;function R(e=F){return function(){return C.useContext(e)}}var ee=R();function z(e=F){let t=e===F?ee:R(e),n=()=>{let{store:e}=t();return e};return Object.assign(n,{withTypes:()=>n}),n}var te=z();function B(e=F){let t=e===F?te:z(e),n=()=>t().dispatch;return Object.assign(n,{withTypes:()=>n}),n}var V=B(),ne=(e,t)=>e===t;function re(e=F){let t=e===F?ee:R(e),n=(e,n={})=>{let{equalityFn:r=ne}=typeof n==`function`?{equalityFn:n}:n,{store:i,subscription:a,getServerState:o}=t();C.useRef(!0);let s=C.useCallback({[e.name](t){return e(t)}}[e.name],[e]),c=(0,w.useSyncExternalStoreWithSelector)(a.addNestedSub,i.getState,o||i.getState,s,r);return C.useDebugValue(c),c};return Object.assign(n,{withTypes:()=>n}),n}var ie=re(),ae=`modulepreload`,oe=function(e,t){return new URL(e,t).href},se={},ce=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=oe(t,n),t in se)return;se[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:ae,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},le=e=>{throw TypeError(e)},ue=(e,t,n)=>t.has(e)||le(`Cannot `+n),H=(e,t,n)=>(ue(e,t,`read from private field`),n?n.call(e):t.get(e)),de=(e,t,n)=>t.has(e)?le(`Cannot add the same private member more than once`):t instanceof WeakSet?t.add(e):t.set(e,n),fe=`popstate`;function U(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function pe(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return _e(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:ve(t)}return be(t,n,null,e)}function me(e,t){if(e===!1||e==null)throw Error(t)}function W(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function he(){return Math.random().toString(36).substring(2,10)}function ge(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.unstable_mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function _e(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?ye(t):t,state:n,key:t&&t.key||r||he(),unstable_mask:i}}function ve({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function ye(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function be(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=U(e)?e:_e(h.location,e,t);n&&n(r,e),l=u()+1;let d=ge(r,l),f=h.createHref(r.unstable_mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=U(e)?e:_e(h.location,e,t);n&&n(r,e),l=u();let i=ge(r,l),d=h.createHref(r.unstable_mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return xe(e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(fe,d),c=e,()=>{i.removeEventListener(fe,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function xe(e,t=!1){let n=`http://localhost`;typeof window<`u`&&(n=window.location.origin===`null`?window.location.href:window.location.origin),me(n,`No window.location.(origin|href) available to create URL`);let r=typeof e==`string`?e:ve(e);return r=r.replace(/ $/,`%20`),!t&&r.startsWith(`//`)&&(r=n+r),new URL(r,n)}var Se,Ce=class{constructor(e){if(de(this,Se,new Map),e)for(let[t,n]of e)this.set(t,n)}get(e){if(H(this,Se).has(e))return H(this,Se).get(e);if(e.defaultValue!==void 0)return e.defaultValue;throw Error(`No value found for context`)}set(e,t){H(this,Se).set(e,t)}};Se=new WeakMap;var we=new Set([`lazy`,`caseSensitive`,`path`,`id`,`index`,`children`]);function Te(e){return we.has(e)}var Ee=new Set([`lazy`,`caseSensitive`,`path`,`id`,`index`,`middleware`,`children`]);function De(e){return Ee.has(e)}function Oe(e){return e.index===!0}function ke(e,t,n=[],r={},i=!1){return e.map((e,a)=>{let o=[...n,String(a)],s=typeof e.id==`string`?e.id:o.join(`-`);if(me(e.index!==!0||!e.children,`Cannot specify children on an index route`),me(i||!r[s],`Found a route id collision on id "${s}". Route id's must be globally unique within Data Router usages`),Oe(e)){let n={...e,id:s};return r[s]=Ae(n,t(n)),n}else{let n={...e,id:s,children:void 0};return r[s]=Ae(n,t(n)),e.children&&(n.children=ke(e.children,t,o,r,i)),n}})}function Ae(e,t){return Object.assign(e,{...t,...typeof t.lazy==`object`&&t.lazy!=null?{lazy:{...e.lazy,...t.lazy}}:{}})}function je(e,t,n=`/`){return Me(e,t,n,!1)}function Me(e,t,n,r){let i=Xe((typeof t==`string`?ye(t):t).pathname||`/`,n);if(i==null)return null;let a=Pe(e);Ie(a);let o=null;for(let e=0;o==null&&e<a.length;++e){let t=Ye(i);o=Ke(a[e],t,r)}return o}function Ne(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function Pe(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;me(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=st([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(me(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Pe(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:We(l,e.index),routesMeta:u})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of Fe(e.path))a(e,t,!0,n)}),t}function Fe(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=Fe(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function Ie(e){e.sort((e,t)=>e.score===t.score?Ge(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var Le=/^:[\w-]+$/,Re=3,ze=2,Be=1,Ve=10,He=-2,Ue=e=>e===`*`;function We(e,t){let n=e.split(`/`),r=n.length;return n.some(Ue)&&(r+=He),t&&(r+=ze),n.filter(e=>!Ue(e)).reduce((e,t)=>e+(Le.test(t)?Re:t===``?Be:Ve),r)}function Ge(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function Ke(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u=qe({path:s.relativePath,caseSensitive:s.caseSensitive,end:c},l),d=s.route;if(!u&&c&&n&&!r[r.length-1].route.index&&(u=qe({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!u)return null;Object.assign(i,u.params),o.push({params:i,pathname:st([a,u.pathname]),pathnameBase:lt(st([a,u.pathnameBase])),route:d}),u.pathnameBase!==`/`&&(a=st([a,u.pathnameBase]))}return o}function qe(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=Je(e.path,e.caseSensitive,e.end),i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,`$1`),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function Je(e,t=!1,n=!0){W(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function Ye(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return W(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function Xe(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function Ze({basename:e,pathname:t}){return t===`/`?e:st([e,t])}var Qe=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,$e=e=>Qe.test(e);function et(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?ye(e):e,a;return n?(n=ot(n),a=n.startsWith(`/`)?tt(n.substring(1),`/`):tt(n,t)):a=t,{pathname:a,search:ut(r),hash:dt(i)}}function tt(e,t){let n=ct(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function nt(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function rt(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function it(e){let t=rt(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function at(e,t,n,r=!1){let i;typeof e==`string`?i=ye(e):(i={...e},me(!i.pathname||!i.pathname.includes(`?`),nt(`?`,`pathname`,`search`,i)),me(!i.pathname||!i.pathname.includes(`#`),nt(`#`,`pathname`,`hash`,i)),me(!i.search||!i.search.includes(`#`),nt(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=et(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var ot=e=>e.replace(/\/\/+/g,`/`),st=e=>ot(e.join(`/`)),ct=e=>e.replace(/\/+$/,``),lt=e=>ct(e).replace(/^\/*/,`/`),ut=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,dt=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,ft=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function pt(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function mt(e){return st(e.map(e=>e.route.path).filter(Boolean))||`/`}var ht=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function gt(e,t){let n=e;if(typeof n!=`string`||!Qe.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(ht)try{let e=new URL(window.location.href),r=n.startsWith(`//`)?new URL(e.protocol+n):new URL(n),a=Xe(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{W(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}var _t=Symbol(`Uninstrumented`);function vt(e,t){let n={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};e.forEach(e=>e({id:t.id,index:t.index,path:t.path,instrument(e){let t=Object.keys(n);for(let r of t)e[r]&&n[r].push(e[r])}}));let r={};if(typeof t.lazy==`function`&&n.lazy.length>0){let e=bt(n.lazy,t.lazy,()=>void 0);e&&(r.lazy=e)}if(typeof t.lazy==`object`){let e=t.lazy;[`middleware`,`loader`,`action`].forEach(t=>{let i=e[t],a=n[`lazy.${t}`];if(typeof i==`function`&&a.length>0){let e=bt(a,i,()=>void 0);e&&(r.lazy=Object.assign(r.lazy||{},{[t]:e}))}})}return[`loader`,`action`].forEach(e=>{let i=t[e];if(typeof i==`function`&&n[e].length>0){let t=i[_t]??i,a=bt(n[e],t,(...e)=>St(e[0]));a&&(e===`loader`&&t.hydrate===!0&&(a.hydrate=!0),a[_t]=t,r[e]=a)}}),t.middleware&&t.middleware.length>0&&n.middleware.length>0&&(r.middleware=t.middleware.map(e=>{let t=e[_t]??e,r=bt(n.middleware,t,(...e)=>St(e[0]));return r?(r[_t]=t,r):e})),r}function yt(e,t){let n={navigate:[],fetch:[]};if(t.forEach(e=>e({instrument(e){let t=Object.keys(e);for(let r of t)e[r]&&n[r].push(e[r])}})),n.navigate.length>0){let t=e.navigate[_t]??e.navigate,r=bt(n.navigate,t,(...t)=>{let[n,r]=t;return{to:typeof n==`number`||typeof n==`string`?n:n?ve(n):`.`,...Ct(e,r??{})}});r&&(r[_t]=t,e.navigate=r)}if(n.fetch.length>0){let t=e.fetch[_t]??e.fetch,r=bt(n.fetch,t,(...t)=>{let[n,,r,i]=t;return{href:r??`.`,fetcherKey:n,...Ct(e,i??{})}});r&&(r[_t]=t,e.fetch=r)}return e}function bt(e,t,n){return e.length===0?null:async(...r)=>{let i=await xt(e,n(...r),()=>t(...r),e.length-1);if(i.type===`error`)throw i.value;return i.value}}async function xt(e,t,n,r){let i=e[r],a;if(i){let o,s=async()=>(o?console.error(`You cannot call instrumented handlers more than once`):o=xt(e,t,n,r-1),a=await o,me(a,`Expected a result`),a.type===`error`&&a.value instanceof Error?{status:`error`,error:a.value}:{status:`success`,error:void 0});try{await i(s,t)}catch(e){console.error(`An instrumentation function threw an error:`,e)}o||await s(),await o}else try{a={type:`success`,value:await n()}}catch(e){a={type:`error`,value:e}}return a||{type:`error`,value:Error(`No result assigned in instrumentation chain.`)}}function St(e){let{request:t,context:n,params:r,unstable_pattern:i}=e;return{request:wt(t),params:{...r},unstable_pattern:i,context:Tt(n)}}function Ct(e,t){return{currentUrl:ve(e.state.location),...`formMethod`in t?{formMethod:t.formMethod}:{},...`formEncType`in t?{formEncType:t.formEncType}:{},...`formData`in t?{formData:t.formData}:{},...`body`in t?{body:t.body}:{}}}function wt(e){return{method:e.method,url:e.url,headers:{get:(...t)=>e.headers.get(...t)}}}function Tt(e){if(Dt(e)){let t={...e};return Object.freeze(t),t}else return{get:t=>e.get(t)}}var Et=Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function Dt(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getOwnPropertyNames(t).sort().join(`\0`)===Et}var Ot=[`POST`,`PUT`,`PATCH`,`DELETE`],kt=new Set(Ot),At=[`GET`,...Ot],jt=new Set(At),Mt=new Set([301,302,303,307,308]),Nt=new Set([307,308]),Pt={state:`idle`,location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Ft={state:`idle`,data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},It={state:`unblocked`,proceed:void 0,reset:void 0,location:void 0},Lt=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),Rt=`remix-router-transitions`,zt=Symbol(`ResetLoaderData`);function Bt(e){let t=e.window?e.window:typeof window<`u`?window:void 0,n=t!==void 0&&t.document!==void 0&&t.document.createElement!==void 0;me(e.routes.length>0,`You must provide a non-empty routes array to createRouter`);let r=e.hydrationRouteProperties||[],i=e.mapRouteProperties||Lt,a=i;if(e.unstable_instrumentations){let t=e.unstable_instrumentations;a=e=>({...i(e),...vt(t.map(e=>e.route).filter(Boolean),e)})}let o={},s=ke(e.routes,a,void 0,o),c,l=e.basename||`/`;l.startsWith(`/`)||(l=`/${l}`);let u=e.dataStrategy||rn,d={unstable_passThroughRequests:!1,...e.future},f=null,p=new Set,m=null,h=null,g=null,_=e.hydrationData!=null,v=je(s,e.history.location,l),y=!1,b=null,x,S;if(v==null&&!e.patchRoutesOnNavigation){let t=On(404,{pathname:e.history.location.pathname}),{matches:n,route:r}=Dn(s);x=!0,S=!x,v=n,b={[r.id]:t}}else if(v&&!e.hydrationData&&Ye(v,s,e.history.location.pathname).active&&(v=null),!v){x=!1,S=!x,v=[];let t=Ye(null,s,e.history.location.pathname);t.active&&t.matches&&(y=!0,v=t.matches)}else if(v.some(e=>e.route.lazy))x=!1,S=!x;else if(!v.some(e=>Gt(e.route)))x=!0,S=!x;else{let t=e.hydrationData?e.hydrationData.loaderData:null,n=e.hydrationData?e.hydrationData.errors:null,r=v;if(n){let e=v.findIndex(e=>n[e.route.id]!==void 0);r=r.slice(0,e+1)}S=!1,x=!0,r.forEach(e=>{let r=Kt(e.route,t,n);S||=r.renderFallback,x&&=!r.shouldLoad})}let C,w={historyAction:e.history.action,location:e.history.location,matches:v,initialized:x,renderFallback:S,navigation:Pt,restoreScrollPosition:e.hydrationData==null?null:!1,preventScrollReset:!1,revalidation:`idle`,loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||b,fetchers:new Map,blockers:new Map},T=`POP`,E=null,D=!1,O,k=!1,A=new Map,j=null,M=!1,N=!1,P=new Set,F=new Map,I=0,L=-1,R=new Map,ee=new Set,z=new Map,te=new Map,B=new Set,V=new Map,ne,re=null;function ie(){if(f=e.history.listen(({action:t,location:n,delta:r})=>{if(ne){ne(),ne=void 0;return}W(V.size===0||r!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let i=Ue({currentLocation:w.location,nextLocation:n,historyAction:t});if(i&&r!=null){let t=new Promise(e=>{ne=e});e.history.go(r*-1),He(i,{state:`blocked`,location:n,proceed(){He(i,{state:`proceeding`,proceed:void 0,reset:void 0,location:n}),t.then(()=>e.history.go(r))},reset(){let e=new Map(w.blockers);e.set(i,It),se({blockers:e})}}),E?.resolve(),E=null;return}return H(t,n)}),n){Zn(t,A);let e=()=>Qn(t,A);t.addEventListener(`pagehide`,e),j=()=>t.removeEventListener(`pagehide`,e)}return w.initialized||H(`POP`,w.location,{initialHydration:!0}),C}function ae(){f&&f(),j&&j(),p.clear(),O&&O.abort(),w.fetchers.forEach((e,t)=>Pe(t)),w.blockers.forEach((e,t)=>Ve(t))}function oe(e){return p.add(e),()=>p.delete(e)}function se(e,t={}){e.matches&&=e.matches.map(e=>{let t=o[e.route.id],n=e.route;return n.element!==t.element||n.errorElement!==t.errorElement||n.hydrateFallbackElement!==t.hydrateFallbackElement?{...e,route:t}:e}),w={...w,...e};let n=[],r=[];w.fetchers.forEach((e,t)=>{e.state===`idle`&&(B.has(t)?n.push(t):r.push(t))}),B.forEach(e=>{!w.fetchers.has(e)&&!F.has(e)&&n.push(e)}),[...p].forEach(r=>r(w,{deletedFetchers:n,newErrors:e.errors??null,viewTransitionOpts:t.viewTransitionOpts,flushSync:t.flushSync===!0})),n.forEach(e=>Pe(e)),r.forEach(e=>w.fetchers.delete(e))}function ce(t,n,{flushSync:r}={}){let i=w.actionData!=null&&w.navigation.formMethod!=null&&Hn(w.navigation.formMethod)&&w.navigation.state===`loading`&&t.state?._isRedirect!==!0,a;a=n.actionData?Object.keys(n.actionData).length>0?n.actionData:null:i?w.actionData:null;let o=n.loaderData?wn(w.loaderData,n.loaderData,n.matches||[],n.errors):w.loaderData,l=w.blockers;l.size>0&&(l=new Map(l),l.forEach((e,t)=>l.set(t,It)));let u=M?!1:Je(t,n.matches||w.matches),d=D===!0||w.navigation.formMethod!=null&&Hn(w.navigation.formMethod)&&t.state?._isRedirect!==!0;c&&=(s=c,void 0),M||T===`POP`||(T===`PUSH`?e.history.push(t,t.state):T===`REPLACE`&&e.history.replace(t,t.state));let f;if(T===`POP`){let e=A.get(w.location.pathname);e&&e.has(t.pathname)?f={currentLocation:w.location,nextLocation:t}:A.has(t.pathname)&&(f={currentLocation:t,nextLocation:w.location})}else if(k){let e=A.get(w.location.pathname);e?e.add(t.pathname):(e=new Set([t.pathname]),A.set(w.location.pathname,e)),f={currentLocation:w.location,nextLocation:t}}se({...n,actionData:a,loaderData:o,historyAction:T,location:t,initialized:!0,renderFallback:!1,navigation:Pt,revalidation:`idle`,restoreScrollPosition:u,preventScrollReset:d,blockers:l},{viewTransitionOpts:f,flushSync:r===!0}),T=`POP`,D=!1,k=!1,M=!1,N=!1,E?.resolve(),E=null,re?.resolve(),re=null}async function le(t,n){if(E?.resolve(),E=null,typeof t==`number`){E||=$n();let n=E.promise;return e.history.go(t),n}let{path:r,submission:i,error:a}=Ut(!1,Ht(w.location,w.matches,l,t,n?.fromRouteId,n?.relative),n),o;n?.unstable_mask&&(o={pathname:``,search:``,hash:``,...typeof n.unstable_mask==`string`?ye(n.unstable_mask):{...w.location.unstable_mask,...n.unstable_mask}});let s=w.location,c=_e(s,r,n&&n.state,void 0,o);c={...c,...e.history.encodeLocation(c)};let u=n&&n.replace!=null?n.replace:void 0,d=`PUSH`;u===!0?d=`REPLACE`:u===!1||i!=null&&Hn(i.formMethod)&&i.formAction===w.location.pathname+w.location.search&&(d=`REPLACE`);let f=n&&`preventScrollReset`in n?n.preventScrollReset===!0:void 0,p=(n&&n.flushSync)===!0,m=Ue({currentLocation:s,nextLocation:c,historyAction:d});if(m){He(m,{state:`blocked`,location:c,proceed(){He(m,{state:`proceeding`,proceed:void 0,reset:void 0,location:c}),le(t,n)},reset(){let e=new Map(w.blockers);e.set(m,It),se({blockers:e})}});return}await H(d,c,{submission:i,pendingError:a,preventScrollReset:f,replace:n&&n.replace,enableViewTransition:n&&n.viewTransition,flushSync:p,callSiteDefaultShouldRevalidate:n&&n.unstable_defaultShouldRevalidate})}function ue(){re||=$n(),Te(),se({revalidation:`loading`});let e=re.promise;return w.navigation.state===`submitting`?e:w.navigation.state===`idle`?(H(w.historyAction,w.location,{startUninterruptedRevalidation:!0}),e):(H(T||w.historyAction,w.navigation.location,{overrideNavigation:w.navigation,enableViewTransition:k===!0}),e)}async function H(t,n,r){O&&O.abort(),O=null,T=t,M=(r&&r.startUninterruptedRevalidation)===!0,qe(w.location,w.matches),D=(r&&r.preventScrollReset)===!0,k=(r&&r.enableViewTransition)===!0;let i=c||s,a=r&&r.overrideNavigation,o=r?.initialHydration&&w.matches&&w.matches.length>0&&!y?w.matches:je(i,n,l),u=(r&&r.flushSync)===!0;if(o&&w.initialized&&!N&&jn(w.location,n)&&!(r&&r.submission&&Hn(r.submission.formMethod))){ce(n,{matches:o},{flushSync:u});return}let d=Ye(o,i,n.pathname);if(d.active&&d.matches&&(o=d.matches),!o){let{error:e,notFoundMatches:t,route:r}=We(n.pathname);ce(n,{matches:t,loaderData:{},errors:{[r.id]:e}},{flushSync:u});return}O=new AbortController;let f=vn(e.history,n,O.signal,r&&r.submission),p=e.getContext?await e.getContext():new Ce,m;if(r&&r.pendingError)m=[En(o).route.id,{type:`error`,error:r.pendingError}];else if(r&&r.submission&&Hn(r.submission.formMethod)){let t=await de(f,n,r.submission,o,p,d.active,r&&r.initialHydration===!0,{replace:r.replace,flushSync:u});if(t.shortCircuited)return;if(t.pendingActionResult){let[e,r]=t.pendingActionResult;if(In(r)&&pt(r.error)&&r.error.status===404){O=null,ce(n,{matches:t.matches,loaderData:{},errors:{[e]:r.error}});return}}o=t.matches||o,m=t.pendingActionResult,a=Kn(n,r.submission),u=!1,d.active=!1,f=vn(e.history,f.url,f.signal)}let{shortCircuited:h,matches:g,loaderData:_,errors:v}=await fe(f,n,o,p,d.active,a,r&&r.submission,r&&r.fetcherSubmission,r&&r.replace,r&&r.initialHydration===!0,u,m,r&&r.callSiteDefaultShouldRevalidate);h||(O=null,ce(n,{matches:g||o,...Tn(m),loaderData:_,errors:v}))}async function de(t,n,i,c,u,d,f,p={}){if(Te(),se({navigation:qn(n,i)},{flushSync:p.flushSync===!0}),d){let e=await Ze(c,n.pathname,t.signal);if(e.type===`aborted`)return{shortCircuited:!0};if(e.type===`error`){if(e.partialMatches.length===0){let{matches:t,route:n}=Dn(s);return{matches:t,pendingActionResult:[n.id,{type:`error`,error:e.error}]}}let t=En(e.partialMatches).route.id;return{matches:e.partialMatches,pendingActionResult:[t,{type:`error`,error:e.error}]}}else if(e.matches)c=e.matches;else{let{notFoundMatches:e,error:t,route:r}=We(n.pathname);return{matches:e,pendingActionResult:[r.id,{type:`error`,error:t}]}}}let m,h=Wn(c,n);if(!h.route.action&&!h.route.lazy)m={type:`error`,error:On(405,{method:t.method,pathname:n.pathname,routeId:h.route.id})};else{let e=await Se(t,n,un(a,o,t,n,c,h,f?[]:r,u),u,null);if(m=e[h.route.id],!m){for(let t of c)if(e[t.route.id]){m=e[t.route.id];break}}if(t.signal.aborted)return{shortCircuited:!0}}if(Ln(m)){let n;return n=p&&p.replace!=null?p.replace:_n(m.response.headers.get(`Location`),new URL(t.url),l,e.history)===w.location.pathname+w.location.search,await be(t,m,!0,{submission:i,replace:n}),{shortCircuited:!0}}if(In(m)){let e=En(c,h.route.id);return(p&&p.replace)!==!0&&(T=`PUSH`),{matches:c,pendingActionResult:[e.route.id,m,h.route.id]}}return{matches:c,pendingActionResult:[h.route.id,m]}}async function fe(t,n,i,u,d,f,p,m,h,g,_,v,y){let b=f||Kn(n,p),x=p||m||Gn(b),S=!M&&!g;if(d){if(S){let e=U(v);se({navigation:b,...e===void 0?{}:{actionData:e}},{flushSync:_})}let e=await Ze(i,n.pathname,t.signal);if(e.type===`aborted`)return{shortCircuited:!0};if(e.type===`error`){if(e.partialMatches.length===0){let{matches:t,route:n}=Dn(s);return{matches:t,loaderData:{},errors:{[n.id]:e.error}}}let t=En(e.partialMatches).route.id;return{matches:e.partialMatches,loaderData:{},errors:{[t]:e.error}}}else if(e.matches)i=e.matches;else{let{error:e,notFoundMatches:t,route:r}=We(n.pathname);return{matches:t,loaderData:{},errors:{[r.id]:e}}}}let C=c||s,{dsMatches:T,revalidatingFetchers:E}=Wt(t,u,a,o,e.history,w,i,x,n,g?[]:r,g===!0,N,P,B,z,ee,C,l,e.patchRoutesOnNavigation!=null,v,y);if(L=++I,!e.dataStrategy&&!T.some(e=>e.shouldLoad)&&!T.some(e=>e.route.middleware&&e.route.middleware.length>0)&&E.length===0){let e=Re();return ce(n,{matches:i,loaderData:{},errors:v&&In(v[1])?{[v[0]]:v[1].error}:null,...Tn(v),...e?{fetchers:new Map(w.fetchers)}:{}},{flushSync:_}),{shortCircuited:!0}}if(S){let e={};if(!d){e.navigation=b;let t=U(v);t!==void 0&&(e.actionData=t)}E.length>0&&(e.fetchers=pe(E)),se(e,{flushSync:_})}E.forEach(e=>{Ie(e.key),e.controller&&F.set(e.key,e.controller)});let D=()=>E.forEach(e=>Ie(e.key));O&&O.signal.addEventListener(`abort`,D);let{loaderResults:k,fetcherResults:A}=await we(T,E,t,n,u);if(t.signal.aborted)return{shortCircuited:!0};O&&O.signal.removeEventListener(`abort`,D),E.forEach(e=>F.delete(e.key));let j=kn(k);if(j)return await be(t,j.result,!0,{replace:h}),{shortCircuited:!0};if(j=kn(A),j)return ee.add(j.key),await be(t,j.result,!0,{replace:h}),{shortCircuited:!0};let{loaderData:R,errors:te}=Cn(w,i,k,v,E,A);g&&w.errors&&(te={...w.errors,...te});let V=Re(),ne=ze(L),re=V||ne||E.length>0;return{matches:i,loaderData:R,errors:te,...re?{fetchers:new Map(w.fetchers)}:{}}}function U(e){if(e&&!In(e[1]))return{[e[0]]:e[1].data};if(w.actionData)return Object.keys(w.actionData).length===0?null:w.actionData}function pe(e){return e.forEach(e=>{let t=w.fetchers.get(e.key),n=Jn(void 0,t?t.data:void 0);w.fetchers.set(e.key,n)}),new Map(w.fetchers)}async function he(t,n,r,i){Ie(t);let a=(i&&i.flushSync)===!0,o=c||s,u=Ht(w.location,w.matches,l,r,n,i?.relative),d=je(o,u,l),f=Ye(d,o,u);if(f.active&&f.matches&&(d=f.matches),!d){De(t,n,On(404,{pathname:u}),{flushSync:a});return}let{path:p,submission:m,error:h}=Ut(!0,u,i);if(h){De(t,n,h,{flushSync:a});return}let g=e.getContext?await e.getContext():new Ce,_=(i&&i.preventScrollReset)===!0;if(m&&Hn(m.formMethod)){await ge(t,n,p,d,g,f.active,a,_,m,i&&i.unstable_defaultShouldRevalidate);return}z.set(t,{routeId:n,path:p}),await ve(t,n,p,d,g,f.active,a,_,m)}async function ge(t,n,i,u,d,f,p,m,h,g){Te(),z.delete(t),Ee(t,Yn(h,w.fetchers.get(t)),{flushSync:p});let _=new AbortController,v=vn(e.history,i,_.signal,h);if(f){let e=await Ze(u,new URL(v.url).pathname,v.signal,t);if(e.type===`aborted`)return;if(e.type===`error`){De(t,n,e.error,{flushSync:p});return}else if(e.matches)u=e.matches;else{De(t,n,On(404,{pathname:i}),{flushSync:p});return}}let y=Wn(u,i);if(!y.route.action&&!y.route.lazy){De(t,n,On(405,{method:h.formMethod,pathname:i,routeId:n}),{flushSync:p});return}F.set(t,_);let b=I,x=un(a,o,v,i,u,y,r,d),S=await Se(v,i,x,d,t),C=S[y.route.id];if(!C){for(let e of x)if(S[e.route.id]){C=S[e.route.id];break}}if(v.signal.aborted){F.get(t)===_&&F.delete(t);return}if(B.has(t)){if(Ln(C)||In(C)){Ee(t,Xn(void 0));return}}else{if(Ln(C))if(F.delete(t),L>b){Ee(t,Xn(void 0));return}else return ee.add(t),Ee(t,Jn(h)),be(v,C,!1,{fetcherSubmission:h,preventScrollReset:m});if(In(C)){De(t,n,C.error);return}}let E=w.navigation.location||w.location,D=vn(e.history,E,_.signal),k=c||s,A=w.navigation.state===`idle`?w.matches:je(k,w.navigation.location,l);me(A,`Didn't find any matches after fetcher action`);let j=++I;R.set(t,j);let M=Jn(h,C.data);w.fetchers.set(t,M);let{dsMatches:te,revalidatingFetchers:V}=Wt(D,d,a,o,e.history,w,A,h,E,r,!1,N,P,B,z,ee,k,l,e.patchRoutesOnNavigation!=null,[y.route.id,C],g);V.filter(e=>e.key!==t).forEach(e=>{let t=e.key,n=w.fetchers.get(t),r=Jn(void 0,n?n.data:void 0);w.fetchers.set(t,r),Ie(t),e.controller&&F.set(t,e.controller)}),se({fetchers:new Map(w.fetchers)});let ne=()=>V.forEach(e=>Ie(e.key));_.signal.addEventListener(`abort`,ne);let{loaderResults:re,fetcherResults:ie}=await we(te,V,D,E,d);if(_.signal.aborted)return;if(_.signal.removeEventListener(`abort`,ne),R.delete(t),F.delete(t),V.forEach(e=>F.delete(e.key)),w.fetchers.has(t)){let e=Xn(C.data);w.fetchers.set(t,e)}let ae=kn(re);if(ae)return be(D,ae.result,!1,{preventScrollReset:m});if(ae=kn(ie),ae)return ee.add(ae.key),be(D,ae.result,!1,{preventScrollReset:m});let{loaderData:oe,errors:le}=Cn(w,A,re,void 0,V,ie);ze(j),w.navigation.state===`loading`&&j>L?(me(T,`Expected pending action`),O&&O.abort(),ce(w.navigation.location,{matches:A,loaderData:oe,errors:le,fetchers:new Map(w.fetchers)})):(se({errors:le,loaderData:wn(w.loaderData,oe,A,le),fetchers:new Map(w.fetchers)}),N=!1)}async function ve(t,n,i,s,c,l,u,d,f){let p=w.fetchers.get(t);Ee(t,Jn(f,p?p.data:void 0),{flushSync:u});let m=new AbortController,h=vn(e.history,i,m.signal);if(l){let e=await Ze(s,new URL(h.url).pathname,h.signal,t);if(e.type===`aborted`)return;if(e.type===`error`){De(t,n,e.error,{flushSync:u});return}else if(e.matches)s=e.matches;else{De(t,n,On(404,{pathname:i}),{flushSync:u});return}}let g=Wn(s,i);F.set(t,m);let _=I,v=(await Se(h,i,un(a,o,h,i,s,g,r,c),c,t))[g.route.id];if(F.get(t)===m&&F.delete(t),!h.signal.aborted){if(B.has(t)){Ee(t,Xn(void 0));return}if(Ln(v))if(L>_){Ee(t,Xn(void 0));return}else{ee.add(t),await be(h,v,!1,{preventScrollReset:d});return}if(In(v)){De(t,n,v.error);return}Ee(t,Xn(v.data))}}async function be(r,i,a,{submission:o,fetcherSubmission:s,preventScrollReset:c,replace:u}={}){a||(E?.resolve(),E=null),i.response.headers.has(`X-Remix-Revalidate`)&&(N=!0);let d=i.response.headers.get(`Location`);me(d,`Expected a Location header on the redirect Response`),d=_n(d,new URL(r.url),l,e.history);let f=_e(w.location,d,{_isRedirect:!0});if(n){let e=!1;if(i.response.headers.has(`X-Remix-Reload-Document`))e=!0;else if($e(d)){let n=xe(d,!0);e=n.origin!==t.location.origin||Xe(n.pathname,l)==null}if(e){u?t.location.replace(d):t.location.assign(d);return}}O=null;let p=u===!0||i.response.headers.has(`X-Remix-Replace`)?`REPLACE`:`PUSH`,{formMethod:m,formAction:h,formEncType:g}=w.navigation;!o&&!s&&m&&h&&g&&(o=Gn(w.navigation));let _=o||s;Nt.has(i.response.status)&&_&&Hn(_.formMethod)?await H(p,f,{submission:{..._,formAction:d},preventScrollReset:c||D,enableViewTransition:a?k:void 0}):await H(p,f,{overrideNavigation:Kn(f,o),fetcherSubmission:s,preventScrollReset:c||D,enableViewTransition:a?k:void 0})}async function Se(e,t,n,r,i){let a,o={};try{a=await dn(u,e,t,n,i,r,!1)}catch(e){return n.filter(e=>e.shouldLoad).forEach(t=>{o[t.route.id]={type:`error`,error:e}}),o}if(e.signal.aborted)return o;if(!Hn(e.method))for(let e of n){if(a[e.route.id]?.type===`error`)break;!a.hasOwnProperty(e.route.id)&&!w.loaderData.hasOwnProperty(e.route.id)&&(!w.errors||!w.errors.hasOwnProperty(e.route.id))&&e.shouldCallHandler()&&(a[e.route.id]={type:`error`,result:Error(`No result returned from dataStrategy for route ${e.route.id}`)})}for(let[t,r]of Object.entries(a))if(Fn(r)){let i=r.result;o[t]={type:`redirect`,response:hn(i,e,t,n,l)}}else o[t]=await mn(r);return o}async function we(e,t,n,r,i){let a=Se(n,r,e,i,null),o=Promise.all(t.map(async e=>{if(e.matches&&e.match&&e.request&&e.controller){let t=(await Se(e.request,e.path,e.matches,i,e.key))[e.match.route.id];return{[e.key]:t}}else return Promise.resolve({[e.key]:{type:`error`,error:On(404,{pathname:e.path})}})}));return{loaderResults:await a,fetcherResults:(await o).reduce((e,t)=>Object.assign(e,t),{})}}function Te(){N=!0,z.forEach((e,t)=>{F.has(t)&&P.add(t),Ie(t)})}function Ee(e,t,n={}){w.fetchers.set(e,t),se({fetchers:new Map(w.fetchers)},{flushSync:(n&&n.flushSync)===!0})}function De(e,t,n,r={}){let i=En(w.matches,t);Pe(e),se({errors:{[i.route.id]:n},fetchers:new Map(w.fetchers)},{flushSync:(r&&r.flushSync)===!0})}function Oe(e){return te.set(e,(te.get(e)||0)+1),B.has(e)&&B.delete(e),w.fetchers.get(e)||Ft}function Ae(e,t){Ie(e,t?.reason),Ee(e,Xn(null))}function Pe(e){let t=w.fetchers.get(e);F.has(e)&&!(t&&t.state===`loading`&&R.has(e))&&Ie(e),z.delete(e),R.delete(e),ee.delete(e),B.delete(e),P.delete(e),w.fetchers.delete(e)}function Fe(e){let t=(te.get(e)||0)-1;t<=0?(te.delete(e),B.add(e)):te.set(e,t),se({fetchers:new Map(w.fetchers)})}function Ie(e,t){let n=F.get(e);n&&(n.abort(t),F.delete(e))}function Le(e){for(let t of e){let e=Xn(Oe(t).data);w.fetchers.set(t,e)}}function Re(){let e=[],t=!1;for(let n of ee){let r=w.fetchers.get(n);me(r,`Expected fetcher: ${n}`),r.state===`loading`&&(ee.delete(n),e.push(n),t=!0)}return Le(e),t}function ze(e){let t=[];for(let[n,r]of R)if(r<e){let e=w.fetchers.get(n);me(e,`Expected fetcher: ${n}`),e.state===`loading`&&(Ie(n),R.delete(n),t.push(n))}return Le(t),t.length>0}function Be(e,t){let n=w.blockers.get(e)||It;return V.get(e)!==t&&V.set(e,t),n}function Ve(e){w.blockers.delete(e),V.delete(e)}function He(e,t){let n=w.blockers.get(e)||It;me(n.state===`unblocked`&&t.state===`blocked`||n.state===`blocked`&&t.state===`blocked`||n.state===`blocked`&&t.state===`proceeding`||n.state===`blocked`&&t.state===`unblocked`||n.state===`proceeding`&&t.state===`unblocked`,`Invalid blocker state transition: ${n.state} -> ${t.state}`);let r=new Map(w.blockers);r.set(e,t),se({blockers:r})}function Ue({currentLocation:e,nextLocation:t,historyAction:n}){if(V.size===0)return;V.size>1&&W(!1,`A router only supports one blocker at a time`);let r=Array.from(V.entries()),[i,a]=r[r.length-1],o=w.blockers.get(i);if(!(o&&o.state===`proceeding`)&&a({currentLocation:e,nextLocation:t,historyAction:n}))return i}function We(e){let t=On(404,{pathname:e}),{matches:n,route:r}=Dn(c||s);return{notFoundMatches:n,route:r,error:t}}function Ge(e,t,n){if(m=e,g=t,h=n||null,!_&&w.navigation===Pt){_=!0;let e=Je(w.location,w.matches);e!=null&&se({restoreScrollPosition:e})}return()=>{m=null,g=null,h=null}}function Ke(e,t){return h&&h(e,t.map(e=>Ne(e,w.loaderData)))||e.key}function qe(e,t){if(m&&g){let n=Ke(e,t);m[n]=g()}}function Je(e,t){if(m){let n=Ke(e,t),r=m[n];if(typeof r==`number`)return r}return null}function Ye(t,n,r){if(e.patchRoutesOnNavigation){if(!t)return{active:!0,matches:Me(n,r,l,!0)||[]};if(Object.keys(t[0].params).length>0)return{active:!0,matches:Me(n,r,l,!0)}}return{active:!1,matches:null}}async function Ze(t,n,r,i){if(!e.patchRoutesOnNavigation)return{type:`success`,matches:t};let u=t;for(;;){let t=c==null,d=c||s,f=o;try{await e.patchRoutesOnNavigation({signal:r,path:n,matches:u,fetcherKey:i,patch:(e,t)=>{r.aborted||Xt(e,t,d,f,a,!1)}})}catch(e){return{type:`error`,error:e,partialMatches:u}}finally{t&&!r.aborted&&(s=[...s])}if(r.aborted)return{type:`aborted`};let p=je(d,n,l),m=null;if(p&&(Object.keys(p[0].params).length===0||(m=Me(d,n,l,!0),!(m&&u.length<m.length&&Qe(u,m.slice(0,u.length))))))return{type:`success`,matches:p};if(m||=Me(d,n,l,!0),!m||Qe(u,m))return{type:`success`,matches:null};u=m}}function Qe(e,t){return e.length===t.length&&e.every((e,n)=>e.route.id===t[n].route.id)}function et(e){o={},c=ke(e,a,void 0,o)}function tt(e,t,n=!1){let r=c==null;Xt(e,t,c||s,o,a,n),r&&(s=[...s],se({}))}return C={get basename(){return l},get future(){return d},get state(){return w},get routes(){return s},get window(){return t},initialize:ie,subscribe:oe,enableScrollRestoration:Ge,navigate:le,fetch:he,revalidate:ue,createHref:t=>e.history.createHref(t),encodeLocation:t=>e.history.encodeLocation(t),getFetcher:Oe,resetFetcher:Ae,deleteFetcher:Fe,dispose:ae,getBlocker:Be,deleteBlocker:Ve,patchRoutes:tt,_internalFetchControllers:F,_internalSetRoutes:et,_internalSetStateDoNotUseOrYouWillBreakYourApp(e){se(e)}},e.unstable_instrumentations&&(C=yt(C,e.unstable_instrumentations.map(e=>e.router).filter(Boolean))),C}function Vt(e){return e!=null&&(`formData`in e&&e.formData!=null||`body`in e&&e.body!==void 0)}function Ht(e,t,n,r,i,a){let o,s;if(i){o=[];for(let e of t)if(o.push(e),e.route.id===i){s=e;break}}else o=t,s=t[t.length-1];let c=at(r||`.`,it(o),Xe(e.pathname,n)||e.pathname,a===`path`);if(r??(c.search=e.search,c.hash=e.hash),(r==null||r===``||r===`.`)&&s){let e=Un(c.search);if(s.route.index&&!e)c.search=c.search?c.search.replace(/^\?/,`?index&`):`?index`;else if(!s.route.index&&e){let e=new URLSearchParams(c.search),t=e.getAll(`index`);e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();c.search=n?`?${n}`:``}}return n!==`/`&&(c.pathname=Ze({basename:n,pathname:c.pathname})),ve(c)}function Ut(e,t,n){if(!n||!Vt(n))return{path:t};if(n.formMethod&&!eee(n.formMethod))return{path:t,error:On(405,{method:n.formMethod})};let r=()=>({path:t,error:On(400,{type:`invalid-body`})}),i=(n.formMethod||`get`).toUpperCase(),a=An(t);if(n.body!==void 0){if(n.formEncType===`text/plain`){if(!Hn(i))return r();let e=typeof n.body==`string`?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((e,[t,n])=>`${e}${t}=${n}
10
10
  `,``):String(n.body);return{path:t,submission:{formMethod:i,formAction:a,formEncType:n.formEncType,formData:void 0,json:void 0,text:e}}}else if(n.formEncType===`application/json`){if(!Hn(i))return r();try{let e=typeof n.body==`string`?JSON.parse(n.body):n.body;return{path:t,submission:{formMethod:i,formAction:a,formEncType:n.formEncType,formData:void 0,json:e,text:void 0}}}catch{return r()}}}me(typeof FormData==`function`,`FormData is not available in this environment`);let o,s;if(n.formData)o=bn(n.formData),s=n.formData;else if(n.body instanceof FormData)o=bn(n.body),s=n.body;else if(n.body instanceof URLSearchParams)o=n.body,s=xn(o);else if(n.body==null)o=new URLSearchParams,s=new FormData;else try{o=new URLSearchParams(n.body),s=xn(o)}catch{return r()}let c={formMethod:i,formAction:a,formEncType:n&&n.formEncType||`application/x-www-form-urlencoded`,formData:s,json:void 0,text:void 0};if(Hn(c.formMethod))return{path:t,submission:c};let l=ye(t);return e&&l.search&&Un(l.search)&&o.append(`index`,``),l.search=`?${o}`,{path:ve(l),submission:c}}function Wt(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b){let x=y?In(y[1])?y[1].error:y[1].data:void 0,S=i.createURL(a.location),C=i.createURL(c),w;if(u&&a.errors){let e=Object.keys(a.errors)[0];w=o.findIndex(t=>t.route.id===e)}else if(y&&In(y[1])){let e=y[0];w=o.findIndex(t=>t.route.id===e)-1}let T=y?y[1].statusCode:void 0,E=T&&T>=400,D={currentUrl:S,currentParams:a.matches[0]?.params||{},nextUrl:C,nextParams:o[0].params,...s,actionResult:x,actionStatus:T},O=mt(o),k=o.map((i,o)=>{let{route:s}=i,f=null;if(w!=null&&o>w)f=!1;else if(s.lazy)f=!0;else if(!Gt(s))f=!1;else if(u){let{shouldLoad:e}=Kt(s,a.loaderData,a.errors);f=e}else qt(a.loaderData,a.matches[o],i)&&(f=!0);if(f!==null)return ln(n,r,e,c,O,i,l,t,f);let p=!1;typeof b==`boolean`?p=b:E?p=!1:d||S.pathname+S.search===C.pathname+C.search?p=!0:S.search===C.search?Jt(a.matches[o],i)&&(p=!0):p=!0;let m={...D,defaultShouldRevalidate:p};return ln(n,r,e,c,O,i,l,t,Yt(i,m),m,b)}),A=[];return m.forEach((e,s)=>{if(u||!o.some(t=>t.route.id===e.routeId)||p.has(s))return;let c=a.fetchers.get(s),m=c&&c.state!==`idle`&&c.data===void 0,y=je(g,e.path,_);if(!y){if(v&&m)return;A.push({key:s,routeId:e.routeId,path:e.path,matches:null,match:null,request:null,controller:null});return}if(h.has(s))return;let x=Wn(y,e.path),S=new AbortController,C=vn(i,e.path,S.signal),w=null;if(f.has(s))f.delete(s),w=un(n,r,C,e.path,y,x,l,t);else if(m)d&&(w=un(n,r,C,e.path,y,x,l,t));else{let i;i=typeof b==`boolean`?b:E?!1:d;let a={...D,defaultShouldRevalidate:i};Yt(x,a)&&(w=un(n,r,C,e.path,y,x,l,t,a))}w&&A.push({key:s,routeId:e.routeId,path:e.path,matches:w,match:x,request:C,controller:S})}),{dsMatches:k,revalidatingFetchers:A}}function Gt(e){return e.loader!=null||e.middleware!=null&&e.middleware.length>0}function Kt(e,t,n){if(e.lazy)return{shouldLoad:!0,renderFallback:!0};if(!Gt(e))return{shouldLoad:!1,renderFallback:!1};let r=t!=null&&e.id in t,i=n!=null&&n[e.id]!==void 0;if(!r&&i)return{shouldLoad:!1,renderFallback:!1};if(typeof e.loader==`function`&&e.loader.hydrate===!0)return{shouldLoad:!0,renderFallback:!r};let a=!r&&!i;return{shouldLoad:a,renderFallback:a}}function qt(e,t,n){let r=!t||n.route.id!==t.route.id,i=!e.hasOwnProperty(n.route.id);return r||i}function Jt(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith(`*`)&&e.params[`*`]!==t.params[`*`]}function Yt(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n==`boolean`)return n}return t.defaultShouldRevalidate}function Xt(e,t,n,r,i,a){let o;if(e){let t=r[e];me(t,`No route found to patch children into: routeId = ${e}`),t.children||=[],o=t.children}else o=n;let s=[],c=[];if(t.forEach(e=>{let t=o.find(t=>Zt(e,t));t?c.push({existingRoute:t,newRoute:e}):s.push(e)}),s.length>0){let t=ke(s,i,[e||`_`,`patch`,String(o?.length||`0`)],r);o.push(...t)}if(a&&c.length>0)for(let e=0;e<c.length;e++){let{existingRoute:t,newRoute:n}=c[e],r=t,[a]=ke([n],i,[],{},!0);Object.assign(r,{element:a.element?a.element:r.element,errorElement:a.errorElement?a.errorElement:r.errorElement,hydrateFallbackElement:a.hydrateFallbackElement?a.hydrateFallbackElement:r.hydrateFallbackElement})}}function Zt(e,t){return`id`in e&&`id`in t&&e.id===t.id?!0:e.index===t.index&&e.path===t.path&&e.caseSensitive===t.caseSensitive?(!e.children||e.children.length===0)&&(!t.children||t.children.length===0)?!0:e.children?.every((e,n)=>t.children?.some(t=>Zt(e,t)))??!1:!1}var Qt=new WeakMap,$t=({key:e,route:t,manifest:n,mapRouteProperties:r})=>{let i=n[t.id];if(me(i,`No route found in manifest`),!i.lazy||typeof i.lazy!=`object`)return;let a=i.lazy[e];if(!a)return;let o=Qt.get(i);o||(o={},Qt.set(i,o));let s=o[e];if(s)return s;let c=(async()=>{let t=Te(e),n=i[e]!==void 0&&e!==`hasErrorBoundary`;if(t)W(!t,`Route property `+e+` is not a supported lazy route property. This property will be ignored.`),o[e]=Promise.resolve();else if(n)W(!1,`Route "${i.id}" has a static property "${e}" defined. The lazy property will be ignored.`);else{let t=await a();t!=null&&(Object.assign(i,{[e]:t}),Object.assign(i,r(i)))}typeof i.lazy==`object`&&(i.lazy[e]=void 0,Object.values(i.lazy).every(e=>e===void 0)&&(i.lazy=void 0))})();return o[e]=c,c},en=new WeakMap;function tn(e,t,n,r,i){let a=n[e.id];if(me(a,`No route found in manifest`),!e.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof e.lazy==`function`){let t=en.get(a);if(t)return{lazyRoutePromise:t,lazyHandlerPromise:t};let n=(async()=>{me(typeof e.lazy==`function`,`No lazy route function found`);let t=await e.lazy(),n={};for(let e in t){let r=t[e];if(r===void 0)continue;let i=De(e),o=a[e]!==void 0&&e!==`hasErrorBoundary`;i?W(!i,`Route property `+e+` is not a supported property to be returned from a lazy route function. This property will be ignored.`):o?W(!o,`Route "${a.id}" has a static property "${e}" defined but its lazy function is also returning a value for this property. The lazy route property "${e}" will be ignored.`):n[e]=r}Object.assign(a,n),Object.assign(a,{...r(a),lazy:void 0})})();return en.set(a,n),n.catch(()=>{}),{lazyRoutePromise:n,lazyHandlerPromise:n}}let o=Object.keys(e.lazy),s=[],c;for(let a of o){if(i&&i.includes(a))continue;let o=$t({key:a,route:e,manifest:n,mapRouteProperties:r});o&&(s.push(o),a===t&&(c=o))}let l=s.length>0?Promise.all(s).then(()=>{}):void 0;return l?.catch(()=>{}),c?.catch(()=>{}),{lazyRoutePromise:l,lazyHandlerPromise:c}}async function nn(e){let t=e.matches.filter(e=>e.shouldLoad),n={};return(await Promise.all(t.map(e=>e.resolve()))).forEach((e,r)=>{n[t[r].route.id]=e}),n}async function rn(e){return e.matches.some(e=>e.route.middleware)?an(e,()=>nn(e)):nn(e)}function an(e,t){return on(e,t,e=>{if(Vn(e))throw e;return e},Nn,n);function n(t,n,r){if(r)return Promise.resolve(Object.assign(r.value,{[n]:{type:`error`,result:t}}));{let{matches:r}=e,i=En(r,r[Math.min(Math.max(r.findIndex(e=>e.route.id===n),0),Math.max(r.findIndex(e=>e.shouldCallHandler()),0))].route.id).route.id;return Promise.resolve({[i]:{type:`error`,result:t}})}}}async function on(e,t,n,r,i){let{matches:a,...o}=e;return await sn(o,a.flatMap(e=>e.route.middleware?e.route.middleware.map(t=>[e.route.id,t]):[]),t,n,r,i)}async function sn(e,t,n,r,i,a,o=0){let{request:s}=e;if(s.signal.aborted)throw s.signal.reason??Error(`Request aborted: ${s.method} ${s.url}`);let c=t[o];if(!c)return await n();let[l,u]=c,d,f=async()=>{if(d)throw Error("You may only call `next()` once per middleware");try{return d={value:await sn(e,t,n,r,i,a,o+1)},d.value}catch(e){return d={value:await a(e,l,d)},d.value}};try{let t=await u(e,f),n=t==null?void 0:r(t);return i(n)?n:d?n??d.value:(d={value:await f()},d.value)}catch(e){return await a(e,l,d)}}function cn(e,t,n,r,i){let a=$t({key:`middleware`,route:r.route,manifest:t,mapRouteProperties:e}),o=tn(r.route,Hn(n.method)?`action`:`loader`,t,e,i);return{middleware:a,route:o.lazyRoutePromise,handler:o.lazyHandlerPromise}}function ln(e,t,n,r,i,a,o,s,c,l=null,u){let d=!1,f=cn(e,t,n,a,o);return{...a,_lazyPromises:f,shouldLoad:c,shouldRevalidateArgs:l,shouldCallHandler(e){return d=!0,l?typeof u==`boolean`?Yt(a,{...l,defaultShouldRevalidate:u}):typeof e==`boolean`?Yt(a,{...l,defaultShouldRevalidate:e}):Yt(a,l):c},resolve(e){let{lazy:t,loader:o,middleware:l}=a.route,u=d||c||e&&!Hn(n.method)&&(t||o),p=l&&l.length>0&&!o&&!t;return u&&(Hn(n.method)||!p)?fn({request:n,path:r,unstable_pattern:i,match:a,lazyHandlerPromise:f?.handler,lazyRoutePromise:f?.route,handlerOverride:e,scopedContext:s}):Promise.resolve({type:`data`,result:void 0})}}}function un(e,t,n,r,i,a,o,s,c=null){return i.map(l=>l.route.id===a.route.id?ln(e,t,n,r,mt(i),l,o,s,!0,c):{...l,shouldLoad:!1,shouldRevalidateArgs:c,shouldCallHandler:()=>!1,_lazyPromises:cn(e,t,n,l,o),resolve:()=>Promise.resolve({type:`data`,result:void 0})})}async function dn(e,t,n,r,i,a,o){r.some(e=>e._lazyPromises?.middleware)&&await Promise.all(r.map(e=>e._lazyPromises?.middleware));let s={request:t,unstable_url:yn(t,n),unstable_pattern:mt(r),params:r[0].params,context:a,matches:r},c=o?()=>{throw Error("You cannot call `runClientMiddleware()` from a static handler `dataStrategy`. Middleware is run outside of `dataStrategy` during SSR in order to bubble up the Response. You can enable middleware via the `respond` API in `query`/`queryRoute`")}:e=>{let t=s;return an(t,()=>e({...t,fetcherKey:i,runClientMiddleware:()=>{throw Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))},l=await e({...s,fetcherKey:i,runClientMiddleware:c});try{await Promise.all(r.flatMap(e=>[e._lazyPromises?.handler,e._lazyPromises?.route]))}catch{}return l}async function fn({request:e,path:t,unstable_pattern:n,match:r,lazyHandlerPromise:i,lazyRoutePromise:a,handlerOverride:o,scopedContext:s}){let c,l,u=Hn(e.method),d=u?`action`:`loader`,f=i=>{let a,c=new Promise((e,t)=>a=t);l=()=>a(),e.signal.addEventListener(`abort`,l);let u=a=>typeof i==`function`?i({request:e,unstable_url:yn(e,t),unstable_pattern:n,params:r.params,context:s},...a===void 0?[]:[a]):Promise.reject(Error(`You cannot call the handler for a route which defines a boolean "${d}" [routeId: ${r.route.id}]`)),f=(async()=>{try{return{type:`data`,result:await(o?o(e=>u(e)):u())}}catch(e){return{type:`error`,result:e}}})();return Promise.race([f,c])};try{let t=u?r.route.action:r.route.loader;if(i||a)if(t){let e,[n]=await Promise.all([f(t).catch(t=>{e=t}),i,a]);if(e!==void 0)throw e;c=n}else{await i;let t=u?r.route.action:r.route.loader;if(t)[c]=await Promise.all([f(t),a]);else if(d===`action`){let t=new URL(e.url),n=t.pathname+t.search;throw On(405,{method:e.method,pathname:n,routeId:r.route.id})}else return{type:`data`,result:void 0}}else if(t)c=await f(t);else{let t=new URL(e.url);throw On(404,{pathname:t.pathname+t.search})}}catch(e){return{type:`error`,result:e}}finally{l&&e.signal.removeEventListener(`abort`,l)}return c}async function pn(e){let t=e.headers.get(`Content-Type`);return t&&/\bapplication\/json\b/.test(t)?e.body==null?null:e.json():e.text()}async function mn(e){let{result:t,type:n}=e;if(zn(t)){let e;try{e=await pn(t)}catch(e){return{type:`error`,error:e}}return n===`error`?{type:`error`,error:new ft(t.status,t.statusText,e),statusCode:t.status,headers:t.headers}:{type:`data`,data:e,statusCode:t.status,headers:t.headers}}return n===`error`?Rn(t)?t.data instanceof Error?{type:`error`,error:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`error`,error:Mn(t),statusCode:pt(t)?t.status:void 0,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`error`,error:t,statusCode:pt(t)?t.status:void 0}:Rn(t)?{type:`data`,data:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`data`,data:t}}function hn(e,t,n,r,i){let a=e.headers.get(`Location`);if(me(a,`Redirects returned/thrown from loaders/actions must have a Location header`),!$e(a)){let o=r.slice(0,r.findIndex(e=>e.route.id===n)+1);a=Ht(new URL(t.url),o,i,a),e.headers.set(`Location`,a)}return e}var gn=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function _n(e,t,n,r){if($e(e)){let r=e,i=r.startsWith(`//`)?new URL(t.protocol+r):new URL(r);if(gn.includes(i.protocol))throw Error(`Invalid redirect location`);let a=Xe(i.pathname,n)!=null;if(i.origin===t.origin&&a)return ot(i.pathname)+i.search+i.hash}try{let t=r.createURL(e);if(gn.includes(t.protocol))throw Error(`Invalid redirect location`)}catch{}return e}function vn(e,t,n,r){let i=e.createURL(An(t)).toString(),a={signal:n};if(r&&Hn(r.formMethod)){let{formMethod:e,formEncType:t}=r;a.method=e.toUpperCase(),t===`application/json`?(a.headers=new Headers({"Content-Type":t}),a.body=JSON.stringify(r.json)):t===`text/plain`?a.body=r.text:t===`application/x-www-form-urlencoded`&&r.formData?a.body=bn(r.formData):a.body=r.formData}return new Request(i,a)}function yn(e,t){let n=new URL(e.url),r=typeof t==`string`?ye(t):t;if(n.pathname=r.pathname||`/`,r.search){let e=new URLSearchParams(r.search),t=e.getAll(`index`);e.delete(`index`);for(let n of t.filter(Boolean))e.append(`index`,n);n.search=e.size?`?${e.toString()}`:``}else n.search=``;return n.hash=r.hash||``,n}function bn(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r==`string`?r:r.name);return t}function xn(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function Sn(e,t,n,r=!1,i=!1){let a={},o=null,s,c=!1,l={},u=n&&In(n[1])?n[1].error:void 0;return e.forEach(n=>{if(!(n.route.id in t))return;let d=n.route.id,f=t[d];if(me(!Ln(f),`Cannot handle redirect results in processLoaderData`),In(f)){let t=f.error;if(u!==void 0&&(t=u,u=void 0),o||={},i)o[d]=t;else{let n=En(e,d);o[n.route.id]??(o[n.route.id]=t)}r||(a[d]=zt),c||(c=!0,s=pt(f.error)?f.error.status:500),f.headers&&(l[d]=f.headers)}else a[d]=f.data,f.statusCode&&f.statusCode!==200&&!c&&(s=f.statusCode),f.headers&&(l[d]=f.headers)}),u!==void 0&&n&&(o={[n[0]]:u},n[2]&&(a[n[2]]=void 0)),{loaderData:a,errors:o,statusCode:s||200,loaderHeaders:l}}function Cn(e,t,n,r,i,a){let{loaderData:o,errors:s}=Sn(t,n,r);return i.filter(e=>!e.matches||e.matches.some(e=>e.shouldLoad)).forEach(t=>{let{key:n,match:r,controller:i}=t;if(i&&i.signal.aborted)return;let o=a[n];if(me(o,`Did not find corresponding fetcher result`),In(o)){let t=En(e.matches,r?.route.id);s&&s[t.route.id]||(s={...s,[t.route.id]:o.error}),e.fetchers.delete(n)}else if(Ln(o))me(!1,`Unhandled fetcher revalidation redirect`);else{let t=Xn(o.data);e.fetchers.set(n,t)}}),{loaderData:o,errors:s}}function wn(e,t,n,r){let i=Object.entries(t).filter(([,e])=>e!==zt).reduce((e,[t,n])=>(e[t]=n,e),{});for(let a of n){let n=a.route.id;if(!t.hasOwnProperty(n)&&e.hasOwnProperty(n)&&a.route.loader&&(i[n]=e[n]),r&&r.hasOwnProperty(n))break}return i}function Tn(e){return e?In(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function En(e,t){return(t?e.slice(0,e.findIndex(e=>e.route.id===t)+1):[...e]).reverse().find(e=>e.route.hasErrorBoundary===!0)||e[0]}function Dn(e){let t=e.length===1?e[0]:e.find(e=>e.index||!e.path||e.path===`/`)||{id:`__shim-error-route__`};return{matches:[{params:{},pathname:``,pathnameBase:``,route:t}],route:t}}function On(e,{pathname:t,routeId:n,method:r,type:i,message:a}={}){let o=`Unknown Server Error`,s=`Unknown @remix-run/router error`;return e===400?(o=`Bad Request`,r&&t&&n?s=`You made a ${r} request to "${t}" but did not provide a \`loader\` for route "${n}", so there is no way to handle the request.`:i===`invalid-body`&&(s=`Unable to encode submission body`)):e===403?(o=`Forbidden`,s=`Route "${n}" does not match URL "${t}"`):e===404?(o=`Not Found`,s=`No route matches URL "${t}"`):e===405&&(o=`Method Not Allowed`,r&&t&&n?s=`You made a ${r.toUpperCase()} request to "${t}" but did not provide an \`action\` for route "${n}", so there is no way to handle the request.`:r&&(s=`Invalid request method "${r.toUpperCase()}"`)),new ft(e||500,o,Error(s),!0)}function kn(e){let t=Object.entries(e);for(let e=t.length-1;e>=0;e--){let[n,r]=t[e];if(Ln(r))return{key:n,result:r}}}function An(e){return ve({...typeof e==`string`?ye(e):e,hash:``})}function jn(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===``?t.hash!==``:e.hash===t.hash?!0:t.hash!==``}function Mn(e){return new ft(e.init?.status??500,e.init?.statusText??`Internal Server Error`,e.data)}function Nn(e){return typeof e==`object`&&!!e&&Object.entries(e).every(([e,t])=>typeof e==`string`&&Pn(t))}function Pn(e){return typeof e==`object`&&!!e&&`type`in e&&`result`in e&&(e.type===`data`||e.type===`error`)}function Fn(e){return zn(e.result)&&Mt.has(e.result.status)}function In(e){return e.type===`error`}function Ln(e){return(e&&e.type)===`redirect`}function Rn(e){return typeof e==`object`&&!!e&&`type`in e&&`data`in e&&`init`in e&&e.type===`DataWithResponseInit`}function zn(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function Bn(e){return Mt.has(e)}function Vn(e){return zn(e)&&Bn(e.status)&&e.headers.has(`Location`)}function eee(e){return jt.has(e.toUpperCase())}function Hn(e){return kt.has(e.toUpperCase())}function Un(e){return new URLSearchParams(e).getAll(`index`).some(e=>e===``)}function Wn(e,t){let n=typeof t==`string`?ye(t).search:t.search;if(e[e.length-1].route.index&&Un(n||``))return e[e.length-1];let r=rt(e);return r[r.length-1]}function Gn(e){let{formMethod:t,formAction:n,formEncType:r,text:i,formData:a,json:o}=e;if(!(!t||!n||!r)){if(i!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:i};if(a!=null)return{formMethod:t,formAction:n,formEncType:r,formData:a,json:void 0,text:void 0};if(o!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:o,text:void 0}}}function Kn(e,t){return t?{state:`loading`,location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:`loading`,location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function qn(e,t){return{state:`submitting`,location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function Jn(e,t){return e?{state:`loading`,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:`loading`,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function Yn(e,t){return{state:`submitting`,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function Xn(e){return{state:`idle`,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function Zn(e,t){try{let n=e.sessionStorage.getItem(Rt);if(n){let e=JSON.parse(n);for(let[n,r]of Object.entries(e||{}))r&&Array.isArray(r)&&t.set(n,new Set(r||[]))}}catch{}}function Qn(e,t){if(t.size>0){let n={};for(let[e,r]of t)n[e]=[...r];try{e.sessionStorage.setItem(Rt,JSON.stringify(n))}catch(e){W(!1,`Failed to save applied view transitions in sessionStorage (${e}).`)}}}function $n(){let e,t,n=new Promise((r,i)=>{e=async e=>{r(e);try{await n}catch{}},t=async e=>{i(e);try{await n}catch{}}});return{promise:n,resolve:e,reject:t}}var er=C.createContext(null);er.displayName=`DataRouter`;var tr=C.createContext(null);tr.displayName=`DataRouterState`;var nr=C.createContext(!1);function rr(){return C.useContext(nr)}var ir=C.createContext({isTransitioning:!1});ir.displayName=`ViewTransition`;var ar=C.createContext(new Map);ar.displayName=`Fetchers`;var or=C.createContext(null);or.displayName=`Await`;var sr=C.createContext(null);sr.displayName=`Navigation`;var cr=C.createContext(null);cr.displayName=`Location`;var lr=C.createContext({outlet:null,matches:[],isDataRoute:!1});lr.displayName=`Route`;var ur=C.createContext(null);ur.displayName=`RouteError`;var dr=`REACT_ROUTER_ERROR`,fr=`REDIRECT`,pr=`ROUTE_ERROR_RESPONSE`;function mr(e){if(e.startsWith(`${dr}:${fr}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function hr(e){if(e.startsWith(`${dr}:${pr}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new ft(t.status,t.statusText,t.data)}catch{}}function gr(e,{relative:t}={}){me(_r(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=C.useContext(sr),{hash:i,pathname:a,search:o}=Er(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:st([n,a])),r.createHref({pathname:s,search:o,hash:i})}function _r(){return C.useContext(cr)!=null}function vr(){return me(_r(),`useLocation() may be used only in the context of a <Router> component.`),C.useContext(cr).location}var yr=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function br(e){C.useContext(sr).static||C.useLayoutEffect(e)}function xr(){let{isDataRoute:e}=C.useContext(lr);return e?Wr():Sr()}function Sr(){me(_r(),`useNavigate() may be used only in the context of a <Router> component.`);let e=C.useContext(er),{basename:t,navigator:n}=C.useContext(sr),{matches:r}=C.useContext(lr),{pathname:i}=vr(),a=JSON.stringify(it(r)),o=C.useRef(!1);return br(()=>{o.current=!0}),C.useCallback((r,s={})=>{if(W(o.current,yr),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=at(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:st([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}var Cr=C.createContext(null);function wr(e){let t=C.useContext(lr).outlet;return C.useMemo(()=>t&&C.createElement(Cr.Provider,{value:e},t),[t,e])}function Tr(){let{matches:e}=C.useContext(lr),t=e[e.length-1];return t?t.params:{}}function Er(e,{relative:t}={}){let{matches:n}=C.useContext(lr),{pathname:r}=vr(),i=JSON.stringify(it(n));return C.useMemo(()=>at(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Dr(e,t,n){me(_r(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=C.useContext(sr),{matches:i}=C.useContext(lr),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;Kr(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
11
11
 
12
- Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=vr(),d;if(t){let e=typeof t==`string`?ye(t):t;me(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=je(e,{pathname:p});W(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),W(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let h=Pr(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:st([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:st([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?C.createElement(cr.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,unstable_mask:void 0,...d},navigationType:`POP`}},h):h}function Or(){let e=Ur(),t=pt(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=C.createElement(C.Fragment,null,C.createElement(`p`,null,`💿 Hey developer 👋`),C.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,C.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,C.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),C.createElement(C.Fragment,null,C.createElement(`h2`,null,`Unexpected Application Error!`),C.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?C.createElement(`pre`,{style:i},n):null,o)}var kr=C.createElement(Or,null),Ar=class extends C.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=hr(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:C.createElement(lr.Provider,{value:this.props.routeContext},C.createElement(ur.Provider,{value:e,children:this.props.component}));return this.context?C.createElement(Mr,{error:e},t):t}};Ar.contextType=nr;var jr=new WeakMap;function Mr({children:e,error:t}){let{basename:n}=C.useContext(sr);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=mr(t.digest);if(e){let r=jr.get(t);if(r)throw r;let i=gt(e.location,n);if(ht&&!jr.get(t))if(i.isExternal||e.reloadDocument)window.location.href=i.absoluteURL||i.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw jr.set(t,n),n}return C.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${i.absoluteURL||i.to}`})}}return e}function Nr({routeContext:e,match:t,children:n}){let r=C.useContext(er);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),C.createElement(lr.Provider,{value:e},n)}function Pr(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);me(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},unstable_pattern:mt(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||kr,o&&(s<0&&c===0?(Kr(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?C.createElement(n.route.Component,null):n.route.element?n.route.element:e,C.createElement(Nr,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?C.createElement(Ar,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function Fr(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Ir(e){let t=C.useContext(er);return me(t,Fr(e)),t}function Lr(e){let t=C.useContext(tr);return me(t,Fr(e)),t}function Rr(e){let t=C.useContext(lr);return me(t,Fr(e)),t}function zr(e){let t=Rr(e),n=t.matches[t.matches.length-1];return me(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Br(){return zr(`useRouteId`)}function Vr(){return Lr(`useNavigation`).navigation}function Hr(){let{matches:e,loaderData:t}=Lr(`useMatches`);return C.useMemo(()=>e.map(e=>Ne(e,t)),[e,t])}function Ur(){let e=C.useContext(ur),t=Lr(`useRouteError`),n=zr(`useRouteError`);return e===void 0?t.errors?.[n]:e}function Wr(){let{router:e}=Ir(`useNavigate`),t=zr(`useNavigate`),n=C.useRef(!1);return br(()=>{n.current=!0}),C.useCallback(async(r,i={})=>{W(n.current,yr),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var Gr={};function Kr(e,t,n){!t&&!Gr[e]&&(Gr[e]=!0,W(!1,n))}var qr={};function Jr(e,t){!e&&!qr[t]&&(qr[t]=!0,console.warn(t))}var Yr=C.useOptimistic,Xr=()=>void 0;function Zr(e){return Yr?Yr(e):[e,Xr]}function Qr(e){let t={hasErrorBoundary:e.hasErrorBoundary||e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&(e.element&&W(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(t,{element:C.createElement(e.Component),Component:void 0})),e.HydrateFallback&&(e.hydrateFallbackElement&&W(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(t,{hydrateFallbackElement:C.createElement(e.HydrateFallback),HydrateFallback:void 0})),e.ErrorBoundary&&(e.errorElement&&W(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(t,{errorElement:C.createElement(e.ErrorBoundary),ErrorBoundary:void 0})),t}var $r=[`HydrateFallback`,`hydrateFallbackElement`],tee=class{constructor(){this.status=`pending`,this.promise=new Promise((e,t)=>{this.resolve=t=>{this.status===`pending`&&(this.status=`resolved`,e(t))},this.reject=e=>{this.status===`pending`&&(this.status=`rejected`,t(e))}})}};function ei({router:e,flushSync:t,onError:n,unstable_useTransitions:r}){r=rr()||r;let[i,a]=C.useState(e.state),[o,s]=Zr(i),[c,l]=C.useState(),[u,d]=C.useState({isTransitioning:!1}),[f,p]=C.useState(),[m,h]=C.useState(),[g,_]=C.useState(),v=C.useRef(new Map),y=C.useCallback((i,{deletedFetchers:o,newErrors:c,flushSync:u,viewTransitionOpts:g})=>{c&&n&&Object.values(c).forEach(e=>n(e,{location:i.location,params:i.matches[0]?.params??{},unstable_pattern:mt(i.matches)})),i.fetchers.forEach((e,t)=>{e.data!==void 0&&v.current.set(t,e.data)}),o.forEach(e=>v.current.delete(e)),Jr(u===!1||t!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let y=e.window!=null&&e.window.document!=null&&typeof e.window.document.startViewTransition==`function`;if(Jr(g==null||y,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!g||!y){t&&u?t(()=>a(i)):r===!1?a(i):C.startTransition(()=>{r===!0&&s(e=>ti(e,i)),a(i)});return}if(t&&u){t(()=>{m&&(f?.resolve(),m.skipTransition()),d({isTransitioning:!0,flushSync:!0,currentLocation:g.currentLocation,nextLocation:g.nextLocation})});let n=e.window.document.startViewTransition(()=>{t(()=>a(i))});n.finished.finally(()=>{t(()=>{p(void 0),h(void 0),l(void 0),d({isTransitioning:!1})})}),t(()=>h(n));return}m?(f?.resolve(),m.skipTransition(),_({state:i,currentLocation:g.currentLocation,nextLocation:g.nextLocation})):(l(i),d({isTransitioning:!0,flushSync:!1,currentLocation:g.currentLocation,nextLocation:g.nextLocation}))},[e.window,t,m,f,r,s,n]);C.useLayoutEffect(()=>e.subscribe(y),[e,y]);let b=o.initialized;C.useLayoutEffect(()=>{!b&&e.state.initialized&&y(e.state,{deletedFetchers:[],flushSync:!1,newErrors:null})},[b,y,e.state]),C.useEffect(()=>{u.isTransitioning&&!u.flushSync&&p(new tee)},[u]),C.useEffect(()=>{if(f&&c&&e.window){let t=c,n=f.promise,i=e.window.document.startViewTransition(async()=>{r===!1?a(t):C.startTransition(()=>{r===!0&&s(e=>ti(e,t)),a(t)}),await n});i.finished.finally(()=>{p(void 0),h(void 0),l(void 0),d({isTransitioning:!1})}),h(i)}},[c,f,e.window,r,s]),C.useEffect(()=>{f&&c&&o.location.key===c.location.key&&f.resolve()},[f,m,o.location,c]),C.useEffect(()=>{!u.isTransitioning&&g&&(l(g.state),d({isTransitioning:!0,flushSync:!1,currentLocation:g.currentLocation,nextLocation:g.nextLocation}),_(void 0))},[u.isTransitioning,g]);let x=C.useMemo(()=>({createHref:e.createHref,encodeLocation:e.encodeLocation,go:t=>e.navigate(t),push:(t,n,r)=>e.navigate(t,{state:n,preventScrollReset:r?.preventScrollReset}),replace:(t,n,r)=>e.navigate(t,{replace:!0,state:n,preventScrollReset:r?.preventScrollReset})}),[e]),S=e.basename||`/`,w=C.useMemo(()=>({router:e,navigator:x,static:!1,basename:S,onError:n}),[e,x,S,n]);return C.createElement(C.Fragment,null,C.createElement(er.Provider,{value:w},C.createElement(tr.Provider,{value:o},C.createElement(ar.Provider,{value:v.current},C.createElement(ir.Provider,{value:u},C.createElement(ai,{basename:S,location:o.location,navigationType:o.historyAction,navigator:x,unstable_useTransitions:r},C.createElement(ni,{routes:e.routes,future:e.future,state:o,isStatic:!1,onError:n})))))),null)}function ti(e,t){return{...e,navigation:t.navigation.state===`idle`?e.navigation:t.navigation,revalidation:t.revalidation===`idle`?e.revalidation:t.revalidation,actionData:t.navigation.state===`submitting`?e.actionData:t.actionData,fetchers:t.fetchers}}var ni=C.memo(ri);function ri({routes:e,future:t,state:n,isStatic:r,onError:i}){return Dr(e,void 0,{state:n,isStatic:r,onError:i,future:t})}function ii(e){return wr(e.context)}function ai({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,unstable_useTransitions:o}){me(!_r(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=C.useMemo(()=>({basename:s,navigator:i,static:a,unstable_useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=ye(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,unstable_mask:m}=n,h=C.useMemo(()=>{let e=Xe(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,unstable_mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return W(h!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),h==null?null:C.createElement(sr.Provider,{value:c},C.createElement(cr.Provider,{children:t,value:h}))}C.Component;var oi=`get`,si=`application/x-www-form-urlencoded`;function ci(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function li(e){return ci(e)&&e.tagName.toLowerCase()===`button`}function ui(e){return ci(e)&&e.tagName.toLowerCase()===`form`}function di(e){return ci(e)&&e.tagName.toLowerCase()===`input`}function fi(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function pi(e,t){return e.button===0&&(!t||t===`_self`)&&!fi(e)}function mi(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function hi(e,t){let n=mi(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var gi=null;function _i(){if(gi===null)try{new FormData(document.createElement(`form`),0),gi=!1}catch{gi=!0}return gi}var vi=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function yi(e){return e!=null&&!vi.has(e)?(W(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${si}"`),null):e}function bi(e,t){let n,r,i,a,o;if(ui(e)){let o=e.getAttribute(`action`);r=o?Xe(o,t):null,n=e.getAttribute(`method`)||oi,i=yi(e.getAttribute(`enctype`))||si,a=new FormData(e)}else if(li(e)||di(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?Xe(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||oi,i=yi(e.getAttribute(`formenctype`))||yi(o.getAttribute(`enctype`))||si,a=new FormData(o,e),!_i()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(ci(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=oi,r=null,i=si,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var xi={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},Si=/[&><\u2028\u2029]/g;function Ci(e){return e.replace(Si,e=>xi[e])}function wi(e,t){if(e===!1||e==null)throw Error(t)}function Ti(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&Xe(i.pathname,t)===`/`?i.pathname=`${ct(t)}/_root.${r}`:i.pathname=`${ct(i.pathname)}.${r}`,i}async function Ei(e,t){if(e.id in t)return t[e.id];try{let n=await ce(()=>import(e.module),[],import.meta.url);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Di(e){return e!=null&&typeof e.page==`string`}function Oi(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function ki(e,t,n){return Pi((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Ei(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Oi).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Ai(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function ji(e,t,{includeHydrateFallback:n}={}){return Mi(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function Mi(e){return[...new Set(e)]}function Ni(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Pi(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Di(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Ni(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Fi(){let e=C.useContext(er);return wi(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Ii(){let e=C.useContext(tr);return wi(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Li=C.createContext(void 0);Li.displayName=`FrameworkContext`;function Ri(){let e=C.useContext(Li);return wi(e,`You must render this element inside a <HydratedRouter> element`),e}function zi(e,t){let n=C.useContext(Li),[r,i]=C.useState(!1),[a,o]=C.useState(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=C.useRef(null);C.useEffect(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return f.current&&e.observe(f.current),()=>{e.disconnect()}}},[e]),C.useEffect(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let p=()=>{i(!0)},m=()=>{i(!1),o(!1)};return n?e===`intent`?[a,f,{onFocus:Bi(s,p),onBlur:Bi(c,m),onMouseEnter:Bi(l,p),onMouseLeave:Bi(u,m),onTouchStart:Bi(d,p)}]:[a,f,{}]:[!1,f,{}]}function Bi(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Vi({page:e,...t}){let n=rr(),{router:r}=Fi(),i=C.useMemo(()=>je(r.routes,e,r.basename),[r.routes,e,r.basename]);return i?n?C.createElement(Ui,{page:e,matches:i,...t}):C.createElement(Wi,{page:e,matches:i,...t}):null}function Hi(e){let{manifest:t,routeModules:n}=Ri(),[r,i]=C.useState([]);return C.useEffect(()=>{let r=!1;return ki(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Ui({page:e,matches:t,...n}){let r=vr(),{future:i}=Ri(),{basename:a}=Fi(),o=C.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Ti(e,a,i.unstable_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.unstable_trailingSlashAwareDataRequests,e,r,t]);return C.createElement(C.Fragment,null,o.map(e=>C.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function Wi({page:e,matches:t,...n}){let r=vr(),{future:i,manifest:a,routeModules:o}=Ri(),{basename:s}=Fi(),{loaderData:c,matches:l}=Ii(),u=C.useMemo(()=>Ai(e,t,l,a,r,`data`),[e,t,l,a,r]),d=C.useMemo(()=>Ai(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=C.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,l=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];!t||!t.hasLoader||(!u.some(t=>t.route.id===e.route.id)&&e.route.id in c&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?l=!0:n.add(e.route.id))}),n.size===0)return[];let d=Ti(e,s,i.unstable_trailingSlashAwareDataRequests,`data`);return l&&n.size>0&&d.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[d.pathname+d.search]},[s,i.unstable_trailingSlashAwareDataRequests,c,r,a,u,t,e,o]),p=C.useMemo(()=>ji(d,a),[d,a]),m=Hi(d);return C.createElement(C.Fragment,null,f.map(e=>C.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>C.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>C.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Gi(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}C.Component;var Ki=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Ki&&(window.__reactRouterVersion=`7.14.1`)}catch{}function qi(e,t){return Bt({basename:t?.basename,getContext:t?.getContext,future:t?.future,history:pe({window:t?.window}),hydrationData:t?.hydrationData||Ji(),routes:e,mapRouteProperties:Qr,hydrationRouteProperties:$r,dataStrategy:t?.dataStrategy,patchRoutesOnNavigation:t?.patchRoutesOnNavigation,window:t?.window,unstable_instrumentations:t?.unstable_instrumentations}).initialize()}function Ji(){let e=window?.__staticRouterHydrationData;return e&&e.errors&&(e={...e,errors:Yi(e.errors)}),e}function Yi(e){if(!e)return null;let t=Object.entries(e),n={};for(let[e,r]of t)if(r&&r.__type===`RouteErrorResponse`)n[e]=new ft(r.status,r.statusText,r.data,r.internal===!0);else if(r&&r.__type===`Error`){if(r.__subType){let t=window[r.__subType];if(typeof t==`function`)try{let i=new t(r.message);i.stack=``,n[e]=i}catch{}}if(n[e]==null){let t=Error(r.message);t.stack=``,n[e]=t}}else n[e]=r;return n}function Xi({basename:e,children:t,history:n,unstable_useTransitions:r}){let[i,a]=C.useState({action:n.action,location:n.location}),o=C.useCallback(e=>{r===!1?a(e):C.startTransition(()=>a(e))},[r]);return C.useLayoutEffect(()=>n.listen(o),[n,o]),C.createElement(ai,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,unstable_useTransitions:r})}Xi.displayName=`unstable_HistoryRouter`;var Zi=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Qi=C.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,unstable_mask:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},m){let{basename:h,navigator:g,unstable_useTransitions:_}=C.useContext(sr),v=typeof l==`string`&&Zi.test(l),y=gt(l,h);l=y.to;let b=gr(l,{relative:r}),x=vr(),S=null;if(o){let e=at(o,[],x.unstable_mask?x.unstable_mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:st([h,e.pathname])),S=g.createHref(e)}let[w,T,E]=zi(n,p),D=aa(l,{replace:a,unstable_mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,unstable_defaultShouldRevalidate:f,unstable_useTransitions:_});function O(t){e&&e(t),t.defaultPrevented||D(t)}let k=!(y.isExternal||i),A=C.createElement(`a`,{...p,...E,href:(k?S:void 0)||y.absoluteURL||b,onClick:k?O:e,ref:Gi(m,T),target:c,"data-discover":!v&&t===`render`?`true`:void 0});return w&&!v?C.createElement(C.Fragment,null,A,C.createElement(Vi,{page:b})):A});Qi.displayName=`Link`;var $i=C.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=Er(a,{relative:c.relative}),d=vr(),f=C.useContext(tr),{navigator:p,basename:m}=C.useContext(sr),h=f!=null&&ga(u)&&o===!0,g=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,_=d.pathname,v=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(_=_.toLowerCase(),v=v?v.toLowerCase():null,g=g.toLowerCase()),v&&m&&(v=Xe(v,m)||v);let y=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,b=_===g||!r&&_.startsWith(g)&&_.charAt(y)===`/`,x=v!=null&&(v===g||!r&&v.startsWith(g)&&v.charAt(g.length)===`/`),S={isActive:b,isPending:x,isTransitioning:h},w=b?e:void 0,T;T=typeof n==`function`?n(S):[n,b?`active`:null,x?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let E=typeof i==`function`?i(S):i;return C.createElement(Qi,{...c,"aria-current":w,className:T,ref:l,style:E,to:a,viewTransition:o},typeof s==`function`?s(S):s)});$i.displayName=`NavLink`;var ea=C.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=oi,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},m)=>{let{unstable_useTransitions:h}=C.useContext(sr),g=la(),_=ua(s,{relative:l}),v=o.toLowerCase()===`get`?`get`:`post`,y=typeof s==`string`&&Zi.test(s);return C.createElement(`form`,{ref:m,method:v,action:_,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,p=()=>g(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f});h&&n!==!1?C.startTransition(()=>p()):p()},...p,"data-discover":!y&&e===`render`?`true`:void 0})});ea.displayName=`Form`;function ta({getKey:e,storageKey:t,...n}){let r=C.useContext(Li),{basename:i}=C.useContext(sr),a=vr(),o=Hr();ma({getKey:e,storageKey:t});let s=C.useMemo(()=>{if(!r||!e)return null;let t=pa(a,o,i,e);return t===a.key?null:t},[]);if(!r||r.isSpaMode)return null;let c=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return C.createElement(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${c})(${Ci(JSON.stringify(t||da))}, ${Ci(JSON.stringify(s))})`}})}ta.displayName=`ScrollRestoration`;function na(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function ra(e){let t=C.useContext(er);return me(t,na(e)),t}function ia(e){let t=C.useContext(tr);return me(t,na(e)),t}function aa(e,{target:t,replace:n,unstable_mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,unstable_defaultShouldRevalidate:c,unstable_useTransitions:l}={}){let u=xr(),d=vr(),f=Er(e,{relative:o});return C.useCallback(p=>{if(pi(p,t)){p.preventDefault();let t=n===void 0?ve(d)===ve(f):n,m=()=>u(e,{replace:t,unstable_mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,unstable_defaultShouldRevalidate:c});l?C.startTransition(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}function oa(e){W(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=C.useRef(mi(e)),n=C.useRef(!1),r=vr(),i=C.useMemo(()=>hi(r.search,n.current?null:t.current),[r.search]),a=xr();return[i,C.useCallback((e,t)=>{let r=mi(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var sa=0,ca=()=>`__${String(++sa)}__`;function la(){let{router:e}=ra(`useSubmit`),{basename:t}=C.useContext(sr),n=Br(),r=e.fetch,i=e.navigate;return C.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=bi(e,t);a.navigate===!1?await r(a.fetcherKey||ca(),n,a.action||o,{unstable_defaultShouldRevalidate:a.unstable_defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync}):await i(a.action||o,{unstable_defaultShouldRevalidate:a.unstable_defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function ua(e,{relative:t}={}){let{basename:n}=C.useContext(sr),r=C.useContext(lr);me(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...Er(e||`.`,{relative:t})},o=vr();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:st([n,a.pathname])),ve(a)}var da=`react-router-scroll-positions`,fa={};function pa(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:Xe(e.pathname,n)||e.pathname},t)),i??=e.key,i}function ma({getKey:e,storageKey:t}={}){let{router:n}=ra(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:i}=ia(`useScrollRestoration`),{basename:a}=C.useContext(sr),o=vr(),s=Hr(),c=Vr();C.useEffect(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),ha(C.useCallback(()=>{if(c.state===`idle`){let t=pa(o,s,a,e);fa[t]=window.scrollY}try{sessionStorage.setItem(t||da,JSON.stringify(fa))}catch(e){W(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[c.state,e,a,o,s,t])),typeof document<`u`&&(C.useLayoutEffect(()=>{try{let e=sessionStorage.getItem(t||da);e&&(fa=JSON.parse(e))}catch{}},[t]),C.useLayoutEffect(()=>{let t=n?.enableScrollRestoration(fa,()=>window.scrollY,e?(t,n)=>pa(t,n,a,e):void 0);return()=>t&&t()},[n,a,e]),C.useLayoutEffect(()=>{if(r!==!1){if(typeof r==`number`){window.scrollTo(0,r);return}try{if(o.hash){let e=document.getElementById(decodeURIComponent(o.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{W(!1,`"${o.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}i!==!0&&window.scrollTo(0,0)}},[o,r,i]))}function ha(e,t){let{capture:n}=t||{};C.useEffect(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function ga(e,{relative:t}={}){let n=C.useContext(ir);me(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=ra(`useViewTransitionState`),i=Er(e,{relative:t});if(!n.isTransitioning)return!1;let a=Xe(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=Xe(n.nextLocation.pathname,r)||n.nextLocation.pathname;return qe(i.pathname,o)!=null||qe(i.pathname,a)!=null}var _a=u(_(),1);function va(e){return C.createElement(ei,{flushSync:_a.flushSync,...e})}var ya=e=>typeof e==`string`,ba=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},xa=e=>e==null?``:String(e),Sa=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},Ca=/###/g,wa=e=>e&&e.includes(`###`)?e.replace(Ca,`.`):e,Ta=e=>!e||ya(e),Ea=(e,t,n)=>{let r=ya(t)?t.split(`.`):t,i=0;for(;i<r.length-1;){if(Ta(e))return{};let t=wa(r[i]);!e[t]&&n&&(e[t]=new n),e=Object.prototype.hasOwnProperty.call(e,t)?e[t]:{},++i}return Ta(e)?{}:{obj:e,k:wa(r[i])}},Da=(e,t,n)=>{let{obj:r,k:i}=Ea(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=Ea(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=Ea(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},Oa=(e,t,n,r)=>{let{obj:i,k:a}=Ea(e,t,Object);i[a]=i[a]||[],i[a].push(n)},ka=(e,t)=>{let{obj:n,k:r}=Ea(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},Aa=(e,t,n)=>{let r=ka(e,n);return r===void 0?ka(t,n):r},ja=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(r in e?ya(e[r])||e[r]instanceof String||ya(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):ja(e[r],t[r],n):e[r]=t[r]);return e},Ma=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),Na={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`,"/":`&#x2F;`},Pa=e=>ya(e)?e.replace(/[&<>"'\/]/g,e=>Na[e]):e,Fa=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},Ia=[` `,`,`,`?`,`!`,`;`],La=new Fa(20),Ra=(e,t,n)=>{t||=``,n||=``;let r=Ia.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=La.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},za=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;e<r.length;){if(!i||typeof i!=`object`)return;let t,a=``;for(let o=e;o<r.length;++o)if(o!==e&&(a+=n),a+=r[o],t=i[a],t!==void 0){if([`string`,`number`,`boolean`].includes(typeof t)&&o<r.length-1)continue;e+=o-e+1;break}i=t}return i},Ba=e=>e?.replace(/_/g,`-`),Va={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},Ha=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||Va,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>ya(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),ya(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},Ua=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r<n;r++)e(...t)}),this.observers[`*`]&&Array.from(this.observers[`*`].entries()).forEach(([n,r])=>{for(let i=0;i<r;i++)n(e,...t)})}},Wa=class extends Ua{constructor(e,t={ns:[`translation`],defaultNS:`translation`}){super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.includes(e)||this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let i=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,a=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,o;e.includes(`.`)?o=e.split(`.`):(o=[e,t],n&&(Array.isArray(n)?o.push(...n):ya(n)&&i?o.push(...n.split(i)):o.push(n)));let s=ka(this.data,o);return!s&&!t&&!n&&e.includes(`.`)&&(e=o[0],t=o[1],n=o.slice(2).join(`.`)),s||!a||!ya(n)?s:za(this.data?.[e]?.[t],n,i)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),Da(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)(ya(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=ka(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?ja(s,n,i):s={...s,...n},Da(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},Ga={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},Ka=Symbol(`i18next/PATH_KEY`);function qa(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===Ka?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function Ja(e,t){let{[Ka]:n}=e(qa()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`;if(n.length>1&&i){let e=t?.ns,a=Array.isArray(e)?e:null;if(a&&a.length>1&&a.slice(1).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var Ya=e=>!ya(e)&&typeof e!=`boolean`&&typeof e!=`number`,Xa=class e extends Ua{constructor(e,t={}){super(),Sa([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=Ha.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=Ya(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,i=t.ns||this.options.defaultNS||[],a=n&&e.includes(n),o=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!Ra(e,n,r);if(a&&!o){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:ya(i)?[i]:i};let a=e.split(n);(n!==r||n===r&&this.options.ns.includes(a[0]))&&(i=a.shift()),e=a.join(r)}return{key:e,namespaces:ya(i)?[i]:i}}translate(t,n,r){let i=typeof n==`object`?{...n}:n;if(typeof i!=`object`&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i==`object`&&(i={...i}),i||={},t==null)return``;typeof t==`function`&&(t=Ja(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?Ja(e,{...this.options,...i}):String(e));let a=i.returnDetails===void 0?this.options.returnDetails:i.returnDetails,o=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,{key:s,namespaces:c}=this.extractFromKey(t[t.length-1],i),l=c[c.length-1],u=i.nsSeparator===void 0?this.options.nsSeparator:i.nsSeparator;u===void 0&&(u=`:`);let d=i.lng||this.language,f=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d?.toLowerCase()===`cimode`)return f?a?{res:`${l}${u}${s}`,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${s}`:a?{res:s,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:s;let p=this.resolve(t,i),m=p?.res,h=p?.usedKey||s,g=p?.exactUsedKey||s,_=[`[object Number]`,`[object Function]`,`[object RegExp]`],v=i.joinArrays===void 0?this.options.joinArrays:i.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=i.count!==void 0&&!ya(i.count),x=e.hasDefaultValue(i),S=b?this.pluralResolver.getSuffix(d,i.count,i):``,C=i.ordinal&&b?this.pluralResolver.getSuffix(d,i.count,{ordinal:!1}):``,w=b&&!i.ordinal&&i.count===0,T=w&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${S}`]||i[`defaultValue${C}`]||i.defaultValue,E=m;y&&!m&&x&&(E=T);let D=Ya(E),O=Object.prototype.toString.apply(E);if(y&&E&&D&&!_.includes(O)&&!(ya(v)&&Array.isArray(E))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,E,{...i,ns:c}):`key '${s} (${this.language})' returned an object instead of string.`;return a?(p.res=e,p.usedParams=this.getUsedParamsDetails(i),p):e}if(o){let e=Array.isArray(E),t=e?[]:{},n=e?g:h;for(let e in E)if(Object.prototype.hasOwnProperty.call(E,e)){let r=`${n}${o}${e}`;x&&!m?t[e]=this.translate(r,{...i,defaultValue:Ya(T)?T[e]:void 0,joinArrays:!1,ns:c}):t[e]=this.translate(r,{...i,joinArrays:!1,ns:c}),t[e]===r&&(t[e]=E[e])}m=t}}else if(y&&ya(v)&&Array.isArray(m))m=m.join(v),m&&=this.extendTranslation(m,t,i,r);else{let e=!1,n=!1;!this.isValidLookup(m)&&x&&(e=!0,m=T),this.isValidLookup(m)||(n=!0,m=s);let a=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:m,c=x&&T!==m&&this.options.updateMissing;if(n||e||c){if(this.logger.log(c?`updateKey`:`missingKey`,d,l,s,c?T:m),o){let e=this.resolve(s,{...i,keySeparator:!1});e&&e.res&&this.logger.warn(`Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.`)}let e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n<t.length;n++)e.push(t[n]);else this.options.saveMissingTo===`all`?e=this.languageUtils.toResolveHierarchy(i.lng||this.language):e.push(i.lng||this.language);let n=(e,t,n)=>{let r=x&&n!==m?n:a;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,r,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,r,c,i),this.emit(`missingKey`,e,l,t,m)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,i);w&&i[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],s+t,i[`defaultValue${t}`]||T)})}):n(e,s,T))}m=this.extendTranslation(m,t,i,p,r),n&&m===s&&this.options.appendNamespaceToMissingKey&&(m=`${l}${u}${s}`),(n||e)&&this.options.parseMissingKeyHandler&&(m=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${s}`:s,e?m:void 0,i))}return a?(p.res=m,p.usedParams=this.getUsedParamsDetails(i),p):m}extendTranslation(e,t,n,r,i){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let a=ya(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),o;if(a){let t=e.match(this.interpolator.nestingRegexp);o=t&&t.length}let s=n.replace&&!ya(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),e=this.interpolator.interpolate(e,s,n.lng||this.language||r.usedLng,n),a){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;o<r&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),n.nest!==!1&&(e=this.interpolator.nest(e,(...e)=>i?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let a=n.postProcess||this.options.postProcess,o=ya(a)?[a]:a;return e!=null&&o?.length&&n.applyPostProcessor!==!1&&(e=Ga.handle(o,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,i,a,o;return ya(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?Ja(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let s=this.extractFromKey(e,t),c=s.key;r=c;let l=s.namespaces;this.options.fallbackNS&&(l=l.concat(this.options.fallbackNS));let u=t.count!==void 0&&!ya(t.count),d=u&&!t.ordinal&&t.count===0,f=t.context!==void 0&&(ya(t.context)||typeof t.context==`number`)&&t.context!==``,p=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);l.forEach(e=>{this.isValidLookup(n)||(o=e,!this.checkedLoadedFor[`${p[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(this.checkedLoadedFor[`${p[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${p.join(`, `)}" won't get resolved as namespace "${o}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`)),p.forEach(r=>{if(this.isValidLookup(n))return;a=r;let o=[c];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(o,c,r,e,t);else{let e;u&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(u&&(t.ordinal&&e.startsWith(i)&&o.push(c+e.replace(i,this.options.pluralSeparator)),o.push(c+e),d&&o.push(c+n)),f){let r=`${c}${this.options.contextSeparator||`_`}${t.context}`;o.push(r),u&&(t.ordinal&&e.startsWith(i)&&o.push(r+e.replace(i,this.options.pluralSeparator)),o.push(r+e),d&&o.push(r+n))}}let s;for(;s=o.pop();)this.isValidLookup(n)||(i=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:i,usedLng:a,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!ya(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},Za=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Ha.create(`languageUtils`)}getScriptPartFromCode(e){if(e=Ba(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=Ba(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(ya(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),ya(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],i=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return ya(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&i(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&i(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&i(this.getLanguagePartFromCode(e))):ya(e)&&i(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||i(this.formatLanguageCode(e))}),r}},Qa={zero:0,one:1,two:2,few:3,many:4,other:5},$a={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},eo=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=Ha.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=Ba(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),$a;if(!e.match(/-|_/))return $a;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>Qa[e]-Qa[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},to=(e,t,n,r=`.`,i=!0)=>{let a=Aa(e,t,n);return!a&&i&&ya(n)&&(a=za(e,n,r),a===void 0&&(a=za(t,n,r))),a},no=e=>e.replace(/\$/g,`$$$$`),ro=class{constructor(e={}){this.logger=Ha.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:_}=e.interpolation;this.escape=t===void 0?Pa:t,this.escapeValue=n===void 0?!0:n,this.useRawValueToEscape=r===void 0?!1:r,this.prefix=i?Ma(i):a||`{{`,this.suffix=o?Ma(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?Ma(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?Ma(l):``,this.nestingPrefix=d?Ma(d):f||Ma(`$t(`),this.nestingSuffix=p?Ma(p):m||Ma(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=_===void 0?!1:_,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let i,a,o,s=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(!e.includes(this.formatSeparator)){let i=to(t,s,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(to(t,s,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.`);let l=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,u=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>no(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?no(this.escape(e)):no(e)}].forEach(t=>{for(o=0;i=t.regex.exec(e);){let n=i[1].trim();if(a=c(n),a===void 0)if(typeof l==`function`){let t=l(e,i,r);a=ya(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))a=``;else if(u){a=i[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),a=``;else !ya(a)&&!this.useRawValueToEscape&&(a=xa(a));let s=t.safeValue(a);if(e=e.replace(i[0],s),u?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=i[0].length):t.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,i,a,o=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${Ma(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,a);let o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||(s?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let s=[];a={...n},a=a.replace&&!ya(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let c=/{.*}/.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(s=r[1].slice(c).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),i=t(o.call(this,r[1].trim(),a),a),i&&r[0]===e&&!ya(i))return i;ya(i)||(i=xa(i)),i||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),s.length&&(i=s.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),i.trim())),e=e.replace(r[0],i),this.regexp.lastIndex=0}return e}},io=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},ao=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(Ba(r),i),t[o]=s),s(n)}},oo=e=>(t,n,r)=>e(Ba(n),r)(t),so=class{constructor(e={}){this.logger=Ha.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?ao:oo;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=ao(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf(`(`)>1&&!i[0].includes(`)`)&&i.find(e=>e.includes(`)`))){let e=i.findIndex(e=>e.includes(`)`));i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{let{formatName:i,formatOptions:a}=io(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}else this.logger.warn(`there was no format function for ${i}`);return e},e)}},co=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},lo=class extends Ua{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=Ha.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{Oa(n.loaded,[i],a),co(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r<this.maxRetries){setTimeout(()=>{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();ya(e)&&(e=this.languageUtils.toResolveHierarchy(e)),ya(t)&&(t=[t]);let i=this.queueLoad(e,t,n,r);if(!i.toLoad.length)return i.pending.length||r(),null;i.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`);return}if(!(n==null||n===``)){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}!e||!e[0]||this.store.addResource(e[0],t,n,r)}}},uo=()=>({debug:!1,initAsync:!0,ns:[`translation`],defaultNS:[`translation`],fallbackLng:[`dev`],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:`all`,preload:!1,keySeparator:`.`,nsSeparator:`:`,pluralSeparator:`_`,contextSeparator:`_`,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:`fallback`,saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]==`object`&&(t=e[1]),ya(e[1])&&(t.defaultValue=e[1]),ya(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),fo=e=>(ya(e.ns)&&(e.ns=[e.ns]),ya(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),ya(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),po=()=>{},mo=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},ho=class e extends Ua{constructor(e={},t){if(super(),this.options=fo(e),this.services={},this.logger=Ha,this.modules={external:[]},mo(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&(ya(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=uo();this.options={...n,...this.options,...fo(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?Ha.init(r(this.modules.logger),this.options):Ha.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:so;let t=new Za(this.options);this.store=new Wa(this.options.resources,this.options);let n=this.services;n.logger=Ha,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new eo(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new ro(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new lo(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new Xa(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=po,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn(`init: no languageDetector is used and no lng is defined`),[`getResource`,`hasResourceBundle`,`getResourceBundle`,`getDataByLanguage`].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let i=ba(),a=()=>{let e=(e,n)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn(`init: i18next is already initialized. You should call init just once!`),this.isInitialized=!0,this.options.isClone||this.logger.log(`initialized`,this.options),this.emit(`initialized`,this.options),i.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),i}loadResources(e,t=po){let n=t,r=ya(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=ba();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=po,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&Ga.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&![`cimode`,`dev`].includes(e)){for(let e=0;e<this.languages.length;e++){let t=this.languages[e];if(![`cimode`,`dev`].includes(t)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&!this.languages.includes(e)&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;let n=ba();this.emit(`languageChanging`,e);let r=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},i=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},a=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=ya(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes(ya(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{i(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e),n}getFixedT(e,t,n){let r=(e,t,...i)=>{let a;a=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(i)),a.lng=a.lng||r.lng,a.lngs=a.lngs||r.lngs,a.ns=a.ns||r.ns,a.keyPrefix!==``&&(a.keyPrefix=a.keyPrefix||n||r.keyPrefix);let o={...this.options,...a};typeof a.keyPrefix==`function`&&(a.keyPrefix=Ja(a.keyPrefix,o));let s=this.options.keySeparator||`.`,c;return a.keyPrefix&&Array.isArray(e)?c=e.map(e=>(typeof e==`function`&&(e=Ja(e,o)),`${a.keyPrefix}${s}${e}`)):(typeof e==`function`&&(e=Ja(e,o)),c=a.keyPrefix?`${a.keyPrefix}${s}${e}`:e),this.t(c,a)};return ya(e)?r.lng=e:r.lngs=e,r.ns=t,r.keyPrefix=n,r}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn(`hasLoadedNamespace: i18next was not initialized`,this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn(`hasLoadedNamespace: i18n.languages were undefined or empty`,this.languages),!1;let n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=ba();return this.options.ns?(ya(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=ba();ya(e)&&(e=[e]);let r=this.options.preload||[],i=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return i.length?(this.options.preload=r.concat(i),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`ar.shu.sqr.ssh.xaa.yhd.yud.aao.abh.abv.acm.acq.acw.acx.acy.adf.ads.aeb.aec.afb.ajp.apc.apd.arb.arq.ars.ary.arz.auz.avl.ayh.ayl.ayn.ayp.bbz.pga.he.iw.ps.pbt.pbu.pst.prp.prd.ug.ur.ydd.yds.yih.ji.yi.hbo.men.xmn.fa.jpr.peo.pes.prs.dv.sam.ckb`.split(`.`),n=this.services?.languageUtils||new Za(uo());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=po){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new Wa(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={...uo().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new ro(n)}return a.translator=new Xa(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();ho.createInstance,ho.dir,ho.init,ho.loadResources,ho.reloadResources,ho.use,ho.changeLanguage,ho.getFixedT,ho.t,ho.exists,ho.setDefaultNamespace,ho.hasLoadedNamespace,ho.loadNamespaces,ho.loadLanguages;var{slice:go,forEach:_o}=[];function vo(e){return _o.call(go.call(arguments,1),t=>{if(t)for(let n in t)e[n]===void 0&&(e[n]=t[n])}),e}function yo(e){return typeof e==`string`?[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(t=>t.test(e)):!1}var bo=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,xo=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:`/`},r=`${e}=${encodeURIComponent(t)}`;if(n.maxAge>0){let e=n.maxAge-0;if(Number.isNaN(e))throw Error(`maxAge should be a Number`);r+=`; Max-Age=${Math.floor(e)}`}if(n.domain){if(!bo.test(n.domain))throw TypeError(`option domain is invalid`);r+=`; Domain=${n.domain}`}if(n.path){if(!bo.test(n.path))throw TypeError(`option path is invalid`);r+=`; Path=${n.path}`}if(n.expires){if(typeof n.expires.toUTCString!=`function`)throw TypeError(`option expires is invalid`);r+=`; Expires=${n.expires.toUTCString()}`}if(n.httpOnly&&(r+=`; HttpOnly`),n.secure&&(r+=`; Secure`),n.sameSite)switch(typeof n.sameSite==`string`?n.sameSite.toLowerCase():n.sameSite){case!0:r+=`; SameSite=Strict`;break;case`lax`:r+=`; SameSite=Lax`;break;case`strict`:r+=`; SameSite=Strict`;break;case`none`:r+=`; SameSite=None`;break;default:throw TypeError(`option sameSite is invalid`)}return n.partitioned&&(r+=`; Partitioned`),r},So={create(e,t,n,r){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:`/`,sameSite:`strict`};n&&(i.expires=new Date,i.expires.setTime(i.expires.getTime()+n*60*1e3)),r&&(i.domain=r),document.cookie=xo(e,t,i)},read(e){let t=`${e}=`,n=document.cookie.split(`;`);for(let e=0;e<n.length;e++){let r=n[e];for(;r.charAt(0)===` `;)r=r.substring(1,r.length);if(r.indexOf(t)===0)return r.substring(t.length,r.length)}return null},remove(e,t){this.create(e,``,-1,t)}},Co={name:`cookie`,lookup(e){let{lookupCookie:t}=e;if(t&&typeof document<`u`)return So.read(t)||void 0},cacheUserLanguage(e,t){let{lookupCookie:n,cookieMinutes:r,cookieDomain:i,cookieOptions:a}=t;n&&typeof document<`u`&&So.create(n,e,r,i,a)}},wo={name:`querystring`,lookup(e){let{lookupQuerystring:t}=e,n;if(typeof window<`u`){let{search:e}=window.location;!window.location.search&&window.location.hash?.indexOf(`?`)>-1&&(e=window.location.hash.substring(window.location.hash.indexOf(`?`)));let r=e.substring(1).split(`&`);for(let e=0;e<r.length;e++){let i=r[e].indexOf(`=`);i>0&&r[e].substring(0,i)===t&&(n=r[e].substring(i+1))}}return n}},To={name:`hash`,lookup(e){let{lookupHash:t,lookupFromHashIndex:n}=e,r;if(typeof window<`u`){let{hash:e}=window.location;if(e&&e.length>2){let i=e.substring(1);if(t){let e=i.split(`&`);for(let n=0;n<e.length;n++){let i=e[n].indexOf(`=`);i>0&&e[n].substring(0,i)===t&&(r=e[n].substring(i+1))}}if(r)return r;if(!r&&n>-1){let t=e.match(/\/([a-zA-Z-]*)/g);return Array.isArray(t)?t[typeof n==`number`?n:0]?.replace(`/`,``):void 0}}}return r}},Eo=null,Do=()=>{if(Eo!==null)return Eo;try{if(Eo=typeof window<`u`&&window.localStorage!==null,!Eo)return!1;let e=`i18next.translate.boo`;window.localStorage.setItem(e,`foo`),window.localStorage.removeItem(e)}catch{Eo=!1}return Eo},Oo={name:`localStorage`,lookup(e){let{lookupLocalStorage:t}=e;if(t&&Do())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:n}=t;n&&Do()&&window.localStorage.setItem(n,e)}},ko=null,Ao=()=>{if(ko!==null)return ko;try{if(ko=typeof window<`u`&&window.sessionStorage!==null,!ko)return!1;let e=`i18next.translate.boo`;window.sessionStorage.setItem(e,`foo`),window.sessionStorage.removeItem(e)}catch{ko=!1}return ko},jo={name:`sessionStorage`,lookup(e){let{lookupSessionStorage:t}=e;if(t&&Ao())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:n}=t;n&&Ao()&&window.sessionStorage.setItem(n,e)}},Mo={name:`navigator`,lookup(e){let t=[];if(typeof navigator<`u`){let{languages:e,userLanguage:n,language:r}=navigator;if(e)for(let n=0;n<e.length;n++)t.push(e[n]);n&&t.push(n),r&&t.push(r)}return t.length>0?t:void 0}},No={name:`htmlTag`,lookup(e){let{htmlTag:t}=e,n,r=t||(typeof document<`u`?document.documentElement:null);return r&&typeof r.getAttribute==`function`&&(n=r.getAttribute(`lang`)),n}},Po={name:`path`,lookup(e){let{lookupFromPathIndex:t}=e;if(typeof window>`u`)return;let n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(Array.isArray(n))return n[typeof t==`number`?t:0]?.replace(`/`,``)}},Fo={name:`subdomain`,lookup(e){let{lookupFromSubdomainIndex:t}=e,n=typeof t==`number`?t+1:1,r=typeof window<`u`&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(r)return r[n]}},Io=!1;try{document.cookie,Io=!0}catch{}var Lo=[`querystring`,`cookie`,`localStorage`,`sessionStorage`,`navigator`,`htmlTag`];Io||Lo.splice(1,1);var Ro=()=>({order:Lo,lookupQuerystring:`lng`,lookupCookie:`i18next`,lookupLocalStorage:`i18nextLng`,lookupSessionStorage:`i18nextLng`,caches:[`localStorage`],excludeCacheFor:[`cimode`],convertDetectedLanguage:e=>e}),zo=class{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type=`languageDetector`,this.detectors={},this.init(e,t)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=vo(t,this.options||{},Ro()),typeof this.options.convertDetectedLanguage==`string`&&this.options.convertDetectedLanguage.indexOf(`15897`)>-1&&(this.options.convertDetectedLanguage=e=>e.replace(`-`,`_`)),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=n,this.addDetector(Co),this.addDetector(wo),this.addDetector(Oo),this.addDetector(jo),this.addDetector(Mo),this.addDetector(No),this.addDetector(Po),this.addDetector(Fo),this.addDetector(To)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,t=[];return e.forEach(e=>{if(this.detectors[e]){let n=this.detectors[e].lookup(this.options);n&&typeof n==`string`&&(n=[n]),n&&(t=t.concat(n))}}),t=t.filter(e=>e!=null&&!yo(e)).map(e=>this.options.convertDetectedLanguage(e)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?t:t.length>0?t[0]:null}cacheUserLanguage(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;t&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||t.forEach(t=>{this.detectors[t]&&this.detectors[t].cacheUserLanguage(e,this.options)}))}};zo.type=`languageDetector`;var Bo=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);qo(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},Vo={},Ho=(e,t,n,r)=>{qo(n)&&Vo[n]||(qo(n)&&(Vo[n]=new Date),Bo(e,t,n,r))},Uo=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},Wo=(e,t,n)=>{e.loadNamespaces(t,Uo(e,n))},Go=(e,t,n,r)=>{if(qo(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return Wo(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,Uo(e,r))},Ko=(e,t,n={})=>!t.languages||!t.languages.length?(Ho(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),qo=e=>typeof e==`string`,Jo=e=>typeof e==`object`&&!!e,Yo=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Xo={"&amp;":`&`,"&#38;":`&`,"&lt;":`<`,"&#60;":`<`,"&gt;":`>`,"&#62;":`>`,"&apos;":`'`,"&#39;":`'`,"&quot;":`"`,"&#34;":`"`,"&nbsp;":` `,"&#160;":` `,"&copy;":`©`,"&#169;":`©`,"&reg;":`®`,"&#174;":`®`,"&hellip;":`…`,"&#8230;":`…`,"&#x2F;":`/`,"&#47;":`/`},Zo=e=>Xo[e],Qo={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(Yo,Zo),transDefaultProps:void 0},$o=(e={})=>{Qo={...Qo,...e}},es=()=>Qo,ts,ns=e=>{ts=e},rs=()=>ts,is={type:`3rdParty`,init(e){$o(e.options.react),ns(e)}},as=(0,C.createContext)(),os=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},ss=s((e=>{var t=p();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),cs=s(((e,t)=>{t.exports=ss()})),ls=cs(),us={t:(e,t)=>{if(qo(t))return t;if(Jo(t)&&qo(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},ds=()=>()=>{},fs=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=(0,C.useContext)(as)||{},a=n||r||rs();a&&!a.reportNamespaces&&(a.reportNamespaces=new os),a||Ho(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let o=(0,C.useMemo)(()=>({...es(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:c}=o,l=e||i||a?.options?.defaultNS,u=qo(l)?[l]:l||[`translation`],d=(0,C.useMemo)(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(d);let f=(0,C.useRef)(0),p=(0,C.useCallback)(e=>{if(!a)return ds;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{f.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),m=(0,C.useRef)(),h=(0,C.useCallback)(()=>{if(!a)return us;let e=!!(a.isInitialized||a.initializedStoreOnce)&&d.every(e=>Ko(e,a,o)),n=t.lng||a.language,r=f.current,i=m.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===c&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?d:d[0],c),ready:e,lng:n,keyPrefix:c,revision:r};return m.current=s,s},[a,d,c,o,t.lng]),[g,_]=(0,C.useState)(0),{t:v,ready:y}=(0,ls.useSyncExternalStore)(p,h,h);(0,C.useEffect)(()=>{if(a&&!y&&!s){let e=()=>_(e=>e+1);t.lng?Go(a,t.lng,d,e):Wo(a,d,e)}},[a,t.lng,d,y,s,g]);let b=a||{},x=(0,C.useRef)(null),S=(0,C.useRef)(),w=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,`__original`,{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},T=(0,C.useMemo)(()=>{let e=b,t=e?.language,n=e;e&&(x.current&&x.current.__original===e&&S.current===t?n=x.current:(n=w(e),x.current=n,S.current=t));let r=!y&&!s?(...e)=>(Ho(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),v(...e)):v,i=[r,n,y];return i.t=r,i.i18n=n,i.ready=y,i},[v,b,y,b.resolvedLanguage,b.language,b.languages]);if(a&&s&&!y)throw new Promise(e=>{let n=()=>e();t.lng?Go(a,t.lng,d,n):Wo(a,d,n)});return T},ps={common:{loading:`Laden`,notFound:`Nicht gefunden`,save:`Speichern`,cancel:`Abbrechen`,delete:`Löschen`,edit:`Bearbeiten`,close:`Schließen`,refresh:`Aktualisieren`,search:`Suche`,enabled:`Aktiviert`,disabled:`Deaktiviert`,online:`Online`,offline:`Offline`,running:`Läuft`,stopped:`Gestoppt`,failed:`Fehlgeschlagen`,starting:`Startet`,devices:`Geräte`,fabrics:`Fabrics`,port:`Port`,unknown:`Unbekannt`,confirm:`Bestätigen`,create:`Erstellen`,back:`Zurück`,next:`Weiter`,actions:`Aktionen`,name:`Name`,type:`Typ`,error:`Fehler`,version:`Version`,copy:`Kopieren`,copied:`Kopiert!`,copyId:`ID kopieren`,later:`Später`,skip:`Überspringen`,reset:`Zurücksetzen`,update:`Aktualisieren`,all:`Alle`,ascending:`Aufsteigend`,descending:`Absteigend`,moveUp:`Nach oben`,moveDown:`Nach unten`,selectAll:`Alle auswählen`,selectNone:`Keine auswählen`,live:`Live`,new:`Neu`,overwrite:`Überschreiben`,active:`Aktiv`,property:`Eigenschaft`,value:`Wert`,custom:`Benutzerdefiniert`,startAll:`Alle starten`,stopAll:`Alle stoppen`,restartAll:`Alle neustarten`,import:`Importieren`,export:`Exportieren`,exportAll:`Alle exportieren`,wizard:`Assistent`},nav:{bridges:`Bridges`,devices:`Alle Geräte`,health:`Status & Diagnose`,diagnostics:`Live-Ereignisse`,settings:`Einstellungen`,networkMap:`Netzwerkkarte`,logs:`Logs`,startupOrder:`Startreihenfolge`,lockCredentials:`Schloss-Zugangsdaten`,filterReference:`Filterreferenz`,systemLogs:`Systemlogs`,lightMode:`Heller Modus`,darkMode:`Dunkler Modus`},status:{error:`Fehler`,unhealthy:`Fehlerhaft`,noBridges:`Keine Bridges`,loadingHealth:`Lade Statusdaten...`,unknown:`Unbekannt`},errorBoundary:{title:`Etwas ist schiefgelaufen`,fallbackMessage:`Ein unerwarteter Fehler ist aufgetreten.`,reload:`Seite neu laden`},settings:{title:`Einstellungen`,language:`Sprache`,languageDescription:`Wähle die Sprache der Benutzeroberfläche.`,checkUpdates:`Nach Updates suchen`,backupRestore:`Sichern & Wiederherstellen`,exportBackup:`Backup exportieren`,importBackup:`Backup importieren`,dangerZone:`Gefahrenzone`,resetAll:`Alles zurücksetzen`,about:`Über`,username:`Benutzername`,password:`Passwort`,enterNewPassword:`Neues Passwort eingeben`,enableAuth:`Authentifizierung aktivieren`,disableAuth:`Authentifizierung deaktivieren`,disableAuthMessage:`Dies entfernt den Passwortschutz der Weboberfläche. Jeder in deinem Netzwerk kann auf die Bridge-Konfiguration zugreifen und sie ändern.`,disableAuthConfirm:`Auth deaktivieren`,usernamePasswordRequired:`Benutzername und Passwort sind erforderlich`,authSaveFailed:`Authentifizierungseinstellungen konnten nicht gespeichert werden`,authLoadFailed:`Authentifizierungseinstellungen konnten nicht geladen werden`,authDisabled:`Authentifizierung deaktiviert.`,authRemoveFailed:`Authentifizierungseinstellungen konnten nicht entfernt werden`},dashboard:{title:`Dashboard`,systemOverview:`Systemübersicht`,quickActions:`Schnellaktionen`,bridgeOverview:`Bridge-Übersicht`,noBridges:`Noch keine Bridges konfiguriert.`,createBridge:`Bridge erstellen`,viewAll:`Alle anzeigen`,totalDevices:`Geräte gesamt`,customize:`Anpassen`,startAll:`Alle starten`,stopAll:`Alle stoppen`,restartAll:`Alle neustarten`,welcome:`Willkommen bei Home Assistant Matter Hub`,welcomeDescription:`Verbinde deine Home Assistant Geräte mit Matter-Controllern wie Apple Home, Google Home und Amazon Alexa.`,bridgeWizard:`Bridge-Assistent`,setupByArea:`Nach Bereich einrichten`,manualSetup:`Manuelle Einrichtung`,areaSetup:`Bereich-Einrichtung`,documentation:`Dokumentation`,quickNavigation:`Schnellnavigation`,haConnection:`HA-Verbindung`,startupOrder:`Startreihenfolge`,lockCredentials:`Schloss-Zugangsdaten`,filterReference:`Filterreferenz`,successMessage:`Deine Bridges sind mit {{count}} Controller-Fabric(s) verbunden. Geräte sollten jetzt in deiner Controller-App erscheinen.`,noBridgesHint:`Noch keine Bridges konfiguriert. Nutze den Bridge-Assistenten oder erstelle eine manuell.`,customizeDashboard:`Dashboard anpassen`,bridgeStatusRunning:`{{running}} läuft`,bridgeStatusFailed:`{{failed}} fehlgeschlagen`,devicesFailed:`{{count}} fehlgeschlagen`,uptimeFormat:`{{time}}`},bridge:{name:`Bridge-Name`,port:`Port`,status:`Status`,pairHint:`Diese Bridge mit deinem Controller koppeln`,pairDescription:`Öffne deine Controller-App (Apple Home, Google Home oder Amazon Alexa), füge ein neues Zubehör hinzu und scanne den QR-Code oder gib den manuellen Kopplungscode ein. Stelle sicher, dass dein Controller im selben Netzwerk wie Home Assistant ist.`,failedEntities:`Fehlgeschlagene Entities`,serverModeRecommended:`Server-Modus empfohlen für Saugroboter`,serverModeDescription:`Diese Bridge enthält einen Saugroboter im Bridge-Modus. Apple Home und Alexa zeigen die Bridge als zusätzliches Gerät an, was zu doppelten Einträgen führt. Aktiviere den Server-Modus, um den Saugroboter als eigenständiges Matter-Gerät bereitzustellen.`,enableServerMode:`Server-Modus aktivieren`,enabling:`Wird aktiviert...`,start:`Starten`,stop:`Stoppen`,restart:`Neustarten`,factoryReset:`Werksreset`,pairingCode:`Kopplungscode`,openCommissioning:`Kopplungsfenster öffnen`,multiPair:`Multi-Fabric-Kopplung`,deleteBridge:`Bridge löschen`,deleteConfirm:`Möchtest du diese Bridge wirklich löschen?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} Entity/Entities konnten nicht geladen werden.`,clickToShow:`Klicke, um Details anzuzeigen.`,clickToHide:`Klicke, um Details auszublenden.`,loadFailed:`Bridge-Details konnten nicht geladen werden`,refreshHint:`Neue Geräte und Label-Änderungen werden alle 30 Sekunden erkannt.`,refreshingStates:`Status wird in {{seconds}} Sekunden aktualisiert...`,serverModeSingleDeviceNote:`Hinweis: Der Server-Modus erfordert, dass der Saugroboter das einzige Gerät auf dieser Bridge ist. Entferne zuerst andere Entities, dann aktiviere den Server-Modus in den Bridge-Einstellungen.`,serverModeEnabled:`Server-Modus aktiviert. Die Bridge wird mit deinem Saugroboter als eigenständiges Gerät neu gestartet.`,serverModeEnableFailed:`Server-Modus konnte nicht aktiviert werden: {{error}}`,pairing:`Kopplung`,bridgeInfo:`Bridge-Info`,commissioned:`Gekoppelt`,addController:`Weiteren Controller hinzufügen`,openingCommissioning:`Kopplungsfenster wird geöffnet...`,fabricTooltip:`Ein Fabric stellt eine Verbindung zu einem Matter-Controller dar (z.B. Apple Home, Google Home, Alexa). Jeder Controller erstellt beim Koppeln ein Fabric.`,forceSync:`Synchronisation erzwingen`,syncing:`Synchronisiere...`,forceSyncTooltip:`Alle aktuellen Gerätezustände an verbundene Controller senden`,editFilters:`Filter bearbeiten`,addFilters:`Filter hinzufügen`,bridgeNotRunning:`Bridge läuft nicht. Starte die Bridge, um Kopplungsinformationen zu sehen.`,manualCode:`Manueller Code`,openingWindow:`Kopplungsfenster wird geöffnet...`,bridgeId:`Bridge-ID`,passcode:`Passcode`,discriminator:`Discriminator`,connectedFabrics:`Verbundene Fabrics ({{count}})`,noFabrics:`Noch keine Controller verbunden. Scanne den QR-Code mit deinem Matter-Controller.`,entityFilters:`Entity-Filter`,noFilters:`Keine Filter konfiguriert. Alle unterstützten Entities werden freigegeben.`,scanQrCode:`Scanne diesen QR-Code mit deinem Matter-Controller (Apple Home, Google Home, Alexa, etc.), um diese Bridge einem weiteren Ökosystem hinzuzufügen.`,appleHomeWarning:`Diese Bridge verwendet den erweiterten Flat-Modus. Deaktiviere dies nur, wenn du ausschließlich Apple Home verwendest.`,googleHomeWarning:`Dies kann Probleme mit Apple Home und Google Home verursachen.`,resetSuccess:`Bridge erfolgreich zurückgesetzt`,deleteSuccess:`Bridge erfolgreich gelöscht`,confirmResetTitle:`Bridge zurücksetzen`,confirmResetMessage:`Dies entfernt alle Kopplungsinformationen und setzt die Bridge in den Ausgangszustand zurück. Verbundene Controller verlieren den Zugriff. Dies kann nicht rückgängig gemacht werden.`,confirmDeleteTitle:`Bridge löschen`,confirmDeleteMessage:`Dies löscht die Bridge, alle Kopplungen und Entity-Zuordnungen dauerhaft. Verbundene Controller verlieren den Zugriff. Dies kann nicht rückgängig gemacht werden.`,importTitle:`Bridges importieren`,overwriteExisting:`Bestehende Bridges überschreiben`,iconLabel:`Bridge-Symbol`,google:`Google`,alexa:`Alexa`,serverMode:`Server-Modus`,autoForceSync:`Auto-Synchronisation`,saveSuccess:`Bridge gespeichert`,updateSuccess:`Aktualisierung abgeschlossen`,exportFailed:`Export fehlgeschlagen`,actionStarted:`Gestartet`,actionStopped:`Gestoppt`,actionRestarted:`Neugestartet`,actionFailed:`{{action}} fehlgeschlagen`,actionResult:`{{label}} {{count}} Bridge(s)`,couldNotLoad:`Bridges konnten nicht geladen werden`,showingFirst:`Zeige erste {{count}}`,importParseFailed:`Import-Datei konnte nicht verarbeitet werden. Bitte eine gültige Export-Datei auswählen.`,importing:`Importiere...`,importCount:`{{count}} Bridge(s) importieren`,jsonEditor:`JSON-Editor`,formEditor:`Formular-Editor`},endpoints:{title:`Endpunkte`,searchPlaceholder:`Endpunkte suchen...`,sortBy:`Sortieren`,sortName:`Name`,sortEndpoint:`Endpunkt-ID`,sortType:`Typ`,cardView:`Kartenansicht`,treeView:`Baumansicht`,clusters:`Cluster`,entityUnavailable:`Entity nicht verfügbar`,showUnavailable:`{{count}} nicht verfügbare anzeigen`,showAll:`Alle Entities anzeigen`,uploadImage:`Gerätebild hochladen`,removeImage:`Benutzerdefiniertes Bild entfernen`,editMapping:`Entity-Zuordnung bearbeiten`,homeAssistantEntity:`Home Assistant Entity`,noEndpoints:`Keine Endpunkte gefunden.`,expandAll:`Alle aufklappen`,collapseAll:`Alle zuklappen`,viewAll:`Alle Geräte anzeigen`,haState:`HA-Status`,aboutEndpoint:`Über diesen Endpunkt`,entityId:`Entity-ID`,customName:`Benutzerdefinierter Name`,deviceTypeOverride:`Gerätetyp-Überschreibung`,keyHaAttributes:`Wichtige HA-Attribute`,entityMappings:`Entity-Zuordnungen`,copyData:`Daten in Zwischenablage kopieren`,behavior:`Verhalten`},health:{title:`Status & Diagnose`,version:`Version`,uptime:`Laufzeit`,homeAssistant:`Home Assistant`,connected:`Verbunden`,disconnected:`Getrennt`,bridgeStatus:`Bridge-Status`,refreshHealth:`Statusdaten aktualisieren`,exportDiagnostic:`Diagnose exportieren`,memory:`Speicher`,fabricDetails:`Fabric-Details`,sessions:`Sitzungen`,subscriptions:`Abonnements`,noFabrics:`Keine Fabrics verbunden`,systemMetrics:`Systemmetriken`,heap:`Heap`,rss:`RSS`,external:`Extern`,systemHealth:`Systemstatus`,fetchFailed:`Statusdaten konnten nicht abgerufen werden`,connectionError:`Verbindungsfehler`,exportFailed:`Diagnosedaten konnten nicht exportiert werden`,restartFailed:`Bridge konnte nicht neu gestartet werden`,unableToLoad:`Statusdaten konnten nicht geladen werden`,sortBy:`Sortieren nach`,created:`Erstellt`,ascending:`Aufsteigend`,descending:`Absteigend`,connectedTo:`Verbunden mit`,autoRecovery:`Auto-Wiederherstellung`,recoveryAttempts:`Wiederherstellungsversuche`,fabrics:`Fabrics`,networkDiagnostics:`Netzwerk-Diagnose`,checksPassed:`bestanden`,checksWarning:`Warnungen`,checksFailed:`fehlgeschlagen`,hideDetails:`Details ausblenden`,showDetails:`Details anzeigen`,allChecks:`Alle Prüfungen`,check:`Prüfung`,statusLabel:`Status`,message:`Nachricht`,networkInterfaces:`Netzwerkschnittstellen`,interfaceName:`Schnittstelle`,refresh:`Aktualisieren`},mapping:{title:`Entity-Zuordnungen`,entityId:`Entity-ID`,deviceType:`Gerätetyp`,customName:`Benutzerdefinierter Name`,status:`Status`,addMapping:`Zuordnung hinzufügen`,editMapping:`Zuordnung bearbeiten`,deleteMapping:`Zuordnung löschen`,saved:`Zuordnung für {{entityId}} gespeichert. Starte die Bridge neu, um Änderungen anzuwenden.`,saveFailed:`Zuordnung konnte nicht gespeichert werden: {{error}}`,deleted:`Zuordnung für {{entityId}} gelöscht.`,deleteFailed:`Zuordnung konnte nicht gelöscht werden.`,matterTag:`Matter-Tag`,exportProfile:`Zuordnungsprofil exportieren`,importProfile:`Zuordnungsprofil importieren`,profileName:`Profilname`,match:`Übereinstimmung`,existing:`Vorhanden`,autoDetect:`Automatisch erkennen (Standard)`,customProductName:`Produktname (benutzerdefiniert)`,customProductNameHelp:`Überschreibt den Produktnamen (Modell), der an Matter-Controller gemeldet wird. Einige Controller (z.B. Aqara) zeigen diesen als Gerätenamen an.`,customVendorName:`Herstellername (benutzerdefiniert)`,customVendorNameHelp:`Überschreibt den Hersteller-/Herstellernamen, der an Matter-Controller gemeldet wird.`,customSerialNumber:`Seriennummer (benutzerdefiniert)`,customSerialNumberHelp:`Überschreibt die Seriennummer, die an Matter-Controller gemeldet wird.`,loadFailed:`Entity-Zuordnungen konnten nicht geladen werden`,noMappings:`Keine benutzerdefinierten Entity-Zuordnungen konfiguriert. Verwende Zuordnungen, um Matter-Gerätetypen zu überschreiben, benutzerdefinierte Namen zu setzen oder bestimmte Entities zu deaktivieren.`,applying:`Wird angewendet...`,applyCount:`{{count}} Zuordnung(en) anwenden`},languageSwitcher:{disclaimer:`Übersetzungen können unvollständig sein.`,contribute:`Hilf sie zu verbessern!`},translationEditor:{title:`Übersetzungseditor`,editLanguage:`Sprache bearbeiten`,info:`Bearbeite Übersetzungen direkt im Browser. Änderungen werden lokal gespeichert und sofort angewendet. Exportiere deine Übersetzungen, um sie dem Projekt einzureichen.`,progress:`{{translated}} / {{total}} Schlüssel übersetzt`,localEdits:`{{count}} lokale Bearbeitung(en)`,searchPlaceholder:`Schlüssel oder Werte suchen...`,filterAll:`Alle Schlüssel`,filterMissing:`Fehlend`,filterEdited:`Bearbeitet`,exportJson:`JSON exportieren`,copyJson:`JSON kopieren`,copied:`Kopiert!`,resetAll:`Alle Bearbeitungen zurücksetzen`,resetKey:`Auf Standard zurücksetzen`,noResults:`Keine passenden Übersetzungsschlüssel gefunden.`,addLanguage:`Sprache hinzufügen`,newLanguageCode:`Sprachcode (z.B. pt, ja, ko)`,newLanguageName:`Sprachname (z.B. Português)`,addLanguageButton:`Hinzufügen`,languageExists:`Diese Sprache existiert bereits.`,codeRequired:`Sprachcode ist erforderlich.`,nameRequired:`Sprachname ist erforderlich.`,removeLanguage:`Sprache entfernen`,importJson:`JSON importieren`,importSuccess:`{{count}} Übersetzung(en) importiert.`,importFailed:`Import fehlgeschlagen: ungültiges JSON-Format.`,removeLanguageConfirm:`Benutzerdefinierte Sprache "{{name}}" entfernen? Alle lokalen Bearbeitungen für diese Sprache gehen verloren.`},backup:{title:`Sichern & Wiederherstellen`,description:`Erstelle ein vollständiges Backup deiner Bridges und Entity-Zuordnungen oder stelle ein vorheriges Backup wieder her.`,configBackup:`Konfigurations-Backup`,configBackupDesc:`Exportiere Bridge-Konfigurationen und Entity-Zuordnungen.`,configBackupNote:`Bridges müssen nach der Wiederherstellung neu kommissioniert werden.`,fullBackup:`Vollständiges Backup (mit Identität)`,fullBackupDesc:`Enthält Matter-Identitätsdateien (Schlüsselpaare, Fabric-Anmeldedaten).`,fullBackupWarning:`Erhält den Kommissionierungsstatus über Wiederherstellungen hinweg. NICHT TEILEN!`,restoreFromBackup:`Aus Backup wiederherstellen`,restoreDesc:`Lade eine zuvor erstellte Backup-Datei hoch, um Bridges und Konfigurationen wiederherzustellen.`,restoreTitle:`Backup wiederherstellen`,selectBridges:`Bridges zur Wiederherstellung auswählen`,overwriteExisting:`Vorhandene Bridges überschreiben`,includeMappings:`Entity-Zuordnungen einschließen`,restoreIdentities:`Matter-Identitäten wiederherstellen (keine Neu-Kommissionierung nötig)`,restore:`Wiederherstellen`,downloadSuccess:`Backup erfolgreich heruntergeladen!`,restartRequired:`Neustart erforderlich`,restartMessage:`Bridges wurden aus dem Backup wiederhergestellt. Ein Neustart ist erforderlich, damit die Änderungen wirksam werden.`,restartNote:`Die Anwendung wird neu gestartet und du musst diese Seite möglicherweise aktualisieren.`,restartNow:`Jetzt neu starten`,storedBackups:`Gespeicherte Backups`,createSnapshot:`Backup erstellen`,noSnapshots:`Noch keine gespeicherten Backups. Backups werden automatisch beim Herunterfahren erstellt oder können manuell erstellt werden.`,downloadSnapshot:`Herunterladen`,restoreSnapshot:`Wiederherstellen`,auto:`Auto`,manual:`Manuell`,snapshotCreated:`Backup erfolgreich erstellt!`,snapshotRestored:`{{bridges}} Bridges, {{mappings}} Zuordnungen, {{identities}} Identitäten wiederhergestellt.`,confirmRestore:`Wiederherstellung bestätigen`,confirmRestoreMessage:`Bist du sicher, dass du aus "{{filename}}" wiederherstellen möchtest? Dies überschreibt deine aktuelle Konfiguration.`,restoreWarning:`Alle vorhandenen Bridges und Konfigurationen werden überschrieben. Ein Neustart ist nach der Wiederherstellung erforderlich.`,confirmDelete:`Backup löschen`,confirmDeleteMessage:`Bist du sicher, dass du "{{filename}}" löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.`,settings:`Backup-Einstellungen`,autoBackupLabel:`Automatisches Backup`,autoBackupDesc:`Erstellt automatisch ein vollständiges Backup wenn die Anwendung heruntergefahren oder neu gestartet wird.`,retentionCount:`Backups behalten`,retentionCountDesc:`Anzahl der aufzubewahrenden Backups (älteste werden automatisch gelöscht)`},notFound:{title:`Seite nicht gefunden`,description:`Die gesuchte Seite existiert nicht.`,backToDashboard:`Zurück zum Dashboard`},footer:{github:`GitHub`,documentation:`Dokumentation`,support:`Unterstützen`},devices:{title:`Geräte`,searchPlaceholder:`Geräte suchen...`,filterBridge:`Bridge`,allBridges:`Alle Bridges`,filterDeviceType:`Gerätetyp`,allTypes:`Alle Typen`,sortBy:`Sortieren nach`,sortBridge:`Bridge`,sortType:`Gerätetyp`,sortName:`Name`,deviceCount:`{{count}} Gerät(e)`,filteredCount:`{{filtered}} von {{total}} Geräten`},diagnostics:{title:`Live-Diagnose`,stateUpdate:`Statusänderung`,command:`Befehl`,entityError:`Fehler`,sessionOpen:`Sitzung geöffnet`,sessionClose:`Sitzung geschlossen`,subscription:`Abonnement`,bridgeStart:`Bridge gestartet`,bridgeStop:`Bridge gestoppt`,entityWarning:`Warnung`,filterEvents:`Ereignistypen filtern`,clearEvents:`Alle Ereignisse löschen`,noEvents:`Keine Ereignisse entsprechen den aktuellen Filtern.`},startup:{title:`Startreihenfolge`,description:`Ziehe Bridges per Drag & Drop, um die Startreihenfolge festzulegen. Niedrigere Positionen starten zuerst.`,saveSuccess:`Startreihenfolge erfolgreich gespeichert`,saveFailed:`Startreihenfolge konnte nicht gespeichert werden`,saveChanges:`Änderungen speichern`,unsavedChanges:`Du hast ungespeicherte Änderungen an der Startreihenfolge.`,noBridges:`Noch keine Bridges konfiguriert.`,saveOrder:`Startreihenfolge speichern`},areaSetup:{title:`Bereich-Einrichtung`,heading:`Bereichsbasierte Bridge-Einrichtung`,description:`Erstelle automatisch eine Bridge pro Home Assistant Bereich. Jede Bridge enthält alle unterstützten Entities aus diesem Bereich.`,noAreas:`Keine Bereiche mit unterstützten Entities in Home Assistant gefunden. Stelle sicher, dass deine Geräte in HA Bereichen zugeordnet sind.`,selectController:`1. Controller auswählen (optional)`,selectAreas:`2. Bereiche auswählen ({{selected}} von {{total}})`,clear:`Leeren`,createBridges:`{{count}} Bridge(s) erstellen`,results:`Ergebnisse`,goToBridges:`Zu den Bridges`,createdSuccess:`{{count}} Bridge(s) erfolgreich erstellt`,createdPartial:`{{succeeded}} erstellt, {{failed}} Bridge(s) fehlgeschlagen`,loadFailed:`Bereiche konnten nicht geladen werden`,creating:`Wird erstellt...`,created:`Erstellt`,unknownError:`Unbekannter Fehler`},lockCredentials:{title:`Schloss-Zugangsdaten`,addCredential:`Zugangsdaten hinzufügen`,editCredential:`Zugangsdaten bearbeiten`,lockEntityId:`Schloss-Entity-ID`,lockEntityHelperText:`Die Home Assistant Entity-ID des Schlosses`,pinCode:`PIN-Code`,nameOptional:`Name (optional)`,namePlaceholder:`Haustür`,nameHelperText:`Anzeigename für diese Zugangsdaten`,entityRequired:`Entity-ID ist erforderlich`,pinLength:`PIN muss 4-8 Ziffern lang sein`,pinDigitsOnly:`PIN darf nur Ziffern enthalten`,saveFailed:`Speichern fehlgeschlagen`,loadFailed:`Zugangsdaten konnten nicht geladen werden`,deleteFailed:`Löschen fehlgeschlagen`,updateFailed:`Aktualisierung fehlgeschlagen`,enable:`Aktivieren`,disable:`Deaktivieren`,confirmDeleteTitle:`Zugangsdaten löschen`,confirmDeleteMessage:`Dies löscht die PIN-Zugangsdaten für {{entity}} dauerhaft. Dies kann nicht rückgängig gemacht werden.`},labels:{title:`Filterreferenz`,info:`Durchsuche alle verfügbaren Filterwerte für deine Bridge-Konfiguration. Klicke auf einen Wert, um ihn in die Zwischenablage zu kopieren.`,searchPlaceholder:`Suchen...`,loadFailed:`Daten konnten nicht geladen werden`,labelsSection:`Labels`,labelsHint:`Verwende mit Filtertyp "entity_label" oder "device_label". Du kannst entweder den Anzeigenamen oder die label_id verwenden.`,noLabels:`Keine Labels in Home Assistant gefunden. Erstelle Labels unter Einstellungen > Labels.`,displayName:`Anzeigename`,labelId:`label_id`,areaId:`area_id`,areasSection:`Bereiche`,areasHint:`Verwende mit Filtertyp "area". Bereiche werden auch für die automatische Raumzuweisung in Matter-Controllern verwendet.`,noAreas:`Keine Bereiche in Home Assistant gefunden. Erstelle Bereiche unter Einstellungen > Bereiche.`,otherFilterValues:`Weitere Filterwerte`,domains:`Domains`,domainsHint:`Verwende mit Filtertyp "domain".`,platforms:`Plattformen / Integrationen`,platformsHint:`Verwende mit Filtertyp "platform".`,entityCategories:`Entity-Kategorien`,entityCategoriesHint:`Verwende mit Filtertyp "entity_category".`,deviceClasses:`Geräteklassen`,deviceClassesHint:`Verwende mit Filtertyp "device_class".`,deviceNames:`Gerätenamen`,deviceNamesHint:`Verwende mit Filtertyp "device_name".`,productNames:`Produktnamen`,productNamesHint:`Verwende mit Filtertyp "product_name".`},logs:{title:`Systemlogs`,logLevel:`Log-Level`,error:`Fehler`,warning:`Warnung`,info:`Info`,debug:`Debug`,searchPlaceholder:`Logs durchsuchen...`,noResults:`Keine Logs gefunden`,autoRefresh:`Automatisch aktualisieren`},networkMap:{title:`Netzwerkkarte`,hubLabel:`HAMH`,undoMove:`Letzte Verschiebung rückgängig`,resetLayout:`Layout zurücksetzen`,refreshData:`Daten aktualisieren`,fullscreen:`Vollbild`,exitFullscreen:`Vollbild beenden`,legend:`Legende`,controller:`Controller`,hub:`HAMH Hub`,bridge:`Bridge`,device:`Gerät`,failed:`Fehlgeschlagen`},updateChecker:{title:`Software-Updates`,checkNow:`Jetzt prüfen`,currentVersion:`Aktuelle Version`,latestVersion:`Neueste Version`,updateAvailable:`Update verfügbar!`,upToDate:`Du verwendest die neueste Version.`,releaseNotes:`Versionshinweise`,notAvailable:`Update-Prüfung in dieser Version nicht verfügbar`,checkFailed:`Update-Prüfung fehlgeschlagen`,unreachable:`Server nicht erreichbar`,instructionAddon:`Aktualisiere über Einstellungen → Add-ons in Home Assistant.`,instructionDocker:`Ziehe das neueste Image und erstelle deinen Container neu.`,instructionNpm:`Ausführen: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Bridge-Einrichtungsassistent`,stepTemplate:`Vorlage`,stepController:`Controller`,stepBridgeInfo:`Bridge-Info`,stepEntityFilter:`Entity-Filter`,stepFeatureFlags:`Feature Flags`,stepReview:`Überprüfen & Erstellen`,autoCompose:`Geräte automatisch zusammensetzen`,autoForceSyncFlag:`Auto-Synchronisation`,invertCover:`Abdeckungsrichtung umkehren`,invertCoverDescription:`Öffnen/Schließen-Richtung für Abdeckungen tauschen. Verwende dies, wenn deine Abdeckungen die falsche Position in Matter-Controllern anzeigen.`,includeHidden:`Versteckte Entities einschließen`,includeHiddenDescription:`Auch Entities anzeigen, die in Home Assistant als versteckt markiert sind.`,bridgeName:`Bridge-Name`,portLabel:`Port`,portAutoAssign:`Wird automatisch dem nächsten verfügbaren Port zugewiesen`,nameRequired:`Bitte gib einen Bridge-Namen ein`,createFailed:`Bridge konnte nicht erstellt werden`,bridgeInfoDescription:`Gib deiner Bridge einen Namen und Port.`,serverModeLabel:`Server-Modus (für Saugroboter)`,serverModeTooltip:`Erforderlich, damit Saugroboter mit Apple Home (Siri) und Alexa funktionieren. Server-Modus-Bridges unterstützen nur EIN Gerät.`,entityFilterDescription:`Konfiguriere, welche Entities in diese Bridge aufgenommen werden sollen.`,includeAll:`Alle Entities einschließen (Platzhalter)`,entityId:`Entity-ID`,includePattern:`Einschlussmuster`,entityFilters:`Entity-Filter`,serverModeEntityHint:`Server-Modus unterstützt nur EIN Gerät. Gib die genaue Entity-ID ein (z.B. vacuum.mein_saugroboter).`,templatePreConfigured:`Durch Vorlage vorkonfiguriert. Nach der Erstellung im vollständigen Editor bearbeiten.`,wildcardHint:`Verwende * für alle, oder Muster wie light.*, switch.*`,commaHint:`Gib spezifische Entity-IDs ein, getrennt durch Kommas`,excludePatterns:`Ausschlussmuster (optional)`,excludeHelperText:`Auszuschließende Muster, durch Kommas getrennt`,skipTemplate:`Vorlage überspringen`,creating:`Wird erstellt...`,createBridge:`Bridge erstellen`,searchRules:`Regeln suchen...`,templateDescription:`Wähle eine Vorlage für einen schnellen Start oder überspringe sie, um eine benutzerdefinierte Bridge zu erstellen.`,controllerDescription:`Welchen Matter-Controller wirst du verwenden? Dies optimiert die Feature Flags für deinen Controller.`,controllerHint:`Du kannst Feature Flags jederzeit in den nächsten Schritten oder nach der Bridge-Erstellung anpassen.`,templateApplied:`Vorlage "{{name}}" angewendet. Passe Name und Port unten an.`,filterPreConfiguredFrom:`Filter ist aus der Vorlage "{{name}}" vorkonfiguriert. Du kannst ihn unten anpassen.`,featureFlagsDescription:`Feature Flags steuern, wie Geräte für Matter-Controller bereitgestellt werden.`,recommendedFlags:`Empfohlene Flags für {{name}} sind vorausgewählt.`,selectFlags:`Wähle die Flags, die zu deiner Einrichtung passen.`,reviewDescription:`Überprüfe deine Bridge-Konfiguration:`,bridgesToCreate:`Zu erstellende Bridges ({{count}})`,bridgesCreated:`{{count}} Bridge(s) bereits in dieser Sitzung erstellt`,addAnother:`Weitere hinzufügen`}},ms={common:{loading:`Loading`,notFound:`Not found`,save:`Save`,cancel:`Cancel`,delete:`Delete`,edit:`Edit`,close:`Close`,refresh:`Refresh`,search:`Search`,enabled:`Enabled`,disabled:`Disabled`,online:`Online`,offline:`Offline`,running:`Running`,stopped:`Stopped`,failed:`Failed`,starting:`Starting`,devices:`Devices`,fabrics:`Fabrics`,port:`Port`,unknown:`Unknown`,confirm:`Confirm`,create:`Create`,back:`Back`,next:`Next`,actions:`Actions`,name:`Name`,type:`Type`,error:`Error`,version:`Version`,copy:`Copy`,copied:`Copied!`,copyId:`Copy ID`,later:`Later`,skip:`Skip`,reset:`Reset`,update:`Update`,all:`All`,ascending:`Ascending`,descending:`Descending`,moveUp:`Move up`,moveDown:`Move down`,selectAll:`Select All`,selectNone:`Select None`,live:`Live`,new:`New`,overwrite:`Overwrite`,active:`Active`,property:`Property`,value:`Value`,custom:`Custom`,startAll:`Start All`,stopAll:`Stop All`,restartAll:`Restart All`,import:`Import`,export:`Export`,exportAll:`Export All`,wizard:`Wizard`},nav:{bridges:`Bridges`,devices:`All Devices`,health:`Health & Diagnostics`,diagnostics:`Live Events`,settings:`Settings`,networkMap:`Network Map`,logs:`Logs`,startupOrder:`Startup Order`,lockCredentials:`Lock Credentials`,filterReference:`Filter Reference`,systemLogs:`System Logs`,lightMode:`Light Mode`,darkMode:`Dark Mode`},status:{error:`Error`,unhealthy:`Unhealthy`,noBridges:`No Bridges`,loadingHealth:`Loading health status...`,unknown:`Unknown`},errorBoundary:{title:`Something went wrong`,fallbackMessage:`An unexpected error occurred.`,reload:`Reload Page`},settings:{title:`Settings`,language:`Language`,languageDescription:`Select the interface language.`,checkUpdates:`Check for Updates`,backupRestore:`Backup & Restore`,exportBackup:`Export Backup`,importBackup:`Import Backup`,dangerZone:`Danger Zone`,resetAll:`Reset All`,about:`About`,username:`Username`,password:`Password`,enterNewPassword:`Enter new password`,enableAuth:`Enable Authentication`,disableAuth:`Disable Authentication`,disableAuthMessage:`This will remove password protection from the web UI. Anyone on your network will be able to access and modify your bridge configuration.`,disableAuthConfirm:`Disable Auth`,usernamePasswordRequired:`Username and password are required`,authSaveFailed:`Failed to save auth settings`,authLoadFailed:`Failed to load auth settings`,authDisabled:`Authentication disabled.`,authRemoveFailed:`Failed to remove auth settings`},dashboard:{title:`Dashboard`,systemOverview:`System Overview`,quickActions:`Quick Actions`,bridgeOverview:`Bridge Overview`,noBridges:`No bridges configured yet.`,createBridge:`Create Bridge`,viewAll:`View All`,totalDevices:`Total Devices`,customize:`Customize`,startAll:`Start All`,stopAll:`Stop All`,restartAll:`Restart All`,welcome:`Welcome to Home Assistant Matter Hub`,welcomeDescription:`Bridge your Home Assistant devices to Matter controllers like Apple Home, Google Home, and Amazon Alexa.`,bridgeWizard:`Bridge Wizard`,setupByArea:`Setup by Area`,manualSetup:`Manual Setup`,areaSetup:`Area Setup`,documentation:`Documentation`,quickNavigation:`Quick Navigation`,haConnection:`HA Connection`,startupOrder:`Startup Order`,lockCredentials:`Lock Credentials`,filterReference:`Filter Reference`,successMessage:`Your bridges are connected to {{count}} controller fabric(s). Devices should now appear in your controller app.`,noBridgesHint:`No bridges configured yet. Use the Bridge Wizard or create one manually.`,customizeDashboard:`Customize dashboard`,bridgeStatusRunning:`{{running}} running`,bridgeStatusFailed:`{{failed}} failed`,devicesFailed:`{{count}} failed`,uptimeFormat:`{{time}}`},bridge:{name:`Bridge Name`,port:`Port`,status:`Status`,pairHint:`Pair this bridge with your controller`,pairDescription:`Open your controller app (Apple Home, Google Home, or Amazon Alexa), add a new accessory, and scan the QR code below or enter the manual pairing code. Make sure your controller is on the same network as Home Assistant.`,failedEntities:`Failed Entities`,serverModeRecommended:`Server Mode Recommended for Robot Vacuums`,serverModeDescription:`This bridge contains a robot vacuum in bridged mode. Apple Home and Alexa will show the bridge as an additional device, resulting in duplicate entries. Enable Server Mode to expose the vacuum as a standalone Matter device for full Siri/Alexa voice command support and no duplicates.`,enableServerMode:`Enable Server Mode`,enabling:`Enabling...`,start:`Start`,stop:`Stop`,restart:`Restart`,factoryReset:`Factory Reset`,pairingCode:`Pairing Code`,openCommissioning:`Open Commissioning Window`,multiPair:`Multi-Fabric Pairing`,deleteBridge:`Delete Bridge`,deleteConfirm:`Are you sure you want to delete this bridge?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entity/entities could not be loaded.`,clickToShow:`Click to show details.`,clickToHide:`Click to hide details.`,loadFailed:`Failed to load Bridge details`,refreshHint:`New devices and changes on labels are discovered every 30 seconds.`,refreshingStates:`Refreshing states in {{seconds}} seconds...`,serverModeSingleDeviceNote:`Note: Server Mode requires the vacuum to be the only device on this bridge. Please remove other entities from this bridge first, then enable Server Mode in the bridge settings.`,serverModeEnabled:`Server Mode enabled. The bridge will restart with your vacuum as a standalone device.`,serverModeEnableFailed:`Failed to enable Server Mode: {{error}}`,pairing:`Pairing`,bridgeInfo:`Bridge Info`,commissioned:`Commissioned`,addController:`Add Another Controller`,openingCommissioning:`Opening Commissioning Window...`,fabricTooltip:`A fabric represents a connection to a Matter controller (e.g., Apple Home, Google Home, Alexa). Each controller creates one fabric when paired.`,forceSync:`Force Sync`,syncing:`Syncing...`,forceSyncTooltip:`Push all current device states to connected controllers`,editFilters:`Edit Filters`,addFilters:`Add Filters`,bridgeNotRunning:`Bridge is not running. Start the bridge to see pairing information.`,manualCode:`Manual Code`,openingWindow:`Opening Commissioning Window...`,bridgeId:`Bridge ID`,passcode:`Passcode`,discriminator:`Discriminator`,connectedFabrics:`Connected Fabrics ({{count}})`,noFabrics:`No controllers connected yet. Scan the QR code with your Matter controller to pair this bridge.`,entityFilters:`Entity Filters`,noFilters:`No filters configured. All supported entities will be exposed.`,scanQrCode:`Scan this QR code with your Matter controller (Apple Home, Google Home, Alexa, etc.) to add this bridge to another ecosystem.`,appleHomeWarning:`This bridge uses Extended Flat mode. Only disable this if you exclusively use Apple Home.`,googleHomeWarning:`This may cause issues with Apple Home and Google Home.`,resetSuccess:`Bridge Reset successfully`,deleteSuccess:`Bridge deleted successfully`,confirmResetTitle:`Factory Reset Bridge`,confirmResetMessage:`This will remove all pairing information and reset the bridge to its initial state. Connected controllers will lose access. This cannot be undone.`,confirmDeleteTitle:`Delete Bridge`,confirmDeleteMessage:`This will permanently delete the bridge, all its pairings, and entity mappings. Connected controllers will lose access. This cannot be undone.`,importTitle:`Import Bridges`,overwriteExisting:`Overwrite existing bridges`,iconLabel:`Bridge Icon`,google:`Google`,alexa:`Alexa`,serverMode:`Server Mode`,autoForceSync:`Auto Force Sync`,saveSuccess:`Bridge saved`,updateSuccess:`Update completed`,exportFailed:`Export failed`,actionStarted:`Started`,actionStopped:`Stopped`,actionRestarted:`Restarted`,actionFailed:`{{action}} failed`,actionResult:`{{label}} {{count}} bridge(s)`,couldNotLoad:`Could not load bridges`,showingFirst:`Showing first {{count}}`,importParseFailed:`Failed to parse import file. Please select a valid export file.`,importing:`Importing...`,importCount:`Import {{count}} Bridge(s)`,jsonEditor:`JSON editor`,formEditor:`Form editor`},endpoints:{title:`Endpoints`,searchPlaceholder:`Search endpoints...`,sortBy:`Sort`,sortName:`Name`,sortEndpoint:`Endpoint ID`,sortType:`Type`,cardView:`Card View`,treeView:`Tree View`,clusters:`Clusters`,entityUnavailable:`Entity unavailable`,showUnavailable:`Show {{count}} unavailable`,showAll:`Show all entities`,uploadImage:`Upload device image`,removeImage:`Remove custom image`,editMapping:`Edit Entity Mapping`,homeAssistantEntity:`Home Assistant Entity`,noEndpoints:`No endpoints found.`,expandAll:`Expand All`,collapseAll:`Collapse All`,viewAll:`View All Devices`,haState:`HA State`,aboutEndpoint:`About this endpoint`,entityId:`Entity ID`,customName:`Custom Name`,deviceTypeOverride:`Device Type Override`,keyHaAttributes:`Key HA Attributes`,entityMappings:`Entity Mappings`,copyData:`Copy data to clipboard`,behavior:`Behavior`},health:{title:`Health & Diagnostics`,version:`Version`,uptime:`Uptime`,homeAssistant:`Home Assistant`,connected:`Connected`,disconnected:`Disconnected`,bridgeStatus:`Bridge Status`,refreshHealth:`Refresh health data`,exportDiagnostic:`Export Diagnostic`,memory:`Memory`,fabricDetails:`Fabric Details`,sessions:`Sessions`,subscriptions:`Subscriptions`,noFabrics:`No fabrics connected`,systemMetrics:`System Metrics`,heap:`Heap`,rss:`RSS`,external:`External`,systemHealth:`System Health`,fetchFailed:`Failed to fetch health status`,connectionError:`Connection error`,exportFailed:`Failed to export diagnostic data`,restartFailed:`Failed to restart bridge`,unableToLoad:`Unable to load health status`,sortBy:`Sort by`,created:`Created`,ascending:`Ascending`,descending:`Descending`,connectedTo:`Connected to`,autoRecovery:`Auto Recovery`,recoveryAttempts:`Recovery attempts`,fabrics:`fabrics`,networkDiagnostics:`Network Diagnostics`,checksPassed:`passed`,checksWarning:`warnings`,checksFailed:`failed`,hideDetails:`Hide details`,showDetails:`Show details`,allChecks:`All Checks`,check:`Check`,statusLabel:`Status`,message:`Message`,networkInterfaces:`Network Interfaces`,interfaceName:`Interface`,refresh:`Refresh`},mapping:{title:`Entity Mappings`,entityId:`Entity ID`,deviceType:`Device Type`,customName:`Custom Name`,status:`Status`,addMapping:`Add Mapping`,editMapping:`Edit Mapping`,deleteMapping:`Delete Mapping`,saved:`Mapping saved for {{entityId}}. Restart the bridge to apply changes.`,saveFailed:`Failed to save mapping: {{error}}`,deleted:`Mapping deleted for {{entityId}}.`,deleteFailed:`Failed to delete mapping.`,matterTag:`Matter Tag`,exportProfile:`Export Mapping Profile`,importProfile:`Import Mapping Profile`,profileName:`Profile Name`,match:`Match`,existing:`Existing`,autoDetect:`Auto-detect (default)`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`,loadFailed:`Failed to load entity mappings`,noMappings:`No custom entity mappings configured. Use mappings to override Matter device types, set custom names, or disable specific entities.`,applying:`Applying...`,applyCount:`Apply {{count}} Mapping(s)`},notFound:{title:`Page not found`,description:`The page you are looking for does not exist.`,backToDashboard:`Back to Dashboard`},devices:{title:`Devices`,searchPlaceholder:`Search devices...`,filterBridge:`Bridge`,allBridges:`All Bridges`,filterDeviceType:`Device Type`,allTypes:`All Types`,sortBy:`Sort By`,sortBridge:`Bridge`,sortType:`Device Type`,sortName:`Name`,deviceCount:`{{count}} device(s)`,filteredCount:`{{filtered}} of {{total}} devices`},diagnostics:{title:`Live Diagnostics`,stateUpdate:`State Update`,command:`Command`,entityError:`Error`,sessionOpen:`Session Open`,sessionClose:`Session Close`,subscription:`Subscription`,bridgeStart:`Bridge Start`,bridgeStop:`Bridge Stop`,entityWarning:`Warning`,filterEvents:`Filter event types`,clearEvents:`Clear all events`,noEvents:`No events match the current filters.`},startup:{title:`Startup Order`,description:`Drag and drop bridges to set the startup order. Lower positions start first.`,saveSuccess:`Startup order saved successfully`,saveFailed:`Failed to save startup order`,saveChanges:`Save Changes`,unsavedChanges:`You have unsaved changes to the startup order.`,noBridges:`No bridges configured yet.`,saveOrder:`Save Startup Order`},areaSetup:{title:`Area Setup`,heading:`Area-based Bridge Setup`,description:`Automatically create one bridge per Home Assistant area. Each bridge will include all supported entities from that area.`,noAreas:`No areas with supported entities found in Home Assistant. Make sure your devices are assigned to areas in HA.`,selectController:`1. Select Controller (optional)`,selectAreas:`2. Select Areas ({{selected}} of {{total}})`,clear:`Clear`,createBridges:`Create {{count}} Bridge(s)`,results:`Results`,goToBridges:`Go to Bridges`,createdSuccess:`Created {{count}} bridge(s) successfully`,createdPartial:`Created {{succeeded}}, failed {{failed}} bridge(s)`,loadFailed:`Failed to load areas`,creating:`Creating...`,created:`Created`,unknownError:`Unknown error`},lockCredentials:{title:`Lock Credentials`,addCredential:`Add Lock Credential`,editCredential:`Edit Lock Credential`,lockEntityId:`Lock Entity ID`,lockEntityHelperText:`The Home Assistant entity ID of the lock`,pinCode:`PIN Code`,nameOptional:`Name (optional)`,namePlaceholder:`Front Door`,nameHelperText:`Friendly name for this credential`,entityRequired:`Entity ID is required`,pinLength:`PIN must be 4-8 digits`,pinDigitsOnly:`PIN must contain only digits`,saveFailed:`Failed to save`,loadFailed:`Failed to load credentials`,deleteFailed:`Failed to delete`,updateFailed:`Failed to update`,enable:`Enable`,disable:`Disable`,confirmDeleteTitle:`Delete Credential`,confirmDeleteMessage:`This will permanently delete the PIN credential for {{entity}}. This cannot be undone.`},labels:{title:`Filter Reference`,info:`Browse all available filter values for your bridge configuration. Click any value to copy it to your clipboard.`,searchPlaceholder:`Search...`,loadFailed:`Failed to load data`,labelsSection:`Labels`,labelsHint:`Use with filter type "entity_label" or "device_label". You can use either the display name or the label_id.`,noLabels:`No labels found in Home Assistant. Create labels under Settings > Labels.`,displayName:`Display Name`,labelId:`label_id`,areaId:`area_id`,areasSection:`Areas`,areasHint:`Use with filter type "area". Areas are also used for automatic room assignment in Matter controllers.`,noAreas:`No areas found in Home Assistant. Create areas under Settings > Areas.`,otherFilterValues:`Other Filter Values`,domains:`Domains`,domainsHint:`Use with filter type "domain".`,platforms:`Platforms / Integrations`,platformsHint:`Use with filter type "platform".`,entityCategories:`Entity Categories`,entityCategoriesHint:`Use with filter type "entity_category".`,deviceClasses:`Device Classes`,deviceClassesHint:`Use with filter type "device_class".`,deviceNames:`Device Names`,deviceNamesHint:`Use with filter type "device_name".`,productNames:`Product Names`,productNamesHint:`Use with filter type "product_name".`},logs:{title:`System Logs`,logLevel:`Log Level`,error:`Error`,warning:`Warning`,info:`Info`,debug:`Debug`,searchPlaceholder:`Search logs...`,noResults:`No logs found`,autoRefresh:`Auto Refresh`},backup:{title:`Backup & Restore`,description:`Create a full backup of your bridges and entity mappings, or restore from a previous backup.`,configBackup:`Config Backup`,configBackupDesc:`Export bridge configurations and entity mappings.`,configBackupNote:`Bridges will need to be re-commissioned after restore.`,fullBackup:`Full Backup (with Identity)`,fullBackupDesc:`Includes Matter identity files (keypairs, fabric credentials).`,fullBackupWarning:`Preserves commissioning state across restores. DONT SHARE!`,restoreFromBackup:`Restore from Backup`,restoreDesc:`Upload a previously created backup file to restore bridges and configurations.`,restoreTitle:`Restore Backup`,selectBridges:`Select bridges to restore`,overwriteExisting:`Overwrite existing bridges`,includeMappings:`Include entity mappings`,restoreIdentities:`Restore Matter identities (no re-commissioning needed)`,restore:`Restore`,downloadSuccess:`Backup downloaded successfully!`,restartRequired:`Restart Required`,restartMessage:`Bridges have been restored from backup. A restart is required for the changes to take effect.`,restartNote:`The application will restart and you may need to refresh this page.`,restartNow:`Restart Now`,storedBackups:`Stored Backups`,createSnapshot:`Create Backup`,noSnapshots:`No stored backups yet. Backups are created automatically on shutdown or can be created manually.`,downloadSnapshot:`Download`,restoreSnapshot:`Restore`,auto:`Auto`,manual:`Manual`,snapshotCreated:`Backup created successfully!`,snapshotRestored:`Restored {{bridges}} bridges, {{mappings}} mappings, {{identities}} identities.`,confirmRestore:`Confirm Restore`,confirmRestoreMessage:`Are you sure you want to restore from "{{filename}}"? This will overwrite your current configuration.`,restoreWarning:`All existing bridges and configurations will be overwritten. A restart is required after restore.`,confirmDelete:`Delete Backup`,confirmDeleteMessage:`Are you sure you want to delete "{{filename}}"? This action cannot be undone.`,settings:`Backup Settings`,autoBackupLabel:`Automatic Backup`,autoBackupDesc:`Automatically create a full backup when the application shuts down or restarts.`,retentionCount:`Keep Backups`,retentionCountDesc:`Number of backups to keep (oldest are deleted automatically)`},networkMap:{title:`Network Map`,hubLabel:`HAMH`,undoMove:`Undo last move`,resetLayout:`Reset layout`,refreshData:`Refresh data`,fullscreen:`Fullscreen`,exitFullscreen:`Exit Fullscreen`,legend:`Legend`,controller:`Controller`,hub:`HAMH Hub`,bridge:`Bridge`,device:`Device`,failed:`Failed`},updateChecker:{title:`Software Updates`,checkNow:`Check Now`,currentVersion:`Current Version`,latestVersion:`Latest Version`,updateAvailable:`Update available!`,upToDate:`You are running the latest version.`,releaseNotes:`Release Notes`,notAvailable:`Update check not available in this version`,checkFailed:`Failed to check for updates`,unreachable:`Unable to reach server`,instructionAddon:`Update via Settings → Add-ons in Home Assistant.`,instructionDocker:`Pull the latest image and recreate your container.`,instructionNpm:`Run: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Bridge Setup Wizard`,stepTemplate:`Template`,stepController:`Controller`,stepBridgeInfo:`Bridge Info`,stepEntityFilter:`Entity Filter`,stepFeatureFlags:`Feature Flags`,stepReview:`Review & Create`,autoCompose:`Auto Compose Devices`,autoForceSyncFlag:`Auto Force Sync`,invertCover:`Invert Cover Direction`,invertCoverDescription:`Swap open/close direction for covers. Use this if your covers show the wrong position in Matter controllers.`,includeHidden:`Include Hidden Entities`,includeHiddenDescription:`Also expose entities that are marked as hidden in Home Assistant.`,bridgeName:`Bridge Name`,portLabel:`Port`,portAutoAssign:`Automatically assigned to next available port`,nameRequired:`Please enter a bridge name`,createFailed:`Failed to create bridge`,bridgeInfoDescription:`Give your bridge a name and port.`,serverModeLabel:`Server Mode (for Robot Vacuums)`,serverModeTooltip:`Required for Robot Vacuums to work with Apple Home (Siri) and Alexa. Server Mode bridges support only ONE device.`,entityFilterDescription:`Configure which entities should be included in this bridge.`,includeAll:`Include all entities (wildcard)`,entityId:`Entity ID`,includePattern:`Include Pattern`,entityFilters:`Entity Filters`,serverModeEntityHint:`Server Mode supports only ONE device. Enter the exact entity ID (e.g., vacuum.my_vacuum).`,templatePreConfigured:`Pre-configured by template. Edit in the full editor after creation.`,wildcardHint:`Use * for all, or patterns like light.*, switch.*`,commaHint:`Enter specific entity IDs separated by commas`,excludePatterns:`Exclude Patterns (optional)`,excludeHelperText:`Patterns to exclude, comma-separated`,skipTemplate:`Skip Template`,creating:`Creating...`,createBridge:`Create Bridge`,searchRules:`Search rules...`,templateDescription:`Choose a template to get started quickly, or skip to create a custom bridge.`,controllerDescription:`Which Matter controller will you use? This optimizes feature flags for your controller.`,controllerHint:`You can always adjust feature flags in the next steps or after bridge creation.`,templateApplied:`Template "{{name}}" applied. Customize the name and port below.`,filterPreConfiguredFrom:`Filter is pre-configured from the "{{name}}" template. You can adjust it below.`,featureFlagsDescription:`Feature flags control how devices are exposed to Matter controllers.`,recommendedFlags:`Recommended flags for {{name}} are pre-selected.`,selectFlags:`Select the flags that match your setup.`,reviewDescription:`Review your bridge configuration:`,bridgesToCreate:`Bridges to create ({{count}})`,bridgesCreated:`{{count}} bridge(s) already created in this session`,addAnother:`Add Another`},footer:{github:`GitHub`,documentation:`Documentation`,support:`Support`},languageSwitcher:{disclaimer:`Translations may be incomplete.`,contribute:`Help improve them!`},translationEditor:{title:`Translation Editor`,editLanguage:`Edit Language`,info:`Edit translations directly in your browser. Changes are saved locally and applied instantly. Export your translations to submit them to the project.`,progress:`{{translated}} / {{total}} keys translated`,localEdits:`{{count}} local edit(s)`,searchPlaceholder:`Search keys or values...`,filterAll:`All keys`,filterMissing:`Missing`,filterEdited:`Edited`,exportJson:`Export JSON`,copyJson:`Copy JSON`,copied:`Copied!`,resetAll:`Reset all edits`,resetKey:`Reset to default`,noResults:`No matching translation keys found.`,addLanguage:`Add Language`,newLanguageCode:`Language Code (e.g. pt, ja, ko)`,newLanguageName:`Language Name (e.g. Português)`,addLanguageButton:`Add`,languageExists:`This language already exists.`,codeRequired:`Language code is required.`,nameRequired:`Language name is required.`,removeLanguage:`Remove Language`,removeLanguageConfirm:`Remove custom language "{{name}}"? All local edits for this language will be lost.`,importJson:`Import JSON`,importSuccess:`Imported {{count}} translation(s).`,importFailed:`Failed to import: invalid JSON format.`}},hs={common:{loading:`Cargando`,notFound:`No encontrado`,save:`Guardar`,cancel:`Cancelar`,delete:`Eliminar`,edit:`Editar`,close:`Cerrar`,refresh:`Actualizar`,search:`Buscar`,enabled:`Activado`,disabled:`Desactivado`,online:`En línea`,offline:`Sin conexión`,running:`En ejecución`,stopped:`Detenido`,failed:`Fallido`,starting:`Iniciando`,devices:`Dispositivos`,fabrics:`Fabrics`,port:`Puerto`,unknown:`Desconocido`,confirm:`Confirmar`,create:`Crear`,back:`Atrás`,next:`Siguiente`,actions:`Acciones`,name:`Nombre`,type:`Tipo`,error:`Error`,version:`Versión`,copy:`Copiar`,copied:`¡Copiado!`,copyId:`Copiar ID`,later:`Más tarde`,skip:`Omitir`,reset:`Restablecer`,update:`Actualizar`,all:`Todos`,ascending:`Ascendente`,descending:`Descendente`,moveUp:`Mover arriba`,moveDown:`Mover abajo`,selectAll:`Seleccionar todo`,selectNone:`No seleccionar ninguno`,live:`En vivo`,new:`Nuevo`,overwrite:`Sobrescribir`,active:`Activo`,property:`Propiedad`,value:`Valor`,custom:`Personalizado`,startAll:`Iniciar todos`,stopAll:`Detener todos`,restartAll:`Reiniciar todos`,import:`Importar`,export:`Exportar`,exportAll:`Exportar todo`,wizard:`Asistente`},nav:{bridges:`Bridges`,devices:`Todos los dispositivos`,health:`Estado y diagnósticos`,diagnostics:`Eventos en vivo`,settings:`Configuración`,networkMap:`Mapa de red`,logs:`Registros`,startupOrder:`Orden de inicio`,lockCredentials:`Credenciales de cerradura`,filterReference:`Referencia de filtros`,systemLogs:`Registros del sistema`,lightMode:`Modo claro`,darkMode:`Modo oscuro`},status:{error:`Error`,unhealthy:`No saludable`,noBridges:`Sin Bridges`,loadingHealth:`Cargando estado de salud...`,unknown:`Desconocido`},errorBoundary:{title:`Algo salió mal`,fallbackMessage:`Se produjo un error inesperado.`,reload:`Recargar página`},settings:{title:`Configuración`,language:`Idioma`,languageDescription:`Selecciona el idioma de la interfaz.`,checkUpdates:`Buscar actualizaciones`,backupRestore:`Copia de seguridad y restauración`,exportBackup:`Exportar copia de seguridad`,importBackup:`Importar copia de seguridad`,dangerZone:`Zona peligrosa`,resetAll:`Restablecer todo`,about:`Acerca de`,username:`Nombre de usuario`,password:`Contraseña`,enterNewPassword:`Ingresar nueva contraseña`,enableAuth:`Habilitar autenticación`,disableAuth:`Deshabilitar autenticación`,disableAuthMessage:`Esto eliminará la protección por contraseña de la interfaz web. Cualquiera en su red podrá acceder y modificar la configuración de su bridge.`,disableAuthConfirm:`Deshabilitar autenticación`,usernamePasswordRequired:`Se requiere nombre de usuario y contraseña`,authSaveFailed:`Error al guardar la configuración de autenticación`,authLoadFailed:`Error al cargar la configuración de autenticación`,authDisabled:`Autenticación deshabilitada.`,authRemoveFailed:`Error al eliminar la configuración de autenticación`},dashboard:{title:`Panel de control`,systemOverview:`Resumen del sistema`,quickActions:`Acciones rápidas`,bridgeOverview:`Resumen de Bridges`,noBridges:`No hay bridges configurados.`,createBridge:`Crear Bridge`,viewAll:`Ver todo`,totalDevices:`Total de dispositivos`,customize:`Personalizar`,startAll:`Iniciar todos`,stopAll:`Detener todos`,restartAll:`Reiniciar todos`,welcome:`Bienvenido a Home Assistant Matter Hub`,welcomeDescription:`Conecta tus dispositivos de Home Assistant a controladores Matter como Apple Home, Google Home y Amazon Alexa.`,bridgeWizard:`Asistente de Bridge`,setupByArea:`Configurar por área`,manualSetup:`Configuración manual`,areaSetup:`Configuración por área`,documentation:`Documentación`,quickNavigation:`Navegación rápida`,haConnection:`Conexión HA`,startupOrder:`Orden de inicio`,lockCredentials:`Credenciales de cerradura`,filterReference:`Referencia de filtros`,successMessage:`Tus bridges están conectados a {{count}} fabric(s) de controlador. Los dispositivos deberían aparecer ahora en tu aplicación.`,noBridgesHint:`No hay bridges configurados. Usa el asistente o crea uno manualmente.`,customizeDashboard:`Personalizar panel de control`,bridgeStatusRunning:`{{running}} en ejecución`,bridgeStatusFailed:`{{failed}} fallidos`,devicesFailed:`{{count}} fallidos`,uptimeFormat:`{{time}}`},bridge:{name:`Nombre del Bridge`,port:`Puerto`,status:`Estado`,pairHint:`Vincular este bridge con tu controlador`,pairDescription:`Abre tu aplicación de controlador (Apple Home, Google Home o Amazon Alexa), añade un nuevo accesorio y escanea el código QR o introduce el código de vinculación manual. Asegúrate de que tu controlador esté en la misma red que Home Assistant.`,failedEntities:`Entidades fallidas`,serverModeRecommended:`Modo Servidor recomendado para aspiradoras robot`,serverModeDescription:`Este bridge contiene una aspiradora robot en modo puente. Apple Home y Alexa mostrarán el bridge como dispositivo adicional, creando duplicados. Activa el Modo Servidor para exponer la aspiradora como dispositivo Matter independiente.`,enableServerMode:`Activar Modo Servidor`,enabling:`Activando...`,start:`Iniciar`,stop:`Detener`,restart:`Reiniciar`,factoryReset:`Restablecimiento de fábrica`,pairingCode:`Código de vinculación`,openCommissioning:`Abrir ventana de puesta en servicio`,multiPair:`Vinculación Multi-Fabric`,deleteBridge:`Eliminar Bridge`,deleteConfirm:`¿Estás seguro de que quieres eliminar este bridge?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entidad(es) no se pudieron cargar.`,clickToShow:`Haz clic para mostrar detalles.`,clickToHide:`Haz clic para ocultar detalles.`,loadFailed:`No se pudieron cargar los detalles del Bridge`,refreshHint:`Los nuevos dispositivos y cambios de etiquetas se detectan cada 30 segundos.`,refreshingStates:`Actualizando estados en {{seconds}} segundos...`,serverModeSingleDeviceNote:`Nota: El Modo Servidor requiere que la aspiradora sea el único dispositivo en este bridge. Elimina primero las otras entidades y luego activa el Modo Servidor en la configuración del bridge.`,serverModeEnabled:`Modo Servidor activado. El bridge se reiniciará con tu aspiradora como dispositivo independiente.`,serverModeEnableFailed:`No se pudo activar el Modo Servidor: {{error}}`,pairing:`Vinculación`,bridgeInfo:`Info del Bridge`,commissioned:`Vinculado`,addController:`Añadir otro controlador`,openingCommissioning:`Abriendo ventana de puesta en servicio...`,fabricTooltip:`Un fabric representa una conexión a un controlador Matter (ej. Apple Home, Google Home, Alexa). Cada controlador crea un fabric cuando se vincula.`,forceSync:`Forzar sincronización`,syncing:`Sincronizando...`,forceSyncTooltip:`Sincronizar todos los estados actuales de los dispositivos con los controladores conectados`,editFilters:`Editar filtros`,addFilters:`Añadir filtros`,bridgeNotRunning:`El bridge no está funcionando. Inicia el bridge para ver la información de vinculación.`,manualCode:`Código manual`,openingWindow:`Abriendo ventana de puesta en servicio...`,bridgeId:`ID del Bridge`,passcode:`Código de acceso`,discriminator:`Discriminador`,connectedFabrics:`Fabrics conectados ({{count}})`,noFabrics:`Ningún controlador conectado. Escanea el código QR con tu controlador Matter.`,entityFilters:`Filtros de entidades`,noFilters:`Sin filtros configurados. Todas las entidades compatibles serán expuestas.`,scanQrCode:`Escanea este código QR con tu controlador Matter (Apple Home, Google Home, Alexa, etc.) para añadir este bridge a otro ecosistema.`,appleHomeWarning:`Este bridge utiliza el modo Plano Extendido. Solo desactive esto si usa exclusivamente Apple Home.`,googleHomeWarning:`Esto puede causar problemas con Apple Home y Google Home.`,resetSuccess:`Bridge restablecido correctamente`,deleteSuccess:`Bridge eliminado correctamente`,confirmResetTitle:`Restablecer Bridge`,confirmResetMessage:`Esto eliminará toda la información de vinculación y restablecerá el bridge a su estado inicial. Los controladores conectados perderán el acceso. Esto no se puede deshacer.`,confirmDeleteTitle:`Eliminar Bridge`,confirmDeleteMessage:`Esto eliminará permanentemente el bridge, todas sus vinculaciones y mapeos de entidades. Los controladores conectados perderán el acceso. Esto no se puede deshacer.`,importTitle:`Importar Bridges`,overwriteExisting:`Sobrescribir bridges existentes`,iconLabel:`Icono del Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`Modo Servidor`,autoForceSync:`Sincronización automática`,saveSuccess:`Bridge guardado`,updateSuccess:`Actualización completada`,exportFailed:`Error en la exportación`,actionStarted:`Iniciado`,actionStopped:`Detenido`,actionRestarted:`Reiniciado`,actionFailed:`{{action}} fallido`,actionResult:`{{label}} {{count}} bridge(s)`,couldNotLoad:`No se pudieron cargar los bridges`,showingFirst:`Mostrando los primeros {{count}}`,importParseFailed:`No se pudo analizar el archivo de importación. Selecciona un archivo de exportación válido.`,importing:`Importando...`,importCount:`Importar {{count}} bridge(s)`,jsonEditor:`Editor JSON`,formEditor:`Editor de formulario`},endpoints:{title:`Endpoints`,searchPlaceholder:`Buscar endpoints...`,sortBy:`Ordenar`,sortName:`Nombre`,sortEndpoint:`ID Endpoint`,sortType:`Tipo`,cardView:`Vista de tarjetas`,treeView:`Vista de árbol`,clusters:`Clusters`,entityUnavailable:`Entidad no disponible`,showUnavailable:`Mostrar {{count}} no disponibles`,showAll:`Mostrar todas las entidades`,uploadImage:`Subir imagen de dispositivo`,removeImage:`Eliminar imagen personalizada`,editMapping:`Editar mapeo de entidad`,homeAssistantEntity:`Entidad Home Assistant`,noEndpoints:`No se encontraron endpoints.`,expandAll:`Expandir todo`,collapseAll:`Contraer todo`,viewAll:`Ver todos los dispositivos`,haState:`Estado HA`,aboutEndpoint:`Acerca de este endpoint`,entityId:`ID de entidad`,customName:`Nombre personalizado`,deviceTypeOverride:`Anulación de tipo de dispositivo`,keyHaAttributes:`Atributos HA clave`,entityMappings:`Mapeos de entidades`,copyData:`Copiar datos al portapapeles`,behavior:`Comportamiento`},health:{title:`Estado y diagnósticos`,version:`Versión`,uptime:`Tiempo de actividad`,homeAssistant:`Home Assistant`,connected:`Conectado`,disconnected:`Desconectado`,bridgeStatus:`Estado de Bridges`,refreshHealth:`Actualizar datos de salud`,exportDiagnostic:`Exportar diagnóstico`,memory:`Memoria`,fabricDetails:`Detalles de Fabric`,sessions:`Sesiones`,subscriptions:`Suscripciones`,noFabrics:`No hay fabrics conectados`,systemMetrics:`Métricas del sistema`,heap:`Heap`,rss:`RSS`,external:`Externo`,systemHealth:`Salud del sistema`,fetchFailed:`No se pudo obtener el estado de salud`,connectionError:`Error de conexión`,exportFailed:`No se pudieron exportar los datos de diagnóstico`,restartFailed:`No se pudo reiniciar el bridge`,unableToLoad:`No se pudo cargar el estado de salud`,sortBy:`Ordenar por`,created:`Creado`,ascending:`Ascendente`,descending:`Descendente`,connectedTo:`Conectado a`,autoRecovery:`Recuperación automática`,recoveryAttempts:`Intentos de recuperación`,fabrics:`fabrics`,networkDiagnostics:`Diagnósticos de red`,checksPassed:`aprobados`,checksWarning:`advertencias`,checksFailed:`fallidos`,hideDetails:`Ocultar detalles`,showDetails:`Mostrar detalles`,allChecks:`Todas las comprobaciones`,check:`Comprobación`,statusLabel:`Estado`,message:`Mensaje`,networkInterfaces:`Interfaces de red`,interfaceName:`Interfaz`,refresh:`Actualizar`},mapping:{title:`Mapeos de entidades`,entityId:`ID Entidad`,deviceType:`Tipo de dispositivo`,customName:`Nombre personalizado`,status:`Estado`,addMapping:`Añadir mapeo`,editMapping:`Editar mapeo`,deleteMapping:`Eliminar mapeo`,saved:`Mapeo guardado para {{entityId}}. Reinicia el bridge para aplicar los cambios.`,saveFailed:`No se pudo guardar el mapeo: {{error}}`,deleted:`Mapeo eliminado para {{entityId}}.`,deleteFailed:`No se pudo eliminar el mapeo.`,matterTag:`Etiqueta Matter`,exportProfile:`Exportar perfil de mapeo`,importProfile:`Importar perfil de mapeo`,profileName:`Nombre del perfil`,match:`Coincidencia`,existing:`Existente`,autoDetect:`Detección automática (predeterminado)`,customProductName:`Nombre de producto personalizado`,customProductNameHelp:`Sobrescribe el nombre del producto (modelo) reportado a los controladores Matter. Algunos controladores (ej. Aqara) muestran esto como el nombre del dispositivo.`,customVendorName:`Nombre de proveedor personalizado`,customVendorNameHelp:`Sobrescribe el nombre del proveedor/fabricante reportado a los controladores Matter.`,customSerialNumber:`Número de serie personalizado`,customSerialNumberHelp:`Sobrescribe el número de serie reportado a los controladores Matter.`,loadFailed:`No se pudieron cargar los mapeos de entidades`,noMappings:`No hay mapeos de entidades configurados. Use mapeos para sobrescribir tipos de dispositivos Matter, establecer nombres personalizados o deshabilitar entidades específicas.`,applying:`Aplicando...`,applyCount:`Aplicar {{count}} mapeo(s)`},notFound:{title:`Página no encontrada`,description:`La página que buscas no existe.`,backToDashboard:`Volver al panel de control`},devices:{title:`Dispositivos`,searchPlaceholder:`Buscar dispositivos...`,filterBridge:`Bridge`,allBridges:`Todos los bridges`,filterDeviceType:`Tipo de dispositivo`,allTypes:`Todos los tipos`,sortBy:`Ordenar por`,sortBridge:`Bridge`,sortType:`Tipo de dispositivo`,sortName:`Nombre`,deviceCount:`{{count}} dispositivo(s)`,filteredCount:`{{filtered}} de {{total}} dispositivos`},diagnostics:{title:`Diagnósticos en vivo`,stateUpdate:`Actualización de estado`,command:`Comando`,entityError:`Error`,sessionOpen:`Sesión abierta`,sessionClose:`Sesión cerrada`,subscription:`Suscripción`,bridgeStart:`Inicio de bridge`,bridgeStop:`Parada de bridge`,entityWarning:`Advertencia`,filterEvents:`Filtrar tipos de eventos`,clearEvents:`Borrar todos los eventos`,noEvents:`No hay eventos que coincidan con los filtros actuales.`},startup:{title:`Orden de inicio`,description:`Arrastra y suelta bridges para establecer el orden de inicio. Las posiciones más bajas se inician primero.`,saveSuccess:`Orden de inicio guardado correctamente`,saveFailed:`Error al guardar el orden de inicio`,saveChanges:`Guardar cambios`,unsavedChanges:`Tienes cambios sin guardar en el orden de inicio.`,noBridges:`No hay bridges configurados aún.`,saveOrder:`Guardar orden de inicio`},areaSetup:{title:`Configuración por área`,heading:`Configuración de bridge basada en áreas`,description:`Crea automáticamente un bridge por área de Home Assistant. Cada bridge incluirá todas las entidades compatibles de esa área.`,noAreas:`No se encontraron áreas con entidades compatibles en Home Assistant. Asegúrate de que tus dispositivos estén asignados a áreas en HA.`,selectController:`1. Seleccionar controlador (opcional)`,selectAreas:`2. Seleccionar áreas ({{selected}} de {{total}})`,clear:`Limpiar`,createBridges:`Crear {{count}} bridge(s)`,results:`Resultados`,goToBridges:`Ir a Bridges`,createdSuccess:`{{count}} bridge(s) creados correctamente`,createdPartial:`Creados {{succeeded}}, fallidos {{failed}} bridge(s)`,loadFailed:`Error al cargar las áreas`,creating:`Creando...`,created:`Creado`,unknownError:`Error desconocido`},lockCredentials:{title:`Credenciales de cerradura`,addCredential:`Añadir credencial`,editCredential:`Editar credencial`,lockEntityId:`ID de entidad de cerradura`,lockEntityHelperText:`El ID de entidad de Home Assistant de la cerradura`,pinCode:`Código PIN`,nameOptional:`Nombre (opcional)`,namePlaceholder:`Puerta principal`,nameHelperText:`Nombre descriptivo para esta credencial`,entityRequired:`El ID de entidad es obligatorio`,pinLength:`El PIN debe tener entre 4 y 8 dígitos`,pinDigitsOnly:`El PIN solo debe contener dígitos`,saveFailed:`Error al guardar`,loadFailed:`Error al cargar credenciales`,deleteFailed:`Error al eliminar`,updateFailed:`Error al actualizar`,enable:`Habilitar`,disable:`Deshabilitar`,confirmDeleteTitle:`Eliminar credencial`,confirmDeleteMessage:`Esto eliminará permanentemente la credencial PIN para {{entity}}. Esto no se puede deshacer.`},labels:{title:`Referencia de filtros`,info:`Explora todos los valores de filtro disponibles para la configuración de tu bridge. Haz clic en cualquier valor para copiarlo al portapapeles.`,searchPlaceholder:`Buscar...`,loadFailed:`Error al cargar datos`,labelsSection:`Etiquetas`,labelsHint:`Úsalo con el tipo de filtro "entity_label" o "device_label". Puedes usar el nombre de visualización o el label_id.`,noLabels:`No se encontraron etiquetas en Home Assistant. Crea etiquetas en Configuración > Etiquetas.`,displayName:`Nombre de visualización`,labelId:`label_id`,areaId:`area_id`,areasSection:`Áreas`,areasHint:`Úsalo con el tipo de filtro "area". Las áreas también se usan para la asignación automática de habitaciones en los controladores Matter.`,noAreas:`No se encontraron áreas en Home Assistant. Crea áreas en Configuración > Áreas.`,otherFilterValues:`Otros valores de filtro`,domains:`Dominios`,domainsHint:`Úsalo con el tipo de filtro "domain".`,platforms:`Plataformas / Integraciones`,platformsHint:`Úsalo con el tipo de filtro "platform".`,entityCategories:`Categorías de entidad`,entityCategoriesHint:`Úsalo con el tipo de filtro "entity_category".`,deviceClasses:`Clases de dispositivo`,deviceClassesHint:`Úsalo con el tipo de filtro "device_class".`,deviceNames:`Nombres de dispositivo`,deviceNamesHint:`Úsalo con el tipo de filtro "device_name".`,productNames:`Nombres de producto`,productNamesHint:`Úsalo con el tipo de filtro "product_name".`},logs:{title:`Registros del sistema`,logLevel:`Nivel de registro`,error:`Error`,warning:`Advertencia`,info:`Información`,debug:`Depuración`,searchPlaceholder:`Buscar registros...`,noResults:`No se encontraron registros`,autoRefresh:`Actualización automática`},backup:{title:`Copia de seguridad y restauración`,description:`Crea una copia de seguridad completa de tus bridges y mapeos de entidades, o restaura desde una copia de seguridad anterior.`,configBackup:`Copia de seguridad de configuración`,configBackupDesc:`Exportar configuraciones de bridge y mapeos de entidades.`,configBackupNote:`Los bridges deberán ser puestos en servicio nuevamente después de la restauración.`,fullBackup:`Copia de seguridad completa (con identidad)`,fullBackupDesc:`Incluye archivos de identidad de Matter (pares de claves, credenciales de fabric).`,fullBackupWarning:`Conserva el estado de puesta en servicio en las restauraciones. ¡NO COMPARTIR!`,restoreFromBackup:`Restaurar desde copia de seguridad`,restoreDesc:`Sube un archivo de copia de seguridad creado previamente para restaurar bridges y configuraciones.`,restoreTitle:`Restaurar copia de seguridad`,selectBridges:`Seleccionar bridges para restaurar`,overwriteExisting:`Sobrescribir bridges existentes`,includeMappings:`Incluir mapeos de entidades`,restoreIdentities:`Restaurar identidades Matter (no requiere nueva puesta en servicio)`,restore:`Restaurar`,downloadSuccess:`¡Copia de seguridad descargada correctamente!`,restartRequired:`Reinicio requerido`,restartMessage:`Los bridges han sido restaurados desde la copia de seguridad. Se requiere un reinicio para que los cambios surtan efecto.`,restartNote:`La aplicación se reiniciará y es posible que debas actualizar esta página.`,restartNow:`Reiniciar ahora`,storedBackups:`Copias de seguridad almacenadas`,createSnapshot:`Crear copia de seguridad`,noSnapshots:`No hay copias de seguridad almacenadas aún. Se crean automáticamente al apagar o se pueden crear manualmente.`,downloadSnapshot:`Descargar`,restoreSnapshot:`Restaurar`,auto:`Automático`,manual:`Manual`,snapshotCreated:`¡Copia de seguridad creada correctamente!`,snapshotRestored:`Restaurados {{bridges}} bridges, {{mappings}} mapeos, {{identities}} identidades.`,confirmRestore:`Confirmar restauración`,confirmRestoreMessage:`¿Estás seguro de que quieres restaurar desde "{{filename}}"? Esto sobrescribirá tu configuración actual.`,restoreWarning:`Todos los bridges y configuraciones existentes serán sobrescritos. Se requiere un reinicio después de la restauración.`,confirmDelete:`Eliminar copia de seguridad`,confirmDeleteMessage:`¿Estás seguro de que quieres eliminar "{{filename}}"? Esta acción no se puede deshacer.`,settings:`Configuración de copia de seguridad`,autoBackupLabel:`Copia de seguridad automática`,autoBackupDesc:`Crea automáticamente una copia de seguridad completa cuando la aplicación se apaga o reinicia.`,retentionCount:`Conservar copias de seguridad`,retentionCountDesc:`Número de copias de seguridad a conservar (las más antiguas se eliminan automáticamente)`},networkMap:{title:`Mapa de red`,hubLabel:`HAMH`,undoMove:`Deshacer último movimiento`,resetLayout:`Restablecer diseño`,refreshData:`Actualizar datos`,fullscreen:`Pantalla completa`,exitFullscreen:`Salir de pantalla completa`,legend:`Leyenda`,controller:`Controlador`,hub:`Hub HAMH`,bridge:`Bridge`,device:`Dispositivo`,failed:`Fallido`},updateChecker:{title:`Actualizaciones de software`,checkNow:`Comprobar ahora`,currentVersion:`Versión actual`,latestVersion:`Última versión`,updateAvailable:`¡Actualización disponible!`,upToDate:`Estás ejecutando la última versión.`,releaseNotes:`Notas de la versión`,notAvailable:`Comprobación de actualizaciones no disponible en esta versión`,checkFailed:`Error al comprobar actualizaciones`,unreachable:`No se puede acceder al servidor`,instructionAddon:`Actualiza en Configuración → Complementos en Home Assistant.`,instructionDocker:`Descarga la última imagen y vuelve a crear tu contenedor.`,instructionNpm:`Ejecuta: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Asistente de configuración de Bridge`,stepTemplate:`Plantilla`,stepController:`Controlador`,stepBridgeInfo:`Info del Bridge`,stepEntityFilter:`Filtro de entidades`,stepFeatureFlags:`Feature Flags`,stepReview:`Revisar y crear`,autoCompose:`Composición automática de dispositivos`,autoForceSyncFlag:`Sincronización forzada automática`,invertCover:`Invertir dirección de persiana`,invertCoverDescription:`Intercambia la dirección de abrir/cerrar para persianas. Usa esto si tus persianas muestran la posición incorrecta en los controladores Matter.`,includeHidden:`Incluir entidades ocultas`,includeHiddenDescription:`También expone entidades que están marcadas como ocultas en Home Assistant.`,bridgeName:`Nombre del Bridge`,portLabel:`Puerto`,portAutoAssign:`Asignado automáticamente al siguiente puerto disponible`,nameRequired:`Por favor, introduce un nombre para el bridge`,createFailed:`Error al crear el bridge`,bridgeInfoDescription:`Dale a tu bridge un nombre y un puerto.`,serverModeLabel:`Modo Servidor (para aspiradoras robot)`,serverModeTooltip:`Requerido para que las aspiradoras robot funcionen con Apple Home (Siri) y Alexa. Los bridges en Modo Servidor admiten solo UN dispositivo.`,entityFilterDescription:`Configura qué entidades deben incluirse en este bridge.`,includeAll:`Incluir todas las entidades (comodín)`,entityId:`ID de entidad`,includePattern:`Patrón de inclusión`,entityFilters:`Filtros de entidades`,serverModeEntityHint:`El Modo Servidor admite solo UN dispositivo. Introduce el ID exacto de la entidad (ej. vacuum.mi_aspiradora).`,templatePreConfigured:`Preconfigurado por plantilla. Edítalo en el editor completo después de la creación.`,wildcardHint:`Usa * para todo, o patrones como light.*, switch.*`,commaHint:`Introduce IDs de entidades específicos separados por comas`,excludePatterns:`Patrones de exclusión (opcional)`,excludeHelperText:`Patrones a excluir, separados por comas`,skipTemplate:`Omitir plantilla`,creating:`Creando...`,createBridge:`Crear Bridge`,searchRules:`Buscar reglas...`,templateDescription:`Elige una plantilla para empezar rápidamente, o omite para crear un bridge personalizado.`,controllerDescription:`¿Qué controlador Matter usarás? Esto optimiza los feature flags para tu controlador.`,controllerHint:`Siempre puedes ajustar los feature flags en los siguientes pasos o después de crear el bridge.`,templateApplied:`Plantilla "{{name}}" aplicada. Personaliza el nombre y el puerto a continuación.`,filterPreConfiguredFrom:`El filtro está preconfigurado desde la plantilla "{{name}}". Puedes ajustarlo a continuación.`,featureFlagsDescription:`Los feature flags controlan cómo se exponen los dispositivos a los controladores Matter.`,recommendedFlags:`Los flags recomendados para {{name}} están preseleccionados.`,selectFlags:`Selecciona los flags que coincidan con tu configuración.`,reviewDescription:`Revisa la configuración de tu bridge:`,bridgesToCreate:`Bridges a crear ({{count}})`,bridgesCreated:`{{count}} bridge(s) ya creados en esta sesión`,addAnother:`Añadir otro`},footer:{github:`GitHub`,documentation:`Documentación`,support:`Soporte`},languageSwitcher:{disclaimer:`Las traducciones pueden estar incompletas.`,contribute:`¡Ayuda a mejorarlas!`},translationEditor:{title:`Editor de traducciones`,editLanguage:`Idioma a editar`,info:`Edita traducciones directamente en tu navegador. Los cambios se guardan localmente y se aplican al instante. Exporta tus traducciones para enviarlas al proyecto.`,progress:`{{translated}} / {{total}} claves traducidas`,localEdits:`{{count}} edición(es) local(es)`,searchPlaceholder:`Buscar claves o valores...`,filterAll:`Todas las claves`,filterMissing:`Faltantes`,filterEdited:`Editadas`,exportJson:`Exportar JSON`,copyJson:`Copiar JSON`,copied:`¡Copiado!`,resetAll:`Restablecer todas las ediciones`,resetKey:`Restablecer al valor predeterminado`,noResults:`No se encontraron claves de traducción coincidentes.`,addLanguage:`Añadir idioma`,newLanguageCode:`Código de idioma (ej. pt, ja, ko)`,newLanguageName:`Nombre del idioma (ej. Português)`,addLanguageButton:`Añadir`,languageExists:`Este idioma ya existe.`,codeRequired:`El código de idioma es obligatorio.`,nameRequired:`El nombre del idioma es obligatorio.`,removeLanguage:`Eliminar idioma`,removeLanguageConfirm:`¿Eliminar el idioma personalizado "{{name}}"? Todas las ediciones locales para este idioma se perderán.`,importJson:`Importar JSON`,importSuccess:`{{count}} traducción(es) importada(s).`,importFailed:`Error en la importación: formato JSON inválido.`}},gs={common:{loading:`Chargement`,notFound:`Introuvable`,save:`Enregistrer`,cancel:`Annuler`,delete:`Supprimer`,edit:`Modifier`,close:`Fermer`,refresh:`Actualiser`,search:`Rechercher`,enabled:`Activé`,disabled:`Désactivé`,online:`En ligne`,offline:`Hors ligne`,running:`En cours`,stopped:`Arrêté`,failed:`Échoué`,starting:`Démarrage`,devices:`Appareils`,fabrics:`Fabrics`,port:`Port`,unknown:`Inconnu`,confirm:`Confirmer`,create:`Créer`,back:`Retour`,next:`Suivant`,actions:`Actions`,name:`Nom`,type:`Type`,error:`Erreur`,version:`Version`,copy:`Copier`,copied:`Copié !`,copyId:`Copier l'ID`,later:`Plus tard`,skip:`Passer`,reset:`Réinitialiser`,update:`Mettre à jour`,all:`Tous`,ascending:`Croissant`,descending:`Décroissant`,moveUp:`Monter`,moveDown:`Descendre`,selectAll:`Tout sélectionner`,selectNone:`Aucune sélection`,live:`En direct`,new:`Nouveau`,overwrite:`Écraser`,active:`Actif`,property:`Propriété`,value:`Valeur`,custom:`Personnalisé`,startAll:`Tout démarrer`,stopAll:`Tout arrêter`,restartAll:`Tout redémarrer`,import:`Importer`,export:`Exporter`,exportAll:`Tout exporter`,wizard:`Assistant`},nav:{bridges:`Bridges`,devices:`Tous les appareils`,health:`Santé & Diagnostics`,diagnostics:`Événements en direct`,settings:`Paramètres`,networkMap:`Carte réseau`,logs:`Journaux`,startupOrder:`Ordre de démarrage`,lockCredentials:`Identifiants verrou`,filterReference:`Référence des filtres`,systemLogs:`Journaux système`,lightMode:`Mode clair`,darkMode:`Mode sombre`},status:{error:`Erreur`,unhealthy:`Défaillant`,noBridges:`Aucun Bridge`,loadingHealth:`Chargement de l'état de santé...`,unknown:`Inconnu`},errorBoundary:{title:`Une erreur est survenue`,fallbackMessage:`Une erreur inattendue s'est produite.`,reload:`Recharger la page`},settings:{title:`Paramètres`,language:`Langue`,languageDescription:`Sélectionnez la langue de l'interface.`,checkUpdates:`Vérifier les mises à jour`,backupRestore:`Sauvegarde & Restauration`,exportBackup:`Exporter la sauvegarde`,importBackup:`Importer la sauvegarde`,dangerZone:`Zone dangereuse`,resetAll:`Tout réinitialiser`,about:`À propos`},dashboard:{title:`Tableau de bord`,systemOverview:`Vue d'ensemble du système`,quickActions:`Actions rapides`,bridgeOverview:`Vue d'ensemble des Bridges`,noBridges:`Aucun bridge configuré.`,createBridge:`Créer un Bridge`,viewAll:`Tout afficher`,totalDevices:`Total des appareils`,customize:`Personnaliser`,startAll:`Tout démarrer`,stopAll:`Tout arrêter`,restartAll:`Tout redémarrer`,welcome:`Bienvenue sur Home Assistant Matter Hub`,welcomeDescription:`Connectez vos appareils Home Assistant aux contrôleurs Matter comme Apple Home, Google Home et Amazon Alexa.`,bridgeWizard:`Assistant Bridge`,setupByArea:`Configurer par zone`,manualSetup:`Configuration manuelle`,areaSetup:`Configuration par zone`,documentation:`Documentation`,quickNavigation:`Navigation rapide`,haConnection:`Connexion HA`,startupOrder:`Ordre de démarrage`,lockCredentials:`Identifiants verrou`,filterReference:`Référence des filtres`,successMessage:`Vos bridges sont connectés à {{count}} fabric(s) contrôleur. Les appareils devraient maintenant apparaître dans votre application.`,noBridgesHint:`Aucun bridge configuré. Utilisez l'assistant ou créez-en un manuellement.`,customizeDashboard:`Personnaliser le tableau de bord`},bridge:{name:`Nom du Bridge`,port:`Port`,status:`Statut`,pairHint:`Associer ce bridge à votre contrôleur`,pairDescription:`Ouvrez votre application contrôleur (Apple Home, Google Home ou Amazon Alexa), ajoutez un nouvel accessoire et scannez le QR code ou entrez le code d'appairage manuel. Assurez-vous que votre contrôleur est sur le même réseau que Home Assistant.`,failedEntities:`Entités échouées`,serverModeRecommended:`Mode Serveur recommandé pour les aspirateurs robots`,serverModeDescription:`Ce bridge contient un aspirateur robot en mode ponté. Apple Home et Alexa afficheront le bridge comme appareil supplémentaire, créant des doublons. Activez le Mode Serveur pour exposer l'aspirateur comme appareil Matter autonome.`,enableServerMode:`Activer le Mode Serveur`,enabling:`Activation...`,start:`Démarrer`,stop:`Arrêter`,restart:`Redémarrer`,factoryReset:`Réinitialisation d'usine`,pairingCode:`Code d'appairage`,openCommissioning:`Ouvrir la fenêtre de mise en service`,multiPair:`Appairage Multi-Fabric`,deleteBridge:`Supprimer le Bridge`,deleteConfirm:`Êtes-vous sûr de vouloir supprimer ce bridge ?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entité(s) n'ont pas pu être chargées.`,clickToShow:`Cliquez pour afficher les détails.`,clickToHide:`Cliquez pour masquer les détails.`,loadFailed:`Impossible de charger les détails du Bridge`,refreshHint:`Les nouveaux appareils et les changements de labels sont détectés toutes les 30 secondes.`,refreshingStates:`Actualisation dans {{seconds}} secondes...`,serverModeSingleDeviceNote:`Remarque : Le Mode Serveur nécessite que l'aspirateur soit le seul appareil sur ce bridge. Supprimez d'abord les autres entités, puis activez le Mode Serveur dans les paramètres du bridge.`,serverModeEnabled:`Mode Serveur activé. Le bridge va redémarrer avec votre aspirateur comme appareil autonome.`,serverModeEnableFailed:`Impossible d'activer le Mode Serveur : {{error}}`,pairing:`Appairage`,bridgeInfo:`Info Bridge`,commissioned:`Appairé`,addController:`Ajouter un autre contrôleur`,forceSync:`Forcer la synchronisation`,syncing:`Synchronisation...`,editFilters:`Modifier les filtres`,addFilters:`Ajouter des filtres`,bridgeNotRunning:`Le bridge ne fonctionne pas. Démarrez le bridge pour voir les informations d'appairage.`,manualCode:`Code manuel`,bridgeId:`ID Bridge`,passcode:`Code d'accès`,discriminator:`Discriminateur`,connectedFabrics:`Fabrics connectés ({{count}})`,noFabrics:`Aucun contrôleur connecté. Scannez le QR code avec votre contrôleur Matter.`,entityFilters:`Filtres d'entités`,noFilters:`Aucun filtre configuré. Toutes les entités prises en charge seront exposées.`,resetSuccess:`Bridge réinitialisé avec succès`,deleteSuccess:`Bridge supprimé avec succès`,confirmResetTitle:`Réinitialiser le Bridge`,confirmDeleteTitle:`Supprimer le Bridge`,importTitle:`Importer des Bridges`,overwriteExisting:`Écraser les bridges existants`,iconLabel:`Icône du Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`Mode Serveur`,autoForceSync:`Synchronisation automatique`,saveSuccess:`Bridge enregistré`,updateSuccess:`Mise à jour terminée`,exportFailed:`Échec de l'export`,actionStarted:`Démarré`,actionStopped:`Arrêté`,actionRestarted:`Redémarré`,actionFailed:`{{action}} échoué`,actionResult:`{{label}} {{count}} bridge(s)`,couldNotLoad:`Impossible de charger les bridges`,showingFirst:`Affichage des {{count}} premiers`,importParseFailed:`Impossible d'analyser le fichier d'import. Veuillez sélectionner un fichier d'export valide.`,importing:`Importation...`,importCount:`Importer {{count}} bridge(s)`,jsonEditor:`Éditeur JSON`,formEditor:`Éditeur de formulaire`},endpoints:{title:`Points de terminaison`,searchPlaceholder:`Rechercher des endpoints...`,sortBy:`Trier`,sortName:`Nom`,sortEndpoint:`ID Endpoint`,sortType:`Type`,cardView:`Vue en cartes`,treeView:`Vue arborescente`,clusters:`Clusters`,entityUnavailable:`Entité indisponible`,showUnavailable:`Afficher {{count}} indisponibles`,showAll:`Afficher toutes les entités`,uploadImage:`Télécharger une image d'appareil`,removeImage:`Supprimer l'image personnalisée`,editMapping:`Modifier le mappage d'entité`,homeAssistantEntity:`Entité Home Assistant`,noEndpoints:`Aucun endpoint trouvé.`,expandAll:`Tout développer`,collapseAll:`Tout réduire`,viewAll:`Voir tous les appareils`,haState:`État HA`,aboutEndpoint:`À propos de cet endpoint`,entityId:`ID Entité`,customName:`Nom personnalisé`,deviceTypeOverride:`Remplacement du type d'appareil`,keyHaAttributes:`Attributs HA clés`,entityMappings:`Mappages d'entités`,copyData:`Copier les données dans le presse-papiers`,behavior:`Comportement`},health:{title:`Santé & Diagnostics`,version:`Version`,uptime:`Temps de fonctionnement`,homeAssistant:`Home Assistant`,connected:`Connecté`,disconnected:`Déconnecté`,bridgeStatus:`Statut des Bridges`,refreshHealth:`Actualiser les données de santé`,exportDiagnostic:`Exporter le diagnostic`,memory:`Mémoire`,fabricDetails:`Détails Fabric`,sessions:`Sessions`,subscriptions:`Abonnements`,noFabrics:`Aucun fabric connecté`,systemMetrics:`Métriques système`,heap:`Heap`,rss:`RSS`,external:`Externe`,systemHealth:`Santé du système`,fetchFailed:`Impossible de récupérer l'état de santé`,connectionError:`Erreur de connexion`,exportFailed:`Impossible d'exporter les données de diagnostic`,restartFailed:`Impossible de redémarrer le bridge`,unableToLoad:`Impossible de charger l'état de santé`,sortBy:`Trier par`,created:`Créé`,ascending:`Croissant`,descending:`Décroissant`,connectedTo:`Connecté à`,autoRecovery:`Récupération automatique`,recoveryAttempts:`Tentatives de récupération`},mapping:{title:`Mappages d'entités`,entityId:`ID Entité`,deviceType:`Type d'appareil`,customName:`Nom personnalisé`,status:`Statut`,addMapping:`Ajouter un mappage`,editMapping:`Modifier le mappage`,deleteMapping:`Supprimer le mappage`,saved:`Mappage enregistré pour {{entityId}}. Redémarrez le bridge pour appliquer les modifications.`,saveFailed:`Impossible d'enregistrer le mappage : {{error}}`,deleted:`Mappage supprimé pour {{entityId}}.`,deleteFailed:`Impossible de supprimer le mappage.`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},languageSwitcher:{disclaimer:`Les traductions peuvent être incomplètes.`,contribute:`Aidez à les améliorer !`},translationEditor:{title:`Éditeur de traductions`,editLanguage:`Langue à modifier`,info:`Modifiez les traductions directement dans votre navigateur. Les modifications sont enregistrées localement et appliquées instantanément. Exportez vos traductions pour les soumettre au projet.`,progress:`{{translated}} / {{total}} clés traduites`,localEdits:`{{count}} modification(s) locale(s)`,searchPlaceholder:`Rechercher des clés ou valeurs...`,filterAll:`Toutes les clés`,filterMissing:`Manquantes`,filterEdited:`Modifiées`,exportJson:`Exporter JSON`,copyJson:`Copier JSON`,copied:`Copié !`,resetAll:`Réinitialiser toutes les modifications`,resetKey:`Réinitialiser par défaut`,noResults:`Aucune clé de traduction correspondante trouvée.`,addLanguage:`Ajouter une langue`,newLanguageCode:`Code langue (ex. pt, ja, ko)`,newLanguageName:`Nom de la langue (ex. Português)`,addLanguageButton:`Ajouter`,languageExists:`Cette langue existe déjà.`,codeRequired:`Le code langue est requis.`,nameRequired:`Le nom de la langue est requis.`,removeLanguage:`Supprimer la langue`,importJson:`Importer JSON`,importSuccess:`{{count}} traduction(s) importée(s).`,importFailed:`Échec de l'import : format JSON invalide.`},notFound:{title:`Page introuvable`,description:`La page que vous recherchez n'existe pas.`,backToDashboard:`Retour au tableau de bord`},footer:{github:`GitHub`,documentation:`Documentation`}},_s={common:{loading:`Caricamento`,notFound:`Non trovato`,save:`Salva`,cancel:`Annulla`,delete:`Elimina`,edit:`Modifica`,close:`Chiudi`,refresh:`Aggiorna`,search:`Cerca`,enabled:`Abilitato`,disabled:`Disabilitato`,online:`Online`,offline:`Offline`,running:`In esecuzione`,stopped:`Arrestato`,failed:`Fallito`,starting:`Avvio`,devices:`Dispositivi`,fabrics:`Fabrics`,port:`Porta`,unknown:`Sconosciuto`,confirm:`Conferma`,create:`Crea`,back:`Indietro`,next:`Avanti`,actions:`Azioni`,name:`Nome`,type:`Tipo`,error:`Errore`,version:`Versione`,copy:`Copia`,copied:`Copiato!`,copyId:`Copia ID`,later:`Più tardi`,skip:`Salta`,reset:`Ripristina`,update:`Aggiorna`,all:`Tutti`,ascending:`Crescente`,descending:`Decrescente`,moveUp:`Sposta su`,moveDown:`Sposta giù`,selectAll:`Seleziona tutto`,selectNone:`Deseleziona tutto`,live:`Live`,new:`Nuovo`,overwrite:`Sovrascrivi`,active:`Attivo`,property:`Proprietà`,value:`Valore`,custom:`Personalizzato`,startAll:`Avvia tutti`,stopAll:`Arresta tutti`,restartAll:`Riavvia tutti`,import:`Importa`,export:`Esporta`,exportAll:`Esporta tutto`,wizard:`Procedura guidata`},nav:{bridges:`Bridges`,devices:`Tutti i dispositivi`,health:`Stato & Diagnostica`,diagnostics:`Eventi in tempo reale`,settings:`Impostazioni`,networkMap:`Mappa di rete`,logs:`Log`,startupOrder:`Ordine di avvio`,lockCredentials:`Credenziali serratura`,filterReference:`Riferimento filtri`,systemLogs:`Log di sistema`,lightMode:`Modalità chiara`,darkMode:`Modalità scura`},status:{error:`Errore`,unhealthy:`Non integro`,noBridges:`Nessun Bridge`,loadingHealth:`Caricamento stato di salute...`,unknown:`Sconosciuto`},errorBoundary:{title:`Qualcosa è andato storto`,fallbackMessage:`Si è verificato un errore imprevisto.`,reload:`Ricarica pagina`},settings:{title:`Impostazioni`,language:`Lingua`,languageDescription:`Seleziona la lingua dell'interfaccia.`,checkUpdates:`Controlla aggiornamenti`,backupRestore:`Backup e ripristino`,exportBackup:`Esporta backup`,importBackup:`Importa backup`,dangerZone:`Zona pericolosa`,resetAll:`Ripristina tutto`,about:`Informazioni`},dashboard:{title:`Dashboard`,systemOverview:`Panoramica del sistema`,quickActions:`Azioni rapide`,bridgeOverview:`Panoramica dei Bridge`,noBridges:`Nessun bridge configurato.`,createBridge:`Crea Bridge`,viewAll:`Mostra tutto`,totalDevices:`Dispositivi totali`,customize:`Personalizza`,startAll:`Avvia tutti`,stopAll:`Arresta tutti`,restartAll:`Riavvia tutti`,welcome:`Benvenuto su Home Assistant Matter Hub`,welcomeDescription:`Collega i tuoi dispositivi Home Assistant ai controller Matter come Apple Home, Google Home e Amazon Alexa.`,bridgeWizard:`Procedura guidata Bridge`,setupByArea:`Configura per area`,manualSetup:`Configurazione manuale`,areaSetup:`Configurazione area`,documentation:`Documentazione`,quickNavigation:`Navigazione rapida`,haConnection:`Connessione HA`,startupOrder:`Ordine di avvio`,lockCredentials:`Credenziali serratura`,filterReference:`Riferimento filtri`,successMessage:`I tuoi bridge sono connessi a {{count}} fabric controller. I dispositivi dovrebbero ora apparire nella tua app.`,noBridgesHint:`Nessun bridge configurato. Usa la procedura guidata o creane uno manualmente.`,customizeDashboard:`Personalizza dashboard`},bridge:{name:`Nome Bridge`,port:`Porta`,status:`Stato`,pairHint:`Associa questo bridge al tuo controller`,pairDescription:`Apri la tua app controller (Apple Home, Google Home o Amazon Alexa), aggiungi un nuovo accessorio e scansiona il codice QR o inserisci il codice di abbinamento manuale. Assicurati che il controller sia sulla stessa rete di Home Assistant.`,failedEntities:`Entità fallite`,serverModeRecommended:`Modalità Server consigliata per aspirapolvere robot`,serverModeDescription:`Questo bridge contiene un aspirapolvere robot in modalità bridge. Apple Home e Alexa mostreranno il bridge come dispositivo aggiuntivo, creando duplicati. Abilita la Modalità Server per esporre l'aspirapolvere come dispositivo Matter autonomo.`,enableServerMode:`Abilita Modalità Server`,enabling:`Abilitazione...`,start:`Avvia`,stop:`Arresta`,restart:`Riavvia`,factoryReset:`Ripristino di fabbrica`,pairingCode:`Codice di abbinamento`,openCommissioning:`Apri finestra di commissioning`,multiPair:`Abbinamento Multi-Fabric`,deleteBridge:`Elimina Bridge`,deleteConfirm:`Sei sicuro di voler eliminare questo bridge?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entità non sono state caricate.`,clickToShow:`Clicca per mostrare i dettagli.`,clickToHide:`Clicca per nascondere i dettagli.`,loadFailed:`Impossibile caricare i dettagli del Bridge`,refreshHint:`Nuovi dispositivi e modifiche alle etichette vengono rilevati ogni 30 secondi.`,refreshingStates:`Aggiornamento tra {{seconds}} secondi...`,serverModeSingleDeviceNote:`Nota: La Modalità Server richiede che l'aspirapolvere sia l'unico dispositivo su questo bridge. Rimuovi prima le altre entità, poi abilita la Modalità Server nelle impostazioni del bridge.`,serverModeEnabled:`Modalità Server abilitata. Il bridge si riavvierà con il tuo aspirapolvere come dispositivo autonomo.`,serverModeEnableFailed:`Impossibile abilitare la Modalità Server: {{error}}`,pairing:`Abbinamento`,bridgeInfo:`Info Bridge`,commissioned:`Abbinato`,addController:`Aggiungi un altro controller`,forceSync:`Forza sincronizzazione`,syncing:`Sincronizzazione...`,editFilters:`Modifica filtri`,addFilters:`Aggiungi filtri`,bridgeNotRunning:`Il bridge non è in esecuzione. Avvia il bridge per vedere le informazioni di abbinamento.`,manualCode:`Codice manuale`,bridgeId:`ID Bridge`,passcode:`Codice di accesso`,discriminator:`Discriminatore`,connectedFabrics:`Fabric connessi ({{count}})`,noFabrics:`Nessun controller connesso. Scansiona il codice QR con il tuo controller Matter.`,entityFilters:`Filtri entità`,noFilters:`Nessun filtro configurato. Tutte le entità supportate saranno esposte.`,resetSuccess:`Bridge ripristinato con successo`,deleteSuccess:`Bridge eliminato con successo`,confirmResetTitle:`Ripristina Bridge`,confirmDeleteTitle:`Elimina Bridge`,importTitle:`Importa Bridge`,overwriteExisting:`Sovrascrivi bridge esistenti`,iconLabel:`Icona Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`Modalità Server`,autoForceSync:`Sincronizzazione automatica`,saveSuccess:`Bridge salvato`,updateSuccess:`Aggiornamento completato`,exportFailed:`Esportazione fallita`,actionStarted:`Avviato`,actionStopped:`Arrestato`,actionRestarted:`Riavviato`,actionFailed:`{{action}} fallito`,actionResult:`{{label}} {{count}} bridge`,couldNotLoad:`Impossibile caricare i bridge`,showingFirst:`Mostro i primi {{count}}`,importParseFailed:`Impossibile analizzare il file di importazione. Seleziona un file di esportazione valido.`,importing:`Importazione...`,importCount:`Importa {{count}} bridge`,jsonEditor:`Editor JSON`,formEditor:`Editor modulo`},endpoints:{title:`Endpoint`,searchPlaceholder:`Cerca endpoint...`,sortBy:`Ordina`,sortName:`Nome`,sortEndpoint:`ID Endpoint`,sortType:`Tipo`,cardView:`Vista schede`,treeView:`Vista ad albero`,clusters:`Cluster`,entityUnavailable:`Entità non disponibile`,showUnavailable:`Mostra {{count}} non disponibili`,showAll:`Mostra tutte le entità`,uploadImage:`Carica immagine dispositivo`,removeImage:`Rimuovi immagine personalizzata`,editMapping:`Modifica mappatura entità`,homeAssistantEntity:`Entità Home Assistant`,noEndpoints:`Nessun endpoint trovato.`,expandAll:`Espandi tutto`,collapseAll:`Comprimi tutto`,viewAll:`Vedi tutti i dispositivi`,haState:`Stato HA`,aboutEndpoint:`Informazioni su questo endpoint`,entityId:`ID Entità`,customName:`Nome personalizzato`,deviceTypeOverride:`Override tipo dispositivo`,keyHaAttributes:`Attributi HA chiave`,entityMappings:`Mappature entità`,copyData:`Copia dati negli appunti`,behavior:`Comportamento`},health:{title:`Stato & Diagnostica`,version:`Versione`,uptime:`Tempo di attività`,homeAssistant:`Home Assistant`,connected:`Connesso`,disconnected:`Disconnesso`,bridgeStatus:`Stato Bridge`,refreshHealth:`Aggiorna dati di salute`,exportDiagnostic:`Esporta diagnostica`,memory:`Memoria`,fabricDetails:`Dettagli Fabric`,sessions:`Sessioni`,subscriptions:`Abbonamenti`,noFabrics:`Nessun fabric connesso`,systemMetrics:`Metriche di sistema`,heap:`Heap`,rss:`RSS`,external:`Esterno`,systemHealth:`Salute del sistema`,fetchFailed:`Impossibile recuperare lo stato di salute`,connectionError:`Errore di connessione`,exportFailed:`Impossibile esportare i dati di diagnostica`,restartFailed:`Impossibile riavviare il bridge`,unableToLoad:`Impossibile caricare lo stato di salute`,sortBy:`Ordina per`,created:`Creato`,ascending:`Crescente`,descending:`Decrescente`,connectedTo:`Connesso a`,autoRecovery:`Recupero automatico`,recoveryAttempts:`Tentativi di recupero`},mapping:{title:`Mappature entità`,entityId:`ID Entità`,deviceType:`Tipo dispositivo`,customName:`Nome personalizzato`,status:`Stato`,addMapping:`Aggiungi mappatura`,editMapping:`Modifica mappatura`,deleteMapping:`Elimina mappatura`,saved:`Mappatura salvata per {{entityId}}. Riavvia il bridge per applicare le modifiche.`,saveFailed:`Impossibile salvare la mappatura: {{error}}`,deleted:`Mappatura eliminata per {{entityId}}.`,deleteFailed:`Impossibile eliminare la mappatura.`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},languageSwitcher:{disclaimer:`Le traduzioni potrebbero essere incomplete.`,contribute:`Aiutaci a migliorarle!`},translationEditor:{title:`Editor traduzioni`,editLanguage:`Lingua da modificare`,info:`Modifica le traduzioni direttamente nel browser. Le modifiche vengono salvate localmente e applicate immediatamente. Esporta le tue traduzioni per inviarle al progetto.`,progress:`{{translated}} / {{total}} chiavi tradotte`,localEdits:`{{count}} modifica/e locale/i`,searchPlaceholder:`Cerca chiavi o valori...`,filterAll:`Tutte le chiavi`,filterMissing:`Mancanti`,filterEdited:`Modificate`,exportJson:`Esporta JSON`,copyJson:`Copia JSON`,copied:`Copiato!`,resetAll:`Ripristina tutte le modifiche`,resetKey:`Ripristina predefinito`,noResults:`Nessuna chiave di traduzione corrispondente trovata.`,addLanguage:`Aggiungi lingua`,newLanguageCode:`Codice lingua (es. pt, ja, ko)`,newLanguageName:`Nome lingua (es. Português)`,addLanguageButton:`Aggiungi`,languageExists:`Questa lingua esiste già.`,codeRequired:`Il codice lingua è obbligatorio.`,nameRequired:`Il nome della lingua è obbligatorio.`,removeLanguage:`Rimuovi lingua`,importJson:`Importa JSON`,importSuccess:`{{count}} traduzione/i importata/e.`,importFailed:`Importazione fallita: formato JSON non valido.`},notFound:{title:`Pagina non trovata`,description:`La pagina che stai cercando non esiste.`,backToDashboard:`Torna alla dashboard`},footer:{github:`GitHub`,documentation:`Documentazione`}},vs={common:{loading:`読み込み中`,notFound:`見つかりませんでした`,save:`保存`,cancel:`キャンセル`,delete:`削除`,edit:`編集`,close:`閉じる`,refresh:`再読み込み`,search:`検索`,enabled:`有効`,disabled:`無効`,online:`オンライン`,offline:`オフライン`,running:`動作中`,stopped:`停止済み`,failed:`失敗`,starting:`起動中`,devices:`デバイス`,fabrics:`ファブリック`,port:`ポート`,unknown:`不明`,confirm:`適用`,create:`作成`,back:`戻る`,next:`次へ`,actions:`アクション`,name:`名前`,type:`タイプ`,error:`エラー`,version:`バージョン`,copy:`コピー`,copied:`コピーしました!`,copyId:`IDのコピー`,later:`後で`,skip:`スキップ`,reset:`リセット`,update:`更新`,all:`すべて`,ascending:`昇順`,descending:`降順`,moveUp:`上に移動`,moveDown:`下に移動`,selectAll:`すべて選択`,selectNone:`未選択`,live:`ライブ`,new:`新しい`,overwrite:`上書き`,active:`アクティブ`,property:`プロパティ`,value:`値`,custom:`カスタム`,startAll:`すべて起動`,stopAll:`すべて停止`,restartAll:`すべて再起動`,import:`インポート`,export:`エクスポート`,exportAll:`すべてエクスポート`,wizard:`ウィザード`},nav:{bridges:`ブリッジ`,devices:`すべてのデバイス`,health:`健康状態と診断`,diagnostics:`ライブイベント`,settings:`設定`,networkMap:`ネットワークマップ`,logs:`ログ`,startupOrder:`開始の順序`,lockCredentials:`スマートロックの認証情報`,filterReference:`フィルター値を参照`,systemLogs:`システムログ`,lightMode:`ライトモード`,darkMode:`ダークモード`},status:{error:`エラー`,unhealthy:`不健康`,noBridges:`ブリッジなし`,loadingHealth:`健康状態を読み込んでいます...`,unknown:`不明`},errorBoundary:{title:`何かがうまくいかなかったようです`,fallbackMessage:`予期しないエラーが発生しました。`,reload:`ページを再読み込み`},settings:{title:`設定`,language:`言語`,languageDescription:`UIの言語を選択してください。`,checkUpdates:`アップデートを確認`,backupRestore:`バックアップと復元`,exportBackup:`バックアップを書き出す`,importBackup:`バックアップを読み込む`,dangerZone:`危険なゾーン`,resetAll:`すべて再起動`,about:`について`,username:`ユーザー名`,password:`パスワード`,enterNewPassword:`新しいパスワード`,enableAuth:`認証を有効にする`,disableAuth:`認証を無効にする`,disableAuthMessage:`この操作により、Web UI からパスワード保護が削除されます。ネットワーク上の誰でもブリッジ設定にアクセスでき、変更できるようになります。`,disableAuthConfirm:`認証を無効化`,usernamePasswordRequired:`ユーザー名とパスワードが必要です`,authSaveFailed:`認証設定の保存に失敗しました`,authLoadFailed:`認証設定の読み込みに失敗しました`,authDisabled:`認証は無効になっています。`,authRemoveFailed:`認証設定の削除に失敗しました`},dashboard:{title:`ダッシュボード`,systemOverview:`システムの概要`,quickActions:`クイックアクション`,bridgeOverview:`ブリッジの概要`,noBridges:`ブリッジがまだ構成されていません。`,createBridge:`ブリッジを作成`,viewAll:`すべて表示`,totalDevices:`合計デバイス`,customize:`カスタマイズ`,startAll:`すべて開始`,stopAll:`すべて停止`,restartAll:`すべて再起動`,welcome:`Home Assistant Matter Hub へようこそ`,welcomeDescription:`Home AssistantのデバイスをApple HomeやGoogle Home、Amazon AlexaなどのMatterコントローラーに接続できます。`,bridgeWizard:`ブリッジ構成ウィザード`,setupByArea:`エリアでセットアップ`,manualSetup:`手動で構成`,areaSetup:`エリアで構成`,documentation:`ドキュメント`,quickNavigation:`クイックナビゲーション`,haConnection:`HAコネクション`,startupOrder:`ブリッジの起動順序`,lockCredentials:`スマートロックの認証情報`,filterReference:`フィルター値を参照`,successMessage:`ブリッジは {{count}} 個のコントローラーに接続されています。デバイスは現在、コントローラーアプリに表示されているはずです。`,noBridgesHint:`ブリッジがまだ構成されていません。ブリッジウィザードを使用するか、手動で作成してください。`,customizeDashboard:`ダッシュボードのカスタマイズ`,bridgeStatusRunning:`{{running}} 動作中`,bridgeStatusFailed:`{{failed}} 失敗`,devicesFailed:`{{count}} 失敗`,uptimeFormat:`稼働時間 {{time}}`},bridge:{name:`ブリッジ名`,port:`ポート`,status:`状態`,pairHint:`このブリッジをコントローラーとペアリングしてください`,pairDescription:`コントローラーアプリ(Apple HomeやGoogle Home、Amazon Alexaなど)を開き、新しいアクセサリを追加から、QRコードをスキャンするか、手動ペアリングコードを入力してください。また、コントローラーがHome Assistantと同じネットワークに接続されていることを確認してください。`,failedEntities:`失敗したエンティティ`,serverModeRecommended:`サーバーモードはロボット掃除機に推奨されています`,serverModeDescription:``,enableServerMode:`サーバーモードを有効にする`,enabling:`有効化しています...`,start:`起動`,stop:`停止`,restart:`再起動`,factoryReset:`初期状態にリセット`,pairingCode:`ペアリングコード`,openCommissioning:`コミッショニングウィンドウを開く`,multiPair:`マルチファブリックペアリング`,deleteBridge:`ブリッジを削除`,deleteConfirm:`本当にこのブリッジを削除しますか?`,featureFlags:`機能フラグ`,failedEntitiesCount:`{{count}} エンティティをロードできませんでした。`,clickToShow:`クリックして詳細を表示`,clickToHide:`クリックして詳細を隠す`,loadFailed:`ブリッジの詳細の読み込みに失敗しました`,refreshHint:`新しいデバイスやラベルの変更は、30秒ごとに検出されます。`,refreshingStates:`あと {{seconds}} 秒で状態を更新...`,serverModeSingleDeviceNote:``,serverModeEnabled:``,serverModeEnableFailed:`サーバーモードの有効化に失敗しました: {{error}}`,pairing:`ペアリング`,bridgeInfo:`ブリッジ情報`,commissioned:`接続済み`,addController:`別のコントローラーを追加`,openingCommissioning:`コミッショニングウィンドウを開いています...`,fabricTooltip:`ファブリックは、Matterコントローラー(例:Apple Home、Google Home、Alexa)との接続を表すものです。各コントローラーはペアリングされると、1つのファブリックを作成します。`,forceSync:`強制的に同期`,syncing:`同期中...`,forceSyncTooltip:`すべての現在のデバイス状態を接続されているコントローラに同期する`,editFilters:`フィルターを編集`,addFilters:`フィルターを追加`,bridgeNotRunning:`ブリッジが起動していません。ブリッジを起動し、ペアリング情報を確認してください。`,manualCode:`手動ペアリングコード`,openingWindow:`コミッショニングウィンドウを開いています...`,bridgeId:`ブリッジID`,passcode:`パスコード`,discriminator:`識別子`,connectedFabrics:`接続済みのファブリック ({{count}})`,noFabrics:`コントローラが接続されていません。MatterコントローラーでQRコードをスキャンして、このブリッジをペアリングしてください。`,entityFilters:`エンティティフィルター`,noFilters:`フィルターが設定されていません。サポートされているすべてのエンティティが公開されます。`,scanQrCode:`Matterコントローラー(Apple Home、Google Home、Alexaなど)でこのQRコードをスキャンして、このブリッジを別のエコシステムに追加してください。`,appleHomeWarning:`このブリッジは拡張フラットモードを使用しています。Apple Home のみを使用している場合にのみ、無効にしてください。`,googleHomeWarning:`これにより、Apple Home および Google Home に問題が生じる可能性があります。`,resetSuccess:`ブリッジのリセットに成功しました`,deleteSuccess:`ブリッジの削除に成功しました`,confirmResetTitle:`ブリッジを初期状態にリセット`,confirmResetMessage:`これにより、すべてのペアリング情報が削除され、ブリッジが初期状態にリセットされます。接続されているコントローラはアクセスを失います。この操作は元に戻せません。`,confirmDeleteTitle:`ブリッジを削除`,confirmDeleteMessage:`これにより、ブリッジとそのすべてのペアリング、およびエンティティマッピングが永久に削除されます。接続されているコントローラはアクセスを失います。この操作は元に戻せません。`,importTitle:`ブリッジを読み込む`,overwriteExisting:`既存のブリッジを上書きする`,iconLabel:`ブリッジアイコン`,google:`Google`,alexa:`Alexa`,serverMode:`サーバーモード`,autoForceSync:`自動強制同期`,saveSuccess:`ブリッジを保存しました`,updateSuccess:`アップデートが完了しました`,exportFailed:`書き出しに失敗しました`,actionStarted:`起動済み`,actionStopped:`停止済み`,actionRestarted:`再起動済み`,actionFailed:`{{action}} 失敗`,actionResult:``,couldNotLoad:`ブリッジを読み込めませんでした`,showingFirst:`最初の {{count}} を表示中`,importParseFailed:``,importing:`書き出し中...`,importCount:``,jsonEditor:`JSONエディター`,formEditor:``},endpoints:{title:`エンドポイント`,searchPlaceholder:`エンドポイントを検索...`,sortBy:`並び替え`,sortName:`名前`,sortEndpoint:`エンドポイントID`,sortType:`タイプ`,cardView:`カードビュー`,treeView:`ツリービュー`,clusters:`クラスター`,entityUnavailable:`エンティティが利用できません`,showUnavailable:`{{count}} の利用不可を表示`,showAll:`すべてのエンティティを表示`,uploadImage:`デバイスイメージをアップロード`,removeImage:`カスタムイメージを削除`,editMapping:`エンティティマッピングを編集`,homeAssistantEntity:`Home Assistantエンティティ`,noEndpoints:`エンドポイントが見つかりませんでした。`,expandAll:`すべて展開`,collapseAll:`すべて折りたたむ`,viewAll:`すべてのデバイスを見る`,haState:``,aboutEndpoint:`このエンドポイントについて`,entityId:`エンティティID`,customName:`カスタム名`,deviceTypeOverride:`デバイスタイプの上書き`,keyHaAttributes:``,entityMappings:`エンティティマッピング`,copyData:`データをクリップボードにコピー`,behavior:`振る舞い`},health:{title:`健康状態と診断`,version:`バージョン`,uptime:`稼働時間`,homeAssistant:`Home Assistant`,connected:`接続済み`,disconnected:`切断済み`,bridgeStatus:`ブリッジの状態`,refreshHealth:`健康データを更新`,exportDiagnostic:`診断を書き出す`,memory:`メモリ`,fabricDetails:`ファブリックの詳細`,sessions:`セッション`,subscriptions:`登録数`,noFabrics:`接続されているファブリックはありません`,systemMetrics:`システムメトリクス`,heap:`ヒープ`,rss:`RSS`,external:`外部`,systemHealth:`システムの健康状態`,fetchFailed:`健康状態の取得に失敗しました`,connectionError:`設定エラー`,exportFailed:`診断データの書き出しに失敗しました`,restartFailed:`ブリッジの再起動に失敗しました`,unableToLoad:`健康状態を読み込めません`,sortBy:`並び替え`,created:`作成済み`,ascending:`昇順`,descending:`降順`,connectedTo:`接続済み`,autoRecovery:`自動回復`,recoveryAttempts:`回復試行数`,fabrics:`ファブリック`,networkDiagnostics:`ネットワーク診断`,checksPassed:`合格`,checksWarning:`警告`,checksFailed:`失敗`,hideDetails:`詳細を非表示`,showDetails:`詳細を表示`,allChecks:`すべてチェック`,check:`チェック`,statusLabel:`状態`,message:`メッセージ`,networkInterfaces:`ネットワークインタフェース`,interfaceName:`インタフェース`,refresh:`更新`},mapping:{title:`エンティティマッピング`,entityId:`エンティティID`,deviceType:`デバイスタイプ`,customName:`カスタム名`,status:`状態`,addMapping:`マッピングを追加`,editMapping:`マッピングを編集`,deleteMapping:`マッピングを削除`,saved:``,saveFailed:``,deleted:``,deleteFailed:``,matterTag:`Matterタグ`,exportProfile:``,importProfile:``,profileName:``,match:``,existing:``,autoDetect:``,customProductName:``,customProductNameHelp:``,customVendorName:``,customVendorNameHelp:``,customSerialNumber:``,customSerialNumberHelp:``,loadFailed:``,noMappings:``,applying:`適用中...`,applyCount:``},notFound:{title:`ページが見つかりませんでした`,description:`お探しのページは存在しません。`,backToDashboard:`ダッシュボードへ戻る`},devices:{title:`デバイス`,searchPlaceholder:`デバイスを検索...`,filterBridge:`ブリッジ`,allBridges:`すべてのブリッジ`,filterDeviceType:`デバイスタイプ`,allTypes:`すべてのタイプ`,sortBy:`並び替え`,sortBridge:`ブリッジ`,sortType:`デバイスタイプ`,sortName:`名前`,deviceCount:`{{count}} デバイス`,filteredCount:`{{total}} 中 {{filtered}} のデバイス`},diagnostics:{title:`ライブ診断`,stateUpdate:`状態アップデート`,command:`コマンド`,entityError:`エラー`,sessionOpen:`セッションオープン`,sessionClose:`セッションクローズ`,subscription:`登録`,bridgeStart:`ブリッジ起動`,bridgeStop:`ブリッジ停止`,entityWarning:`警告`,filterEvents:`イベントタイプをフィルタリング`,clearEvents:`すべてのイベントをクリア`,noEvents:`現在のフィルターに一致するイベントはありません。`},startup:{title:`ブリッジの起動順序`,description:`ドラッグ&ドロップでブリッジの起動順序をセットしてください。小さい番号から先に起動されます。`,saveSuccess:`起動順序の保存に成功しました`,saveFailed:`起動順序の保存に失敗しました`,saveChanges:`変更を保存`,unsavedChanges:`未保存の起動順序の変更があります。`,noBridges:`ブリッジがまだ構成されていません。`,saveOrder:`起動順序を保存`},areaSetup:{title:`エリアセットアップ`,heading:`エリアを元にしたブリッジセットアップ`,description:`Home Assistantのエリアごとに、自動的に1つのブリッジを作成します。各ブリッジには、そのエリアからサポートされているすべてのエンティティが含まれます。`,noAreas:`Home Assistant でサポートされているエンティティがあるエリアは見つかりませんでした。HA のエリアにデバイスが割り当てられていることを確認してください。`,selectController:`1. コントローラーを選択(任意)`,selectAreas:`2. エリアを選択({{total}} 中 {{selected}} 選択済み)`,clear:`クリア`,createBridges:`{{count}} ブリッジを作成`,results:`結果`,goToBridges:`ブリッジ一覧に移動`,createdSuccess:``,createdPartial:``,loadFailed:`エリアの読み込みに失敗しました`,creating:`作成中...`,created:`作成しました`,unknownError:`不明なエラー`},lockCredentials:{title:`スマートロックの認証情報`,addCredential:`認証情報を追加`,editCredential:`ロックの認証情報を編集`,lockEntityId:`ロックのエンティティID`,lockEntityHelperText:`ロックのHomeAssistantエンティティID`,pinCode:`暗証番号`,nameOptional:`名前(任意)`,namePlaceholder:`玄関`,nameHelperText:`この認証情報の名前`,entityRequired:`エンティティIDが必要です`,pinLength:`暗証番号は4-8桁である必要があります`,pinDigitsOnly:`暗証番号は数字のみでなければいけません`,saveFailed:`保存に失敗しました`,loadFailed:`認証情報の読み込みに失敗しました`,deleteFailed:`削除に失敗しました`,updateFailed:`更新に失敗しました`,enable:`有効`,disable:`無効`,confirmDeleteTitle:`認証情報を削除`,confirmDeleteMessage:`これにより {{entity}} の認証情報が永久に削除されます。この操作は元に戻せません。`},labels:{title:`フィルター値を参照`,info:`ブリッジ設定に利用可能なすべてのフィルター値を確認できます。任意の値をクリックして、クリップボードにコピーしてください。`,searchPlaceholder:`検索...`,loadFailed:`データの読み込みに失敗しました`,labelsSection:`ラベル`,labelsHint:``,noLabels:``,displayName:`表示名`,labelId:``,areaId:``,areasSection:`エリア`,areasHint:``,noAreas:``,otherFilterValues:``,domains:`ドメイン`,domainsHint:``,platforms:`プラットフォーム / インテグレーション`,platformsHint:``,entityCategories:`エンティティカテゴリ`,entityCategoriesHint:``,deviceClasses:`デバイスクラス`,deviceClassesHint:``,deviceNames:`デバイス名`,deviceNamesHint:``,productNames:`製品名`,productNamesHint:``},logs:{title:`システムログ`,logLevel:`ログレベル`,error:`エラー`,warning:`警告`,info:`情報`,debug:`デバッグ`,searchPlaceholder:`ログを検索...`,noResults:`ログが見つかりません`,autoRefresh:`自動更新`},backup:{title:`バックアップと復元`,description:`ブリッジとエンティティマッピングの完全なバックアップを作成するか、または以前のバックアップから復元することができます。`,configBackup:`バックアップを作成`,configBackupDesc:`ブリッジ構成とエンティティマッピングを書き出します。`,configBackupNote:`ブリッジは復元後に再コミッションする必要があります。`,fullBackup:`完全バックアップ(識別付き)`,fullBackupDesc:`Matter の識別ファイル(キーペア、ファブリック認証情報)を含みます。`,fullBackupWarning:`復元全体にわたって、コミッショニングの状態を保持します。共有しないでください!`,restoreFromBackup:`バックアップから復元`,restoreDesc:`以前に作成したバックアップファイルをアップロードして、ブリッジと設定を復元します。`,restoreTitle:`バックアップを復元`,selectBridges:``,overwriteExisting:``,includeMappings:``,restoreIdentities:``,restore:`復元`,downloadSuccess:`バックアップのダウンロードに成功しました!`,restartRequired:`再起動が必要です`,restartMessage:``,restartNote:``,restartNow:`今すぐ再起動`,storedBackups:`保存されているバックアップ`,createSnapshot:`バックアップを作成`,noSnapshots:``,downloadSnapshot:`ダウンロード`,restoreSnapshot:`復元`,auto:`自動`,manual:`手動`,snapshotCreated:`バックアップの作成に成功しました!`,snapshotRestored:``,confirmRestore:`復元を確認`,confirmRestoreMessage:``,restoreWarning:``,confirmDelete:`バックアップを削除`,confirmDeleteMessage:``,settings:`バックアップの設定`,autoBackupLabel:`自動バックアップ`,autoBackupDesc:`アプリがシャットダウンまたは再起動した際に、自動的に完全バックアップを作成します。`,retentionCount:`バックアップの保持数`,retentionCountDesc:`バックアップの保持数(古い物から自動的に削除されます)`},networkMap:{title:`ネットワークマップ`,hubLabel:`HAMH`,undoMove:``,resetLayout:`レイアウトをリセット`,refreshData:`データを更新`,fullscreen:`フルスクリーン`,exitFullscreen:`フルスクリーンを終了`,legend:`図の説明`,controller:`コントローラ`,hub:`HAMHハブ`,bridge:`ブリッジ`,device:`デバイス`,failed:`失敗`},updateChecker:{title:`ソフトウェアアップデート`,checkNow:`今すぐ確認する`,currentVersion:`現在のバージョン`,latestVersion:`最新のバージョン`,updateAvailable:`アップデートが利用可能になりました!`,upToDate:`既に最新のバージョンを実行しています。`,releaseNotes:`リリースノート`,notAvailable:`このバージョンではアップデートの確認が利用できません`,checkFailed:`アップデートの確認に失敗しました`,unreachable:`サーバーに接続できません`,instructionAddon:`Home Assistantの設定 → アドオン(アプリ)から更新できます。`,instructionDocker:`最新のイメージを取得し、コンテナを再作成してください。`,instructionNpm:`実行:npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`ブリッジ構成ウィザード`,stepTemplate:`テンプレート`,stepController:`コントローラー`,stepBridgeInfo:`ブリッジ情報`,stepEntityFilter:`エンティティフィルター`,stepFeatureFlags:`機能フラグ`,stepReview:`確認と作成`,autoCompose:`自動構成デバイス`,autoForceSyncFlag:`自動強制同期`,invertCover:``,invertCoverDescription:``,includeHidden:`非表示のエンティティを含める`,includeHiddenDescription:``,bridgeName:`ブリッジ名`,portLabel:`ポート`,portAutoAssign:`自動的に次に利用可能なポートが割り当てられます`,nameRequired:`ブリッジ名を入力してください`,createFailed:`ブリッジの作成に失敗しました`,bridgeInfoDescription:`ブリッジの名前とポートを指定してください。`,serverModeLabel:`サーバーモード(ロボット掃除機用)`,serverModeTooltip:``,entityFilterDescription:``,includeAll:`すべてのエンティティを含める(ワイルドカード)`,entityId:`エンティティID`,includePattern:``,entityFilters:`エンティティフィルター`,serverModeEntityHint:``,templatePreConfigured:``,wildcardHint:``,commaHint:``,excludePatterns:``,excludeHelperText:``,skipTemplate:`テンプレートをスキップ`,creating:`作成中です...`,createBridge:`ブリッジを作成`,searchRules:`ルールを検索...`,templateDescription:`テンプレートを選択してブリッジを作成するか、スキップしてカスタムのブリッジを作成できます。`,controllerDescription:`どのMatterコントローラーを使用しますか?これにより、コントローラーの機能フラグが最適化されます。`,controllerHint:`次のステップやブリッジ作成後でも、いつでも機能フラグを調整できます。`,templateApplied:`テンプレート"{{name}}"が適用されました。名前とポートをカスタマイズしてください。`,filterPreConfiguredFrom:`フィルターは"{{name}}"テンプレートで事前に設定されています。以下で調整できます。`,featureFlagsDescription:`機能フラグは、デバイスがMatterコントローラーにどのように公開されるかを制御します。`,recommendedFlags:`{{name}} の機能フラグは事前に選択されています。`,selectFlags:`お使いの設定に合った機能フラグを選択してください。`,reviewDescription:`ブリッジの設定をご確認ください:`,bridgesToCreate:`作成するブリッジ({{count}})`,bridgesCreated:`{{count}} 件のブリッジがこのセッションで既に作成されています`,addAnother:`さらにブリッジを追加`},footer:{github:`GitHub`,documentation:`ドキュメント`,support:`サポート`},languageSwitcher:{disclaimer:`翻訳が不完全な場合があります。`,contribute:`改善にご協力をお願いします!`},translationEditor:{title:`翻訳エディター`,editLanguage:`言語を編集`,info:`ブラウザ上で直接翻訳を編集できます。変更はローカルに保存され、即座に適用されます。翻訳を書き出して、プロジェクトに提出してください。`,progress:`{{translated}} / {{total}} のキーが翻訳済み`,localEdits:`{{count}} ローカル編集`,searchPlaceholder:`キーまたは値を検索...`,filterAll:`全てのキー`,filterMissing:`欠落`,filterEdited:`編集済み`,exportJson:`JSONを書き出す`,copyJson:`JSONをコピー`,copied:`コピーしました!`,resetAll:`すべての編集をリセット`,resetKey:`デフォルトにリセット`,noResults:`一致する翻訳のキーが見つかりませんでした。`,addLanguage:`言語を追加`,newLanguageCode:`言語コード(例:pt, ja, ko)`,newLanguageName:`言語名(例:Português)`,addLanguageButton:`追加`,languageExists:`その言語はすでに存在しています。`,codeRequired:`言語コードが必要です。`,nameRequired:`言語名が必要です。`,removeLanguage:`言語を削除`,removeLanguageConfirm:`カスタム言語 "{{name}}" を削除しますか? この言語の全ての編集は失われます。`,importJson:`JSONを読み込む`,importSuccess:`{{count}} 翻訳を読み込みました`,importFailed:`読み込みに失敗しました:無効なJSONフォーマットです。`}},ys={common:{loading:`Ładowanie`,notFound:`Nie znaleziono`,save:`Zapisz`,cancel:`Anuluj`,delete:`Usuń`,edit:`Edytuj`,close:`Zamknij`,refresh:`Odśwież`,search:`Szukaj`,enabled:`Włączone`,disabled:`Wyłączone`,online:`Online`,offline:`Offline`,running:`Działa`,stopped:`Zatrzymane`,failed:`Niepowodzenie`,starting:`Uruchamianie`,devices:`Urządzenia`,fabrics:`Fabryki`,port:`Port`,unknown:`Nieznane`,confirm:`Potwierdź`,create:`Utwórz`,back:`Wstecz`,next:`Dalej`,actions:`Akcje`,name:`Nazwa`,type:`Typ`,error:`Błąd`,version:`Wersja`,copy:`Kopiuj`,copied:`Skopiowano!`,copyId:`Kopiuj ID`,later:`Później`,skip:`Pomiń`,reset:`Resetuj`,update:`Aktualizuj`,all:`Wszystkie`,ascending:`Rosnąco`,descending:`Malejąco`,moveUp:`Przesuń w górę`,moveDown:`Przesuń w dół`,selectAll:`Zaznacz wszystko`,selectNone:`Odznacz wszystko`,live:`Na żywo`,new:`Nowe`,overwrite:`Nadpisz`,active:`Aktywne`,property:`Właściwość`,value:`Wartość`,custom:`Własne`,startAll:`Uruchom wszystkie`,stopAll:`Zatrzymaj wszystkie`,restartAll:`Zrestartuj wszystkie`,import:`Importuj`,export:`Eksportuj`,exportAll:`Eksportuj wszystko`,wizard:`Kreator`},nav:{bridges:`Mostki`,devices:`Wszystkie urządzenia`,health:`Stan i diagnostyka`,diagnostics:`Zdarzenia na żywo`,settings:`Ustawienia`,networkMap:`Mapa sieci`,logs:`Logi`,startupOrder:`Kolejność uruchamiania`,lockCredentials:`Dane dostępu do zamków`,filterReference:`Referencja filtrów`,systemLogs:`Logi systemowe`,lightMode:`Tryb jasny`,darkMode:`Tryb ciemny`},status:{error:`Błąd`,unhealthy:`Niezdrowy`,noBridges:`Brak mostków`,loadingHealth:`Ładowanie stanu zdrowia...`,unknown:`Nieznany`},errorBoundary:{title:`Coś poszło nie tak`,fallbackMessage:`Wystąpił nieoczekiwany błąd.`,reload:`Odśwież stronę`},settings:{title:`Ustawienia`,language:`Język`,languageDescription:`Wybierz język interfejsu.`,checkUpdates:`Sprawdź aktualizacje`,backupRestore:`Kopia i przywracanie`,exportBackup:`Eksportuj kopię`,importBackup:`Importuj kopię`,dangerZone:`Strefa zagrożenia`,resetAll:`Resetuj wszystko`,about:`O aplikacji`,username:`Nazwa użytkownika`,password:`Hasło`,enterNewPassword:`Wpisz nowe hasło`,enableAuth:`Włącz uwierzytelnianie`,disableAuth:`Wyłącz uwierzytelnianie`,disableAuthMessage:`To usunie ochronę hasłem z interfejsu WWW. Każda osoba w Twojej sieci będzie mogła uzyskać dostęp i modyfikować konfigurację mostków.`,disableAuthConfirm:`Wyłącz uwierzytelnianie`,usernamePasswordRequired:`Nazwa użytkownika i hasło są wymagane`,authSaveFailed:`Nie udało się zapisać ustawień uwierzytelniania`,authLoadFailed:`Nie udało się wczytać ustawień uwierzytelniania`,authDisabled:`Uwierzytelnianie wyłączone.`,authRemoveFailed:`Nie udało się usunąć ustawień uwierzytelniania`},dashboard:{title:`Pulpit`,systemOverview:`Przegląd systemu`,quickActions:`Szybkie akcje`,bridgeOverview:`Przegląd mostków`,noBridges:`Nie skonfigurowano jeszcze żadnych mostków.`,createBridge:`Utwórz mostek`,viewAll:`Zobacz wszystkie`,totalDevices:`Łącznie urządzeń`,customize:`Dostosuj`,startAll:`Uruchom wszystkie`,stopAll:`Zatrzymaj wszystkie`,restartAll:`Zrestartuj wszystkie`,welcome:`Witamy w Home Assistant Matter Hub`,welcomeDescription:`Połącz swoje urządzenia Home Assistant z kontrolerami Matter, takimi jak Apple Home, Google Home i Amazon Alexa.`,bridgeWizard:`Kreator mostka`,setupByArea:`Konfiguracja wg obszaru`,manualSetup:`Konfiguracja ręczna`,areaSetup:`Konfiguracja obszaru`,documentation:`Dokumentacja`,quickNavigation:`Szybka nawigacja`,haConnection:`Połączenie HA`,startupOrder:`Kolejność uruchamiania`,lockCredentials:`Dane dostępu do zamków`,filterReference:`Referencja filtrów`,successMessage:`Twoje mostki są połączone z {{count}} fabryką(-ami) kontrolera. Urządzenia powinny być teraz widoczne w aplikacji kontrolera.`,noBridgesHint:`Nie skonfigurowano jeszcze mostków. Użyj Kreatora mostka lub utwórz mostek ręcznie.`,customizeDashboard:`Dostosuj pulpit`,bridgeStatusRunning:`{{running}} uruchomione`,bridgeStatusFailed:`{{failed}} nieudane`,devicesFailed:`{{count}} nieudane`,uptimeFormat:`{{time}}`},bridge:{name:`Nazwa mostka`,port:`Port`,status:`Status`,pairHint:`Sparuj ten mostek ze swoim kontrolerem`,pairDescription:`Otwórz aplikację kontrolera (Apple Home, Google Home lub Amazon Alexa), dodaj nowe akcesorium i zeskanuj kod QR poniżej albo wpisz ręczny kod parowania. Upewnij się, że kontroler jest w tej samej sieci co Home Assistant.`,failedEntities:`Nieudane encje`,serverModeRecommended:`Tryb serwera zalecany dla odkurzaczy robotycznych`,serverModeDescription:`Ten mostek zawiera odkurzacz robotyczny w trybie bridge. Apple Home i Alexa pokażą mostek jako dodatkowe urządzenie, co spowoduje duplikaty. Włącz tryb serwera, aby udostępnić odkurzacz jako niezależne urządzenie Matter z pełną obsługą komend głosowych Siri/Alexa i bez duplikatów.`,enableServerMode:`Włącz tryb serwera`,enabling:`Włączanie...`,start:`Uruchom`,stop:`Zatrzymaj`,restart:`Restartuj`,factoryReset:`Przywróć ustawienia fabryczne`,pairingCode:`Kod parowania`,openCommissioning:`Otwórz okno komisjonowania`,multiPair:`Parowanie Multi-Fabric`,deleteBridge:`Usuń mostek`,deleteConfirm:`Czy na pewno chcesz usunąć ten mostek?`,featureFlags:`Flagi funkcji`,failedEntitiesCount:`Nie udało się załadować {{count}} encji.`,clickToShow:`Kliknij, aby pokazać szczegóły.`,clickToHide:`Kliknij, aby ukryć szczegóły.`,loadFailed:`Nie udało się wczytać szczegółów mostka`,refreshHint:`Nowe urządzenia i zmiany etykiet są wykrywane co 30 sekund.`,refreshingStates:`Odświeżanie stanów za {{seconds}} s...`,serverModeSingleDeviceNote:`Uwaga: tryb serwera wymaga, aby odkurzacz był jedynym urządzeniem na tym mostku. Najpierw usuń inne encje z mostka, a następnie włącz tryb serwera w ustawieniach mostka.`,serverModeEnabled:`Tryb serwera włączony. Mostek uruchomi się ponownie z odkurzaczem jako niezależnym urządzeniem.`,serverModeEnableFailed:`Nie udało się włączyć trybu serwera: {{error}}`,pairing:`Parowanie`,bridgeInfo:`Informacje o mostku`,commissioned:`Skomisjonowano`,addController:`Dodaj kolejny kontroler`,openingCommissioning:`Otwieranie okna komisjonowania...`,fabricTooltip:`Fabric reprezentuje połączenie z kontrolerem Matter (np. Apple Home, Google Home, Alexa). Każdy kontroler tworzy jedną fabric podczas parowania.`,forceSync:`Wymuś synchronizację`,syncing:`Synchronizacja...`,forceSyncTooltip:`Wypchnij wszystkie bieżące stany urządzeń do podłączonych kontrolerów`,editFilters:`Edytuj filtry`,addFilters:`Dodaj filtry`,bridgeNotRunning:`Mostek nie jest uruchomiony. Uruchom mostek, aby zobaczyć informacje o parowaniu.`,manualCode:`Kod ręczny`,openingWindow:`Otwieranie okna komisjonowania...`,bridgeId:`ID mostka`,passcode:`Kod dostępu`,discriminator:`Dyskryminator`,connectedFabrics:`Połączone fabrics ({{count}})`,noFabrics:`Nie podłączono jeszcze kontrolerów. Zeskanuj kod QR kontrolerem Matter, aby sparować ten mostek.`,entityFilters:`Filtry encji`,noFilters:`Brak skonfigurowanych filtrów. Wszystkie wspierane encje zostaną udostępnione.`,scanQrCode:`Zeskanuj ten kod QR swoim kontrolerem Matter (Apple Home, Google Home, Alexa itd.), aby dodać ten mostek do kolejnego ekosystemu.`,appleHomeWarning:`Ten mostek używa trybu Extended Flat. Wyłącz to tylko wtedy, gdy używasz wyłącznie Apple Home.`,googleHomeWarning:`Może to powodować problemy z Apple Home i Google Home.`,resetSuccess:`Mostek został pomyślnie zresetowany`,deleteSuccess:`Mostek został pomyślnie usunięty`,confirmResetTitle:`Reset fabryczny mostka`,confirmResetMessage:`To usunie wszystkie informacje parowania i zresetuje mostek do stanu początkowego. Podłączone kontrolery utracą dostęp. Operacji nie można cofnąć.`,confirmDeleteTitle:`Usuń mostek`,confirmDeleteMessage:`To trwale usunie mostek, wszystkie parowania i mapowania encji. Podłączone kontrolery utracą dostęp. Operacji nie można cofnąć.`,importTitle:`Importuj mostki`,overwriteExisting:`Nadpisz istniejące mostki`,iconLabel:`Ikona mostka`,google:`Google`,alexa:`Alexa`,serverMode:`Tryb serwera`,autoForceSync:`Automatyczne wymuszanie synchronizacji`,saveSuccess:`Mostek zapisany`,updateSuccess:`Aktualizacja zakończona`,exportFailed:`Eksport nie powiódł się`,actionStarted:`Uruchomiono`,actionStopped:`Zatrzymano`,actionRestarted:`Zrestartowano`,actionFailed:`{{action}} nie powiodło się`,actionResult:`{{label}} {{count}} mostek(ów)`,couldNotLoad:`Nie udało się wczytać mostków`,showingFirst:`Wyświetlanie pierwszych {{count}}`,importParseFailed:`Nie udało się przetworzyć pliku importu. Wybierz prawidłowy plik eksportu.`,importing:`Importowanie...`,importCount:`Importuj {{count}} mostek(ów)`,jsonEditor:`Edytor JSON`,formEditor:`Edytor formularza`},endpoints:{title:`Endpointy`,searchPlaceholder:`Szukaj endpointów...`,sortBy:`Sortuj`,sortName:`Nazwa`,sortEndpoint:`ID endpointu`,sortType:`Typ`,cardView:`Widok kart`,treeView:`Widok drzewa`,clusters:`Klastry`,entityUnavailable:`Encja niedostępna`,showUnavailable:`Pokaż {{count}} niedostępnych`,showAll:`Pokaż wszystkie encje`,uploadImage:`Prześlij obraz urządzenia`,removeImage:`Usuń niestandardowy obraz`,editMapping:`Edytuj mapowanie encji`,homeAssistantEntity:`Encja Home Assistant`,noEndpoints:`Nie znaleziono endpointów.`,expandAll:`Rozwiń wszystko`,collapseAll:`Zwiń wszystko`,viewAll:`Zobacz wszystkie urządzenia`,haState:`Stan HA`,aboutEndpoint:`O tym endpoincie`,entityId:`ID encji`,customName:`Nazwa własna`,deviceTypeOverride:`Nadpisanie typu urządzenia`,keyHaAttributes:`Kluczowe atrybuty HA`,entityMappings:`Mapowania encji`,copyData:`Skopiuj dane do schowka`,behavior:`Zachowanie`},health:{title:`Stan i diagnostyka`,version:`Wersja`,uptime:`Czas działania`,homeAssistant:`Home Assistant`,connected:`Połączono`,disconnected:`Rozłączono`,bridgeStatus:`Status mostka`,refreshHealth:`Odśwież dane stanu`,exportDiagnostic:`Eksportuj diagnostykę`,memory:`Pamięć`,fabricDetails:`Szczegóły fabric`,sessions:`Sesje`,subscriptions:`Subskrypcje`,noFabrics:`Brak podłączonych fabrics`,systemMetrics:`Metryki systemu`,heap:`Heap`,rss:`RSS`,external:`Zewnętrzne`,systemHealth:`Stan systemu`,fetchFailed:`Nie udało się pobrać stanu`,connectionError:`Błąd połączenia`,exportFailed:`Nie udało się wyeksportować danych diagnostycznych`,restartFailed:`Nie udało się zrestartować mostka`,unableToLoad:`Nie można wczytać stanu`,sortBy:`Sortuj według`,created:`Utworzono`,ascending:`Rosnąco`,descending:`Malejąco`,connectedTo:`Połączono z`,autoRecovery:`Automatyczne odzyskiwanie`,recoveryAttempts:`Próby odzyskania`},mapping:{title:`Mapowania encji`,entityId:`ID encji`,deviceType:`Typ urządzenia`,customName:`Nazwa własna`,status:`Status`,addMapping:`Dodaj mapowanie`,editMapping:`Edytuj mapowanie`,deleteMapping:`Usuń mapowanie`,saved:`Mapowanie zapisano dla {{entityId}}. Uruchom ponownie mostek, aby zastosować zmiany.`,saveFailed:`Nie udało się zapisać mapowania: {{error}}`,deleted:`Mapowanie usunięto dla {{entityId}}.`,deleteFailed:`Nie udało się usunąć mapowania.`,matterTag:`Tag Matter`,exportProfile:`Eksportuj profil mapowania`,importProfile:`Importuj profil mapowania`,profileName:`Nazwa profilu`,match:`Dopasowanie`,existing:`Istniejące`,autoDetect:`Auto-wykrywanie (domyślne)`,loadFailed:`Nie udało się wczytać mapowań encji`,noMappings:`Nie skonfigurowano niestandardowych mapowań encji. Użyj mapowań, aby nadpisać typy urządzeń Matter, ustawić własne nazwy lub wyłączyć konkretne encje.`,applying:`Zastosowywanie...`,applyCount:`Zastosuj {{count}} mapowań`},notFound:{title:`Nie znaleziono strony`,description:`Strona, której szukasz, nie istnieje.`,backToDashboard:`Wróć do pulpitu`},devices:{title:`Urządzenia`,searchPlaceholder:`Szukaj urządzeń...`,filterBridge:`Mostek`,allBridges:`Wszystkie mostki`,filterDeviceType:`Typ urządzenia`,allTypes:`Wszystkie typy`,sortBy:`Sortuj według`,sortBridge:`Mostek`,sortType:`Typ urządzenia`,sortName:`Nazwa`,deviceCount:`{{count}} urządzeń`,filteredCount:`{{filtered}} z {{total}} urządzeń`},diagnostics:{title:`Diagnostyka na żywo`,stateUpdate:`Aktualizacja stanu`,command:`Komenda`,entityError:`Błąd`,sessionOpen:`Otwarcie sesji`,sessionClose:`Zamknięcie sesji`,subscription:`Subskrypcja`,bridgeStart:`Start mostka`,bridgeStop:`Stop mostka`,filterEvents:`Filtruj typy zdarzeń`,clearEvents:`Wyczyść wszystkie zdarzenia`,noEvents:`Brak zdarzeń pasujących do aktualnych filtrów.`},startup:{title:`Kolejność uruchamiania`,description:`Przeciągnij i upuść mostki, aby ustawić kolejność uruchamiania. Niższe pozycje uruchamiane są jako pierwsze.`,saveSuccess:`Kolejność uruchamiania została zapisana`,saveFailed:`Nie udało się zapisać kolejności uruchamiania`,saveChanges:`Zapisz zmiany`,unsavedChanges:`Masz niezapisane zmiany kolejności uruchamiania.`,noBridges:`Nie skonfigurowano jeszcze żadnych mostków.`,saveOrder:`Zapisz kolejność uruchamiania`},areaSetup:{title:`Konfiguracja obszaru`,heading:`Konfiguracja mostków wg obszarów`,description:`Automatycznie utwórz jeden mostek dla każdego obszaru Home Assistant. Każdy mostek będzie zawierał wszystkie wspierane encje z tego obszaru.`,noAreas:`Nie znaleziono obszarów ze wspieranymi encjami w Home Assistant. Upewnij się, że Twoje urządzenia są przypisane do obszarów w HA.`,selectController:`1. Wybierz kontroler (opcjonalnie)`,selectAreas:`2. Wybierz obszary ({{selected}} z {{total}})`,clear:`Wyczyść`,createBridges:`Utwórz {{count}} mostek(ów)`,results:`Wyniki`,goToBridges:`Przejdź do mostków`,createdSuccess:`Pomyślnie utworzono {{count}} mostek(ów)`,createdPartial:`Utworzono {{succeeded}}, niepowodzenia {{failed}} mostek(ów)`,loadFailed:`Nie udało się wczytać obszarów`,creating:`Tworzenie...`,created:`Utworzono`,unknownError:`Nieznany błąd`},lockCredentials:{title:`Dane dostępu do zamków`,addCredential:`Dodaj dane dostępu do zamka`,editCredential:`Edytuj dane dostępu do zamka`,lockEntityId:`ID encji zamka`,lockEntityHelperText:`ID encji zamka w Home Assistant`,pinCode:`Kod PIN`,nameOptional:`Nazwa (opcjonalnie)`,namePlaceholder:`Drzwi wejściowe`,nameHelperText:`Przyjazna nazwa dla tych danych dostępu`,entityRequired:`ID encji jest wymagane`,pinLength:`PIN musi mieć 4-8 cyfr`,pinDigitsOnly:`PIN może zawierać tylko cyfry`,saveFailed:`Nie udało się zapisać`,loadFailed:`Nie udało się wczytać danych dostępu`,deleteFailed:`Nie udało się usunąć`,updateFailed:`Nie udało się zaktualizować`,enable:`Włącz`,disable:`Wyłącz`,confirmDeleteTitle:`Usuń dane dostępu`,confirmDeleteMessage:`To trwale usunie kod PIN dla {{entity}}. Operacji nie można cofnąć.`},labels:{title:`Referencja filtrów`,info:`Przeglądaj wszystkie dostępne wartości filtrów dla konfiguracji mostka. Kliknij dowolną wartość, aby skopiować ją do schowka.`,searchPlaceholder:`Szukaj...`,loadFailed:`Nie udało się wczytać danych`,labelsSection:`Etykiety`,labelsHint:`Użyj z typem filtra "entity_label" lub "device_label". Możesz użyć nazwy wyświetlanej albo label_id.`,noLabels:`Nie znaleziono etykiet w Home Assistant. Utwórz etykiety w Ustawienia > Etykiety.`,displayName:`Nazwa wyświetlana`,labelId:`label_id`,areaId:`area_id`,areasSection:`Obszary`,areasHint:`Użyj z typem filtra "area". Obszary są także używane do automatycznego przypisywania pomieszczeń w kontrolerach Matter.`,noAreas:`Nie znaleziono obszarów w Home Assistant. Utwórz obszary w Ustawienia > Obszary.`,otherFilterValues:`Inne wartości filtrów`,domains:`Domeny`,domainsHint:`Użyj z typem filtra "domain".`,platforms:`Platformy / Integracje`,platformsHint:`Użyj z typem filtra "platform".`,entityCategories:`Kategorie encji`,entityCategoriesHint:`Użyj z typem filtra "entity_category".`,deviceClasses:`Klasy urządzeń`,deviceClassesHint:`Użyj z typem filtra "device_class".`,deviceNames:`Nazwy urządzeń`,deviceNamesHint:`Użyj z typem filtra "device_name".`,productNames:`Nazwy produktów`,productNamesHint:`Użyj z typem filtra "product_name".`},logs:{title:`Logi systemowe`,logLevel:`Poziom logowania`,error:`Błąd`,warning:`Ostrzeżenie`,info:`Informacja`,debug:`Debug`,searchPlaceholder:`Szukaj w logach...`,noResults:`Nie znaleziono logów`,autoRefresh:`Automatyczne odświeżanie`},backup:{title:`Kopia i przywracanie`,description:`Utwórz pełną kopię zapasową mostków i mapowań encji albo przywróć z poprzedniej kopii.`,configBackup:`Kopia konfiguracji`,configBackupDesc:`Eksportuj konfiguracje mostków i mapowania encji.`,configBackupNote:`Po przywróceniu mostki będą wymagały ponownego komisjonowania.`,fullBackup:`Pełna kopia (z tożsamością)`,fullBackupDesc:`Zawiera pliki tożsamości Matter (pary kluczy, poświadczenia fabric).`,fullBackupWarning:`Zachowuje stan komisjonowania między przywróceniami. NIE UDOSTĘPNIAJ!`,restoreFromBackup:`Przywróć z kopii`,restoreDesc:`Prześlij wcześniej utworzony plik kopii, aby przywrócić mostki i konfiguracje.`,restoreTitle:`Przywróć kopię`,selectBridges:`Wybierz mostki do przywrócenia`,overwriteExisting:`Nadpisz istniejące mostki`,includeMappings:`Uwzględnij mapowania encji`,restoreIdentities:`Przywróć tożsamości Matter (bez ponownego komisjonowania)`,restore:`Przywróć`,downloadSuccess:`Kopia została pobrana pomyślnie!`,restartRequired:`Wymagany restart`,restartMessage:`Mostki zostały przywrócone z kopii. Aby zastosować zmiany, wymagany jest restart.`,restartNote:`Aplikacja zostanie uruchomiona ponownie i może być konieczne odświeżenie tej strony.`,restartNow:`Restartuj teraz`,storedBackups:`Zapisane kopie`,createSnapshot:`Utwórz kopię`,noSnapshots:`Brak zapisanych kopii. Kopie są tworzone automatycznie przy zamykaniu lub można je utworzyć ręcznie.`,downloadSnapshot:`Pobierz`,restoreSnapshot:`Przywróć`,auto:`Automatyczna`,manual:`Ręczna`,snapshotCreated:`Kopia została utworzona pomyślnie!`,snapshotRestored:`Przywrócono {{bridges}} mostek(ów), {{mappings}} mapowań, {{identities}} tożsamości.`,confirmRestore:`Potwierdź przywracanie`,confirmRestoreMessage:`Czy na pewno chcesz przywrócić z "{{filename}}"? To nadpisze bieżącą konfigurację.`,restoreWarning:`Wszystkie istniejące mostki i konfiguracje zostaną nadpisane. Po przywróceniu wymagany jest restart.`,confirmDelete:`Usuń kopię`,confirmDeleteMessage:`Czy na pewno chcesz usunąć "{{filename}}"? Tej akcji nie można cofnąć.`,settings:`Ustawienia kopii`,autoBackupLabel:`Automatyczna kopia`,autoBackupDesc:`Automatycznie twórz pełną kopię podczas zamykania lub restartu aplikacji.`,retentionCount:`Liczba przechowywanych kopii`,retentionCountDesc:`Liczba kopii do zachowania (najstarsze są usuwane automatycznie)`},networkMap:{title:`Mapa sieci`,hubLabel:`HAMH`,undoMove:`Cofnij ostatnie przesunięcie`,resetLayout:`Resetuj układ`,refreshData:`Odśwież dane`,fullscreen:`Pełny ekran`,exitFullscreen:`Wyjdź z pełnego ekranu`,legend:`Legenda`,controller:`Kontroler`,hub:`Hub HAMH`,bridge:`Mostek`,device:`Urządzenie`,failed:`Niepowodzenie`},updateChecker:{title:`Aktualizacje oprogramowania`,checkNow:`Sprawdź teraz`,currentVersion:`Obecna wersja`,latestVersion:`Najnowsza wersja`,updateAvailable:`Dostępna aktualizacja!`,upToDate:`Używasz najnowszej wersji.`,releaseNotes:`Informacje o wydaniu`,notAvailable:`Sprawdzanie aktualizacji niedostępne w tej wersji`,checkFailed:`Nie udało się sprawdzić aktualizacji`,unreachable:`Nie można połączyć się z serwerem`,instructionAddon:`Zaktualizuj przez Ustawienia → Dodatki w Home Assistant.`,instructionDocker:`Pobierz najnowszy obraz i odtwórz kontener.`,instructionNpm:`Uruchom: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Kreator konfiguracji mostka`,stepTemplate:`Szablon`,stepController:`Kontroler`,stepBridgeInfo:`Informacje o mostku`,stepEntityFilter:`Filtr encji`,stepFeatureFlags:`Flagi funkcji`,stepReview:`Przegląd i utworzenie`,autoCompose:`Automatyczne komponowanie urządzeń`,autoForceSyncFlag:`Automatyczne wymuszanie synchronizacji`,invertCover:`Odwróć kierunek rolet`,invertCoverDescription:`Zamień kierunek otwierania/zamykania rolet. Użyj, jeśli rolety pokazują błędną pozycję w kontrolerach Matter.`,includeHidden:`Uwzględnij ukryte encje`,includeHiddenDescription:`Udostępnij również encje oznaczone jako ukryte w Home Assistant.`,bridgeName:`Nazwa mostka`,portLabel:`Port`,portAutoAssign:`Automatycznie przypisany do kolejnego wolnego portu`,nameRequired:`Wpisz nazwę mostka`,createFailed:`Nie udało się utworzyć mostka`,bridgeInfoDescription:`Nadaj mostkowi nazwę i port.`,serverModeLabel:`Tryb serwera (dla odkurzaczy robotycznych)`,serverModeTooltip:`Wymagany, aby odkurzacze robotyczne działały z Apple Home (Siri) i Alexą. Mostki w trybie serwera obsługują tylko JEDNO urządzenie.`,entityFilterDescription:`Skonfiguruj, które encje mają być uwzględnione w tym mostku.`,includeAll:`Uwzględnij wszystkie encje (wildcard)`,entityId:`ID encji`,includePattern:`Wzorzec uwzględniania`,entityFilters:`Filtry encji`,serverModeEntityHint:`Tryb serwera obsługuje tylko JEDNO urządzenie. Wpisz dokładne ID encji (np. vacuum.my_vacuum).`,templatePreConfigured:`Skonfigurowane przez szablon. Edytuj w pełnym edytorze po utworzeniu.`,wildcardHint:`Użyj * dla wszystkich lub wzorców typu light.*, switch.*`,commaHint:`Wpisz konkretne ID encji rozdzielone przecinkami`,excludePatterns:`Wzorce wykluczeń (opcjonalnie)`,excludeHelperText:`Wzorce do wykluczenia, rozdzielone przecinkami`,skipTemplate:`Pomiń szablon`,creating:`Tworzenie...`,createBridge:`Utwórz mostek`,searchRules:`Szukaj reguł...`,templateDescription:`Wybierz szablon, aby szybko zacząć, lub pomiń, by utworzyć własny mostek.`,controllerDescription:`Którego kontrolera Matter będziesz używać? To zoptymalizuje flagi funkcji dla Twojego kontrolera.`,controllerHint:`Możesz zawsze dostosować flagi funkcji w kolejnych krokach lub po utworzeniu mostka.`,templateApplied:`Zastosowano szablon "{{name}}". Dostosuj poniżej nazwę i port.`,filterPreConfiguredFrom:`Filtr jest wstępnie skonfigurowany z szablonu "{{name}}". Możesz go dostosować poniżej.`,featureFlagsDescription:`Flagi funkcji kontrolują sposób udostępniania urządzeń kontrolerom Matter.`,recommendedFlags:`Zalecane flagi dla {{name}} są wstępnie zaznaczone.`,selectFlags:`Wybierz flagi pasujące do Twojej konfiguracji.`,reviewDescription:`Sprawdź konfigurację mostka:`,bridgesToCreate:`Mostki do utworzenia ({{count}})`,bridgesCreated:`{{count}} mostek(ów) już utworzono w tej sesji`,addAnother:`Dodaj kolejny`},footer:{github:`GitHub`,documentation:`Dokumentacja`},languageSwitcher:{disclaimer:`Tłumaczenia mogą być niekompletne.`,contribute:`Pomóż je ulepszyć!`},translationEditor:{title:`Edytor tłumaczeń`,editLanguage:`Edytuj język`,info:`Edytuj tłumaczenia bezpośrednio w przeglądarce. Zmiany są zapisywane lokalnie i stosowane natychmiast. Wyeksportuj tłumaczenia, aby przesłać je do projektu.`,progress:`Przetłumaczono {{translated}} / {{total}} kluczy`,localEdits:`{{count}} lokalnych edycji`,searchPlaceholder:`Szukaj kluczy lub wartości...`,filterAll:`Wszystkie klucze`,filterMissing:`Brakujące`,filterEdited:`Edytowane`,exportJson:`Eksportuj JSON`,copyJson:`Kopiuj JSON`,copied:`Skopiowano!`,resetAll:`Resetuj wszystkie edycje`,resetKey:`Przywróć domyślne`,noResults:`Nie znaleziono pasujących kluczy tłumaczenia.`,addLanguage:`Dodaj język`,newLanguageCode:`Kod języka (np. pt, ja, ko)`,newLanguageName:`Nazwa języka (np. Português)`,addLanguageButton:`Dodaj`,languageExists:`Ten język już istnieje.`,codeRequired:`Kod języka jest wymagany.`,nameRequired:`Nazwa języka jest wymagana.`,removeLanguage:`Usuń język`,removeLanguageConfirm:`Usunąć niestandardowy język "{{name}}"? Wszystkie lokalne edycje tego języka zostaną utracone.`,importJson:`Importuj JSON`,importSuccess:`Zaimportowano {{count}} tłumaczeń.`,importFailed:`Import nie powiódł się: nieprawidłowy format JSON.`}},bs={common:{loading:`Загрузка`,notFound:`Не найдено`,save:`Сохранить`,cancel:`Отмена`,delete:`Удалить`,edit:`Редактировать`,close:`Закрыть`,refresh:`Обновить`,search:`Поиск`,enabled:`Включено`,disabled:`Отключено`,online:`В сети`,offline:`Не в сети`,running:`Работает`,stopped:`Остановлено`,failed:`Ошибка`,starting:`Запуск`,devices:`Устройства`,fabrics:`Fabric-соединения`,port:`Порт`,unknown:`Неизвестно`,confirm:`Подтвердить`,create:`Создать`,back:`Назад`,next:`Далее`,actions:`Действия`,name:`Имя`,type:`Тип`,error:`Ошибка`,version:`Версия`,copy:`Копировать`,copied:`Скопировано!`,copyId:`Копировать ID`,later:`Позже`,skip:`Пропустить`,reset:`Сбросить`,update:`Обновить`,all:`Все`,ascending:`По возрастанию`,descending:`По убыванию`,moveUp:`Вверх`,moveDown:`Вниз`,selectAll:`Выбрать все`,selectNone:`Снять выбор`,live:`Живой`,new:`Новый`,overwrite:`Перезаписать`,active:`Активно`,property:`Свойство`,value:`Значение`,custom:`Пользовательский`,startAll:`Запустить все`,stopAll:`Остановить все`,restartAll:`Перезапустить все`,import:`Импорт`,export:`Экспорт`,exportAll:`Экспортировать все`,wizard:`Мастер настройки`},nav:{bridges:`Мосты`,devices:`Все устройства`,health:`Состояние и диагностика`,diagnostics:`События в реальном времени`,settings:`Настройки`,networkMap:`Карта сети`,logs:`Журналы`,startupOrder:`Порядок запуска`,lockCredentials:`Учётные данные замков`,filterReference:`Справочник фильтров`,systemLogs:`Системные журналы`,lightMode:`Светлая тема`,darkMode:`Тёмная тема`},status:{error:`Ошибка`,unhealthy:`Неисправно`,noBridges:`Нет мостов`,loadingHealth:`Загрузка состояния...`,unknown:`Неизвестно`},errorBoundary:{title:`Что-то пошло не так`,fallbackMessage:`Произошла непредвиденная ошибка.`,reload:`Перезагрузить страницу`},settings:{title:`Настройки`,language:`Язык`,languageDescription:`Выберите язык интерфейса.`,checkUpdates:`Проверить обновления`,backupRestore:`Резервное копирование и восстановление`,exportBackup:`Экспорт резервной копии`,importBackup:`Импорт резервной копии`,dangerZone:`Опасная зона`,resetAll:`Сбросить все`,about:`О программе`,username:`Имя пользователя`,password:`Пароль`,enterNewPassword:`Введите новый пароль`,enableAuth:`Включить аутентификацию`,disableAuth:`Отключить аутентификацию`,disableAuthMessage:`Это удалит защиту паролем с веб-интерфейса. Любой в вашей сети сможет получить доступ к конфигурации мостов и изменять её.`,disableAuthConfirm:`Отключить аутентификацию`,usernamePasswordRequired:`Имя пользователя и пароль обязательны`,authSaveFailed:`Не удалось сохранить настройки аутентификации`,authLoadFailed:`Не удалось загрузить настройки аутентификации`,authDisabled:`Аутентификация отключена.`,authRemoveFailed:`Не удалось удалить настройки аутентификации`},dashboard:{title:`Панель управления`,systemOverview:`Обзор системы`,quickActions:`Быстрые действия`,bridgeOverview:`Обзор мостов`,noBridges:`Мосты пока не настроены.`,createBridge:`Создать мост`,viewAll:`Показать все`,totalDevices:`Всего устройств`,customize:`Настроить`,startAll:`Запустить все`,stopAll:`Остановить все`,restartAll:`Перезапустить все`,welcome:`Добро пожаловать в Home Assistant Matter Hub`,welcomeDescription:`Подключите устройства Home Assistant к Matter-контроллерам, таким как Apple Home, Google Home и Amazon Alexa.`,bridgeWizard:`Мастер настройки моста`,setupByArea:`Настройка по зонам`,manualSetup:`Ручная настройка`,areaSetup:`Настройка зон`,documentation:`Документация`,quickNavigation:`Быстрая навигация`,haConnection:`Подключение к HA`,startupOrder:`Порядок запуска`,lockCredentials:`Учётные данные замков`,filterReference:`Справочник фильтров`,successMessage:`Ваши мосты подключены к {{count}} fabric-соединениям контроллеров. Устройства должны появиться в приложении контроллера.`,noBridgesHint:`Мосты пока не настроены. Используйте мастер настройки или создайте мост вручную.`,customizeDashboard:`Настроить панель управления`,bridgeStatusRunning:`{{running}} работает`,bridgeStatusFailed:`{{failed}} с ошибками`,devicesFailed:`{{count}} с ошибками`,uptimeFormat:`{{time}}`},bridge:{name:`Имя моста`,port:`Порт`,status:`Статус`,pairHint:`Подключите этот мост к вашему контроллеру`,pairDescription:`Откройте приложение контроллера (Apple Home, Google Home или Amazon Alexa), добавьте новое устройство и отсканируйте QR-код ниже или введите код сопряжения вручную. Убедитесь, что контроллер находится в одной сети с Home Assistant.`,failedEntities:`Ошибочные объекты`,serverModeRecommended:`Серверный режим рекомендуется для роботов-пылесосов`,serverModeDescription:`Этот мост содержит робот-пылесос в режиме моста. Apple Home и Alexa покажут мост как дополнительное устройство, что приведёт к дублированию. Включите серверный режим, чтобы представить пылесос как самостоятельное Matter-устройство.`,enableServerMode:`Включить серверный режим`,enabling:`Включение...`,start:`Запустить`,stop:`Остановить`,restart:`Перезапустить`,factoryReset:`Сброс к заводским настройкам`,pairingCode:`Код сопряжения`,openCommissioning:`Открыть окно сопряжения`,multiPair:`Мульти-fabric сопряжение`,deleteBridge:`Удалить мост`,deleteConfirm:`Вы уверены, что хотите удалить этот мост?`,featureFlags:`Флаги функций`,failedEntitiesCount:`{{count}} объект(ов) не удалось загрузить.`,clickToShow:`Нажмите для просмотра деталей.`,clickToHide:`Нажмите, чтобы скрыть детали.`,loadFailed:`Не удалось загрузить данные моста`,refreshHint:`Новые устройства и изменения меток обнаруживаются каждые 30 секунд.`,refreshingStates:`Обновление состояний через {{seconds}} сек...`,serverModeSingleDeviceNote:`Примечание: серверный режим требует, чтобы пылесос был единственным устройством на этом мосту. Сначала удалите другие объекты, затем включите серверный режим в настройках моста.`,serverModeEnabled:`Серверный режим включён. Мост перезапустится с пылесосом как самостоятельным устройством.`,serverModeEnableFailed:`Не удалось включить серверный режим: {{error}}`,pairing:`Сопряжение`,bridgeInfo:`Информация о мосте`,commissioned:`Подключён`,addController:`Добавить ещё контроллер`,openingCommissioning:`Открытие окна сопряжения...`,fabricTooltip:`Fabric представляет подключение к Matter-контроллеру (например, Apple Home, Google Home, Alexa). Каждый контроллер создаёт один fabric при сопряжении.`,forceSync:`Принудительная синхронизация`,syncing:`Синхронизация...`,forceSyncTooltip:`Отправить все текущие состояния устройств подключённым контроллерам`,editFilters:`Редактировать фильтры`,addFilters:`Добавить фильтры`,bridgeNotRunning:`Мост не запущен. Запустите мост, чтобы увидеть информацию о сопряжении.`,manualCode:`Код для ввода вручную`,openingWindow:`Открытие окна сопряжения...`,bridgeId:`ID моста`,passcode:`Пароль`,discriminator:`Дискриминатор`,connectedFabrics:`Подключённые fabric-соединения ({{count}})`,noFabrics:`Контроллеры пока не подключены. Отсканируйте QR-код вашим Matter-контроллером для сопряжения.`,entityFilters:`Фильтры объектов`,noFilters:`Фильтры не настроены. Все поддерживаемые объекты будут доступны.`,scanQrCode:`Отсканируйте этот QR-код вашим Matter-контроллером (Apple Home, Google Home, Alexa и др.), чтобы добавить мост в другую экосистему.`,appleHomeWarning:`Этот мост использует расширенный Flat-режим. Отключайте только если вы используете исключительно Apple Home.`,googleHomeWarning:`Это может вызвать проблемы с Apple Home и Google Home.`,resetSuccess:`Мост успешно сброшен`,deleteSuccess:`Мост успешно удалён`,confirmResetTitle:`Сброс моста к заводским настройкам`,confirmResetMessage:`Это удалит всю информацию о сопряжении и вернёт мост в исходное состояние. Подключённые контроллеры потеряют доступ. Это действие нельзя отменить.`,confirmDeleteTitle:`Удалить мост`,confirmDeleteMessage:`Это навсегда удалит мост, все его сопряжения и привязки объектов. Подключённые контроллеры потеряют доступ. Это действие нельзя отменить.`,importTitle:`Импорт мостов`,overwriteExisting:`Перезаписать существующие мосты`,iconLabel:`Иконка моста`,google:`Google`,alexa:`Alexa`,serverMode:`Серверный режим`,autoForceSync:`Автоматическая синхронизация`,saveSuccess:`Мост сохранён`,updateSuccess:`Обновление завершено`,exportFailed:`Ошибка экспорта`,actionStarted:`Запущено`,actionStopped:`Остановлено`,actionRestarted:`Перезапущено`,actionFailed:`{{action}}, ошибка`,actionResult:`{{label}} {{count}} мост(ов)`,couldNotLoad:`Не удалось загрузить мосты`,showingFirst:`Показаны первые {{count}}`,importParseFailed:`Не удалось разобрать файл импорта. Выберите корректный файл экспорта.`,importing:`Импорт...`,importCount:`Импортировать {{count}} мост(ов)`,jsonEditor:`JSON-редактор`,formEditor:`Редактор форм`},endpoints:{title:`Конечные точки`,searchPlaceholder:`Поиск конечных точек...`,sortBy:`Сортировка`,sortName:`Имя`,sortEndpoint:`ID конечной точки`,sortType:`Тип`,cardView:`Карточки`,treeView:`Дерево`,clusters:`Кластеры`,entityUnavailable:`Объект недоступен`,showUnavailable:`Показать {{count}} недоступных`,showAll:`Показать все объекты`,uploadImage:`Загрузить изображение устройства`,removeImage:`Удалить пользовательское изображение`,editMapping:`Редактировать привязку объекта`,homeAssistantEntity:`Объект Home Assistant`,noEndpoints:`Конечные точки не найдены.`,expandAll:`Развернуть все`,collapseAll:`Свернуть все`,viewAll:`Все устройства`,haState:`Состояние HA`,aboutEndpoint:`Об этой конечной точке`,entityId:`ID объекта`,customName:`Пользовательское имя`,deviceTypeOverride:`Переопределение типа устройства`,keyHaAttributes:`Ключевые атрибуты HA`,entityMappings:`Привязки объектов`,copyData:`Копировать данные в буфер обмена`,behavior:`Поведение`},health:{title:`Состояние и диагностика`,version:`Версия`,uptime:`Время работы`,homeAssistant:`Home Assistant`,connected:`Подключено`,disconnected:`Отключено`,bridgeStatus:`Статус моста`,refreshHealth:`Обновить данные о состоянии`,exportDiagnostic:`Экспорт диагностики`,memory:`Память`,fabricDetails:`Данные fabric`,sessions:`Сессии`,subscriptions:`Подписки`,noFabrics:`Нет подключённых fabric`,systemMetrics:`Системные метрики`,heap:`Heap`,rss:`RSS`,external:`Внешняя`,systemHealth:`Состояние системы`,fetchFailed:`Не удалось получить данные о состоянии`,connectionError:`Ошибка подключения`,exportFailed:`Не удалось экспортировать данные диагностики`,restartFailed:`Не удалось перезапустить мост`,unableToLoad:`Не удалось загрузить данные о состоянии`,sortBy:`Сортировать по`,created:`Создано`,ascending:`По возрастанию`,descending:`По убыванию`,connectedTo:`Подключено к`,autoRecovery:`Автовосстановление`,recoveryAttempts:`Попытки восстановления`,fabrics:`фабрик`,networkDiagnostics:`Диагностика сети`,checksPassed:`пройдено`,checksWarning:`предупреждения`,checksFailed:`ошибки`,hideDetails:`Скрыть детали`,showDetails:`Показать детали`,allChecks:`Все проверки`,check:`Проверка`,statusLabel:`Статус`,message:`Сообщение`,networkInterfaces:`Сетевые интерфейсы`,interfaceName:`Интерфейс`,refresh:`Обновить`},mapping:{title:`Привязки объектов`,entityId:`ID объекта`,deviceType:`Тип устройства`,customName:`Пользовательское имя`,status:`Статус`,addMapping:`Добавить привязку`,editMapping:`Редактировать привязку`,deleteMapping:`Удалить привязку`,saved:`Привязка для {{entityId}} сохранена. Перезапустите мост для применения изменений.`,saveFailed:`Не удалось сохранить привязку: {{error}}`,deleted:`Привязка для {{entityId}} удалена.`,deleteFailed:`Не удалось удалить привязку.`,matterTag:`Matter-тег`,exportProfile:`Экспорт профиля привязок`,importProfile:`Импорт профиля привязок`,profileName:`Имя профиля`,match:`Совпадение`,existing:`Существует`,autoDetect:`Автоопределение (по умолчанию)`,loadFailed:`Не удалось загрузить привязки объектов`,noMappings:`Пользовательские привязки не настроены. Используйте привязки для переопределения типов Matter-устройств, установки пользовательских имён или отключения отдельных объектов.`,applying:`Применение...`,applyCount:`Применить {{count}} привязку(и)`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},notFound:{title:`Страница не найдена`,description:`Запрашиваемая страница не существует.`,backToDashboard:`Вернуться на панель управления`},devices:{title:`Устройства`,searchPlaceholder:`Поиск устройств...`,filterBridge:`Мост`,allBridges:`Все мосты`,filterDeviceType:`Тип устройства`,allTypes:`Все типы`,sortBy:`Сортировать по`,sortBridge:`Мост`,sortType:`Тип устройства`,sortName:`Имя`,deviceCount:`{{count}} устройство(а)`,filteredCount:`{{filtered}} из {{total}} устройств`},diagnostics:{title:`Диагностика в реальном времени`,stateUpdate:`Обновление состояния`,command:`Команда`,entityError:`Ошибка`,sessionOpen:`Сессия открыта`,sessionClose:`Сессия закрыта`,subscription:`Подписка`,bridgeStart:`Мост запущен`,bridgeStop:`Мост остановлен`,entityWarning:`Предупреждение`,filterEvents:`Фильтр типов событий`,clearEvents:`Очистить все события`,noEvents:`Нет событий, соответствующих текущим фильтрам.`},startup:{title:`Порядок запуска`,description:`Перетаскивайте мосты для настройки порядка запуска. Мосты с меньшей позицией запускаются первыми.`,saveSuccess:`Порядок запуска успешно сохранён`,saveFailed:`Не удалось сохранить порядок запуска`,saveChanges:`Сохранить изменения`,unsavedChanges:`У вас есть несохранённые изменения порядка запуска.`,noBridges:`Мосты пока не настроены.`,saveOrder:`Сохранить порядок запуска`},areaSetup:{title:`Настройка зон`,heading:`Настройка мостов по зонам`,description:`Автоматически создать по одному мосту на каждую зону Home Assistant. Каждый мост будет содержать все поддерживаемые объекты из этой зоны.`,noAreas:`Не найдено зон с поддерживаемыми объектами в Home Assistant. Убедитесь, что ваши устройства назначены зонам в HA.`,selectController:`1. Выберите контроллер (необязательно)`,selectAreas:`2. Выберите зоны ({{selected}} из {{total}})`,clear:`Очистить`,createBridges:`Создать {{count}} мост(ов)`,results:`Результаты`,goToBridges:`Перейти к мостам`,createdSuccess:`Успешно создано {{count}} мост(ов)`,createdPartial:`Создано {{succeeded}}, ошибка у {{failed}} мост(ов)`,loadFailed:`Не удалось загрузить зоны`,creating:`Создание...`,created:`Создано`,unknownError:`Неизвестная ошибка`},lockCredentials:{title:`Учётные данные замков`,addCredential:`Добавить учётные данные`,editCredential:`Редактировать учётные данные`,lockEntityId:`ID объекта замка`,lockEntityHelperText:`ID объекта Home Assistant для замка`,pinCode:`PIN-код`,nameOptional:`Имя (необязательно)`,namePlaceholder:`Входная дверь`,nameHelperText:`Понятное имя для этих учётных данных`,entityRequired:`ID объекта обязателен`,pinLength:`PIN должен содержать 4-8 цифр`,pinDigitsOnly:`PIN должен содержать только цифры`,saveFailed:`Не удалось сохранить`,loadFailed:`Не удалось загрузить учётные данные`,deleteFailed:`Не удалось удалить`,updateFailed:`Не удалось обновить`,enable:`Включить`,disable:`Отключить`,confirmDeleteTitle:`Удалить учётные данные`,confirmDeleteMessage:`Это навсегда удалит PIN-код для {{entity}}. Это действие нельзя отменить.`},labels:{title:`Справочник фильтров`,info:`Просматривайте все доступные значения фильтров для конфигурации моста. Нажмите на значение, чтобы скопировать его в буфер обмена.`,searchPlaceholder:`Поиск...`,loadFailed:`Не удалось загрузить данные`,labelsSection:`Метки`,labelsHint:`Используйте с типом фильтра "entity_label" или "device_label". Можно использовать как отображаемое имя, так и label_id.`,noLabels:`Метки в Home Assistant не найдены. Создайте метки в разделе Настройки > Метки.`,displayName:`Отображаемое имя`,labelId:`label_id`,areaId:`area_id`,areasSection:`Зоны`,areasHint:`Используйте с типом фильтра "area". Зоны также используются для автоматического назначения комнат в Matter-контроллерах.`,noAreas:`Зоны в Home Assistant не найдены. Создайте зоны в разделе Настройки > Зоны.`,otherFilterValues:`Другие значения фильтров`,domains:`Домены`,domainsHint:`Используйте с типом фильтра "domain".`,platforms:`Платформы / Интеграции`,platformsHint:`Используйте с типом фильтра "platform".`,entityCategories:`Категории объектов`,entityCategoriesHint:`Используйте с типом фильтра "entity_category".`,deviceClasses:`Классы устройств`,deviceClassesHint:`Используйте с типом фильтра "device_class".`,deviceNames:`Имена устройств`,deviceNamesHint:`Используйте с типом фильтра "device_name".`,productNames:`Названия продуктов`,productNamesHint:`Используйте с типом фильтра "product_name".`},logs:{title:`Системные журналы`,logLevel:`Уровень журнала`,error:`Ошибка`,warning:`Предупреждение`,info:`Информация`,debug:`Отладка`,searchPlaceholder:`Поиск в журналах...`,noResults:`Записи не найдены`,autoRefresh:`Автообновление`},backup:{title:`Резервное копирование и восстановление`,description:`Создайте полную резервную копию мостов и привязок объектов или восстановите из предыдущей копии.`,configBackup:`Резервная копия конфигурации`,configBackupDesc:`Экспорт конфигураций мостов и привязок объектов.`,configBackupNote:`После восстановления мосты потребуют повторного сопряжения.`,fullBackup:`Полная резервная копия (с идентификацией)`,fullBackupDesc:`Включает файлы идентификации Matter (ключи, учётные данные fabric).`,fullBackupWarning:`Сохраняет состояние сопряжения при восстановлении. НЕ ПЕРЕДАВАЙТЕ!`,restoreFromBackup:`Восстановить из резервной копии`,restoreDesc:`Загрузите ранее созданный файл резервной копии для восстановления мостов и конфигураций.`,restoreTitle:`Восстановление из резервной копии`,selectBridges:`Выберите мосты для восстановления`,overwriteExisting:`Перезаписать существующие мосты`,includeMappings:`Включить привязки объектов`,restoreIdentities:`Восстановить идентификации Matter (без повторного сопряжения)`,restore:`Восстановить`,downloadSuccess:`Резервная копия успешно загружена!`,restartRequired:`Требуется перезапуск`,restartMessage:`Мосты восстановлены из резервной копии. Для применения изменений необходим перезапуск.`,restartNote:`Приложение перезапустится, и вам может потребоваться обновить эту страницу.`,restartNow:`Перезапустить сейчас`,storedBackups:`Сохранённые резервные копии`,createSnapshot:`Создать резервную копию`,noSnapshots:`Сохранённых резервных копий пока нет. Копии создаются автоматически при завершении работы или могут быть созданы вручную.`,downloadSnapshot:`Скачать`,restoreSnapshot:`Восстановить`,auto:`Авто`,manual:`Вручную`,snapshotCreated:`Резервная копия успешно создана!`,snapshotRestored:`Восстановлено: {{bridges}} мостов, {{mappings}} привязок, {{identities}} идентификаций.`,confirmRestore:`Подтвердить восстановление`,confirmRestoreMessage:`Вы уверены, что хотите восстановить из "{{filename}}"? Это перезапишет текущую конфигурацию.`,restoreWarning:`Все существующие мосты и конфигурации будут перезаписаны. После восстановления потребуется перезапуск.`,confirmDelete:`Удалить резервную копию`,confirmDeleteMessage:`Вы уверены, что хотите удалить "{{filename}}"? Это действие нельзя отменить.`,settings:`Настройки резервного копирования`,autoBackupLabel:`Автоматическое резервное копирование`,autoBackupDesc:`Автоматически создавать полную резервную копию при завершении или перезапуске приложения.`,retentionCount:`Хранить копий`,retentionCountDesc:`Количество резервных копий для хранения (старые удаляются автоматически)`},networkMap:{title:`Карта сети`,hubLabel:`HAMH`,undoMove:`Отменить перемещение`,resetLayout:`Сбросить расположение`,refreshData:`Обновить данные`,fullscreen:`Полный экран`,exitFullscreen:`Выйти из полного экрана`,legend:`Легенда`,controller:`Контроллер`,hub:`HAMH Hub`,bridge:`Мост`,device:`Устройство`,failed:`Ошибка`},updateChecker:{title:`Обновления программного обеспечения`,checkNow:`Проверить сейчас`,currentVersion:`Текущая версия`,latestVersion:`Последняя версия`,updateAvailable:`Доступно обновление!`,upToDate:`Вы используете последнюю версию.`,releaseNotes:`Примечания к выпуску`,notAvailable:`Проверка обновлений недоступна в этой версии`,checkFailed:`Не удалось проверить обновления`,unreachable:`Сервер недоступен`,instructionAddon:`Обновите через Настройки → Дополнения в Home Assistant.`,instructionDocker:`Загрузите последний образ и пересоздайте контейнер.`,instructionNpm:`Выполните: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Мастер настройки моста`,stepTemplate:`Шаблон`,stepController:`Контроллер`,stepBridgeInfo:`Информация о мосте`,stepEntityFilter:`Фильтр объектов`,stepFeatureFlags:`Флаги функций`,stepReview:`Проверка и создание`,autoCompose:`Автоматическое объединение устройств`,autoForceSyncFlag:`Автоматическая синхронизация`,invertCover:`Инвертировать направление штор`,invertCoverDescription:`Поменять местами направления открытия/закрытия штор. Используйте, если шторы показывают неправильное положение в Matter-контроллерах.`,includeHidden:`Включить скрытые объекты`,includeHiddenDescription:`Также отображать объекты, отмеченные как скрытые в Home Assistant.`,bridgeName:`Имя моста`,portLabel:`Порт`,portAutoAssign:`Автоматически назначается следующий доступный порт`,nameRequired:`Пожалуйста, введите имя моста`,createFailed:`Не удалось создать мост`,bridgeInfoDescription:`Задайте имя и порт для моста.`,serverModeLabel:`Серверный режим (для роботов-пылесосов)`,serverModeTooltip:`Необходим для работы роботов-пылесосов с Apple Home (Siri) и Alexa. Мосты в серверном режиме поддерживают только ОДНО устройство.`,entityFilterDescription:`Настройте, какие объекты должны быть включены в этот мост.`,includeAll:`Включить все объекты (подстановочный знак)`,entityId:`ID объекта`,includePattern:`Шаблон включения`,entityFilters:`Фильтры объектов`,serverModeEntityHint:`Серверный режим поддерживает только ОДНО устройство. Введите точный ID объекта (например, vacuum.my_vacuum).`,templatePreConfigured:`Предварительно настроено шаблоном. Редактируйте в полном редакторе после создания.`,wildcardHint:`Используйте * для всех или шаблоны вроде light.*, switch.*`,commaHint:`Введите конкретные ID объектов через запятую`,excludePatterns:`Шаблоны исключения (необязательно)`,excludeHelperText:`Шаблоны для исключения через запятую`,skipTemplate:`Пропустить шаблон`,creating:`Создание...`,createBridge:`Создать мост`,searchRules:`Поиск правил...`,templateDescription:`Выберите шаблон для быстрого старта или пропустите для создания пользовательского моста.`,controllerDescription:`Какой Matter-контроллер вы будете использовать? Это оптимизирует флаги функций для вашего контроллера.`,controllerHint:`Вы можете изменить флаги функций на следующих шагах или после создания моста.`,templateApplied:`Шаблон "{{name}}" применён. Настройте имя и порт ниже.`,filterPreConfiguredFrom:`Фильтр предварительно настроен из шаблона "{{name}}". Вы можете изменить его ниже.`,featureFlagsDescription:`Флаги функций управляют тем, как устройства представляются Matter-контроллерам.`,recommendedFlags:`Рекомендуемые флаги для {{name}} предварительно выбраны.`,selectFlags:`Выберите флаги, подходящие для вашей конфигурации.`,reviewDescription:`Проверьте конфигурацию моста:`,bridgesToCreate:`Мосты для создания ({{count}})`,bridgesCreated:`{{count}} мост(ов) уже создано в этой сессии`,addAnother:`Добавить ещё`},footer:{github:`GitHub`,documentation:`Документация`},languageSwitcher:{disclaimer:`Переводы могут быть неполными.`,contribute:`Помогите их улучшить!`},translationEditor:{title:`Редактор переводов`,editLanguage:`Язык для редактирования`,info:`Редактируйте переводы прямо в браузере. Изменения сохраняются локально и применяются мгновенно. Экспортируйте переводы для отправки в проект.`,progress:`{{translated}} / {{total}} ключей переведено`,localEdits:`{{count}} локальных правок`,searchPlaceholder:`Поиск ключей или значений...`,filterAll:`Все ключи`,filterMissing:`Отсутствующие`,filterEdited:`Изменённые`,exportJson:`Экспорт JSON`,copyJson:`Копировать JSON`,copied:`Скопировано!`,resetAll:`Сбросить все правки`,resetKey:`Сбросить к значению по умолчанию`,noResults:`Совпадающие ключи перевода не найдены.`,addLanguage:`Добавить язык`,newLanguageCode:`Код языка (например, pt, ja, ko)`,newLanguageName:`Название языка (например, Português)`,addLanguageButton:`Добавить`,languageExists:`Этот язык уже существует.`,codeRequired:`Код языка обязателен.`,nameRequired:`Название языка обязательно.`,removeLanguage:`Удалить язык`,removeLanguageConfirm:`Удалить пользовательский язык "{{name}}"? Все локальные правки для этого языка будут потеряны.`,importJson:`Импорт JSON`,importSuccess:`Импортировано {{count}} перевод(ов).`,importFailed:`Ошибка импорта: недопустимый формат JSON.`}},xs={common:{loading:`Laddar`,notFound:`Hittades inte`,save:`Spara`,cancel:`Avbryt`,delete:`Radera`,edit:`Redigera`,close:`Stäng`,refresh:`Uppdatera`,search:`Sök`,enabled:`Aktiverad`,disabled:`Inaktiverad`,online:`Online`,offline:`Offline`,running:`Körs`,stopped:`Stoppad`,failed:`Misslyckades`,starting:`Startar`,devices:`Enheter`,fabrics:`Märken`,port:`Port`,unknown:`Okänd`,confirm:`Bekräfta`,create:`Skapa`,back:`Tillbaka`,next:`Nästa`,actions:`Åtgärder`,name:`Namn`,type:`Typ`,error:`Fel`,version:`Version`,copy:`Kopiera`,copied:`Kopierat!`,copyId:`Kopiera ID`,later:`Senare`,skip:`Hoppa över`,reset:`Återställ`,update:`Uppdatera`,all:`Alla`,ascending:`Stigande`,descending:`Fallande`,moveUp:`Flytta upp`,moveDown:`Flytta ner`,selectAll:`Välj alla`,selectNone:`Avmarkera alla`,live:`Live`,new:`Ny`,overwrite:`Skriv över`,active:`Aktiv`,property:`Egenskap`,value:`Värde`,custom:`Anpassad`,startAll:`Starta alla`,stopAll:`Stoppa alla`,restartAll:`Starta om alla`,import:`Importera`,export:`Exportera`,exportAll:`Exportera alla`,wizard:`Guide`},nav:{bridges:`Bryggor`,devices:`Alla enheter`,health:`Hälsa & Diagnostik`,diagnostics:`Livehändelser`,settings:`Inställningar`,networkMap:`Nätverkskarta`,logs:`Loggar`,startupOrder:`Uppstartsordning`,lockCredentials:`Låsuppgifter`,filterReference:`Filterreferens`,systemLogs:`Systemloggar`,lightMode:`Ljust läge`,darkMode:`Mörkt läge`},status:{error:`Fel`,unhealthy:`Ohälsosam`,noBridges:`Inga Bryggor`,loadingHealth:`Laddar hälsostatus...`,unknown:`Okänd`},errorBoundary:{title:`Något gick fel`,fallbackMessage:`Ett oväntat fel inträffade.`,reload:`Ladda om sidan`},settings:{title:`Inställningar`,language:`Språk`,languageDescription:`Välj gränssnittets språk.`,checkUpdates:`Sök efter uppdateringar`,backupRestore:`Säkerhetskopiering & Återställning`,exportBackup:`Exportera säkerhetskopia`,importBackup:`Importera säkerhetskopia`,dangerZone:`Farozon`,resetAll:`Återställ allt`,about:`Om`,username:`Användarnamn`,password:`Lösenord`,enterNewPassword:`Ange nytt lösenord`,enableAuth:`Aktivera autentisering`,disableAuth:`Avaktivera autentisering`,disableAuthMessage:`Detta tar bort lösenordsskyddet från webbgränssnittet. Alla i ditt nätverk kommer att kunna komma åt och ändra din bryggkonfiguration.`,disableAuthConfirm:`Inaktivera autentisering`,usernamePasswordRequired:`Användarnamn och lösenord krävs`,authSaveFailed:`Kunde inte spara autentiseringsinställningarna`,authLoadFailed:`Misslyckades med att läsa in autentiseringsinställningarna`,authDisabled:`Autentisering inaktiverad.`,authRemoveFailed:`Misslyckades med att ta bort autentiseringsinställningarna`},dashboard:{title:`Instrumentpanel`,systemOverview:`Systemöversikt`,quickActions:`Snabbåtgärder`,bridgeOverview:`Brygg-översikt`,noBridges:`Inga bryggor konfigurerade.`,createBridge:`Skapa Brygga`,viewAll:`Visa alla`,totalDevices:`Totalt antal enheter`,customize:`Anpassa`,startAll:`Starta alla`,stopAll:`Stoppa alla`,restartAll:`Starta om alla`,welcome:`Välkommen till Home Assistant Matter Hub`,welcomeDescription:`Koppla dina Home Assistant-enheter till Matter-kontroller som Apple Home, Google Home och Amazon Alexa.`,bridgeWizard:`Brygg-guide`,setupByArea:`Konfigurera efter område`,manualSetup:`Manuell konfiguration`,areaSetup:`Områdeskonfiguration`,documentation:`Dokumentation`,quickNavigation:`Snabbnavigering`,haConnection:`HA-anslutning`,startupOrder:`Startordning`,lockCredentials:`Låsuppgifter`,filterReference:`Filterreferens`,successMessage:`Dina bryggor är anslutna till {{count}} kontroller-fabric(s). Enheter bör nu visas i din kontroller-app.`,noBridgesHint:`Inga bryggor konfigurerade. Använd Brygg-guiden eller skapa en manuellt.`,customizeDashboard:`Anpassa instrumentpanelen`,bridgeStatusRunning:`{{running}} Körs`,bridgeStatusFailed:`{{failed}} misslyckades`,devicesFailed:`{{count}} misslyckades`,uptimeFormat:`{{time}}`},bridge:{name:`Brygg-namn`,port:`Port`,status:`Status`,pairHint:`Koppla denna brygga med din kontroller`,pairDescription:`Öppna din kontroller-app (Apple Home, Google Home eller Amazon Alexa), lägg till ett nytt tillbehör och skanna QR-koden nedan eller ange den manuella kopplingskoden. Se till att din kontroller är på samma nätverk som Home Assistant.`,failedEntities:`Misslyckade entiteter`,serverModeRecommended:`Serverläge rekommenderas för robotdammsugare`,serverModeDescription:`Denna brygga innehåller en robotdammsugare i bryggläge. Apple Home och Alexa visar bryggan som en extra enhet, vilket skapar dubbletter. Aktivera Serverläge för att exponera dammsugaren som en fristående Matter-enhet.`,enableServerMode:`Aktivera Serverläge`,enabling:`Aktiverar...`,start:`Starta`,stop:`Stoppa`,restart:`Starta om`,factoryReset:`Fabriksåterställning`,pairingCode:`Kopplingskod`,openCommissioning:`Öppna kopplingsfönster`,multiPair:`Multi-Fabric-koppling`,deleteBridge:`Radera brygga`,deleteConfirm:`Är du säker på att du vill radera denna brygga?`,featureFlags:`Funktionsflaggor`,failedEntitiesCount:`{{count}} entitet(er) kunde inte laddas.`,clickToShow:`Klicka för att visa detaljer.`,clickToHide:`Klicka för att dölja detaljer.`,loadFailed:`Kunde inte ladda Brygg-detaljer`,refreshHint:`Nya enheter och etikettändringar upptäcks var 30:e sekund.`,refreshingStates:`Uppdaterar tillstånd om {{seconds}} sekunder...`,serverModeSingleDeviceNote:`Obs: Serverläge kräver att dammsugaren är den enda enheten på denna brygga. Ta bort andra entiteter först, aktivera sedan Serverläge i brygg-inställningarna.`,serverModeEnabled:`Serverläge aktiverat. Bryggan startar om med din dammsugare som fristående enhet.`,serverModeEnableFailed:`Kunde inte aktivera Serverläge: {{error}}`,pairing:`Koppling`,bridgeInfo:`Brygg-info`,commissioned:`Kopplad`,addController:`Lägg till en annan kontroller`,openingCommissioning:`Öppnar driftsättningsfönstret...`,fabricTooltip:`En fabric representerar en anslutning till en Matter-kontroller (t.ex. Apple Home, Google Home, Alexa). Varje kontroller skapar en fabric när den paras ihop.`,forceSync:`Tvinga synkronisering`,syncing:`Synkroniserar...`,forceSyncTooltip:`Skicka alla aktuella enhetstillstånd till anslutna styrenheter`,editFilters:`Redigera filter`,addFilters:`Lägg till filter`,bridgeNotRunning:`Bridgen körs inte. Starta bridgen för att se kopplingsinformation.`,manualCode:`Manuell kod`,openingWindow:`Öppnar driftsättningsfönstret...`,bridgeId:`Brygg-ID`,passcode:`Lösenkod`,discriminator:`Diskriminator`,connectedFabrics:`Anslutna Märken ({{count}})`,noFabrics:`Ingen kontroller ansluten. Skanna QR-koden med din Matter-kontroller.`,entityFilters:`Entitetsfilter`,noFilters:`Inga filter konfigurerade. Alla stödda entiteter kommer att exponeras.`,scanQrCode:`Skanna den här QR-koden med din Matter-kontroll (Apple Home, Google Home, Alexa, etc.) för att lägga till den här bryggan i ett annat ekosystem.`,appleHomeWarning:`Den här bryggan använder utökat platt läge. Inaktivera endast detta om du uteslutande använder Apple Home.`,googleHomeWarning:`Detta kan orsaka problem med Apple Home och Google Home.`,resetSuccess:`Brygga återställd`,deleteSuccess:`Brygga raderad`,confirmResetTitle:`Återställ Brygga`,confirmResetMessage:`Detta tar bort all parkopplingsinformation och återställer bryggan till sitt ursprungliga tillstånd. Anslutna handkontroller förlorar åtkomst. Detta kan inte ångras.`,confirmDeleteTitle:`Radera Brygga`,confirmDeleteMessage:`Detta kommer att permanent ta bort bryggan, alla dess parkopplingar och entitetsmappningar. Anslutna styrenheter kommer att förlora åtkomst. Detta kan inte ångras.`,importTitle:`Importera Brygga`,overwriteExisting:`Skriv över befintliga brygga`,iconLabel:`Brygg-ikon`,google:`Google`,alexa:`Alexa`,serverMode:`Serverläge`,autoForceSync:`Automatisk synkronisering`,saveSuccess:`Brygga sparad`,updateSuccess:`Uppdatering slutförd`,exportFailed:`Export misslyckades`,actionStarted:`Startad`,actionStopped:`Stoppad`,actionRestarted:`Omstartad`,actionFailed:`{{action}} misslyckades`,actionResult:`{{label}} {{count}} brygga(or)`,couldNotLoad:`Kunde inte ladda bryggor`,showingFirst:`Visar första {{count}}`,importParseFailed:`Kunde inte tolka importfilen. Välj en giltig exportfil.`,importing:`Importerar...`,importCount:`Importera {{count}} brygga(or)`,jsonEditor:`JSON-redigerare`,formEditor:`Formulärredigerare`},endpoints:{title:`Slutpunkter`,searchPlaceholder:`Sök slutpunkter...`,sortBy:`Sortera`,sortName:`Namn`,sortEndpoint:`Slutpunkts-ID`,sortType:`Typ`,cardView:`Kortvy`,treeView:`Trädvy`,clusters:`Kluster`,entityUnavailable:`Entitet otillgänglig`,showUnavailable:`Visa {{count}} otillgängliga`,showAll:`Visa alla entiteter`,uploadImage:`Ladda upp enhetsbild`,removeImage:`Ta bort anpassad bild`,editMapping:`Redigera entitetsmappning`,homeAssistantEntity:`Home Assistant-entitet`,noEndpoints:`Inga slutpunkter hittades.`,expandAll:`Expandera alla`,collapseAll:`Komprimera alla`,viewAll:`Visa alla enheter`,haState:`HA-status`,aboutEndpoint:`Om denna slutpunkt`,entityId:`Entitets-ID`,customName:`Anpassat namn`,deviceTypeOverride:`Åsidosatt enhetstyp`,keyHaAttributes:`Viktiga HA-attribut`,entityMappings:`Entitetsmappningar`,copyData:`Kopiera data till urklipp`,behavior:`Beteende`},health:{title:`Hälsa & Diagnostik`,version:`Version`,uptime:`Drifttid`,homeAssistant:`Home Assistant`,connected:`Ansluten`,disconnected:`Frånkopplad`,bridgeStatus:`Brygg-status`,refreshHealth:`Uppdatera hälsodata`,exportDiagnostic:`Exportera diagnostik`,memory:`Minne`,fabricDetails:`Fabric-detaljer`,sessions:`Sessioner`,subscriptions:`Prenumerationer`,noFabrics:`Inga Märken anslutna`,systemMetrics:`Systemmått`,heap:`Heap`,rss:`RSS`,external:`Extern`,systemHealth:`Systemhälsa`,fetchFailed:`Kunde inte hämta hälsostatus`,connectionError:`Anslutningsfel`,exportFailed:`Kunde inte exportera diagnostikdata`,restartFailed:`Kunde inte starta om bridge`,unableToLoad:`Kunde inte ladda hälsostatus`,sortBy:`Sortera efter`,created:`Skapad`,ascending:`Stigande`,descending:`Fallande`,connectedTo:`Ansluten till`,autoRecovery:`Automatisk återställning`,recoveryAttempts:`Återställningsförsök`,fabrics:`Märke`,networkDiagnostics:`Nätverks diagnostik`,checksPassed:`Godkänd`,checksWarning:`Varning`,checksFailed:`misslyckades`,hideDetails:`Dölj detaljer`,showDetails:`Visa detaljer`,allChecks:`Alla Kontroller`,check:`Kontroller`,statusLabel:`Status`,message:`Meddelande`,networkInterfaces:`Nätverksgränssnitt`,interfaceName:`Gränssnitt`,refresh:`Uppdatera`},mapping:{title:`Entitetsmappningar`,entityId:`Entitets-ID`,deviceType:`Enhetstyp`,customName:`Anpassat namn`,status:`Status`,addMapping:`Lägg till mappning`,editMapping:`Redigera mappning`,deleteMapping:`Radera mappning`,saved:`Mappning sparad för {{entityId}}. Starta om bridgen för att tillämpa ändringar.`,saveFailed:`Kunde inte spara mappning: {{error}}`,deleted:`Mappning raderad för {{entityId}}.`,deleteFailed:`Kunde inte radera mappning.`,matterTag:`Matter Tag`,exportProfile:`Exportera mappningsprofil`,importProfile:`Importera mappningsprofil`,profileName:`Profilnamn`,match:`Match`,existing:`Existerande`,autoDetect:`Automatisk identifiering (standard)`,customProductName:`Anpassat produktnamn`,customProductNameHelp:`Åsidosätt produktnamnet (modellen) som rapporterats till Matter-kontroller. Vissa kontroller (t.ex. Aqara) visar detta som enhetsnamn`,customVendorName:`Anpassat leverantörsnamn`,customVendorNameHelp:`Åsidosätt leverantörs-/tillverkarenamnet som rapporterats till ärendeansvariga`,customSerialNumber:`Anpassat serienummer`,customSerialNumberHelp:`Åsidosätt serienumret som rapporteras till ärendekontroller`,loadFailed:`Misslyckades med att läsa in entitetsmappningar`,noMappings:`Inga anpassade entitetsmappningar har konfigurerats. Använd mappningar för att åsidosätta enhetstyper för Matter, ange anpassade namn eller inaktivera specifika entiteter.`,applying:`Tillämpar`,applyCount:`Tillämpa {{count}} mappning(ar)`},notFound:{title:`Sidan hittades inte`,description:`Sidan du letar efter finns inte.`,backToDashboard:`Tillbaka till instrumentpanelen`},devices:{title:`Enheter`,searchPlaceholder:`Sök enheter`,filterBridge:`Brygga`,allBridges:`Alla bryggor`,filterDeviceType:`Enhetstyp`,allTypes:`Alla typer`,sortBy:`Sortera efter`,sortBridge:`Brygga`,sortType:`Enhetstyp`,sortName:`Namn`,deviceCount:`{{count}} Enheter`,filteredCount:`{{filtered}} av {{total}} enheter`},diagnostics:{title:`Live diagnostik`,stateUpdate:`Uppdatering om tillstånd`,command:`Kommando`,entityError:`Fel`,sessionOpen:`Session öppen`,sessionClose:`Session stängd`,subscription:`Prenumeration`,bridgeStart:`Brygg start`,bridgeStop:`Brygg stop`,entityWarning:`Varning`,filterEvents:`Filtrera händelsetyper`,clearEvents:`Rensa alla händelser`,noEvents:`Inga händelser matchar de aktuella filtren.`},startup:{title:`Uppstartsordning`,description:`Dra och släpp bryggor för att ställa in startordningen. Lägre positioner börjar först.`,saveSuccess:`Startordern har sparats`,saveFailed:`Kunde inte spara startordningen`,saveChanges:`Spara ändringar`,unsavedChanges:`Du har osparade ändringar i startordningen.`,noBridges:`Inga bryggor konfigurerade än.`,saveOrder:`Spara Uppstartsordning`},areaSetup:{title:`Områdes inställning`,heading:`Områdesbaserad brygginstallation`,description:`Skapa automatiskt en brygga per Home Assistant-område. Varje brygga kommer att inkludera alla enheter som stöds från det området.`,noAreas:`Inga områden med stödda enheter hittades i Home Assistant. Se till att dina enheter är tilldelade områden i HA.`,selectController:`1. Välj styrenhet (valfritt)`,selectAreas:`2. Välj områden ({{selected}} av {{total}})`,clear:`Rensa`,createBridges:`Skapa {{count}} brygga(or)`,results:`Resultat`,goToBridges:`Gå till bryggor`,createdSuccess:`{{count}} brygga(or) har skapats`,createdPartial:`Skapade {{succeeded}}, misslyckades med {{failed}} brygga(or)`,loadFailed:`Misslyckades med att ladda områden`,creating:`Skapande...`,created:`Skapad`,unknownError:`Okänt fel`},lockCredentials:{title:`Lås inloggningsuppgifter`,addCredential:`Lägg till låsuppgifter`,editCredential:`Redigera låsuppgifter`,lockEntityId:`Lås enhets-ID`,lockEntityHelperText:`Låsets enhets-ID för Home Assistant`,pinCode:`PIN-kod`,nameOptional:`Namn (valfritt)`,namePlaceholder:`Ytterdörr`,nameHelperText:`Vänligt namn för denna autentiseringsuppgift`,entityRequired:`Enhets-ID krävs`,pinLength:`PIN-koden måste vara 4-8 siffror`,pinDigitsOnly:`PIN-koden får endast innehålla siffror`,saveFailed:`Misslyckades med att spara`,loadFailed:`Misslyckades med att ladda inloggningsuppgifterna`,deleteFailed:`Misslyckades med att radera`,updateFailed:`Misslyckades med att uppdatera`,enable:`Aktivera`,disable:`Inaktivera`,confirmDeleteTitle:`Ta bort autentiseringsuppgifter`,confirmDeleteMessage:`Detta kommer att permanent radera PIN-uppgifterna för {{entity}}. Detta kan inte ångras.`},labels:{title:`Filterreferens`,info:`Bläddra bland alla tillgängliga filtervärden för din bryggkonfiguration. Klicka på valfritt värde för att kopiera det till urklipp.`,searchPlaceholder:`Sök`,loadFailed:`Misslyckades med att ladda data`,labelsSection:`Etiketter`,labelsHint:`Använd med filtertypen "entity_label" eller "device_label". Du kan använda antingen visningsnamnet eller etikett_id.`,noLabels:`Inga etiketter hittades i Home Assistant. Skapa etiketter under Inställningar > Etiketter.`,displayName:`Visningsnamn`,labelId:`etikett_id`,areaId:`områdes-id`,areasSection:`Områden`,areasHint:`Använd med filtertypen "område". Områden används även för automatisk rumstilldelning i Matter-regulatorer.`,noAreas:`Inga områden hittades i Home Assistant. Skapa områden under Inställningar > Områden.`,otherFilterValues:`Andra filtervärden`,domains:`Domäner`,domainsHint:`Använd med filtertypen "domän".`,platforms:`Plattformar / Integrationer`,platformsHint:`Använd med filtertypen "plattform".`,entityCategories:`Enhetskategorier`,entityCategoriesHint:`Använd med filtertypen "entitetskategori".`,deviceClasses:`Enhetsklasser`,deviceClassesHint:`Använd med filtertypen "device_class".`,deviceNames:`Enhetsnamn`,deviceNamesHint:`Använd med filtertypen "enhetsnamn".`,productNames:`Produktnamn`,productNamesHint:`Använd med filtertypen "produktnamn".`},logs:{title:`Systemloggar`,logLevel:`Loggnivå`,error:`Fel`,warning:`Varning`,info:`Info`,debug:`Felsök`,searchPlaceholder:`Sök i loggar...`,noResults:`Inga loggar hittades`,autoRefresh:`Automatisk uppdatering`},backup:{title:`Säkerhetskopiering & Återställning`,description:`Skapa en fullständig säkerhetskopia av dina bryggor och entitetsmappningar, eller återställ från en tidigare säkerhetskopia.`,configBackup:`Enkel säkerhetskopia`,configBackupDesc:`Exportera bryggkonfigurationer och entitetsmappningar.`,configBackupNote:`Bryggorna kommer att behöva tas i bruk igen efter återställning.`,fullBackup:`Full säkerhetskopia (med identitet)`,fullBackupDesc:`Inkluderar ärendeidentitetsfiler (nyckelpar, fabric-inloggningsuppgifter).`,fullBackupWarning:`Bevarar driftsättningstillståndet vid återställningar. DELA INTE!`,restoreFromBackup:`Återställ från säkerhetskopia`,restoreDesc:`Ladda upp en tidigare skapad säkerhetskopia för att återställa bryggor och konfigurationer.`,restoreTitle:`Återställ säkerhetskopia`,selectBridges:`Välj bryggor att återställa`,overwriteExisting:`Skriv över befintliga bryggor`,includeMappings:`Inkludera entitetsmappningar`,restoreIdentities:`Återställ Matter-identiteter (ingen återinsättning krävs)`,restore:`Återställ`,downloadSuccess:`Säkerhetskopieringen har laddats ner!`,restartRequired:`Omstart krävs`,restartMessage:`Bryggorna har återställts från säkerhetskopian. En omstart krävs för att ändringarna ska träda i kraft.`,restartNote:`Applikationen startar om och du kan behöva uppdatera sidan.`,restartNow:`Starta om nu`,storedBackups:`Lagrade säkerhetskopior`,createSnapshot:`Skapa säkerhetskopia`,noSnapshots:`Inga lagrade säkerhetskopior ännu. Säkerhetskopior skapas automatiskt vid avstängning eller så kan de skapas manuellt.`,downloadSnapshot:`Ladda ner`,restoreSnapshot:`Återställ`,auto:`Auto`,manual:`Manuell`,snapshotCreated:`Säkerhetskopiering skapad!`,snapshotRestored:`Återställda {{bridges}} bryggor, {{mappings}} mappningar, {{identities}} identiteter.`,confirmRestore:`Bekräfta återställning`,confirmRestoreMessage:`Är du säker på att du vill återställa från "{{filename}}"? Detta kommer att skriva över din nuvarande konfiguration.`,restoreWarning:`Alla befintliga bryggor och konfigurationer kommer att skrivas över. En omstart krävs efter återställningen.`,confirmDelete:`Ta bort säkerhetskopia`,confirmDeleteMessage:`Är du säker på att du vill ta bort "{{filename}}"? Den här åtgärden kan inte ångras.`,settings:`Säkerhetskopieringsinställningar`,autoBackupLabel:`Automatisk säkerhetskopiering`,autoBackupDesc:`Skapar automatiskt en fullständig säkerhetskopia när programmet stängs av eller startas om.`,retentionCount:`Behåll säkerhetskopior`,retentionCountDesc:`Antal säkerhetskopior att behålla (de äldsta raderas automatiskt)`},networkMap:{title:`Nätverkskarta`,hubLabel:`HAMH`,undoMove:`Ångra senaste drag`,resetLayout:`Nollställ utseende`,refreshData:`Uppdatera data`,fullscreen:`Fullskärm`,exitFullscreen:`Avsluta fullskärm`,legend:`Legend`,controller:`Kontroller`,hub:`HAMH Hub`,bridge:`Brygga`,device:`Enhet`,failed:`Misslyckades`},updateChecker:{title:`Programvaru uppdatering`,checkNow:`Kontrollera nu`,currentVersion:`Nuvarande version`,latestVersion:`Senaste version`,updateAvailable:`Uppdatering tillgänglig`,upToDate:`Du kör den senaste versionen`,releaseNotes:`Versionsinformation`,notAvailable:`Uppdateringskontroll är inte tillgänglig i den här versionen`,checkFailed:`Misslyckades med att söka efter uppdateringar`,unreachable:`Det gick inte att nå servern`,instructionAddon:`Uppdatera via Inställningar → Appar i Home Assistant.`,instructionDocker:`Hämta den senaste avbildningen och återskapa din container.`,instructionNpm:`Kör: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Guiden för brygginstallation`,stepTemplate:`Template`,stepController:`Kontroller`,stepBridgeInfo:`Brygg info`,stepEntityFilter:`Entitetsfilter`,stepFeatureFlags:`Funktionsflaggor`,stepReview:`Granska & skapa`,autoCompose:`Auto Komponera enheter`,autoForceSyncFlag:`Automatisk tvångssynkronisering`,invertCover:`Invertera rullgardin`,invertCoverDescription:`Byt öppnings-/stängningsriktning för omslag. Använd detta om dina omslag visar fel position i Matter-kontrollerna.`,includeHidden:`Inkludera gömda enheter`,includeHiddenDescription:`Visa även enheter som är markerade som dolda i Home Assistant.`,bridgeName:`Brygg namn`,portLabel:`Port`,portAutoAssign:`Tilldelas automatiskt till nästa tillgängliga port`,nameRequired:`Ange ett namn på en brygga`,createFailed:`Misslyckades att skapa brygga`,bridgeInfoDescription:`Ge din brygga ett namn och en port.`,serverModeLabel:`Serverläge (för robotdammsugare)`,serverModeTooltip:`Krävs för att robotdammsugare ska fungera med Apple Home (Siri) och Alexa. Serverlägesbryggor stödjer endast EN enhet.`,entityFilterDescription:`Konfigurera vilka entiteter som ska inkluderas i den här bryggan.`,includeAll:`Inkludera alla entiteter (jokertecken)`,entityId:`Enhets-ID`,includePattern:`Inkludera mönster`,entityFilters:`Entitetsfilter`,serverModeEntityHint:`Serverläget stödjer endast EN enhet. Ange exakt enhets-ID (t.ex. vacuum.my_vacuum).`,templatePreConfigured:`Förkonfigurerad av mall. Redigera i den fullständiga redigeraren efter skapandet.`,wildcardHint:`Använd * för alla, eller mönster som light.*, switch.*`,commaHint:`Ange specifika enhets-ID:n separerade med kommatecken`,excludePatterns:`Uteslut mönster (valfritt)`,excludeHelperText:`Mönster att utesluta, kommaseparerade`,skipTemplate:`Hoppa över mall`,creating:`Skapar`,createBridge:`Skapa brygga`,searchRules:`Sök regler`,templateDescription:`Välj en mall för att komma igång snabbt, eller hoppa över för att skapa en anpassad brygga.`,controllerDescription:`Vilken Matter-kontroller kommer du att använda? Detta optimerar funktionsflaggor för din kontroller.`,controllerHint:`Du kan alltid justera funktionsflaggor i nästa steg eller efter att bryggan har skapats.`,templateApplied:`Mallen "{{name}}" har tillämpats. Anpassa namnet och porten nedan.`,filterPreConfiguredFrom:`Filtret är förkonfigurerat från mallen "{{name}}". Du kan justera det nedan.`,featureFlagsDescription:`Funktionsflaggor styr hur enheter exponeras för Matter-kontroller.`,recommendedFlags:`Rekommenderade flaggor för {{name}} är förvalda.`,selectFlags:`Välj de flaggor som matchar din inställning.`,reviewDescription:`Granska din bryggkonfiguration:`,bridgesToCreate:`Bryggor att skapa ({{count}})`,bridgesCreated:`{{count}} brygga(or) har redan skapats i den här sessionen`,addAnother:`Lägg till ytterligare en`},footer:{github:`GitHub`,documentation:`Dokumentation`,support:`Support`},languageSwitcher:{disclaimer:`Översättningar kan vara ofullständiga.`,contribute:`Hjälp till att förbättra dem!`},translationEditor:{title:`Översättningsredigerare`,editLanguage:`Redigera språk`,info:`Redigera översättningar direkt i din webbläsare. Ändringar sparas lokalt och tillämpas direkt. Exportera dina översättningar för att skicka in dem till projektet.`,progress:`{{translated}} / {{total}} nycklar översatta`,localEdits:`{{count}} lokal(a) redigering(ar)`,searchPlaceholder:`Sök nycklar eller värden...`,filterAll:`Alla nycklar`,filterMissing:`Saknade`,filterEdited:`Redigerade`,exportJson:`Exportera JSON`,copyJson:`Kopiera JSON`,copied:`Kopierat!`,resetAll:`Återställ alla redigeringar`,resetKey:`Återställ till standard`,noResults:`Inga matchande översättningsnycklar hittades.`,addLanguage:`Lägg till språk`,newLanguageCode:`Språkkod (t.ex. pt, ja, ko)`,newLanguageName:`Språknamn (t.ex. Português)`,addLanguageButton:`Lägg till`,languageExists:`Detta språk finns redan.`,codeRequired:`Språkkod krävs.`,nameRequired:`Språknamn krävs.`,removeLanguage:`Ta bort språk`,removeLanguageConfirm:`Vill du ta bort det anpassade språket "{{name}}"? Alla lokala redigeringar för det här språket kommer att gå förlorade.`,importJson:`Importera JSON`,importSuccess:`{{count}} översättning(ar) importerade.`,importFailed:`Import misslyckades: ogiltigt JSON-format.`}},Ss={common:{loading:`กำลังโหลด`,notFound:`ไม่พบ`,save:`บันทึก`,cancel:`ยกเลิก`,delete:`ลบ`,edit:`แก้ไข`,close:`ปิด`,refresh:`รีเฟรช`,search:`ค้นหา`,enabled:`เปิดใช้งาน`,disabled:`ปิดใช้งาน`,online:`ออนไลน์`,offline:`ออฟไลน์`,running:`กำลังทำงาน`,stopped:`หยุดแล้ว`,failed:`ล้มเหลว`,starting:`กำลังเริ่ม`,devices:`อุปกรณ์`,fabrics:`Fabrics`,port:`พอร์ต`,unknown:`ไม่ทราบ`,confirm:`ยืนยัน`,create:`สร้าง`,back:`ย้อนกลับ`,next:`ถัดไป`,actions:`การดำเนินการ`,name:`ชื่อ`,type:`ประเภท`,error:`ข้อผิดพลาด`,version:`เวอร์ชัน`,copy:`คัดลอก`,copied:`คัดลอกแล้ว!`,copyId:`คัดลอก ID`,later:`ภายหลัง`,skip:`ข้าม`,reset:`รีเซ็ต`,update:`อัปเดต`,all:`ทั้งหมด`,ascending:`น้อยไปมาก`,descending:`มากไปน้อย`,moveUp:`เลื่อนขึ้น`,moveDown:`เลื่อนลง`,selectAll:`เลือกทั้งหมด`,selectNone:`ไม่เลือก`,live:`สด`,new:`ใหม่`,overwrite:`เขียนทับ`,active:`ใช้งานอยู่`,property:`คุณสมบัติ`,value:`ค่า`,custom:`กำหนดเอง`,startAll:`เริ่มทั้งหมด`,stopAll:`หยุดทั้งหมด`,restartAll:`รีสตาร์ททั้งหมด`,import:`นำเข้า`,export:`ส่งออก`,exportAll:`ส่งออกทั้งหมด`,wizard:`ตัวช่วยสร้าง`},nav:{bridges:`Bridges`,devices:`อุปกรณ์ทั้งหมด`,health:`สุขภาพและการวินิจฉัย`,diagnostics:`เหตุการณ์สด`,settings:`การตั้งค่า`,networkMap:`แผนผังเครือข่าย`,logs:`บันทึก`,startupOrder:`ลำดับการเริ่มต้น`,lockCredentials:`ข้อมูลรับรองล็อค`,filterReference:`อ้างอิงตัวกรอง`,systemLogs:`บันทึกระบบ`,lightMode:`โหมดสว่าง`,darkMode:`โหมดมืด`},status:{error:`ข้อผิดพลาด`,unhealthy:`ไม่ปกติ`,noBridges:`ไม่มี Bridge`,loadingHealth:`กำลังโหลดสถานะสุขภาพ...`,unknown:`ไม่ทราบ`},errorBoundary:{title:`เกิดข้อผิดพลาด`,fallbackMessage:`เกิดข้อผิดพลาดที่ไม่คาดคิด`,reload:`โหลดหน้าใหม่`},settings:{title:`การตั้งค่า`,language:`ภาษา`,languageDescription:`เลือกภาษาของอินเทอร์เฟซ`,checkUpdates:`ตรวจสอบการอัปเดต`,backupRestore:`สำรองข้อมูลและกู้คืน`,exportBackup:`ส่งออกข้อมูลสำรอง`,importBackup:`นำเข้าข้อมูลสำรอง`,dangerZone:`โซนอันตราย`,resetAll:`รีเซ็ตทั้งหมด`,about:`เกี่ยวกับ`},dashboard:{title:`แดชบอร์ด`,systemOverview:`ภาพรวมระบบ`,quickActions:`การดำเนินการด่วน`,bridgeOverview:`ภาพรวม Bridge`,noBridges:`ยังไม่มี Bridge ที่กำหนดค่า`,createBridge:`สร้าง Bridge`,viewAll:`ดูทั้งหมด`,totalDevices:`อุปกรณ์ทั้งหมด`,customize:`ปรับแต่ง`,startAll:`เริ่มทั้งหมด`,stopAll:`หยุดทั้งหมด`,restartAll:`รีสตาร์ททั้งหมด`,welcome:`ยินดีต้อนรับสู่ Home Assistant Matter Hub`,welcomeDescription:`เชื่อมต่ออุปกรณ์ Home Assistant ของคุณกับคอนโทรลเลอร์ Matter เช่น Apple Home, Google Home และ Amazon Alexa`,bridgeWizard:`ตัวช่วยสร้าง Bridge`,setupByArea:`ตั้งค่าตามพื้นที่`,manualSetup:`ตั้งค่าด้วยตนเอง`,areaSetup:`ตั้งค่าพื้นที่`,documentation:`เอกสาร`,quickNavigation:`นำทางด่วน`,haConnection:`การเชื่อมต่อ HA`,startupOrder:`ลำดับการเริ่มต้น`,lockCredentials:`ข้อมูลรับรองล็อค`,filterReference:`อ้างอิงตัวกรอง`,successMessage:`Bridge ของคุณเชื่อมต่อกับ {{count}} Fabric คอนโทรลเลอร์แล้ว อุปกรณ์ควรปรากฏในแอปคอนโทรลเลอร์ของคุณ`,noBridgesHint:`ยังไม่มี Bridge ที่กำหนดค่า ใช้ตัวช่วยสร้าง Bridge หรือสร้างด้วยตนเอง`,customizeDashboard:`ปรับแต่งแดชบอร์ด`},bridge:{name:`ชื่อ Bridge`,port:`พอร์ต`,status:`สถานะ`,pairHint:`จับคู่ Bridge นี้กับคอนโทรลเลอร์ของคุณ`,pairDescription:`เปิดแอปคอนโทรลเลอร์ (Apple Home, Google Home หรือ Amazon Alexa) เพิ่มอุปกรณ์เสริมใหม่ แล้วสแกน QR โค้ดด้านล่างหรือป้อนรหัสจับคู่ด้วยตนเอง ตรวจสอบให้แน่ใจว่าคอนโทรลเลอร์อยู่ในเครือข่ายเดียวกับ Home Assistant`,failedEntities:`เอนทิตีที่ล้มเหลว`,serverModeRecommended:`แนะนำโหมดเซิร์ฟเวอร์สำหรับหุ่นยนต์ดูดฝุ่น`,serverModeDescription:`Bridge นี้มีหุ่นยนต์ดูดฝุ่นในโหมดบริดจ์ Apple Home และ Alexa จะแสดง Bridge เป็นอุปกรณ์เพิ่มเติม ทำให้เกิดรายการซ้ำ เปิดใช้โหมดเซิร์ฟเวอร์เพื่อเปิดเผยหุ่นยนต์ดูดฝุ่นเป็นอุปกรณ์ Matter แบบสแตนด์อโลน`,enableServerMode:`เปิดใช้โหมดเซิร์ฟเวอร์`,enabling:`กำลังเปิดใช้...`,start:`เริ่ม`,stop:`หยุด`,restart:`รีสตาร์ท`,factoryReset:`รีเซ็ตเป็นค่าโรงงาน`,pairingCode:`รหัสจับคู่`,openCommissioning:`เปิดหน้าต่างจับคู่`,multiPair:`จับคู่ Multi-Fabric`,deleteBridge:`ลบ Bridge`,deleteConfirm:`คุณแน่ใจหรือไม่ว่าต้องการลบ Bridge นี้?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} เอนทิตีไม่สามารถโหลดได้`,clickToShow:`คลิกเพื่อแสดงรายละเอียด`,clickToHide:`คลิกเพื่อซ่อนรายละเอียด`,loadFailed:`ไม่สามารถโหลดรายละเอียด Bridge`,refreshHint:`อุปกรณ์ใหม่และการเปลี่ยนแปลงป้ายกำกับจะถูกตรวจพบทุก 30 วินาที`,refreshingStates:`รีเฟรชสถานะใน {{seconds}} วินาที...`,serverModeSingleDeviceNote:`หมายเหตุ: โหมดเซิร์ฟเวอร์ต้องการให้หุ่นยนต์ดูดฝุ่นเป็นอุปกรณ์เดียวบน Bridge นี้ กรุณาลบเอนทิตีอื่นออกก่อน แล้วเปิดใช้โหมดเซิร์ฟเวอร์ในการตั้งค่า Bridge`,serverModeEnabled:`เปิดใช้โหมดเซิร์ฟเวอร์แล้ว Bridge จะรีสตาร์ทโดยมีหุ่นยนต์ดูดฝุ่นเป็นอุปกรณ์สแตนด์อโลน`,serverModeEnableFailed:`ไม่สามารถเปิดใช้โหมดเซิร์ฟเวอร์: {{error}}`,pairing:`การจับคู่`,bridgeInfo:`ข้อมูล Bridge`,commissioned:`จับคู่แล้ว`,addController:`เพิ่มคอนโทรลเลอร์อื่น`,forceSync:`บังคับซิงค์`,syncing:`กำลังซิงค์...`,editFilters:`แก้ไขตัวกรอง`,addFilters:`เพิ่มตัวกรอง`,bridgeNotRunning:`Bridge ไม่ได้ทำงาน เริ่ม Bridge เพื่อดูข้อมูลการจับคู่`,manualCode:`รหัสด้วยตนเอง`,bridgeId:`ID Bridge`,passcode:`รหัสผ่าน`,discriminator:`Discriminator`,connectedFabrics:`Fabric ที่เชื่อมต่อ ({{count}})`,noFabrics:`ยังไม่มีคอนโทรลเลอร์เชื่อมต่อ สแกน QR โค้ดด้วยคอนโทรลเลอร์ Matter`,entityFilters:`ตัวกรองเอนทิตี`,noFilters:`ไม่มีตัวกรองที่กำหนดค่า เอนทิตีที่รองรับทั้งหมดจะถูกเปิดเผย`,resetSuccess:`รีเซ็ต Bridge สำเร็จ`,deleteSuccess:`ลบ Bridge สำเร็จ`,confirmResetTitle:`รีเซ็ต Bridge`,confirmDeleteTitle:`ลบ Bridge`,importTitle:`นำเข้า Bridges`,overwriteExisting:`เขียนทับ Bridge ที่มีอยู่`,iconLabel:`ไอคอน Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`โหมดเซิร์ฟเวอร์`,autoForceSync:`ซิงค์อัตโนมัติ`,saveSuccess:`บันทึก Bridge แล้ว`,updateSuccess:`อัปเดตเสร็จสิ้น`,exportFailed:`ส่งออกล้มเหลว`,actionStarted:`เริ่มแล้ว`,actionStopped:`หยุดแล้ว`,actionRestarted:`รีสตาร์ทแล้ว`,actionFailed:`{{action}} ล้มเหลว`,actionResult:`{{label}} {{count}} Bridge`,couldNotLoad:`ไม่สามารถโหลด Bridge`,showingFirst:`แสดง {{count}} รายการแรก`,importParseFailed:`ไม่สามารถแยกวิเคราะห์ไฟล์นำเข้า กรุณาเลือกไฟล์ส่งออกที่ถูกต้อง`,importing:`กำลังนำเข้า...`,importCount:`นำเข้า {{count}} Bridge`,jsonEditor:`ตัวแก้ไข JSON`,formEditor:`ตัวแก้ไขแบบฟอร์ม`},endpoints:{title:`จุดปลายทาง`,searchPlaceholder:`ค้นหาจุดปลายทาง...`,sortBy:`เรียงลำดับ`,sortName:`ชื่อ`,sortEndpoint:`ID จุดปลายทาง`,sortType:`ประเภท`,cardView:`มุมมองการ์ด`,treeView:`มุมมองต้นไม้`,clusters:`คลัสเตอร์`,entityUnavailable:`เอนทิตีไม่พร้อมใช้งาน`,showUnavailable:`แสดง {{count}} ที่ไม่พร้อมใช้งาน`,showAll:`แสดงเอนทิตีทั้งหมด`,uploadImage:`อัปโหลดรูปภาพอุปกรณ์`,removeImage:`ลบรูปภาพที่กำหนดเอง`,editMapping:`แก้ไขการแมปเอนทิตี`,homeAssistantEntity:`เอนทิตี Home Assistant`,noEndpoints:`ไม่พบจุดปลายทาง`,expandAll:`ขยายทั้งหมด`,collapseAll:`ยุบทั้งหมด`,viewAll:`ดูอุปกรณ์ทั้งหมด`,haState:`สถานะ HA`,aboutEndpoint:`เกี่ยวกับจุดปลายทางนี้`,entityId:`ID เอนทิตี`,customName:`ชื่อที่กำหนดเอง`,deviceTypeOverride:`แทนที่ประเภทอุปกรณ์`,keyHaAttributes:`แอตทริบิวต์ HA สำคัญ`,entityMappings:`การแมปเอนทิตี`,copyData:`คัดลอกข้อมูลไปยังคลิปบอร์ด`,behavior:`พฤติกรรม`},health:{title:`สุขภาพและการวินิจฉัย`,version:`เวอร์ชัน`,uptime:`เวลาทำงาน`,homeAssistant:`Home Assistant`,connected:`เชื่อมต่อแล้ว`,disconnected:`ยกเลิกการเชื่อมต่อ`,bridgeStatus:`สถานะ Bridge`,refreshHealth:`รีเฟรชข้อมูลสุขภาพ`,exportDiagnostic:`ส่งออกการวินิจฉัย`,memory:`หน่วยความจำ`,fabricDetails:`รายละเอียด Fabric`,sessions:`เซสชัน`,subscriptions:`การสมัครรับข้อมูล`,noFabrics:`ไม่มี Fabric เชื่อมต่อ`,systemMetrics:`เมตริกระบบ`,heap:`Heap`,rss:`RSS`,external:`ภายนอก`,systemHealth:`สุขภาพระบบ`,fetchFailed:`ไม่สามารถดึงข้อมูลสถานะสุขภาพ`,connectionError:`ข้อผิดพลาดในการเชื่อมต่อ`,exportFailed:`ไม่สามารถส่งออกข้อมูลการวินิจฉัย`,restartFailed:`ไม่สามารถรีสตาร์ท Bridge`,unableToLoad:`ไม่สามารถโหลดสถานะสุขภาพ`,sortBy:`เรียงตาม`,created:`สร้างเมื่อ`,ascending:`น้อยไปมาก`,descending:`มากไปน้อย`,connectedTo:`เชื่อมต่อกับ`,autoRecovery:`การกู้คืนอัตโนมัติ`,recoveryAttempts:`ความพยายามในการกู้คืน`},mapping:{title:`การแมปเอนทิตี`,entityId:`ID เอนทิตี`,deviceType:`ประเภทอุปกรณ์`,customName:`ชื่อที่กำหนดเอง`,status:`สถานะ`,addMapping:`เพิ่มการแมป`,editMapping:`แก้ไขการแมป`,deleteMapping:`ลบการแมป`,saved:`บันทึกการแมปสำหรับ {{entityId}} แล้ว รีสตาร์ท Bridge เพื่อใช้การเปลี่ยนแปลง`,saveFailed:`ไม่สามารถบันทึกการแมป: {{error}}`,deleted:`ลบการแมปสำหรับ {{entityId}} แล้ว`,deleteFailed:`ไม่สามารถลบการแมป`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},languageSwitcher:{disclaimer:`การแปลอาจไม่สมบูรณ์`,contribute:`ช่วยปรับปรุงการแปล!`},translationEditor:{title:`ตัวแก้ไขการแปล`,editLanguage:`แก้ไขภาษา`,info:`แก้ไขการแปลโดยตรงในเบราว์เซอร์ของคุณ การเปลี่ยนแปลงจะถูกบันทึกในเครื่องและใช้งานได้ทันที ส่งออกการแปลของคุณเพื่อส่งให้โครงการ`,progress:`{{translated}} / {{total}} คีย์ที่แปลแล้ว`,localEdits:`{{count}} การแก้ไขในเครื่อง`,searchPlaceholder:`ค้นหาคีย์หรือค่า...`,filterAll:`คีย์ทั้งหมด`,filterMissing:`ขาดหายไป`,filterEdited:`แก้ไขแล้ว`,exportJson:`ส่งออก JSON`,copyJson:`คัดลอก JSON`,copied:`คัดลอกแล้ว!`,resetAll:`รีเซ็ตการแก้ไขทั้งหมด`,resetKey:`รีเซ็ตเป็นค่าเริ่มต้น`,noResults:`ไม่พบคีย์การแปลที่ตรงกัน`,addLanguage:`เพิ่มภาษา`,newLanguageCode:`รหัสภาษา (เช่น pt, ja, ko)`,newLanguageName:`ชื่อภาษา (เช่น Português)`,addLanguageButton:`เพิ่ม`,languageExists:`ภาษานี้มีอยู่แล้ว`,codeRequired:`ต้องระบุรหัสภาษา`,nameRequired:`ต้องระบุชื่อภาษา`,removeLanguage:`ลบภาษา`,importJson:`นำเข้า JSON`,importSuccess:`นำเข้า {{count}} การแปลแล้ว`,importFailed:`นำเข้าล้มเหลว: รูปแบบ JSON ไม่ถูกต้อง`},notFound:{title:`ไม่พบหน้า`,description:`หน้าที่คุณกำลังมองหาไม่มีอยู่`,backToDashboard:`กลับไปยังแดชบอร์ด`},footer:{github:`GitHub`,documentation:`เอกสาร`}},Cs={common:{loading:`Yükleniyor`,notFound:`Bulunamadı`,save:`Kaydet`,cancel:`İptal`,delete:`Sil`,edit:`Düzenle`,close:`Kapat`,refresh:`Yenile`,search:`Ara`,enabled:`Etkin`,disabled:`Devre dışı`,online:`Çevrimiçi`,offline:`Çevrimdışı`,running:`Çalışıyor`,stopped:`Durduruldu`,failed:`Başarısız`,starting:`Başlatılıyor`,devices:`Cihazlar`,fabrics:`Fabric'ler`,port:`Port`,unknown:`Bilinmiyor`,confirm:`Onayla`,create:`Oluştur`,back:`Geri`,next:`İleri`,actions:`İşlemler`,name:`Ad`,type:`Tür`,error:`Hata`,version:`Sürüm`,copy:`Kopyala`,copied:`Kopyalandı`,copyId:`Kimliği kopyala`,later:`Daha sonra`,skip:`Atla`,reset:`Sıfırla`,update:`Güncelle`,all:`Tümü`,ascending:`Artan`,descending:`Azalan`,moveUp:`Yukarı taşı`,moveDown:`Aşağı taşı`,selectAll:`Tümünü seç`,selectNone:`Seçimi kaldır`,live:`Canlı`,new:`Yeni`,overwrite:`Üzerine yaz`,active:`Aktif`,property:`Özellik`,value:`Değer`,custom:`Özel`,startAll:`Tümünü başlat`,stopAll:`Tümünü durdur`,restartAll:`Tümünü yeniden başlat`,import:`İçe aktar`,export:`Dışa aktar`,exportAll:`Tümünü dışa aktar`,wizard:`Sihirbaz`},nav:{bridges:`Köprüler`,devices:`Cihazlar`,health:`Sağlık`,diagnostics:`Tanılama`,settings:`Ayarlar`,networkMap:`Ağ haritası`,logs:`Kayıtlar`,startupOrder:`Başlangıç sırası`,lockCredentials:`Kilit kimlik bilgileri`,filterReference:`Filtre referansı`,systemLogs:`Sistem kayıtları`,lightMode:`Açık mod`,darkMode:`Koyu mod`},status:{error:`Hata`,unhealthy:`Sağlıksız`,noBridges:`Köprü yok`,loadingHealth:`Sağlık durumu yükleniyor`,unknown:`Bilinmiyor`},errorBoundary:{title:`Bir hata oluştu`,fallbackMessage:`Beklenmeyen bir sorun oluştu. Lütfen sayfayı yeniden yükleyin.`,reload:`Yeniden yükle`},settings:{title:`Ayarlar`,language:`Dil`,languageDescription:`Arayüz dilini seçin.`,checkUpdates:`Güncellemeleri kontrol et`,backupRestore:`Yedekleme ve geri yükleme`,exportBackup:`Yedeği dışa aktar`,importBackup:`Yedek içe aktar`,dangerZone:`Tehlikeli bölge`,resetAll:`Her şeyi sıfırla`,about:`Hakkında`,username:`Kullanıcı adı`,password:`Şifre`,enterNewPassword:`Yeni şifreyi girin`,enableAuth:`Kimlik doğrulamayı etkinleştir`,disableAuth:`Kimlik doğrulamayı devre dışı bırak`,disableAuthMessage:`Kimlik doğrulamayı devre dışı bırakmak sistemi korumasız hale getirebilir.`,disableAuthConfirm:`Kimlik doğrulamayı devre dışı bırakmak istediğinize emin misiniz?`,usernamePasswordRequired:`Kullanıcı adı ve şifre gerekli.`,authSaveFailed:`Kimlik doğrulama ayarları kaydedilemedi.`,authLoadFailed:`Kimlik doğrulama ayarları yüklenemedi.`,authDisabled:`Kimlik doğrulama devre dışı bırakıldı.`,authRemoveFailed:`Kimlik doğrulama kaldırılamadı.`},dashboard:{title:`Gösterge paneli`,systemOverview:`Sistem özeti`,quickActions:`Hızlı işlemler`,bridgeOverview:`Köprü özeti`,noBridges:`Henüz köprü yok`,createBridge:`Köprü oluştur`,viewAll:`Tümünü görüntüle`,totalDevices:`Toplam cihaz`,customize:`Özelleştir`,startAll:`Tümünü başlat`,stopAll:`Tümünü durdur`,restartAll:`Tümünü yeniden başlat`,welcome:`Hoş geldiniz`,welcomeDescription:`Sisteminizi buradan hızlıca yönetebilirsiniz.`,bridgeWizard:`Köprü sihirbazı`,setupByArea:`Alana göre kurulum`,manualSetup:`Manuel kurulum`,areaSetup:`Alan kurulumu`,documentation:`Dokümantasyon`,quickNavigation:`Hızlı gezinme`,haConnection:`Home Assistant bağlantısı`,startupOrder:`Başlangıç sırası`,lockCredentials:`Kilit kimlik bilgileri`,filterReference:`Filtre referansı`,successMessage:`İşlem başarıyla tamamlandı.`,noBridgesHint:`Başlamak için ilk köprünüzü oluşturun.`,customizeDashboard:`Gösterge panelini özelleştir`,bridgeStatusRunning:`Çalışan köprüler`,bridgeStatusFailed:`Başarısız köprüler`,devicesFailed:`Hatalı cihazlar`,uptimeFormat:`Çalışma süresi: {value}`},bridge:{name:`Ad`,port:`Port`,status:`Durum`,pairHint:`Eşleştirme için aşağıdaki bilgileri kullanın.`,pairDescription:`Bu köprüyü desteklenen ekosistemlerle eşleştirebilirsiniz.`,failedEntities:`Başarısız varlıklar`,serverModeRecommended:`Sunucu modu önerilir`,serverModeDescription:`Sunucu modu, tek cihaz yerine daha kararlı bir bağlantı deneyimi sunar.`,enableServerMode:`Sunucu modunu etkinleştir`,enabling:`Etkinleştiriliyor`,start:`Başlat`,stop:`Durdur`,restart:`Yeniden başlat`,factoryReset:`Fabrika ayarlarına sıfırla`,pairingCode:`Eşleştirme kodu`,openCommissioning:`Komisyon penceresini aç`,multiPair:`Çoklu eşleştirme`,deleteBridge:`Köprüyü sil`,deleteConfirm:`Bu köprüyü silmek istediğinize emin misiniz?`,featureFlags:`Özellik bayrakları`,failedEntitiesCount:`Başarısız varlık sayısı`,clickToShow:`Göstermek için tıklayın`,clickToHide:`Gizlemek için tıklayın`,loadFailed:`Yüklenemedi`,refreshHint:`Durumu güncellemek için yenileyin.`,refreshingStates:`Durumlar yenileniyor`,serverModeSingleDeviceNote:`Sunucu modu, tek cihaz yapılandırmalarında farklı davranabilir.`,serverModeEnabled:`Sunucu modu etkin`,serverModeEnableFailed:`Sunucu modu etkinleştirilemedi`,pairing:`Eşleştirme`,bridgeInfo:`Köprü bilgisi`,commissioned:`Komisyonlandı`,addController:`Denetleyici ekle`,openingCommissioning:`Komisyon penceresi açılıyor`,fabricTooltip:`Bu köprüye bağlı fabric bilgileri`,forceSync:`Zorla eşitle`,syncing:`Eşitleniyor`,forceSyncTooltip:`Tüm varlıkları yeniden eşitlemeye zorlar.`,editFilters:`Filtreleri düzenle`,addFilters:`Filtre ekle`,bridgeNotRunning:`Köprü çalışmıyor`,manualCode:`Manuel kod`,openingWindow:`Pencere açılıyor`,bridgeId:`Köprü kimliği`,passcode:`Geçiş kodu`,discriminator:`Ayırt edici`,connectedFabrics:`Bağlı fabric'ler`,noFabrics:`Fabric yok`,entityFilters:`Varlık filtreleri`,noFilters:`Filtre yok`,scanQrCode:`QR kodu tara`,appleHomeWarning:`Apple Home ile eşleştirmeden önce mevcut yapılandırmayı kontrol edin.`,googleHomeWarning:`Google Home ile eşleştirmeden önce mevcut yapılandırmayı kontrol edin.`,resetSuccess:`Sıfırlama başarılı`,deleteSuccess:`Silme başarılı`,confirmResetTitle:`Sıfırlamayı onayla`,confirmResetMessage:`Bu köprüyü fabrika ayarlarına sıfırlamak istediğinize emin misiniz?`,confirmDeleteTitle:`Silmeyi onayla`,confirmDeleteMessage:`Bu köprü kalıcı olarak silinecek. Devam etmek istiyor musunuz?`,importTitle:`Köprü içe aktar`,overwriteExisting:`Mevcut olanların üzerine yaz`,iconLabel:`Simge etiketi`,google:`Google`,alexa:`Alexa`,serverMode:`Sunucu modu`,autoForceSync:`Otomatik zorla eşitle`,saveSuccess:`Başarıyla kaydedildi`,updateSuccess:`Başarıyla güncellendi`,exportFailed:`Dışa aktarma başarısız`,actionStarted:`İşlem başlatıldı`,actionStopped:`İşlem durduruldu`,actionRestarted:`İşlem yeniden başlatıldı`,actionFailed:`İşlem başarısız oldu`,actionResult:`İşlem sonucu`,couldNotLoad:`Yüklenemedi`,showingFirst:`İlk {count} kayıt gösteriliyor`,importParseFailed:`İçe aktarılan veri çözümlenemedi`,importing:`İçe aktarılıyor`,importCount:`{count} öğe içe aktarılacak`,jsonEditor:`JSON düzenleyici`,formEditor:`Form düzenleyici`},endpoints:{title:`Uç noktalar`,searchPlaceholder:`Uç nokta ara`,sortBy:`Sıralama ölçütü`,sortName:`Ada göre sırala`,sortEndpoint:`Uç noktaya göre sırala`,sortType:`Türe göre sırala`,cardView:`Kart görünümü`,treeView:`Ağaç görünümü`,clusters:`Kümeler`,entityUnavailable:`Varlık kullanılamıyor`,showUnavailable:`Kullanılamayanları göster`,showAll:`Tümünü göster`,uploadImage:`Görsel yükle`,removeImage:`Görseli kaldır`,editMapping:`Eşlemeyi düzenle`,homeAssistantEntity:`Home Assistant varlığı`,noEndpoints:`Uç nokta yok`,expandAll:`Tümünü genişlet`,collapseAll:`Tümünü daralt`,viewAll:`Tümünü görüntüle`,haState:`HA durumu`,aboutEndpoint:`Uç nokta hakkında`,entityId:`Varlık kimliği`,customName:`Özel ad`,deviceTypeOverride:`Cihaz türünü geçersiz kıl`,keyHaAttributes:`Ana HA öznitelikleri`,entityMappings:`Varlık eşlemeleri`,copyData:`Veriyi kopyala`,behavior:`Davranış`},health:{title:`Sağlık durumu`,version:`Sürüm`,uptime:`Çalışma süresi`,homeAssistant:`Home Assistant`,connected:`Bağlı`,disconnected:`Bağlantı yok`,bridgeStatus:`Köprü durumu`,refreshHealth:`Sağlık durumunu yenile`,exportDiagnostic:`Tanılama verisini dışa aktar`,memory:`Bellek`,fabricDetails:`Fabric detayları`,sessions:`Oturumlar`,subscriptions:`Abonelikler`,noFabrics:`Fabric yok`,systemMetrics:`Sistem metrikleri`,heap:`Heap`,rss:`RSS`,external:`Harici`,systemHealth:`Sistem sağlığı`,fetchFailed:`Veri alınamadı`,connectionError:`Bağlantı hatası`,exportFailed:`Dışa aktarma başarısız`,restartFailed:`Yeniden başlatma başarısız`,unableToLoad:`Yüklenemiyor`,sortBy:`Sırala`,created:`Oluşturulma`,ascending:`Artan`,descending:`Azalan`,connectedTo:`Bağlı olduğu yer`,autoRecovery:`Otomatik kurtarma`,recoveryAttempts:`Kurtarma denemeleri`,fabrics:`fabric`,networkDiagnostics:`Ağ Tanılama`,checksPassed:`başarılı`,checksWarning:`uyarılar`,checksFailed:`başarısız`,hideDetails:`Detayları gizle`,showDetails:`Detayları göster`,allChecks:`Tüm Kontroller`,check:`Kontrol`,statusLabel:`Durum`,message:`Mesaj`,networkInterfaces:`Ağ Arayüzleri`,interfaceName:`Arayüz`,refresh:`Yenile`},mapping:{title:`Eşleme`,entityId:`Varlık kimliği`,deviceType:`Cihaz türü`,customName:`Özel ad`,status:`Durum`,addMapping:`Eşleme ekle`,editMapping:`Eşlemeyi düzenle`,deleteMapping:`Eşlemeyi sil`,saved:`Kaydedildi`,saveFailed:`Kaydetme başarısız`,deleted:`Silindi`,deleteFailed:`Silme başarısız`,matterTag:`Matter etiketi`,exportProfile:`Profili dışa aktar`,importProfile:`Profil içe aktar`,profileName:`Profil adı`,match:`Eşleşme`,existing:`Mevcut`,autoDetect:`Otomatik algıla`,loadFailed:`Yükleme başarısız`,noMappings:`Eşleme yok`,applying:`Uygulanıyor`,applyCount:`{count} eşleme uygulanacak`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},notFound:{title:`Sayfa bulunamadı`,description:`Aradığınız sayfa mevcut değil veya taşınmış olabilir.`,backToDashboard:`Gösterge paneline dön`},devices:{title:`Cihazlar`,searchPlaceholder:`Cihaz ara`,filterBridge:`Köprüye göre filtrele`,allBridges:`Tüm köprüler`,filterDeviceType:`Cihaz türüne göre filtrele`,allTypes:`Tüm türler`,sortBy:`Sırala`,sortBridge:`Köprüye göre sırala`,sortType:`Türe göre sırala`,sortName:`Ada göre sırala`,deviceCount:`Cihaz sayısı`,filteredCount:`Filtrelenmiş kayıt sayısı`},diagnostics:{title:`Tanılama`,stateUpdate:`Durum güncellemesi`,command:`Komut`,entityError:`Varlık hatası`,sessionOpen:`Oturum açıldı`,sessionClose:`Oturum kapandı`,subscription:`Abonelik`,bridgeStart:`Köprü başlatıldı`,bridgeStop:`Köprü durduruldu`,entityWarning:`Uyarı`,filterEvents:`Olayları filtrele`,clearEvents:`Olayları temizle`,noEvents:`Olay yok`},startup:{title:`Başlangıç sırası`,description:`Köprülerin başlangıç sırasını belirleyin.`,saveSuccess:`Başlangıç sırası kaydedildi`,saveFailed:`Başlangıç sırası kaydedilemedi`,saveChanges:`Değişiklikleri kaydet`,unsavedChanges:`Kaydedilmemiş değişiklikler var`,noBridges:`Köprü yok`,saveOrder:`Sırayı kaydet`},areaSetup:{title:`Alan kurulumu`,heading:`Alanlara göre köprü oluştur`,description:`Seçilen alanlara göre otomatik köprüler oluşturun.`,noAreas:`Alan bulunamadı`,selectController:`Denetleyici seçin`,selectAreas:`Alanları seçin`,clear:`Temizle`,createBridges:`Köprüleri oluştur`,results:`Sonuçlar`,goToBridges:`Köprülere git`,createdSuccess:`Köprüler başarıyla oluşturuldu`,createdPartial:`Bazı köprüler oluşturuldu`,loadFailed:`Veri yüklenemedi`,creating:`Oluşturuluyor`,created:`Oluşturuldu`,unknownError:`Bilinmeyen hata`},lockCredentials:{title:`Kilit kimlik bilgileri`,addCredential:`Kimlik bilgisi ekle`,editCredential:`Kimlik bilgisini düzenle`,lockEntityId:`Kilit varlık kimliği`,lockEntityHelperText:`Kimlik bilgisinin uygulanacağı kilit varlığını girin.`,pinCode:`PIN kodu`,nameOptional:`Ad (isteğe bağlı)`,namePlaceholder:`Örn. Misafir PIN`,nameHelperText:`Bu kimlik bilgisini daha kolay ayırt etmek için bir ad verin.`,entityRequired:`Varlık gerekli`,pinLength:`PIN uzunluğu geçersiz`,pinDigitsOnly:`PIN yalnızca rakamlardan oluşmalıdır`,saveFailed:`Kaydetme başarısız`,loadFailed:`Yükleme başarısız`,deleteFailed:`Silme başarısız`,updateFailed:`Güncelleme başarısız`,enable:`Etkinleştir`,disable:`Devre dışı bırak`,confirmDeleteTitle:`Silmeyi onayla`,confirmDeleteMessage:`Bu kimlik bilgisini silmek istediğinize emin misiniz?`},labels:{title:`Etiketler`,info:`Filtreleme ve referans için kullanılabilecek etiketler ve alanlar.`,searchPlaceholder:`Etiket ara`,loadFailed:`Etiketler yüklenemedi`,labelsSection:`Etiketler`,labelsHint:`Mevcut etiket değerleri`,noLabels:`Etiket yok`,displayName:`Görünen ad`,labelId:`Etiket kimliği`,areaId:`Alan kimliği`,areasSection:`Alanlar`,areasHint:`Mevcut alan değerleri`,noAreas:`Alan yok`,otherFilterValues:`Diğer filtre değerleri`,domains:`Domain'ler`,domainsHint:`Kullanılabilir domain değerleri`,platforms:`Platformlar`,platformsHint:`Kullanılabilir platform değerleri`,entityCategories:`Varlık kategorileri`,entityCategoriesHint:`Kullanılabilir varlık kategori değerleri`,deviceClasses:`Cihaz sınıfları`,deviceClassesHint:`Kullanılabilir cihaz sınıfı değerleri`,deviceNames:`Cihaz adları`,deviceNamesHint:`Kullanılabilir cihaz adı değerleri`,productNames:`Ürün adları`,productNamesHint:`Kullanılabilir ürün adı değerleri`},logs:{title:`Kayıtlar`,logLevel:`Kayıt seviyesi`,error:`Hata`,warning:`Uyarı`,info:`Bilgi`,debug:`Hata ayıklama`,searchPlaceholder:`Kayıtlarda ara`,noResults:`Sonuç yok`,autoRefresh:`Otomatik yenile`},backup:{title:`Yedekleme`,description:`Yapılandırmalarınızı ve verilerinizi yedekleyin veya geri yükleyin.`,configBackup:`Yapılandırma yedeği`,configBackupDesc:`Yalnızca yapılandırma ayarlarını yedekler.`,configBackupNote:`Bu seçenek cihaz verilerini içermez.`,fullBackup:`Tam yedek`,fullBackupDesc:`Tüm yapılandırmaları ve ilişkili verileri yedekler.`,fullBackupWarning:`Tam yedekler daha büyük boyutlu olabilir.`,restoreFromBackup:`Yedekten geri yükle`,restoreDesc:`Daha önce alınmış bir yedeği geri yükleyin.`,restoreTitle:`Yedeği geri yükle`,selectBridges:`Köprüleri seç`,overwriteExisting:`Mevcut olanların üzerine yaz`,includeMappings:`Eşlemeleri dahil et`,restoreIdentities:`Kimlikleri geri yükle`,restore:`Geri yükle`,downloadSuccess:`İndirme başarılı`,restartRequired:`Yeniden başlatma gerekiyor`,restartMessage:`Değişikliklerin uygulanması için sistem yeniden başlatılmalıdır.`,restartNote:`Kaydedilmemiş işlemler etkilenebilir.`,restartNow:`Şimdi yeniden başlat`,storedBackups:`Kayıtlı yedekler`,createSnapshot:`Anlık görüntü oluştur`,noSnapshots:`Anlık görüntü yok`,downloadSnapshot:`Anlık görüntüyü indir`,restoreSnapshot:`Anlık görüntüyü geri yükle`,auto:`Otomatik`,manual:`Manuel`,snapshotCreated:`Anlık görüntü oluşturuldu`,snapshotRestored:`Anlık görüntü geri yüklendi`,confirmRestore:`Geri yüklemeyi onayla`,confirmRestoreMessage:`Bu işlem mevcut yapılandırmayı değiştirebilir. Devam etmek istiyor musunuz?`,restoreWarning:`Geri yükleme mevcut verilerin üzerine yazabilir.`,confirmDelete:`Silmeyi onayla`,confirmDeleteMessage:`Bu yedeği silmek istediğinize emin misiniz?`,settings:`Ayarlar`,autoBackupLabel:`Otomatik yedekleme`,autoBackupDesc:`Belirli aralıklarla otomatik yedek oluştur.`,retentionCount:`Saklama adedi`,retentionCountDesc:`Saklanacak otomatik yedek sayısı`},networkMap:{title:`Ağ haritası`,hubLabel:`Merkez`,undoMove:`Taşımayı geri al`,resetLayout:`Yerleşimi sıfırla`,refreshData:`Veriyi yenile`,fullscreen:`Tam ekran`,exitFullscreen:`Tam ekrandan çık`,legend:`Lejant`,controller:`Denetleyici`,hub:`Merkez`,bridge:`Köprü`,device:`Cihaz`,failed:`Başarısız`},updateChecker:{title:`Güncelleme denetleyicisi`,checkNow:`Şimdi kontrol et`,currentVersion:`Mevcut sürüm`,latestVersion:`En son sürüm`,updateAvailable:`Güncelleme mevcut`,upToDate:`Güncel`,releaseNotes:`Sürüm notları`,notAvailable:`Bilgi mevcut değil`,checkFailed:`Güncelleme kontrolü başarısız`,unreachable:`Erişilemiyor`,instructionAddon:`Eklentiyi güncellemek için ilgili paket yöneticisini kullanın.`,instructionDocker:`Docker imajını güncellemek için en son sürümü çekin ve yeniden başlatın.`,instructionNpm:`npm üzerinden güncellemek için en son paketi yükleyin.`},bridgeWizard:{title:`Köprü sihirbazı`,stepTemplate:`Şablon`,stepController:`Denetleyici`,stepBridgeInfo:`Köprü bilgisi`,stepEntityFilter:`Varlık filtresi`,stepFeatureFlags:`Özellik bayrakları`,stepReview:`Gözden geçir`,autoCompose:`Otomatik oluştur`,autoForceSyncFlag:`Otomatik zorla eşitle`,invertCover:`Kapak yönünü ters çevir`,invertCoverDescription:`Kapak yönünü ters çevirmek için bu seçeneği etkinleştirin.`,includeHidden:`Gizlileri dahil et`,includeHiddenDescription:`Gizli varlıkları da dahil eder.`,bridgeName:`Köprü adı`,portLabel:`Port`,portAutoAssign:`Portu otomatik ata`,nameRequired:`Ad gerekli`,createFailed:`Köprü oluşturulamadı`,bridgeInfoDescription:`Köprü için temel bilgileri girin.`,serverModeLabel:`Sunucu modu`,serverModeTooltip:`Sunucu modu daha kararlı bağlantı sağlayabilir.`,entityFilterDescription:`Hangi varlıkların dahil edileceğini belirleyin.`,includeAll:`Tümünü dahil et`,entityId:`Varlık kimliği`,includePattern:`Dahil etme deseni`,entityFilters:`Varlık filtreleri`,serverModeEntityHint:`Sunucu modunda bazı varlık davranışları değişebilir.`,templatePreConfigured:`Şablon önceden yapılandırılmış`,wildcardHint:`Joker karakter olarak * kullanabilirsiniz.`,commaHint:`Birden fazla değeri virgülle ayırın.`,excludePatterns:`Hariç tutma desenleri`,excludeHelperText:`Hariç tutulacak varlık desenlerini girin.`,skipTemplate:`Şablonu atla`,creating:`Oluşturuluyor`,createBridge:`Köprü oluştur`,searchRules:`Arama kuralları`,templateDescription:`Hazır şablonlardan biriyle hızlı başlangıç yapın.`,controllerDescription:`Bu köprünün bağlanacağı denetleyiciyi seçin.`,controllerHint:`Uygun denetleyiciyi listeden seçin.`,templateApplied:`Şablon uygulandı`,filterPreConfiguredFrom:`Filtre şuradan önceden yapılandırıldı:`,featureFlagsDescription:`İsteğe bağlı özellikleri etkinleştirin veya devre dışı bırakın.`,recommendedFlags:`Önerilen bayraklar`,selectFlags:`Bayrak seçin`,reviewDescription:`Oluşturmadan önce yapılandırmanızı gözden geçirin.`,bridgesToCreate:`Oluşturulacak köprüler`,bridgesCreated:`Köprüler oluşturuldu`,addAnother:`Bir tane daha ekle`},footer:{github:`GitHub`,documentation:`Dokümantasyon`},languageSwitcher:{disclaimer:`Çeviriler topluluk katkıları içerebilir.`,contribute:`Katkıda bulun`},translationEditor:{title:`Çeviri düzenleyici`,editLanguage:`Dili düzenle`,info:`Eksik veya değiştirilmiş çevirileri buradan yönetebilirsiniz.`,progress:`İlerleme`,localEdits:`Yerel düzenlemeler`,searchPlaceholder:`Anahtar veya çeviri ara`,filterAll:`Tümü`,filterMissing:`Eksik olanlar`,filterEdited:`Düzenlenenler`,exportJson:`JSON dışa aktar`,copyJson:`JSON'u kopyala`,copied:`Kopyalandı`,resetAll:`Tümünü sıfırla`,resetKey:`Anahtarı sıfırla`,noResults:`Sonuç yok`,addLanguage:`Dil ekle`,newLanguageCode:`Yeni dil kodu`,newLanguageName:`Yeni dil adı`,addLanguageButton:`Dili ekle`,languageExists:`Bu dil zaten mevcut`,codeRequired:`Dil kodu gerekli`,nameRequired:`Dil adı gerekli`,removeLanguage:`Dili kaldır`,removeLanguageConfirm:`Bu dili kaldırmak istediğinize emin misiniz?`,importJson:`JSON içe aktar`,importSuccess:`İçe aktarma başarılı`,importFailed:`İçe aktarma başarısız`}},ws={common:{loading:`加载中`,notFound:`未找到`,save:`保存`,cancel:`取消`,delete:`删除`,edit:`编辑`,close:`关闭`,refresh:`刷新`,search:`搜索`,enabled:`已启用`,disabled:`已禁用`,online:`在线`,offline:`离线`,running:`运行中`,stopped:`已停止`,failed:`失败`,starting:`启动中`,devices:`设备`,fabrics:`Fabrics`,port:`端口`,unknown:`未知`,confirm:`确认`,create:`创建`,back:`返回`,next:`下一步`,actions:`操作`,name:`名称`,type:`类型`,error:`错误`,version:`版本`,copy:`复制`,copied:`已复制!`,copyId:`复制 ID`,later:`稍后`,skip:`跳过`,reset:`重置`,update:`更新`,all:`全部`,ascending:`升序`,descending:`降序`,moveUp:`上移`,moveDown:`下移`,selectAll:`全选`,selectNone:`取消全选`,live:`实时`,new:`新建`,overwrite:`覆盖`,active:`活动`,property:`属性`,value:`值`,custom:`自定义`,startAll:`全部启动`,stopAll:`全部停止`,restartAll:`全部重启`,import:`导入`,export:`导出`,exportAll:`全部导出`,wizard:`向导`},nav:{bridges:`Bridges`,devices:`所有设备`,health:`健康与诊断`,diagnostics:`实时事件`,settings:`设置`,networkMap:`网络拓扑`,logs:`日志`,startupOrder:`启动顺序`,lockCredentials:`锁具凭证`,filterReference:`过滤器参考`,systemLogs:`系统日志`,lightMode:`浅色模式`,darkMode:`深色模式`},status:{error:`错误`,unhealthy:`异常`,noBridges:`无 Bridge`,loadingHealth:`正在加载健康状态...`,unknown:`未知`},errorBoundary:{title:`出现错误`,fallbackMessage:`发生了意外错误。`,reload:`重新加载页面`},settings:{title:`设置`,language:`语言`,languageDescription:`选择界面语言。`,checkUpdates:`检查更新`,backupRestore:`备份与恢复`,exportBackup:`导出备份`,importBackup:`导入备份`,dangerZone:`危险操作`,resetAll:`全部重置`,about:`关于`},dashboard:{title:`仪表盘`,systemOverview:`系统概览`,quickActions:`快捷操作`,bridgeOverview:`Bridge 概览`,noBridges:`尚未配置 Bridge。`,createBridge:`创建 Bridge`,viewAll:`查看全部`,totalDevices:`设备总数`,customize:`自定义`,startAll:`全部启动`,stopAll:`全部停止`,restartAll:`全部重启`,welcome:`欢迎使用 Home Assistant Matter Hub`,welcomeDescription:`将你的 Home Assistant 设备桥接到 Apple Home、Google Home 和 Amazon Alexa 等 Matter 控制器。`,bridgeWizard:`Bridge 向导`,setupByArea:`按区域设置`,manualSetup:`手动设置`,areaSetup:`区域设置`,documentation:`文档`,quickNavigation:`快捷导航`,haConnection:`HA 连接`,startupOrder:`启动顺序`,lockCredentials:`锁具凭证`,filterReference:`过滤器参考`,successMessage:`你的 Bridge 已连接到 {{count}} 个控制器 Fabric。设备现在应该出现在你的控制器应用中。`,noBridgesHint:`尚未配置 Bridge。使用 Bridge 向导或手动创建一个。`,customizeDashboard:`自定义仪表盘`},bridge:{name:`Bridge 名称`,port:`端口`,status:`状态`,pairHint:`将此 Bridge 与你的控制器配对`,pairDescription:`打开你的控制器应用(Apple Home、Google Home 或 Amazon Alexa),添加新配件,扫描下方的二维码或输入手动配对码。确保你的控制器与 Home Assistant 在同一网络上。`,failedEntities:`失败的实体`,serverModeRecommended:`推荐为扫地机器人启用服务器模式`,serverModeDescription:`此 Bridge 包含一个桥接模式的扫地机器人。Apple Home 和 Alexa 会将 Bridge 显示为额外设备,导致重复条目。启用服务器模式可将扫地机器人作为独立的 Matter 设备公开。`,enableServerMode:`启用服务器模式`,enabling:`正在启用...`,start:`启动`,stop:`停止`,restart:`重启`,factoryReset:`恢复出厂设置`,pairingCode:`配对码`,openCommissioning:`打开配对窗口`,multiPair:`多 Fabric 配对`,deleteBridge:`删除 Bridge`,deleteConfirm:`确定要删除此 Bridge 吗?`,featureFlags:`功能标志`,failedEntitiesCount:`{{count}} 个实体无法加载。`,clickToShow:`点击显示详情。`,clickToHide:`点击隐藏详情。`,loadFailed:`无法加载 Bridge 详情`,refreshHint:`新设备和标签更改每 30 秒检测一次。`,refreshingStates:`{{seconds}} 秒后刷新状态...`,serverModeSingleDeviceNote:`注意:服务器模式要求扫地机器人是此 Bridge 上的唯一设备。请先移除其他实体,然后在 Bridge 设置中启用服务器模式。`,serverModeEnabled:`服务器模式已启用。Bridge 将以你的扫地机器人作为独立设备重启。`,serverModeEnableFailed:`无法启用服务器模式:{{error}}`,pairing:`配对`,bridgeInfo:`Bridge 信息`,commissioned:`已配对`,addController:`添加其他控制器`,forceSync:`强制同步`,syncing:`同步中...`,editFilters:`编辑过滤器`,addFilters:`添加过滤器`,bridgeNotRunning:`Bridge 未运行。启动 Bridge 以查看配对信息。`,manualCode:`手动代码`,bridgeId:`Bridge ID`,passcode:`密码`,discriminator:`Discriminator`,connectedFabrics:`已连接的 Fabric ({{count}})`,noFabrics:`尚无控制器连接。请使用 Matter 控制器扫描二维码。`,entityFilters:`实体过滤器`,noFilters:`未配置过滤器。所有支持的实体将被公开。`,resetSuccess:`Bridge 重置成功`,deleteSuccess:`Bridge 删除成功`,confirmResetTitle:`重置 Bridge`,confirmDeleteTitle:`删除 Bridge`,importTitle:`导入 Bridge`,overwriteExisting:`覆盖现有 Bridge`,iconLabel:`Bridge 图标`,google:`Google`,alexa:`Alexa`,serverMode:`服务器模式`,autoForceSync:`自动同步`,saveSuccess:`Bridge 已保存`,updateSuccess:`更新完成`,exportFailed:`导出失败`,actionStarted:`已启动`,actionStopped:`已停止`,actionRestarted:`已重启`,actionFailed:`{{action}} 失败`,actionResult:`{{label}} {{count}} 个 Bridge`,couldNotLoad:`无法加载 Bridge`,showingFirst:`显示前 {{count}} 个`,importParseFailed:`无法解析导入文件。请选择有效的导出文件。`,importing:`导入中...`,importCount:`导入 {{count}} 个 Bridge`,jsonEditor:`JSON 编辑器`,formEditor:`表单编辑器`},endpoints:{title:`端点`,searchPlaceholder:`搜索端点...`,sortBy:`排序`,sortName:`名称`,sortEndpoint:`端点 ID`,sortType:`类型`,cardView:`卡片视图`,treeView:`树状视图`,clusters:`集群`,entityUnavailable:`实体不可用`,showUnavailable:`显示 {{count}} 个不可用`,showAll:`显示所有实体`,uploadImage:`上传设备图片`,removeImage:`移除自定义图片`,editMapping:`编辑实体映射`,homeAssistantEntity:`Home Assistant 实体`,noEndpoints:`未找到端点。`,expandAll:`全部展开`,collapseAll:`全部折叠`,viewAll:`查看所有设备`,haState:`HA 状态`,aboutEndpoint:`关于此端点`,entityId:`实体 ID`,customName:`自定义名称`,deviceTypeOverride:`设备类型覆盖`,keyHaAttributes:`关键 HA 属性`,entityMappings:`实体映射`,copyData:`复制数据到剪贴板`,behavior:`行为`},health:{title:`健康与诊断`,version:`版本`,uptime:`运行时间`,homeAssistant:`Home Assistant`,connected:`已连接`,disconnected:`已断开`,bridgeStatus:`Bridge 状态`,refreshHealth:`刷新健康数据`,exportDiagnostic:`导出诊断`,memory:`内存`,fabricDetails:`Fabric 详情`,sessions:`会话`,subscriptions:`订阅`,noFabrics:`无 Fabric 连接`,systemMetrics:`系统指标`,heap:`堆内存`,rss:`RSS`,external:`外部`,systemHealth:`系统健康`,fetchFailed:`无法获取健康状态`,connectionError:`连接错误`,exportFailed:`无法导出诊断数据`,restartFailed:`无法重启 Bridge`,unableToLoad:`无法加载健康状态`,sortBy:`排序方式`,created:`创建时间`,ascending:`升序`,descending:`降序`,connectedTo:`已连接到`,autoRecovery:`自动恢复`,recoveryAttempts:`恢复尝试`},mapping:{title:`实体映射`,entityId:`实体 ID`,deviceType:`设备类型`,customName:`自定义名称`,status:`状态`,addMapping:`添加映射`,editMapping:`编辑映射`,deleteMapping:`删除映射`,saved:`已为 {{entityId}} 保存映射。重启 Bridge 以应用更改。`,saveFailed:`无法保存映射:{{error}}`,deleted:`已删除 {{entityId}} 的映射。`,deleteFailed:`无法删除映射。`,customProductName:`自定义产品名称`,customProductNameHelp:`覆盖报告给 Matter 控制器的产品名称(型号)。某些控制器(如 Aqara)会将此显示为设备名称。`,customVendorName:`自定义厂商名称`,customVendorNameHelp:`覆盖报告给 Matter 控制器的厂商/制造商名称。`,customSerialNumber:`自定义序列号`,customSerialNumberHelp:`覆盖报告给 Matter 控制器的序列号。`},languageSwitcher:{disclaimer:`翻译可能不完整。`,contribute:`帮助改进翻译!`},translationEditor:{title:`翻译编辑器`,editLanguage:`编辑语言`,info:`直接在浏览器中编辑翻译。更改会本地保存并立即应用。导出你的翻译以提交给项目。`,progress:`{{translated}} / {{total}} 个键已翻译`,localEdits:`{{count}} 处本地编辑`,searchPlaceholder:`搜索键或值...`,filterAll:`所有键`,filterMissing:`缺失`,filterEdited:`已编辑`,exportJson:`导出 JSON`,copyJson:`复制 JSON`,copied:`已复制!`,resetAll:`重置所有编辑`,resetKey:`重置为默认值`,noResults:`未找到匹配的翻译键。`,addLanguage:`添加语言`,newLanguageCode:`语言代码(如 pt、ja、ko)`,newLanguageName:`语言名称(如 Português)`,addLanguageButton:`添加`,languageExists:`该语言已存在。`,codeRequired:`语言代码为必填项。`,nameRequired:`语言名称为必填项。`,removeLanguage:`移除语言`,importJson:`导入 JSON`,importSuccess:`已导入 {{count}} 条翻译。`,importFailed:`导入失败:JSON 格式无效。`},notFound:{title:`页面未找到`,description:`您要查找的页面不存在。`,backToDashboard:`返回仪表盘`},footer:{github:`GitHub`,documentation:`文档`}},Ts={common:{loading:`載入中`,notFound:`未找到`,save:`儲存`,cancel:`取消`,delete:`刪除`,edit:`編輯`,close:`關閉`,refresh:`重新整理`,search:`搜尋`,enabled:`已啟用`,disabled:`已停用`,online:`上線`,offline:`離線`,running:`執行中`,stopped:`已停止`,failed:`失敗`,starting:`啟動中`,devices:`裝置`,fabrics:`Fabrics`,port:`連接埠`,unknown:`未知`,confirm:`確認`,create:`建立`,back:`返回`,next:`下一步`,actions:`操作`,name:`名稱`,type:`類型`,error:`錯誤`,version:`版本`,copy:`複製`,copied:`已複製!`,copyId:`複製 ID`,later:`稍後`,skip:`跳過`,reset:`重設`,update:`更新`,all:`全部`,ascending:`遞增`,descending:`遞減`,moveUp:`上移`,moveDown:`下移`,selectAll:`全選`,selectNone:`全不選`,live:`即時`,new:`新增`,overwrite:`覆蓋`,active:`活動`,property:`屬性`,value:`值`,custom:`自定義`,startAll:`全部啟動`,stopAll:`全部停止`,restartAll:`全部重新啟動`,import:`匯入`,export:`匯出`,exportAll:`全部匯出`,wizard:`設定精靈`},nav:{bridges:`橋接器 (Bridges)`,devices:`所有裝置`,health:`狀態診斷`,diagnostics:`即時事件`,settings:`設定`,networkMap:`網路拓撲`,logs:`日誌`,startupOrder:`啟動順序`,lockCredentials:`鎖具憑證`,filterReference:`篩選器參考`,systemLogs:`系統日誌`,lightMode:`淺色模式`,darkMode:`深色模式`},status:{error:`錯誤`,unhealthy:`異常`,noBridges:`無橋接器`,loadingHealth:`正在載入健康狀態...`,unknown:`未知`},errorBoundary:{title:`發生錯誤`,fallbackMessage:`發生預料之外的錯誤。`,reload:`重新載入頁面`},settings:{title:`設定`,language:`語言`,languageDescription:`選擇介面語言。`,checkUpdates:`檢查更新`,backupRestore:`備份與還原`,exportBackup:`匯出備份`,importBackup:`匯入備份`,dangerZone:`危險區域`,resetAll:`全部重設`,about:`關於`,username:`使用者名稱`,password:`密碼`,enterNewPassword:`輸入新密碼`,enableAuth:`啟用驗證`,disableAuth:`停用驗證`,disableAuthMessage:`您確定要停用身份驗證嗎?這將允許任何存取此網址的使用者控制您的裝置。`,disableAuthConfirm:`確認停用`,usernamePasswordRequired:`需要使用者名稱和密碼`,authSaveFailed:`儲存驗證設定失敗`,authLoadFailed:`載入驗證設定失敗`,authDisabled:`驗證已停用`,authRemoveFailed:`移除驗證失敗`},dashboard:{title:`儀表板`,systemOverview:`系統概覽`,quickActions:`快速操作`,bridgeOverview:`橋接器概覽`,noBridges:`尚未設定橋接器。`,createBridge:`建立橋接器`,viewAll:`查看全部`,totalDevices:`裝置總數`,customize:`自定義`,startAll:`全部啟動`,stopAll:`全部停止`,restartAll:`全部重新啟動`,welcome:`歡迎使用 Home Assistant Matter Hub`,welcomeDescription:`將您的 Home Assistant 裝置橋接到 Apple Home、Google Home 和 Amazon Alexa 等 Matter 控制器。`,bridgeWizard:`橋接器精靈`,setupByArea:`按區域設定`,manualSetup:`手動設定`,areaSetup:`區域設定`,documentation:`文件`,quickNavigation:`快速導覽`,haConnection:`HA 連線`,startupOrder:`啟動順序`,lockCredentials:`鎖具憑證`,filterReference:`篩選器參考`,successMessage:`您的橋接器已連線到 {{count}} 個控制器 Fabric。裝置現在應該會出現在您的控制器 App 中。`,noBridgesHint:`尚未設定橋接器。請使用精靈或手動建立一個。`,customizeDashboard:`自定義儀表板`,bridgeStatusRunning:`橋接器運作中`,bridgeStatusFailed:`橋接器異常`,devicesFailed:`裝置失敗`,uptimeFormat:`已運行時間`},bridge:{name:`橋接器名稱`,port:`連接埠`,status:`狀態`,pairHint:`將此橋接器與您的控制器配對`,pairDescription:`開啟您的控制器 App(Apple Home、Google Home 或 Amazon Alexa),新增配件,掃描下方的 QR Code 或輸入手動配對碼。請確保您的控制器與 Home Assistant 位於同一網路環境。`,failedEntities:`失敗的實體`,serverModeRecommended:`建議為掃地機器人啟用伺服器模式`,serverModeDescription:`此橋接器包含一個橋接模式的掃地機器人。Apple Home 和 Alexa 會將橋接器顯示為額外裝置,導致重複項目。啟用伺服器模式可將掃地機器人作為獨立的 Matter 裝置公開。`,enableServerMode:`啟用伺服器模式`,enabling:`啟用中...`,start:`啟動`,stop:`停止`,restart:`重新啟動`,factoryReset:`恢復出廠設定`,pairingCode:`配對碼`,openCommissioning:`開啟配對視窗`,multiPair:`多 Fabric 配對`,deleteBridge:`刪除橋接器`,deleteConfirm:`確定要刪除此橋接器嗎?`,featureFlags:`功能旗標`,failedEntitiesCount:`{{count}} 個實體無法載入。`,clickToShow:`點擊顯示詳情`,clickToHide:`點擊隱藏詳情`,loadFailed:`無法載入橋接器詳情`,refreshHint:`每 30 秒會偵測一次新裝置和標籤更改。`,refreshingStates:`{{seconds}} 秒後重新整理狀態...`,serverModeSingleDeviceNote:`注意:伺服器模式要求掃地機器人為此橋接器上的唯一裝置。請先移除其他實體,再於設定中啟用伺服器模式。`,serverModeEnabled:`伺服器模式已啟用。橋接器將以掃地機器人作為獨立裝置重新啟動。`,serverModeEnableFailed:`無法啟用伺服器模式:{{error}}`,pairing:`配對`,bridgeInfo:`橋接器資訊`,commissioned:`已配對`,addController:`新增其他控制器`,openingCommissioning:`正在開啟配對視窗...`,fabricTooltip:`Fabric 詳情`,forceSync:`強制同步`,syncing:`同步中...`,forceSyncTooltip:`強制與 Home Assistant 同步實體`,editFilters:`編輯篩選器`,addFilters:`新增篩選器`,bridgeNotRunning:`橋接器未執行。請啟動以查看配對資訊。`,manualCode:`手動代碼`,openingWindow:`開啟視窗中...`,bridgeId:`橋接器 ID`,passcode:`配對密碼`,discriminator:`辨別碼 (Discriminator)`,connectedFabrics:`已連接的 Fabric ({{count}})`,noFabrics:`尚無控制器連接。請使用 Matter 控制器掃描 QR Code。`,entityFilters:`實體篩選器`,noFilters:`未設定篩選器。所有支援的實體都將公開。`,scanQrCode:`掃描 QR Code`,appleHomeWarning:`Apple Home 限制`,googleHomeWarning:`Google Home 限制`,resetSuccess:`橋接器重設成功`,deleteSuccess:`橋接器刪除成功`,confirmResetTitle:`重設橋接器`,confirmResetMessage:`確定要重設此橋接器嗎?這將移除所有配對資訊。`,confirmDeleteTitle:`刪除橋接器`,confirmDeleteMessage:`確定要永久刪除此橋接器嗎?此操作無法復原。`,importTitle:`匯入橋接器`,overwriteExisting:`覆蓋現有橋接器`,iconLabel:`橋接器圖示`,google:`Google`,alexa:`Alexa`,serverMode:`伺服器模式`,autoForceSync:`自動同步`,saveSuccess:`橋接器已儲存`,updateSuccess:`更新完成`,exportFailed:`匯出失敗`,actionStarted:`已啟動`,actionStopped:`已停止`,actionRestarted:`已重新啟動`,actionFailed:`{{action}} 失敗`,actionResult:`{{label}} {{count}} 個橋接器`,couldNotLoad:`無法載入橋接器`,showingFirst:`顯示前 {{count}} 個`,importParseFailed:`無法解析匯入檔案。請選擇正確的匯出檔案。`,importing:`匯入中...`,importCount:`匯入 {{count}} 個橋接器`,jsonEditor:`JSON 編輯器`,formEditor:`表單編輯器`},endpoints:{title:`端點 (Endpoints)`,searchPlaceholder:`搜尋端點...`,sortBy:`排序`,sortName:`名稱`,sortEndpoint:`端點 ID`,sortType:`類型`,cardView:`卡片檢視`,treeView:`樹狀檢視`,clusters:`叢集 (Clusters)`,entityUnavailable:`實體不可用`,showUnavailable:`顯示 {{count}} 個不可用項目`,showAll:`顯示所有實體`,uploadImage:`上傳裝置圖片`,removeImage:`移除自定義圖片`,editMapping:`編輯實體對應`,homeAssistantEntity:`Home Assistant 實體`,noEndpoints:`未找到端點。`,expandAll:`全部展開`,collapseAll:`全部摺疊`,viewAll:`查看所有裝置`,haState:`HA 狀態`,aboutEndpoint:`關於此端點`,entityId:`實體 ID`,customName:`自定義名稱`,deviceTypeOverride:`裝置類型覆蓋`,keyHaAttributes:`關鍵 HA 屬性`,entityMappings:`實體對應`,copyData:`複製數據到剪貼簿`,behavior:`行為`},health:{title:`狀態與診斷`,version:`版本`,uptime:`運行時間`,homeAssistant:`Home Assistant`,connected:`已連線`,disconnected:`已斷開`,bridgeStatus:`橋接器狀態`,refreshHealth:`重新整理狀態`,exportDiagnostic:`匯出診斷數據`,memory:`記憶體`,fabricDetails:`Fabric 詳情`,sessions:`工作階段 (Sessions)`,subscriptions:`訂閱 (Subscriptions)`,noFabrics:`無 Fabric 連接`,systemMetrics:`系統指標`,heap:`堆積記憶體 (Heap)`,rss:`常駐集大小 (RSS)`,external:`外部`,systemHealth:`系統健康度`,fetchFailed:`無法取得狀態`,connectionError:`連線錯誤`,exportFailed:`無法匯出診斷數據`,restartFailed:`無法重新啟動橋接器`,unableToLoad:`無法載入健康狀態`,sortBy:`排序方式`,created:`建立時間`,ascending:`遞增`,descending:`遞減`,connectedTo:`已連線至`,autoRecovery:`自動恢復`,recoveryAttempts:`恢復嘗試`},mapping:{title:`實體對應`,entityId:`實體 ID`,deviceType:`裝置類型`,customName:`自定義名稱`,status:`狀態`,addMapping:`新增對應`,editMapping:`編輯對應`,deleteMapping:`刪除對應`,saved:`已為 {{entityId}} 儲存對應。請重啟橋接器以套用變更。`,saveFailed:`無法儲存對應:{{error}}`,deleted:`已刪除 {{entityId}} 的對應。`,deleteFailed:`無法刪除對應。`,matterTag:`Matter 標籤`,exportProfile:`匯出設定檔`,importProfile:`匯入設定檔`,profileName:`設定檔名稱`,match:`匹配`,existing:`現有`,autoDetect:`自動偵測`,loadFailed:`載入失敗`,noMappings:`無對應資料`,applying:`套用中...`,applyCount:`套用數量`},notFound:{title:`找不到頁面`,description:`您搜尋的頁面不存在。`,backToDashboard:`返回儀表板`},devices:{title:`裝置列表`,searchPlaceholder:`搜尋裝置...`,filterBridge:`按橋接器篩選`,allBridges:`所有橋接器`,filterDeviceType:`按裝置類型篩選`,allTypes:`所有類型`,sortBy:`排序方式`,sortBridge:`橋接器`,sortType:`類型`,sortName:`名稱`,deviceCount:`裝置總數`,filteredCount:`已篩選數量`},diagnostics:{title:`即時事件`,stateUpdate:`狀態更新`,command:`指令`,entityError:`實體錯誤`,sessionOpen:`工作階段開啟`,sessionClose:`工作階段關閉`,subscription:`訂閱`,bridgeStart:`橋接器啟動`,bridgeStop:`橋接器停止`,filterEvents:`篩選事件`,clearEvents:`清除事件`,noEvents:`尚無事件`},startup:{title:`啟動設定`,description:`設定橋接器的啟動順序與延遲。`,saveSuccess:`啟動設定已儲存`,saveFailed:`儲存失敗`,saveChanges:`儲存變更`,unsavedChanges:`有未儲存的變更`,noBridges:`沒有可設定的橋接器`,saveOrder:`儲存順序`},areaSetup:{title:`按區域設定`,heading:`區域橋接器精靈`,description:`為每個 Home Assistant 區域建立獨立的橋接器。`,noAreas:`找不到區域。`,selectController:`選擇目標控制器`,selectAreas:`選擇區域`,clear:`清除`,createBridges:`建立橋接器`,results:`結果`,goToBridges:`前往橋接器頁面`,createdSuccess:`成功建立橋接器`,createdPartial:`部分橋接器建立失敗`,loadFailed:`無法載入區域`,creating:`正在建立...`,created:`已建立`,unknownError:`發生未知錯誤`},lockCredentials:{title:`門鎖憑證`,addCredential:`新增憑證`,editCredential:`編輯憑證`,lockEntityId:`門鎖實體`,lockEntityHelperText:`選擇要套用此憑證的門鎖實體。`,pinCode:`PIN 碼`,nameOptional:`名稱 (選填)`,namePlaceholder:`例如:清潔人員`,nameHelperText:`用來識別此憑證的易記名稱。`,entityRequired:`必須選擇實體`,pinLength:`PIN 碼長度必須在 4 到 8 位之間`,pinDigitsOnly:`PIN 碼只能包含數字`,saveFailed:`儲存憑證失敗`,loadFailed:`載入憑證失敗`,deleteFailed:`刪除憑證失敗`,updateFailed:`更新憑證失敗`,enable:`啟用`,disable:`停用`,confirmDeleteTitle:`刪除憑證`,confirmDeleteMessage:`確定要刪除此憑證嗎?`},labels:{title:`標籤與過濾`,info:`使用標籤來組織和篩選您的實體。`,searchPlaceholder:`搜尋標籤...`,loadFailed:`載入標籤失敗`,labelsSection:`標籤`,labelsHint:`按 Home Assistant 標籤篩選`,noLabels:`未發現標籤`,displayName:`顯示名稱`,labelId:`標籤 ID`,areaId:`區域 ID`,areasSection:`區域`,areasHint:`按區域篩選實體`,noAreas:`無可用區域`,otherFilterValues:`其他篩選值`,domains:`領域 (Domains)`,domainsHint:`按實體領域篩選`,platforms:`平台 (Platforms)`,platformsHint:`按整合平台篩選`,entityCategories:`實體類別`,entityCategoriesHint:`按類別篩選 (如:組態、診斷)`,deviceClasses:`裝置類別`,deviceClassesHint:`按裝置類別篩選`,deviceNames:`裝置名稱`,deviceNamesHint:`按裝置名稱篩選`,productNames:`產品名稱`,productNamesHint:`按產品型號篩選`},logs:{title:`日誌`,logLevel:`日誌層級`,error:`錯誤`,warning:`警告`,info:`資訊`,debug:`除錯`,searchPlaceholder:`搜尋日誌...`,noResults:`未找到日誌項目`,autoRefresh:`自動重新整理`},backup:{title:`備份與還原`,description:`管理您的配置備份以防止數據遺失。`,configBackup:`配置備份`,configBackupDesc:`僅備份橋接器設定與對應關係。`,configBackupNote:`不包含 Matter 配對身份資訊。`,fullBackup:`完整備份`,fullBackupDesc:`備份所有數據,包含 Matter 配對身份資訊。`,fullBackupWarning:`注意:還原完整備份會覆蓋現有的所有 Matter 憑證。`,restoreFromBackup:`從備份還原`,restoreDesc:`上傳備份檔案以還原設定。`,restoreTitle:`還原設定`,selectBridges:`選擇橋接器`,overwriteExisting:`覆蓋現有項目`,includeMappings:`包含實體對應`,restoreIdentities:`還原配對身份`,restore:`還原`,downloadSuccess:`下載成功`,restartRequired:`需要重新啟動`,restartMessage:`必須重新啟動套件以完成還原。`,restartNote:`重啟過程中連線將暫時中斷。`,restartNow:`立即重新啟動`,storedBackups:`已儲存的備份`,createSnapshot:`建立快照`,noSnapshots:`尚無快照`,downloadSnapshot:`下載快照`,restoreSnapshot:`還原快照`,auto:`自動`,manual:`手動`,snapshotCreated:`快照已建立`,snapshotRestored:`快照已還原`,confirmRestore:`確認還原`,confirmRestoreMessage:`確定要從此快照還原嗎?現有設定將被覆蓋。`,restoreWarning:`此操作無法撤銷。`,confirmDelete:`確認刪除`,confirmDeleteMessage:`確定要刪除此備份嗎?`,settings:`備份設定`,autoBackupLabel:`自動備份`,autoBackupDesc:`每天自動建立快照`,retentionCount:`保留數量`,retentionCountDesc:`要保留的快照份數`},networkMap:{title:`網路拓撲圖`,hubLabel:`Matter Hub`,undoMove:`復原移動`,resetLayout:`重置佈局`,refreshData:`重新整理數據`,fullscreen:`全螢幕`,exitFullscreen:`結束全螢幕`,legend:`圖例`,controller:`控制器`,hub:`集線器 (Hub)`,bridge:`橋接器`,device:`裝置`,failed:`失敗`},updateChecker:{title:`更新檢查`,checkNow:`立即檢查`,currentVersion:`目前版本`,latestVersion:`最新版本`,updateAvailable:`有可用更新!`,upToDate:`軟體已是最新狀態`,releaseNotes:`版本說明`,notAvailable:`無法取得版本資訊`,checkFailed:`檢查更新失敗`,unreachable:`無法連線至更新伺服器`,instructionAddon:`請在 Home Assistant Add-on 商店中更新。`,instructionDocker:`請拉取最新的 Docker 映像檔。`,instructionNpm:`請執行 npm install 以更新。`},bridgeWizard:{title:`建立橋接器精靈`,stepTemplate:`選擇範本`,stepController:`目標控制器`,stepBridgeInfo:`基本資訊`,stepEntityFilter:`實體篩選`,stepFeatureFlags:`功能旗標`,stepReview:`確認設定`,autoCompose:`自動組合`,autoForceSyncFlag:`自動強制同步`,invertCover:`反轉窗簾/捲簾方向`,invertCoverDescription:`若窗簾狀態相反,請啟用此項。`,includeHidden:`包含隱藏實體`,includeHiddenDescription:`是否顯示在 HA 中被隱藏的實體。`,bridgeName:`橋接器名稱`,portLabel:`連接埠號碼`,portAutoAssign:`自動分配連接埠`,nameRequired:`必須輸入名稱`,createFailed:`建立橋接器失敗`,bridgeInfoDescription:`為您的橋接器設定名稱與通訊埠。`,serverModeLabel:`啟用伺服器模式`,serverModeTooltip:`將此裝置作為單獨的 Matter 裝置公開,而非橋接模式。`,entityFilterDescription:`選擇哪些實體要透過此橋接器公開。`,includeAll:`包含所有支援的實體`,entityId:`實體 ID`,includePattern:`包含規則 (Pattern)`,entityFilters:`實體篩選器`,serverModeEntityHint:`伺服器模式僅支援單一實體。`,templatePreConfigured:`預設範本`,wildcardHint:`支援萬用字元如 light.*`,commaHint:`使用逗號分隔多個項目`,excludePatterns:`排除規則`,excludeHelperText:`排除特定實體,即使符合包含規則也會被過濾。`,skipTemplate:`不使用範本`,creating:`建立中...`,createBridge:`建立橋接器`,searchRules:`搜尋規則`,templateDescription:`範本可協助您快速預設篩選器和旗標。`,controllerDescription:`選擇您預計使用的控制器以套用推薦的最佳設定。`,controllerHint:`這將自動調整功能旗標以達到最佳相容性。`,templateApplied:`範本已套用`,filterPreConfiguredFrom:`篩選器已根據 {{template}} 預設`,featureFlagsDescription:`調整特殊功能以改善特定控制器的行為。`,recommendedFlags:`推薦旗標`,selectFlags:`選擇旗標`,reviewDescription:`請確認您的橋接器設定。`,bridgesToCreate:`待建立的橋接器`,bridgesCreated:`橋接器已建立`,addAnother:`新增另一個`},footer:{github:`GitHub`,documentation:`說明文件`},languageSwitcher:{disclaimer:`翻譯可能不完全完整。`,contribute:`協助改進翻譯!`},translationEditor:{title:`翻譯編輯器`,editLanguage:`編輯語言`,info:`直接在瀏覽器中編輯翻譯。變更會立即儲存在本地並生效。您可以匯出翻譯檔案並提交給專案。`,progress:`已翻譯 {{translated}} / {{total}} 個項目`,localEdits:`有 {{count}} 處本地修改`,searchPlaceholder:`搜尋鍵或翻譯內容...`,filterAll:`所有項目`,filterMissing:`未翻譯`,filterEdited:`已編輯`,exportJson:`匯出 JSON`,copyJson:`複製 JSON`,copied:`已複製!`,resetAll:`重置所有修改`,resetKey:`重置為預設值`,noResults:`未找到匹配的翻譯項目。`,addLanguage:`新增語言`,newLanguageCode:`語言代碼 (如 pt、ja、ko)`,newLanguageName:`語言名稱 (如 Português)`,addLanguageButton:`新增`,languageExists:`此語言已存在。`,codeRequired:`語言代碼為必填。`,nameRequired:`語言名稱為必填。`,removeLanguage:`移除語言`,removeLanguageConfirm:`確定要移除此語言嗎?所有未導出的本地修改都將丟失。`,importJson:`匯入 JSON`,importSuccess:`已成功匯入 {{count}} 條翻譯。`,importFailed:`匯入失敗:JSON 格式無效。`}},Es=`hamh-translation-overrides`,Ds=`hamh-custom-languages`;function Os(e,t=``){let n={};for(let[r,i]of Object.entries(e)){let e=t?`${t}.${r}`:r;typeof i==`object`&&i&&!Array.isArray(i)?Object.assign(n,Os(i,e)):n[e]=String(i??``)}return n}function ks(e){let t={};for(let[n,r]of Object.entries(e)){let e=n.split(`.`),i=t;for(let t=0;t<e.length-1;t++)e[t]in i||(i[e[t]]={}),i=i[e[t]];i[e[e.length-1]]=r}return t}function As(){try{let e=localStorage.getItem(Es);if(!e)return;let t=JSON.parse(e);for(let[e,n]of Object.entries(t)){if(!n||Object.keys(n).length===0)continue;let t=ho.getResourceBundle(e,`translation`),r=ks({...t?Os(t):{},...n});ho.addResourceBundle(e,`translation`,r,!0,!0)}}catch{}}function js(){try{let e=localStorage.getItem(Ds);if(!e)return;let t=JSON.parse(e);for(let e of t)ho.hasResourceBundle(e.code,`translation`)||ho.addResourceBundle(e.code,`translation`,{},!0,!0)}catch{}}ho.use(zo).use(is).init({resources:{en:{translation:ms},de:{translation:ps},fr:{translation:gs},it:{translation:_s},ja:{translation:vs},es:{translation:hs},zh:{translation:ws},"zh-TW":{translation:Ts},th:{translation:Ss},sv:{translation:xs},tr:{translation:Cs},ru:{translation:bs},pl:{translation:ys}},fallbackLng:`en`,interpolation:{escapeValue:!1},detection:{order:[`localStorage`,`navigator`,`htmlTag`],caches:[`localStorage`]}}),js(),As();var Ms=ho;function Ns(e,...t){let n=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>n.searchParams.append(`args[]`,e)),`Minified MUI error #${e}; visit ${n} for the full message.`}function Ps(e){if(typeof e!=`string`)throw Error(Ns(7));return e.charAt(0).toUpperCase()+e.slice(1)}var Fs=s((e=>{var t=Symbol.for(`react.fragment`),n=Symbol.for(`react.strict_mode`),r=Symbol.for(`react.profiler`),i=Symbol.for(`react.consumer`),a=Symbol.for(`react.context`),o=Symbol.for(`react.forward_ref`),s=Symbol.for(`react.suspense`),c=Symbol.for(`react.suspense_list`),l=Symbol.for(`react.memo`),u=Symbol.for(`react.lazy`),d=Symbol.for(`react.client.reference`);e.isValidElementType=function(e){return!!(typeof e==`string`||typeof e==`function`||e===t||e===r||e===n||e===s||e===c||typeof e==`object`&&e&&(e.$$typeof===u||e.$$typeof===l||e.$$typeof===a||e.$$typeof===i||e.$$typeof===o||e.$$typeof===d||e.getModuleId!==void 0))}})),Is=s(((e,t)=>{t.exports=Fs()}))();function Ls(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function Rs(e){if(C.isValidElement(e)||(0,Is.isValidElementType)(e)||!Ls(e))return e;let t={};return Object.keys(e).forEach(n=>{t[n]=Rs(e[n])}),t}function zs(e,t,n={clone:!0}){let r=n.clone?{...e}:e;return Ls(e)&&Ls(t)&&Object.keys(t).forEach(i=>{C.isValidElement(t[i])||(0,Is.isValidElementType)(t[i])?r[i]=t[i]:Ls(t[i])&&Object.prototype.hasOwnProperty.call(e,i)&&Ls(e[i])?r[i]=zs(e[i],t[i],n):n.clone?r[i]=Ls(t[i])?Rs(t[i]):t[i]:r[i]=t[i]}),r}function Bs(e,t){return t?zs(e,t,{clone:!1}):e}function Vs(e,t){if(!e.containerQueries)return t;let n=Object.keys(t).filter(e=>e.startsWith(`@container`)).sort((e,t)=>{let n=/min-width:\s*([0-9.]+)/;return(e.match(n)?.[1]||0)-+(t.match(n)?.[1]||0)});return n.length?n.reduce((e,n)=>{let r=t[n];return delete e[n],e[n]=r,e},{...t}):t}function Hs(e,t){return t===`@`||t.startsWith(`@`)&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}function Us(e,t){let n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;let[,r,i]=n,a=Number.isNaN(+r)?r||0:+r;return e.containerQueries(i).up(a)}function nee(e){let t=(e,t)=>e.replace(`@media`,t?`@container ${t}`:`@container`);function n(n,r){n.up=(...n)=>t(e.breakpoints.up(...n),r),n.down=(...n)=>t(e.breakpoints.down(...n),r),n.between=(...n)=>t(e.breakpoints.between(...n),r),n.only=(...n)=>t(e.breakpoints.only(...n),r),n.not=(...n)=>{let i=t(e.breakpoints.not(...n),r);return i.includes(`not all and`)?i.replace(`not all and `,``).replace(`min-width:`,`width<`).replace(`max-width:`,`width>`).replace(`and`,`or`):i}}let r={},i=e=>(n(r,e),r);return n(i),{...e,containerQueries:i}}var Ws={xs:0,sm:600,md:900,lg:1200,xl:1536},Gs={keys:[`xs`,`sm`,`md`,`lg`,`xl`],up:e=>`@media (min-width:${Ws[e]}px)`},Ks={containerQueries:e=>({up:t=>{let n=typeof t==`number`?t:Ws[t]||t;return typeof n==`number`&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function qs(e,t,n){let r=e.theme||{};if(Array.isArray(t)){let e=r.breakpoints||Gs;return t.reduce((r,i,a)=>(r[e.up(e.keys[a])]=n(t[a]),r),{})}if(typeof t==`object`){let e=r.breakpoints||Gs;return Object.keys(t).reduce((i,a)=>{if(Hs(e.keys,a)){let e=Us(r.containerQueries?r:Ks,a);e&&(i[e]=n(t[a],a))}else if(Object.keys(e.values||Ws).includes(a)){let r=e.up(a);i[r]=n(t[a],a)}else{let e=a;i[e]=t[e]}return i},{})}return n(t)}function Js(e={}){return e.keys?.reduce((t,n)=>{let r=e.up(n);return t[r]={},t},{})||{}}function Ys(e,t){return e.reduce((e,t)=>{let n=e[t];return(!n||Object.keys(n).length===0)&&delete e[t],e},t)}function Xs(e,...t){let n=Js(e),r=[n,...t].reduce((e,t)=>zs(e,t),{});return Ys(Object.keys(n),r)}function Zs(e,t){if(typeof e!=`object`)return{};let n={},r=Object.keys(t);return Array.isArray(e)?r.forEach((t,r)=>{r<e.length&&(n[t]=!0)}):r.forEach(t=>{e[t]!=null&&(n[t]=!0)}),n}function Qs({values:e,breakpoints:t,base:n}){let r=n||Zs(e,t),i=Object.keys(r);if(i.length===0)return e;let a;return i.reduce((t,n,r)=>(Array.isArray(e)?(t[n]=e[r]==null?e[a]:e[r],a=r):typeof e==`object`?(t[n]=e[n]==null?e[a]:e[n],a=n):t[n]=e,t),{})}function $s(e,t,n=!0){if(!t||typeof t!=`string`)return null;if(e&&e.vars&&n){let n=`vars.${t}`.split(`.`).reduce((e,t)=>e&&e[t]?e[t]:null,e);if(n!=null)return n}return t.split(`.`).reduce((e,t)=>e&&e[t]!=null?e[t]:null,e)}function ec(e,t,n,r=n){let i;return i=typeof e==`function`?e(n):Array.isArray(e)?e[n]||r:$s(e,n)||r,t&&(i=t(i,r,e)),i}function tc(e){let{prop:t,cssProperty:n=e.prop,themeKey:r,transform:i}=e,a=e=>{if(e[t]==null)return null;let a=e[t],o=e.theme,s=$s(o,r)||{};return qs(e,a,e=>{let r=ec(s,i,e);return e===r&&typeof e==`string`&&(r=ec(s,i,`${t}${e===`default`?``:Ps(e)}`,e)),n===!1?r:{[n]:r}})};return a.propTypes={},a.filterProps=[t],a}function nc(e){let t={};return n=>(t[n]===void 0&&(t[n]=e(n)),t[n])}var rc={m:`margin`,p:`padding`},ic={t:`Top`,r:`Right`,b:`Bottom`,l:`Left`,x:[`Left`,`Right`],y:[`Top`,`Bottom`]},ac={marginX:`mx`,marginY:`my`,paddingX:`px`,paddingY:`py`},oc=nc(e=>{if(e.length>2)if(ac[e])e=ac[e];else return[e];let[t,n]=e.split(``),r=rc[t],i=ic[n]||``;return Array.isArray(i)?i.map(e=>r+e):[r+i]}),sc=[`m`,`mt`,`mr`,`mb`,`ml`,`mx`,`my`,`margin`,`marginTop`,`marginRight`,`marginBottom`,`marginLeft`,`marginX`,`marginY`,`marginInline`,`marginInlineStart`,`marginInlineEnd`,`marginBlock`,`marginBlockStart`,`marginBlockEnd`],cc=[`p`,`pt`,`pr`,`pb`,`pl`,`px`,`py`,`padding`,`paddingTop`,`paddingRight`,`paddingBottom`,`paddingLeft`,`paddingX`,`paddingY`,`paddingInline`,`paddingInlineStart`,`paddingInlineEnd`,`paddingBlock`,`paddingBlockStart`,`paddingBlockEnd`],lc=[...sc,...cc];function uc(e,t,n,r){let i=$s(e,t,!0)??n;return typeof i==`number`||typeof i==`string`?e=>typeof e==`string`?e:typeof i==`string`?i.startsWith(`var(`)&&e===0?0:i.startsWith(`var(`)&&e===1?i:`calc(${e} * ${i})`:i*e:Array.isArray(i)?e=>{if(typeof e==`string`)return e;let t=i[Math.abs(e)];return e>=0?t:typeof t==`number`?-t:typeof t==`string`&&t.startsWith(`var(`)?`calc(-1 * ${t})`:`-${t}`}:typeof i==`function`?i:()=>void 0}function dc(e){return uc(e,`spacing`,8,`spacing`)}function fc(e,t){return typeof t==`string`||t==null?t:e(t)}function pc(e,t){return n=>e.reduce((e,r)=>(e[r]=fc(t,n),e),{})}function mc(e,t,n,r){if(!t.includes(n))return null;let i=pc(oc(n),r),a=e[n];return qs(e,a,i)}function hc(e,t){let n=dc(e.theme);return Object.keys(e).map(r=>mc(e,t,r,n)).reduce(Bs,{})}function gc(e){return hc(e,sc)}gc.propTypes={},gc.filterProps=sc;function _c(e){return hc(e,cc)}_c.propTypes={},_c.filterProps=cc;function vc(e){return hc(e,lc)}vc.propTypes={},vc.filterProps=lc;function yc(...e){let t=e.reduce((e,t)=>(t.filterProps.forEach(n=>{e[n]=t}),e),{}),n=e=>Object.keys(e).reduce((n,r)=>t[r]?Bs(n,t[r](e)):n,{});return n.propTypes={},n.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),n}function bc(e){return typeof e==`number`?`${e}px solid`:e}function xc(e,t){return tc({prop:e,themeKey:`borders`,transform:t})}var Sc=xc(`border`,bc),Cc=xc(`borderTop`,bc),wc=xc(`borderRight`,bc),Tc=xc(`borderBottom`,bc),Ec=xc(`borderLeft`,bc),Dc=xc(`borderColor`),Oc=xc(`borderTopColor`),kc=xc(`borderRightColor`),Ac=xc(`borderBottomColor`),jc=xc(`borderLeftColor`),Mc=xc(`outline`,bc),Nc=xc(`outlineColor`),Pc=e=>{if(e.borderRadius!==void 0&&e.borderRadius!==null){let t=uc(e.theme,`shape.borderRadius`,4,`borderRadius`);return qs(e,e.borderRadius,e=>({borderRadius:fc(t,e)}))}return null};Pc.propTypes={},Pc.filterProps=[`borderRadius`],yc(Sc,Cc,wc,Tc,Ec,Dc,Oc,kc,Ac,jc,Pc,Mc,Nc);var Fc=e=>{if(e.gap!==void 0&&e.gap!==null){let t=uc(e.theme,`spacing`,8,`gap`);return qs(e,e.gap,e=>({gap:fc(t,e)}))}return null};Fc.propTypes={},Fc.filterProps=[`gap`];var Ic=e=>{if(e.columnGap!==void 0&&e.columnGap!==null){let t=uc(e.theme,`spacing`,8,`columnGap`);return qs(e,e.columnGap,e=>({columnGap:fc(t,e)}))}return null};Ic.propTypes={},Ic.filterProps=[`columnGap`];var Lc=e=>{if(e.rowGap!==void 0&&e.rowGap!==null){let t=uc(e.theme,`spacing`,8,`rowGap`);return qs(e,e.rowGap,e=>({rowGap:fc(t,e)}))}return null};Lc.propTypes={},Lc.filterProps=[`rowGap`],yc(Fc,Ic,Lc,tc({prop:`gridColumn`}),tc({prop:`gridRow`}),tc({prop:`gridAutoFlow`}),tc({prop:`gridAutoColumns`}),tc({prop:`gridAutoRows`}),tc({prop:`gridTemplateColumns`}),tc({prop:`gridTemplateRows`}),tc({prop:`gridTemplateAreas`}),tc({prop:`gridArea`}));function Rc(e,t){return t===`grey`?t:e}yc(tc({prop:`color`,themeKey:`palette`,transform:Rc}),tc({prop:`bgcolor`,cssProperty:`backgroundColor`,themeKey:`palette`,transform:Rc}),tc({prop:`backgroundColor`,themeKey:`palette`,transform:Rc}));function zc(e){return e<=1&&e!==0?`${e*100}%`:e}var Bc=tc({prop:`width`,transform:zc}),Vc=e=>e.maxWidth!==void 0&&e.maxWidth!==null?qs(e,e.maxWidth,t=>{let n=e.theme?.breakpoints?.values?.[t]||Ws[t];return n?e.theme?.breakpoints?.unit===`px`?{maxWidth:n}:{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:zc(t)}}):null;Vc.filterProps=[`maxWidth`];var Hc=tc({prop:`minWidth`,transform:zc}),Uc=tc({prop:`height`,transform:zc}),Wc=tc({prop:`maxHeight`,transform:zc}),Gc=tc({prop:`minHeight`,transform:zc});tc({prop:`size`,cssProperty:`width`,transform:zc}),tc({prop:`size`,cssProperty:`height`,transform:zc}),yc(Bc,Vc,Hc,Uc,Wc,Gc,tc({prop:`boxSizing`}));var Kc={border:{themeKey:`borders`,transform:bc},borderTop:{themeKey:`borders`,transform:bc},borderRight:{themeKey:`borders`,transform:bc},borderBottom:{themeKey:`borders`,transform:bc},borderLeft:{themeKey:`borders`,transform:bc},borderColor:{themeKey:`palette`},borderTopColor:{themeKey:`palette`},borderRightColor:{themeKey:`palette`},borderBottomColor:{themeKey:`palette`},borderLeftColor:{themeKey:`palette`},outline:{themeKey:`borders`,transform:bc},outlineColor:{themeKey:`palette`},borderRadius:{themeKey:`shape.borderRadius`,style:Pc},color:{themeKey:`palette`,transform:Rc},bgcolor:{themeKey:`palette`,cssProperty:`backgroundColor`,transform:Rc},backgroundColor:{themeKey:`palette`,transform:Rc},p:{style:_c},pt:{style:_c},pr:{style:_c},pb:{style:_c},pl:{style:_c},px:{style:_c},py:{style:_c},padding:{style:_c},paddingTop:{style:_c},paddingRight:{style:_c},paddingBottom:{style:_c},paddingLeft:{style:_c},paddingX:{style:_c},paddingY:{style:_c},paddingInline:{style:_c},paddingInlineStart:{style:_c},paddingInlineEnd:{style:_c},paddingBlock:{style:_c},paddingBlockStart:{style:_c},paddingBlockEnd:{style:_c},m:{style:gc},mt:{style:gc},mr:{style:gc},mb:{style:gc},ml:{style:gc},mx:{style:gc},my:{style:gc},margin:{style:gc},marginTop:{style:gc},marginRight:{style:gc},marginBottom:{style:gc},marginLeft:{style:gc},marginX:{style:gc},marginY:{style:gc},marginInline:{style:gc},marginInlineStart:{style:gc},marginInlineEnd:{style:gc},marginBlock:{style:gc},marginBlockStart:{style:gc},marginBlockEnd:{style:gc},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:Fc},rowGap:{style:Lc},columnGap:{style:Ic},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:`zIndex`},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:`shadows`},width:{transform:zc},maxWidth:{style:Vc},minWidth:{transform:zc},height:{transform:zc},maxHeight:{transform:zc},minHeight:{transform:zc},boxSizing:{},font:{themeKey:`font`},fontFamily:{themeKey:`typography`},fontSize:{themeKey:`typography`},fontStyle:{themeKey:`typography`},fontWeight:{themeKey:`typography`},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:`typography`}};function qc(...e){let t=e.reduce((e,t)=>e.concat(Object.keys(t)),[]),n=new Set(t);return e.every(e=>n.size===Object.keys(e).length)}function Jc(e,t){return typeof e==`function`?e(t):e}function Yc(){function e(e,t,n,r){let i={[e]:t,theme:n},a=r[e];if(!a)return{[e]:t};let{cssProperty:o=e,themeKey:s,transform:c,style:l}=a;if(t==null)return null;if(s===`typography`&&t===`inherit`)return{[e]:t};let u=$s(n,s)||{};return l?l(i):qs(i,t,t=>{let n=ec(u,c,t);return t===n&&typeof t==`string`&&(n=ec(u,c,`${e}${t===`default`?``:Ps(t)}`,t)),o===!1?n:{[o]:n}})}function t(n){let{sx:r,theme:i={},nested:a}=n||{};if(!r)return null;let o=i.unstable_sxConfig??Kc;function s(n){let r=n;if(typeof n==`function`)r=n(i);else if(typeof n!=`object`)return n;if(!r)return null;let s=Js(i.breakpoints),c=Object.keys(s),l=s;return Object.keys(r).forEach(n=>{let a=Jc(r[n],i);if(a!=null)if(typeof a==`object`)if(o[n])l=Bs(l,e(n,a,i,o));else{let e=qs({theme:i},a,e=>({[n]:e}));qc(e,a)?l[n]=t({sx:a,theme:i,nested:!0}):l=Bs(l,e)}else l=Bs(l,e(n,a,i,o))}),!a&&i.modularCssLayers?{"@layer sx":Vs(i,Ys(c,l))}:Vs(i,Ys(c,l))}return Array.isArray(r)?r.map(s):s(r)}return t}var Xc=Yc();Xc.filterProps=[`sx`];var Zc=e=>{let t={systemProps:{},otherProps:{}},n=e?.theme?.unstable_sxConfig??Kc;return Object.keys(e).forEach(r=>{n[r]?t.systemProps[r]=e[r]:t.otherProps[r]=e[r]}),t};function Qc(e){let{sx:t,...n}=e,{systemProps:r,otherProps:i}=Zc(n),a;return a=Array.isArray(t)?[r,...t]:typeof t==`function`?(...e)=>{let n=t(...e);return Ls(n)?{...r,...n}:r}:{...r,...t},{...i,sx:a}}function $c(){return $c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},$c.apply(null,arguments)}var el=!1;function tl(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}function nl(e){var t=document.createElement(`style`);return t.setAttribute(`data-emotion`,e.key),e.nonce!==void 0&&t.setAttribute(`nonce`,e.nonce),t.appendChild(document.createTextNode(``)),t.setAttribute(`data-s`,``),t}var rl=function(){function e(e){var t=this;this._insertTag=function(e){var n=t.tags.length===0?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling;t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=e.speedy===void 0?!el:e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(nl(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=tl(t);try{n.insertRule(e,n.cssRules.length)}catch{}}else t.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach(function(e){return e.parentNode?.removeChild(e)}),this.tags=[],this.ctr=0},e}(),il=`-ms-`,al=`-moz-`,ol=`-webkit-`,sl=`comm`,cl=`rule`,ll=`decl`,ul=`@import`,dl=`@keyframes`,fl=`@layer`,pl=Math.abs,ml=String.fromCharCode,hl=Object.assign;function gl(e,t){return xl(e,0)^45?(((t<<2^xl(e,0))<<2^xl(e,1))<<2^xl(e,2))<<2^xl(e,3):0}function _l(e){return e.trim()}function vl(e,t){return(e=t.exec(e))?e[0]:e}function yl(e,t,n){return e.replace(t,n)}function bl(e,t){return e.indexOf(t)}function xl(e,t){return e.charCodeAt(t)|0}function Sl(e,t,n){return e.slice(t,n)}function Cl(e){return e.length}function wl(e){return e.length}function Tl(e,t){return t.push(e),e}function El(e,t){return e.map(t).join(``)}var Dl=1,Ol=1,kl=0,Al=0,jl=0,Ml=``;function Nl(e,t,n,r,i,a,o){return{value:e,root:t,parent:n,type:r,props:i,children:a,line:Dl,column:Ol,length:o,return:``}}function Pl(e,t){return hl(Nl(``,null,null,``,null,null,0),e,{length:-e.length},t)}function Fl(){return jl}function Il(){return jl=Al>0?xl(Ml,--Al):0,Ol--,jl===10&&(Ol=1,Dl--),jl}function Ll(){return jl=Al<kl?xl(Ml,Al++):0,Ol++,jl===10&&(Ol=1,Dl++),jl}function Rl(){return xl(Ml,Al)}function zl(){return Al}function Bl(e,t){return Sl(Ml,e,t)}function Vl(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function Hl(e){return Dl=Ol=1,kl=Cl(Ml=e),Al=0,[]}function Ul(e){return Ml=``,e}function Wl(e){return _l(Bl(Al-1,ql(e===91?e+2:e===40?e+1:e)))}function Gl(e){for(;(jl=Rl())&&jl<33;)Ll();return Vl(e)>2||Vl(jl)>3?``:` `}function Kl(e,t){for(;--t&&Ll()&&!(jl<48||jl>102||jl>57&&jl<65||jl>70&&jl<97););return Bl(e,zl()+(t<6&&Rl()==32&&Ll()==32))}function ql(e){for(;Ll();)switch(jl){case e:return Al;case 34:case 39:e!==34&&e!==39&&ql(jl);break;case 40:e===41&&ql(e);break;case 92:Ll();break}return Al}function Jl(e,t){for(;Ll()&&e+jl!==57&&!(e+jl===84&&Rl()===47););return`/*`+Bl(t,Al-1)+`*`+ml(e===47?e:Ll())}function Yl(e){for(;!Vl(Rl());)Ll();return Bl(e,Al)}function Xl(e){return Ul(Zl(``,null,null,null,[``],e=Hl(e),0,[0],e))}function Zl(e,t,n,r,i,a,o,s,c){for(var l=0,u=0,d=o,f=0,p=0,m=0,h=1,g=1,_=1,v=0,y=``,b=i,x=a,S=r,C=y;g;)switch(m=v,v=Ll()){case 40:if(m!=108&&xl(C,d-1)==58){bl(C+=yl(Wl(v),`&`,`&\f`),`&\f`)!=-1&&(_=-1);break}case 34:case 39:case 91:C+=Wl(v);break;case 9:case 10:case 13:case 32:C+=Gl(m);break;case 92:C+=Kl(zl()-1,7);continue;case 47:switch(Rl()){case 42:case 47:Tl($l(Jl(Ll(),zl()),t,n),c);break;default:C+=`/`}break;case 123*h:s[l++]=Cl(C)*_;case 125*h:case 59:case 0:switch(v){case 0:case 125:g=0;case 59+u:_==-1&&(C=yl(C,/\f/g,``)),p>0&&Cl(C)-d&&Tl(p>32?eu(C+`;`,r,n,d-1):eu(yl(C,` `,``)+`;`,r,n,d-2),c);break;case 59:C+=`;`;default:if(Tl(S=Ql(C,t,n,l,u,i,s,y,b=[],x=[],d),a),v===123)if(u===0)Zl(C,t,S,S,b,a,d,s,x);else switch(f===99&&xl(C,3)===110?100:f){case 100:case 108:case 109:case 115:Zl(e,S,S,r&&Tl(Ql(e,S,S,0,0,i,s,y,i,b=[],d),x),i,x,d,s,r?b:x);break;default:Zl(C,S,S,S,[``],x,0,s,x)}}l=u=p=0,h=_=1,y=C=``,d=o;break;case 58:d=1+Cl(C),p=m;default:if(h<1){if(v==123)--h;else if(v==125&&h++==0&&Il()==125)continue}switch(C+=ml(v),v*h){case 38:_=u>0?1:(C+=`\f`,-1);break;case 44:s[l++]=(Cl(C)-1)*_,_=1;break;case 64:Rl()===45&&(C+=Wl(Ll())),f=Rl(),u=d=Cl(y=C+=Yl(zl())),v++;break;case 45:m===45&&Cl(C)==2&&(h=0)}}return a}function Ql(e,t,n,r,i,a,o,s,c,l,u){for(var d=i-1,f=i===0?a:[``],p=wl(f),m=0,h=0,g=0;m<r;++m)for(var _=0,v=Sl(e,d+1,d=pl(h=o[m])),y=e;_<p;++_)(y=_l(h>0?f[_]+` `+v:yl(v,/&\f/g,f[_])))&&(c[g++]=y);return Nl(e,t,n,i===0?cl:s,c,l,u)}function $l(e,t,n){return Nl(e,t,n,sl,ml(Fl()),Sl(e,2,-2),0)}function eu(e,t,n,r){return Nl(e,t,n,ll,Sl(e,0,r),Sl(e,r+1,-1),r)}function tu(e,t){for(var n=``,r=wl(e),i=0;i<r;i++)n+=t(e[i],i,e,t)||``;return n}function nu(e,t,n,r){switch(e.type){case fl:if(e.children.length)break;case ul:case ll:return e.return=e.return||e.value;case sl:return``;case dl:return e.return=e.value+`{`+tu(e.children,r)+`}`;case cl:e.value=e.props.join(`,`)}return Cl(n=tu(e.children,r))?e.return=e.value+`{`+n+`}`:``}function ru(e){var t=wl(e);return function(n,r,i,a){for(var o=``,s=0;s<t;s++)o+=e[s](n,r,i,a)||``;return o}}function iu(e){return function(t){t.root||(t=t.return)&&e(t)}}function au(e){var t=Object.create(null);return function(n){return t[n]===void 0&&(t[n]=e(n)),t[n]}}var ou=function(e,t,n){for(var r=0,i=0;r=i,i=Rl(),r===38&&i===12&&(t[n]=1),!Vl(i);)Ll();return Bl(e,Al)},su=function(e,t){var n=-1,r=44;do switch(Vl(r)){case 0:r===38&&Rl()===12&&(t[n]=1),e[n]+=ou(Al-1,t,n);break;case 2:e[n]+=Wl(r);break;case 4:if(r===44){e[++n]=Rl()===58?`&\f`:``,t[n]=e[n].length;break}default:e[n]+=ml(r)}while(r=Ll());return e},cu=function(e,t){return Ul(su(Hl(e),t))},lu=new WeakMap,uu=function(e){if(!(e.type!==`rule`||!e.parent||e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;n.type!==`rule`;)if(n=n.parent,!n)return;if(!(e.props.length===1&&t.charCodeAt(0)!==58&&!lu.get(n))&&!r){lu.set(e,!0);for(var i=[],a=cu(t,i),o=n.props,s=0,c=0;s<a.length;s++)for(var l=0;l<o.length;l++,c++)e.props[c]=i[s]?a[s].replace(/&\f/g,o[l]):o[l]+` `+a[s]}}},du=function(e){if(e.type===`decl`){var t=e.value;t.charCodeAt(0)===108&&t.charCodeAt(2)===98&&(e.return=``,e.value=``)}};function fu(e,t){switch(gl(e,t)){case 5103:return ol+`print-`+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return ol+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return ol+e+al+e+il+e+e;case 6828:case 4268:return ol+e+il+e+e;case 6165:return ol+e+il+`flex-`+e+e;case 5187:return ol+e+yl(e,/(\w+).+(:[^]+)/,ol+`box-$1$2`+il+`flex-$1$2`)+e;case 5443:return ol+e+il+`flex-item-`+yl(e,/flex-|-self/,``)+e;case 4675:return ol+e+il+`flex-line-pack`+yl(e,/align-content|flex-|-self/,``)+e;case 5548:return ol+e+il+yl(e,`shrink`,`negative`)+e;case 5292:return ol+e+il+yl(e,`basis`,`preferred-size`)+e;case 6060:return ol+`box-`+yl(e,`-grow`,``)+ol+e+il+yl(e,`grow`,`positive`)+e;case 4554:return ol+yl(e,/([^-])(transform)/g,`$1`+ol+`$2`)+e;case 6187:return yl(yl(yl(e,/(zoom-|grab)/,ol+`$1`),/(image-set)/,ol+`$1`),e,``)+e;case 5495:case 3959:return yl(e,/(image-set\([^]*)/,ol+"$1$`$1");case 4968:return yl(yl(e,/(.+:)(flex-)?(.*)/,ol+`box-pack:$3`+il+`flex-pack:$3`),/s.+-b[^;]+/,`justify`)+ol+e+e;case 4095:case 3583:case 4068:case 2532:return yl(e,/(.+)-inline(.+)/,ol+`$1$2`)+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(Cl(e)-1-t>6)switch(xl(e,t+1)){case 109:if(xl(e,t+4)!==45)break;case 102:return yl(e,/(.+:)(.+)-([^]+)/,`$1`+ol+`$2-$3$1`+al+(xl(e,t+3)==108?`$3`:`$2-$3`))+e;case 115:return~bl(e,`stretch`)?fu(yl(e,`stretch`,`fill-available`),t)+e:e}break;case 4949:if(xl(e,t+1)!==115)break;case 6444:switch(xl(e,Cl(e)-3-(~bl(e,`!important`)&&10))){case 107:return yl(e,`:`,`:`+ol)+e;case 101:return yl(e,/(.+:)([^;!]+)(;|!.+)?/,`$1`+ol+(xl(e,14)===45?`inline-`:``)+`box$3$1`+ol+`$2$3$1`+il+`$2box$3`)+e}break;case 5936:switch(xl(e,t+11)){case 114:return ol+e+il+yl(e,/[svh]\w+-[tblr]{2}/,`tb`)+e;case 108:return ol+e+il+yl(e,/[svh]\w+-[tblr]{2}/,`tb-rl`)+e;case 45:return ol+e+il+yl(e,/[svh]\w+-[tblr]{2}/,`lr`)+e}return ol+e+il+e+e}return e}var pu=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case ll:e.return=fu(e.value,e.length);break;case dl:return tu([Pl(e,{value:yl(e.value,`@`,`@`+ol)})],r);case cl:if(e.length)return El(e.props,function(t){switch(vl(t,/(::plac\w+|:read-\w+)/)){case`:read-only`:case`:read-write`:return tu([Pl(e,{props:[yl(t,/:(read-\w+)/,`:`+al+`$1`)]})],r);case`::placeholder`:return tu([Pl(e,{props:[yl(t,/:(plac\w+)/,`:`+ol+`input-$1`)]}),Pl(e,{props:[yl(t,/:(plac\w+)/,`:`+al+`$1`)]}),Pl(e,{props:[yl(t,/:(plac\w+)/,il+`input-$1`)]})],r)}return``})}}],mu=function(e){var t=e.key;if(t===`css`){var n=document.querySelectorAll(`style[data-emotion]:not([data-s])`);Array.prototype.forEach.call(n,function(e){e.getAttribute(`data-emotion`).indexOf(` `)!==-1&&(document.head.appendChild(e),e.setAttribute(`data-s`,``))})}var r=e.stylisPlugins||pu,i={},a,o=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll(`style[data-emotion^="`+t+` "]`),function(e){for(var t=e.getAttribute(`data-emotion`).split(` `),n=1;n<t.length;n++)i[t[n]]=!0;o.push(e)});var s,c=[uu,du],l,u=[nu,iu(function(e){l.insert(e)})],d=ru(c.concat(r,u)),f=function(e){return tu(Xl(e),d)};s=function(e,t,n,r){l=n,f(e?e+`{`+t.styles+`}`:t.styles),r&&(p.inserted[t.name]=!0)};var p={key:t,sheet:new rl({key:t,container:a,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:i,registered:{},insert:s};return p.sheet.hydrate(o),p},hu=s((e=>{var t=typeof Symbol==`function`&&Symbol.for,n=t?Symbol.for(`react.element`):60103,r=t?Symbol.for(`react.portal`):60106,i=t?Symbol.for(`react.fragment`):60107,a=t?Symbol.for(`react.strict_mode`):60108,o=t?Symbol.for(`react.profiler`):60114,s=t?Symbol.for(`react.provider`):60109,c=t?Symbol.for(`react.context`):60110,l=t?Symbol.for(`react.async_mode`):60111,u=t?Symbol.for(`react.concurrent_mode`):60111,d=t?Symbol.for(`react.forward_ref`):60112,f=t?Symbol.for(`react.suspense`):60113,p=t?Symbol.for(`react.suspense_list`):60120,m=t?Symbol.for(`react.memo`):60115,h=t?Symbol.for(`react.lazy`):60116,g=t?Symbol.for(`react.block`):60121,_=t?Symbol.for(`react.fundamental`):60117,v=t?Symbol.for(`react.responder`):60118,y=t?Symbol.for(`react.scope`):60119;function b(e){if(typeof e==`object`&&e){var t=e.$$typeof;switch(t){case n:switch(e=e.type,e){case l:case u:case i:case o:case a:case f:return e;default:switch(e&&=e.$$typeof,e){case c:case d:case h:case m:case s:return e;default:return t}}case r:return t}}}function x(e){return b(e)===u}e.AsyncMode=l,e.ConcurrentMode=u,e.ContextConsumer=c,e.ContextProvider=s,e.Element=n,e.ForwardRef=d,e.Fragment=i,e.Lazy=h,e.Memo=m,e.Portal=r,e.Profiler=o,e.StrictMode=a,e.Suspense=f,e.isAsyncMode=function(e){return x(e)||b(e)===l},e.isConcurrentMode=x,e.isContextConsumer=function(e){return b(e)===c},e.isContextProvider=function(e){return b(e)===s},e.isElement=function(e){return typeof e==`object`&&!!e&&e.$$typeof===n},e.isForwardRef=function(e){return b(e)===d},e.isFragment=function(e){return b(e)===i},e.isLazy=function(e){return b(e)===h},e.isMemo=function(e){return b(e)===m},e.isPortal=function(e){return b(e)===r},e.isProfiler=function(e){return b(e)===o},e.isStrictMode=function(e){return b(e)===a},e.isSuspense=function(e){return b(e)===f},e.isValidElementType=function(e){return typeof e==`string`||typeof e==`function`||e===i||e===u||e===o||e===a||e===f||e===p||typeof e==`object`&&!!e&&(e.$$typeof===h||e.$$typeof===m||e.$$typeof===s||e.$$typeof===c||e.$$typeof===d||e.$$typeof===_||e.$$typeof===v||e.$$typeof===y||e.$$typeof===g)},e.typeOf=b})),gu=s(((e,t)=>{t.exports=hu()})),_u=s(((e,t)=>{var n=gu(),r={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};s[n.ForwardRef]=a,s[n.Memo]=o;function c(e){return n.isMemo(e)?o:s[e.$$typeof]||r}var l=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;function h(e,t,n){if(typeof t!=`string`){if(m){var r=p(t);r&&r!==m&&h(e,r,n)}var a=u(t);d&&(a=a.concat(d(t)));for(var o=c(e),s=c(t),g=0;g<a.length;++g){var _=a[g];if(!i[_]&&!(n&&n[_])&&!(s&&s[_])&&!(o&&o[_])){var v=f(t,_);try{l(e,_,v)}catch{}}}}return e}t.exports=h})),vu=!0;function yu(e,t,n){var r=``;return n.split(` `).forEach(function(n){e[n]===void 0?n&&(r+=n+` `):t.push(e[n]+`;`)}),r}var bu=function(e,t,n){var r=e.key+`-`+t.name;(n===!1||vu===!1)&&e.registered[r]===void 0&&(e.registered[r]=t.styles)},xu=function(e,t,n){bu(e,t,n);var r=e.key+`-`+t.name;if(e.inserted[t.name]===void 0){var i=t;do e.insert(t===i?`.`+r:``,i,e.sheet,!0),i=i.next;while(i!==void 0)}};function Su(e){for(var t=0,n,r=0,i=e.length;i>=4;++r,i-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var Cu={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},wu=!1,Tu=/[A-Z]|^ms/g,Eu=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Du=function(e){return e.charCodeAt(1)===45},Ou=function(e){return e!=null&&typeof e!=`boolean`},ku=au(function(e){return Du(e)?e:e.replace(Tu,`-$&`).toLowerCase()}),Au=function(e,t){switch(e){case`animation`:case`animationName`:if(typeof t==`string`)return t.replace(Eu,function(e,t,n){return Fu={name:t,styles:n,next:Fu},t})}return Cu[e]!==1&&!Du(e)&&typeof t==`number`&&t!==0?t+`px`:t},ju=`Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.`;function Mu(e,t,n){if(n==null)return``;var r=n;if(r.__emotion_styles!==void 0)return r;switch(typeof n){case`boolean`:return``;case`object`:var i=n;if(i.anim===1)return Fu={name:i.name,styles:i.styles,next:Fu},i.name;var a=n;if(a.styles!==void 0){var o=a.next;if(o!==void 0)for(;o!==void 0;)Fu={name:o.name,styles:o.styles,next:Fu},o=o.next;return a.styles+`;`}return Nu(e,t,n);case`function`:if(e!==void 0){var s=Fu,c=n(e);return Fu=s,Mu(e,t,c)}break}var l=n;if(t==null)return l;var u=t[l];return u===void 0?l:u}function Nu(e,t,n){var r=``;if(Array.isArray(n))for(var i=0;i<n.length;i++)r+=Mu(e,t,n[i])+`;`;else for(var a in n){var o=n[a];if(typeof o!=`object`){var s=o;t!=null&&t[s]!==void 0?r+=a+`{`+t[s]+`}`:Ou(s)&&(r+=ku(a)+`:`+Au(a,s)+`;`)}else{if(a===`NO_COMPONENT_SELECTOR`&&wu)throw Error(ju);if(Array.isArray(o)&&typeof o[0]==`string`&&(t==null||t[o[0]]===void 0))for(var c=0;c<o.length;c++)Ou(o[c])&&(r+=ku(a)+`:`+Au(a,o[c])+`;`);else{var l=Mu(e,t,o);switch(a){case`animation`:case`animationName`:r+=ku(a)+`:`+l+`;`;break;default:r+=a+`{`+l+`}`}}}}return r}var Pu=/label:\s*([^\s;{]+)\s*(;|$)/g,Fu;function Iu(e,t,n){if(e.length===1&&typeof e[0]==`object`&&e[0]!==null&&e[0].styles!==void 0)return e[0];var r=!0,i=``;Fu=void 0;var a=e[0];a==null||a.raw===void 0?(r=!1,i+=Mu(n,t,a)):i+=a[0];for(var o=1;o<e.length;o++)i+=Mu(n,t,e[o]),r&&(i+=a[o]);Pu.lastIndex=0;for(var s=``,c;(c=Pu.exec(i))!==null;)s+=`-`+c[1];return{name:Su(i)+s,styles:i,next:Fu}}var Lu=function(e){return e()},Ru=C.useInsertionEffect?C.useInsertionEffect:!1,zu=Ru||Lu,Bu=Ru||C.useLayoutEffect,Vu=C.createContext(typeof HTMLElement<`u`?mu({key:`css`}):null);Vu.Provider;var Hu=function(e){return(0,C.forwardRef)(function(t,n){return e(t,(0,C.useContext)(Vu),n)})},Uu=C.createContext({}),Wu={}.hasOwnProperty,Gu=`__EMOTION_TYPE_PLEASE_DO_NOT_USE__`,Ku=function(e,t){var n={};for(var r in t)Wu.call(t,r)&&(n[r]=t[r]);return n[Gu]=e,n},qu=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return bu(t,n,r),zu(function(){return xu(t,n,r)}),null},Ju=Hu(function(e,t,n){var r=e.css;typeof r==`string`&&t.registered[r]!==void 0&&(r=t.registered[r]);var i=e[Gu],a=[r],o=``;typeof e.className==`string`?o=yu(t.registered,a,e.className):e.className!=null&&(o=e.className+` `);var s=Iu(a,void 0,C.useContext(Uu));o+=t.key+`-`+s.name;var c={};for(var l in e)Wu.call(e,l)&&l!==`css`&&l!==Gu&&(c[l]=e[l]);return c.className=o,n&&(c.ref=n),C.createElement(C.Fragment,null,C.createElement(qu,{cache:t,serialized:s,isStringTag:typeof i==`string`}),C.createElement(i,c))});_u();var Yu=function(e,t){var n=arguments;if(t==null||!Wu.call(t,`css`))return C.createElement.apply(void 0,n);var r=n.length,i=Array(r);i[0]=Ju,i[1]=Ku(e,t);for(var a=2;a<r;a++)i[a]=n[a];return C.createElement.apply(null,i)};(function(e){var t;(function(e){})(t||=e.JSX||={})})(Yu||={});var Xu=Hu(function(e,t){var n=e.styles,r=Iu([n],void 0,C.useContext(Uu)),i=C.useRef();return Bu(function(){var e=t.key+`-global`,n=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),a=!1,o=document.querySelector(`style[data-emotion="`+e+` `+r.name+`"]`);return t.sheet.tags.length&&(n.before=t.sheet.tags[0]),o!==null&&(a=!0,o.setAttribute(`data-emotion`,e),n.hydrate([o])),i.current=[n,a],function(){n.flush()}},[t]),Bu(function(){var e=i.current,n=e[0];if(e[1]){e[1]=!1;return}r.next!==void 0&&xu(t,r.next,!0),n.tags.length&&(n.before=n.tags[n.tags.length-1].nextElementSibling,n.flush()),t.insert(``,r,n,!1)},[t,r.name]),null});function Zu(){return Iu([...arguments])}function Qu(){var e=Zu.apply(void 0,arguments),t=`animation-`+e.name;return{name:t,styles:`@keyframes `+t+`{`+e.styles+`}`,anim:1,toString:function(){return`_EMO_`+this.name+`_`+this.styles+`_EMO_`}}}var $u=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,ed=au(function(e){return $u.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91}),td=!1,nd=ed,rd=function(e){return e!==`theme`},id=function(e){return typeof e==`string`&&e.charCodeAt(0)>96?nd:rd},ad=function(e,t,n){var r;if(t){var i=t.shouldForwardProp;r=e.__emotion_forwardProp&&i?function(t){return e.__emotion_forwardProp(t)&&i(t)}:i}return typeof r!=`function`&&n&&(r=e.__emotion_forwardProp),r},od=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return bu(t,n,r),zu(function(){return xu(t,n,r)}),null},sd=function e(t,n){var r=t.__emotion_real===t,i=r&&t.__emotion_base||t,a,o;n!==void 0&&(a=n.label,o=n.target);var s=ad(t,n,r),c=s||id(i),l=!c(`as`);return function(){var u=arguments,d=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(a!==void 0&&d.push(`label:`+a+`;`),u[0]==null||u[0].raw===void 0)d.push.apply(d,u);else{var f=u[0];d.push(f[0]);for(var p=u.length,m=1;m<p;m++)d.push(u[m],f[m])}var h=Hu(function(e,t,n){var r=l&&e.as||i,a=``,u=[],f=e;if(e.theme==null){for(var p in f={},e)f[p]=e[p];f.theme=C.useContext(Uu)}typeof e.className==`string`?a=yu(t.registered,u,e.className):e.className!=null&&(a=e.className+` `);var m=Iu(d.concat(u),t.registered,f);a+=t.key+`-`+m.name,o!==void 0&&(a+=` `+o);var h=l&&s===void 0?id(r):c,g={};for(var _ in e)l&&_===`as`||h(_)&&(g[_]=e[_]);return g.className=a,n&&(g.ref=n),C.createElement(C.Fragment,null,C.createElement(od,{cache:t,serialized:m,isStringTag:typeof r==`string`}),C.createElement(r,g))});return h.displayName=a===void 0?`Styled(`+(typeof i==`string`?i:i.displayName||i.name||`Component`)+`)`:a,h.defaultProps=t.defaultProps,h.__emotion_real=h,h.__emotion_base=i,h.__emotion_styles=d,h.__emotion_forwardProp=s,Object.defineProperty(h,`toString`,{value:function(){return o===void 0&&td?`NO_COMPONENT_SELECTOR`:`.`+o}}),h.withComponent=function(t,r){return e(t,$c({},n,r,{shouldForwardProp:ad(h,r,!0)})).apply(void 0,d)},h}},cd=`a.abbr.address.area.article.aside.audio.b.base.bdi.bdo.big.blockquote.body.br.button.canvas.caption.cite.code.col.colgroup.data.datalist.dd.del.details.dfn.dialog.div.dl.dt.em.embed.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.iframe.img.input.ins.kbd.keygen.label.legend.li.link.main.map.mark.marquee.menu.menuitem.meta.meter.nav.noscript.object.ol.optgroup.option.output.p.param.picture.pre.progress.q.rp.rt.ruby.s.samp.script.section.select.small.source.span.strong.style.sub.summary.sup.table.tbody.td.textarea.tfoot.th.thead.time.title.tr.track.u.ul.var.video.wbr.circle.clipPath.defs.ellipse.foreignObject.g.image.line.linearGradient.mask.path.pattern.polygon.polyline.radialGradient.rect.stop.svg.text.tspan`.split(`.`),ld=sd.bind(null);cd.forEach(function(e){ld[e]=ld(e)});var ud=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),G=s(((e,t)=>{t.exports=ud()}))();function dd(e){return e==null||Object.keys(e).length===0}function fd(e){let{styles:t,defaultTheme:n={}}=e;return(0,G.jsx)(Xu,{styles:typeof t==`function`?e=>t(dd(e)?n:e):t})}function pd(e,t){return ld(e,t)}function md(e,t){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}var hd=[];function gd(e){return hd[0]=e,Iu(hd)}var _d=e=>{let t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})};function vd(e){let{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n=`px`,step:r=5,...i}=e,a=_d(t),o=Object.keys(a);function s(e){return`@media (min-width:${typeof t[e]==`number`?t[e]:e}${n})`}function c(e){return`@media (max-width:${(typeof t[e]==`number`?t[e]:e)-r/100}${n})`}function l(e,i){let a=o.indexOf(i);return`@media (min-width:${typeof t[e]==`number`?t[e]:e}${n}) and (max-width:${(a!==-1&&typeof t[o[a]]==`number`?t[o[a]]:i)-r/100}${n})`}function u(e){return o.indexOf(e)+1<o.length?l(e,o[o.indexOf(e)+1]):s(e)}function d(e){let t=o.indexOf(e);return t===0?s(o[1]):t===o.length-1?c(o[t]):l(e,o[o.indexOf(e)+1]).replace(`@media`,`@media not all and`)}return{keys:o,values:a,up:s,down:c,between:l,only:u,not:d,unit:n,...i}}var yd={borderRadius:4};function bd(e=8,t=dc({spacing:e})){if(e.mui)return e;let n=(...e)=>(e.length===0?[1]:e).map(e=>{let n=t(e);return typeof n==`number`?`${n}px`:n}).join(` `);return n.mui=!0,n}function xd(e,t){let n=this;if(n.vars){if(!n.colorSchemes?.[e]||typeof n.getColorSchemeSelector!=`function`)return{};let r=n.getColorSchemeSelector(e);return r===`&`?t:((r.includes(`data-`)||r.includes(`.`))&&(r=`*:where(${r.replace(/\s*&$/,``)}) &`),{[r]:t})}return n.palette.mode===e?t:{}}function Sd(e={},...t){let{breakpoints:n={},palette:r={},spacing:i,shape:a={},...o}=e,s=vd(n),c=bd(i),l=zs({breakpoints:s,direction:`ltr`,components:{},palette:{mode:`light`,...r},spacing:c,shape:{...yd,...a}},o);return l=nee(l),l.applyStyles=xd,l=t.reduce((e,t)=>zs(e,t),l),l.unstable_sxConfig={...Kc,...o?.unstable_sxConfig},l.unstable_sx=function(e){return Xc({sx:e,theme:this})},l}function Cd(e){return Object.keys(e).length===0}function wd(e=null){let t=C.useContext(Uu);return!t||Cd(t)?e:t}var Td=Sd();function Ed(e=Td){return wd(e)}function Dd(e){let t=gd(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles=`@layer global{${t.styles}}`),t):e}function Od({styles:e,themeId:t,defaultTheme:n={}}){let r=Ed(n),i=t&&r[t]||r,a=typeof e==`function`?e(i):e;return i.modularCssLayers&&(a=Array.isArray(a)?a.map(e=>Dd(typeof e==`function`?e(i):e)):Dd(a)),(0,G.jsx)(fd,{styles:a})}var kd=e=>e,Ad=(()=>{let e=kd;return{configure(t){e=t},generate(t){return e(t)},reset(){e=kd}}})();function jd(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=jd(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function K(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=jd(e))&&(r&&(r+=` `),r+=t);return r}function ree(e={}){let{themeId:t,defaultTheme:n,defaultClassName:r=`MuiBox-root`,generateClassName:i}=e,a=pd(`div`,{shouldForwardProp:e=>e!==`theme`&&e!==`sx`&&e!==`as`})(Xc);return C.forwardRef(function(e,o){let s=Ed(n),{className:c,component:l=`div`,...u}=Qc(e);return(0,G.jsx)(a,{as:l,ref:o,className:K(c,i?i(r):r),theme:t&&s[t]||s,...u})})}var iee={active:`active`,checked:`checked`,completed:`completed`,disabled:`disabled`,error:`error`,expanded:`expanded`,focused:`focused`,focusVisible:`focusVisible`,open:`open`,readOnly:`readOnly`,required:`required`,selected:`selected`};function Md(e,t,n=`Mui`){let r=iee[t];return r?`${n}-${r}`:`${Ad.generate(e)}-${t}`}function Nd(e,t,n=`Mui`){let r={};return t.forEach(t=>{r[t]=Md(e,t,n)}),r}function Pd(e){let{variants:t,...n}=e,r={variants:t,style:gd(n),isProcessed:!0};return r.style===n||t&&t.forEach(e=>{typeof e.style!=`function`&&(e.style=gd(e.style))}),r}var Fd=Sd();function Id(e){return e!==`ownerState`&&e!==`theme`&&e!==`sx`&&e!==`as`}function Ld(e,t){return t&&e&&typeof e==`object`&&e.styles&&!e.styles.startsWith(`@layer`)&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function Rd(e){return e?(t,n)=>n[e]:null}function zd(e,t,n){e.theme=Ud(e.theme)?n:e.theme[t]||e.theme}function Bd(e,t,n){let r=typeof t==`function`?t(e):t;if(Array.isArray(r))return r.flatMap(t=>Bd(e,t,n));if(Array.isArray(r?.variants)){let t;if(r.isProcessed)t=n?Ld(r.style,n):r.style;else{let{variants:e,...i}=r;t=n?Ld(gd(i),n):i}return Vd(e,r.variants,[t],n)}return r?.isProcessed?n?Ld(gd(r.style),n):r.style:n?Ld(gd(r),n):r}function Vd(e,t,n=[],r=void 0){let i;variantLoop:for(let a=0;a<t.length;a+=1){let o=t[a];if(typeof o.props==`function`){if(i??={...e,...e.ownerState,ownerState:e.ownerState},!o.props(i))continue}else for(let t in o.props)if(e[t]!==o.props[t]&&e.ownerState?.[t]!==o.props[t])continue variantLoop;typeof o.style==`function`?(i??={...e,...e.ownerState,ownerState:e.ownerState},n.push(r?Ld(gd(o.style(i)),r):o.style(i))):n.push(r?Ld(gd(o.style),r):o.style)}return n}function Hd(e={}){let{themeId:t,defaultTheme:n=Fd,rootShouldForwardProp:r=Id,slotShouldForwardProp:i=Id}=e;function a(e){zd(e,t,n)}return(e,t={})=>{md(e,e=>e.filter(e=>e!==Xc));let{name:n,slot:o,skipVariantsResolver:s,skipSx:c,overridesResolver:l=Rd(Gd(o)),...u}=t,d=n&&n.startsWith(`Mui`)||o?`components`:`custom`,f=s===void 0?o&&o!==`Root`&&o!==`root`||!1:s,p=c||!1,m=Id;o===`Root`||o===`root`?m=r:o?m=i:Wd(e)&&(m=void 0);let h=pd(e,{shouldForwardProp:m,label:void 0,...u}),g=e=>{if(e.__emotion_real===e)return e;if(typeof e==`function`)return function(t){return Bd(t,e,t.theme.modularCssLayers?d:void 0)};if(Ls(e)){let t=Pd(e);return function(e){return t.variants?Bd(e,t,e.theme.modularCssLayers?d:void 0):e.theme.modularCssLayers?Ld(t.style,d):t.style}}return e},_=(...t)=>{let r=[],i=t.map(g),o=[];if(r.push(a),n&&l&&o.push(function(e){let t=e.theme.components?.[n]?.styleOverrides;if(!t)return null;let r={};for(let n in t)r[n]=Bd(e,t[n],e.theme.modularCssLayers?`theme`:void 0);return l(e,r)}),n&&!f&&o.push(function(e){let t=e.theme?.components?.[n]?.variants;return t?Vd(e,t,[],e.theme.modularCssLayers?`theme`:void 0):null}),p||o.push(Xc),Array.isArray(i[0])){let e=i.shift(),t=Array(r.length).fill(``),n=Array(o.length).fill(``),a;a=[...t,...e,...n],a.raw=[...t,...e.raw,...n],r.unshift(a)}let s=h(...r,...i,...o);return e.muiName&&(s.muiName=e.muiName),s};return h.withConfig&&(_.withConfig=h.withConfig),_}}function Ud(e){for(let t in e)return!1;return!0}function Wd(e){return typeof e==`string`&&e.charCodeAt(0)>96}function Gd(e){return e&&e.charAt(0).toLowerCase()+e.slice(1)}var Kd=Hd();function qd(e,t,n=!1){let r={...t};for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let a=i;if(a===`components`||a===`slots`)r[a]={...e[a],...r[a]};else if(a===`componentsProps`||a===`slotProps`){let i=e[a],o=t[a];if(!o)r[a]=i||{};else if(!i)r[a]=o;else{r[a]={...o};for(let e in i)if(Object.prototype.hasOwnProperty.call(i,e)){let t=e;r[a][t]=qd(i[t],o[t],n)}}}else a===`className`&&n&&t.className?r.className=K(e?.className,t?.className):a===`style`&&n&&t.style?r.style={...e?.style,...t?.style}:r[a]===void 0&&(r[a]=e[a])}return r}function Jd(e){let{theme:t,name:n,props:r}=e;return!t||!t.components||!t.components[n]||!t.components[n].defaultProps?r:qd(t.components[n].defaultProps,r)}function Yd({props:e,name:t,defaultTheme:n,themeId:r}){let i=Ed(n);return r&&(i=i[r]||i),Jd({theme:i,name:t,props:e})}var Xd=typeof window<`u`?C.useLayoutEffect:C.useEffect;function Zd(e,t,n,r,i){let[a,o]=C.useState(()=>i&&n?n(e).matches:r?r(e).matches:t);return Xd(()=>{if(!n)return;let t=n(e),r=()=>{o(t.matches)};return r(),t.addEventListener(`change`,r),()=>{t.removeEventListener(`change`,r)}},[e,n]),a}var Qd={...C}.useSyncExternalStore;function $d(e,t,n,r,i){let a=C.useCallback(()=>t,[t]),o=C.useMemo(()=>{if(i&&n)return()=>n(e).matches;if(r!==null){let{matches:t}=r(e);return()=>t}return a},[a,e,r,i,n]),[s,c]=C.useMemo(()=>{if(n===null)return[a,()=>()=>{}];let t=n(e);return[()=>t.matches,e=>(t.addEventListener(`change`,e),()=>{t.removeEventListener(`change`,e)})]},[a,n,e]);return Qd(c,s,o)}function ef(e={}){let{themeId:t}=e;return function(e,n={}){let r=wd();r&&t&&(r=r[t]||r);let i=typeof window<`u`&&window.matchMedia!==void 0,{defaultMatches:a=!1,matchMedia:o=i?window.matchMedia:null,ssrMatchMedia:s=null,noSsr:c=!1}=Jd({name:`MuiUseMediaQuery`,props:n,theme:r}),l=typeof e==`function`?e(r):e;return l=l.replace(/^@media( ?)/m,``),l.includes(`print`)&&console.warn(["MUI: You have provided a `print` query to the `useMediaQuery` hook.",`Using the print media query to modify print styles can lead to unexpected results.`,"Consider using the `displayPrint` field in the `sx` prop instead.","More information about `displayPrint` on our docs: https://mui.com/system/display/#display-in-print."].join(`
12
+ Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=vr(),d;if(t){let e=typeof t==`string`?ye(t):t;me(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=je(e,{pathname:p});W(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),W(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let h=Pr(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:st([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:st([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?C.createElement(cr.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,unstable_mask:void 0,...d},navigationType:`POP`}},h):h}function Or(){let e=Ur(),t=pt(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=C.createElement(C.Fragment,null,C.createElement(`p`,null,`💿 Hey developer 👋`),C.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,C.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,C.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),C.createElement(C.Fragment,null,C.createElement(`h2`,null,`Unexpected Application Error!`),C.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?C.createElement(`pre`,{style:i},n):null,o)}var kr=C.createElement(Or,null),Ar=class extends C.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=hr(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:C.createElement(lr.Provider,{value:this.props.routeContext},C.createElement(ur.Provider,{value:e,children:this.props.component}));return this.context?C.createElement(Mr,{error:e},t):t}};Ar.contextType=nr;var jr=new WeakMap;function Mr({children:e,error:t}){let{basename:n}=C.useContext(sr);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=mr(t.digest);if(e){let r=jr.get(t);if(r)throw r;let i=gt(e.location,n);if(ht&&!jr.get(t))if(i.isExternal||e.reloadDocument)window.location.href=i.absoluteURL||i.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw jr.set(t,n),n}return C.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${i.absoluteURL||i.to}`})}}return e}function Nr({routeContext:e,match:t,children:n}){let r=C.useContext(er);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),C.createElement(lr.Provider,{value:e},n)}function Pr(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);me(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},unstable_pattern:mt(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||kr,o&&(s<0&&c===0?(Kr(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?C.createElement(n.route.Component,null):n.route.element?n.route.element:e,C.createElement(Nr,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?C.createElement(Ar,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function Fr(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Ir(e){let t=C.useContext(er);return me(t,Fr(e)),t}function Lr(e){let t=C.useContext(tr);return me(t,Fr(e)),t}function Rr(e){let t=C.useContext(lr);return me(t,Fr(e)),t}function zr(e){let t=Rr(e),n=t.matches[t.matches.length-1];return me(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Br(){return zr(`useRouteId`)}function Vr(){return Lr(`useNavigation`).navigation}function Hr(){let{matches:e,loaderData:t}=Lr(`useMatches`);return C.useMemo(()=>e.map(e=>Ne(e,t)),[e,t])}function Ur(){let e=C.useContext(ur),t=Lr(`useRouteError`),n=zr(`useRouteError`);return e===void 0?t.errors?.[n]:e}function Wr(){let{router:e}=Ir(`useNavigate`),t=zr(`useNavigate`),n=C.useRef(!1);return br(()=>{n.current=!0}),C.useCallback(async(r,i={})=>{W(n.current,yr),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var Gr={};function Kr(e,t,n){!t&&!Gr[e]&&(Gr[e]=!0,W(!1,n))}var qr={};function Jr(e,t){!e&&!qr[t]&&(qr[t]=!0,console.warn(t))}var Yr=C.useOptimistic,Xr=()=>void 0;function Zr(e){return Yr?Yr(e):[e,Xr]}function Qr(e){let t={hasErrorBoundary:e.hasErrorBoundary||e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&(e.element&&W(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(t,{element:C.createElement(e.Component),Component:void 0})),e.HydrateFallback&&(e.hydrateFallbackElement&&W(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(t,{hydrateFallbackElement:C.createElement(e.HydrateFallback),HydrateFallback:void 0})),e.ErrorBoundary&&(e.errorElement&&W(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(t,{errorElement:C.createElement(e.ErrorBoundary),ErrorBoundary:void 0})),t}var $r=[`HydrateFallback`,`hydrateFallbackElement`],tee=class{constructor(){this.status=`pending`,this.promise=new Promise((e,t)=>{this.resolve=t=>{this.status===`pending`&&(this.status=`resolved`,e(t))},this.reject=e=>{this.status===`pending`&&(this.status=`rejected`,t(e))}})}};function ei({router:e,flushSync:t,onError:n,unstable_useTransitions:r}){r=rr()||r;let[i,a]=C.useState(e.state),[o,s]=Zr(i),[c,l]=C.useState(),[u,d]=C.useState({isTransitioning:!1}),[f,p]=C.useState(),[m,h]=C.useState(),[g,_]=C.useState(),v=C.useRef(new Map),y=C.useCallback((i,{deletedFetchers:o,newErrors:c,flushSync:u,viewTransitionOpts:g})=>{c&&n&&Object.values(c).forEach(e=>n(e,{location:i.location,params:i.matches[0]?.params??{},unstable_pattern:mt(i.matches)})),i.fetchers.forEach((e,t)=>{e.data!==void 0&&v.current.set(t,e.data)}),o.forEach(e=>v.current.delete(e)),Jr(u===!1||t!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let y=e.window!=null&&e.window.document!=null&&typeof e.window.document.startViewTransition==`function`;if(Jr(g==null||y,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!g||!y){t&&u?t(()=>a(i)):r===!1?a(i):C.startTransition(()=>{r===!0&&s(e=>ti(e,i)),a(i)});return}if(t&&u){t(()=>{m&&(f?.resolve(),m.skipTransition()),d({isTransitioning:!0,flushSync:!0,currentLocation:g.currentLocation,nextLocation:g.nextLocation})});let n=e.window.document.startViewTransition(()=>{t(()=>a(i))});n.finished.finally(()=>{t(()=>{p(void 0),h(void 0),l(void 0),d({isTransitioning:!1})})}),t(()=>h(n));return}m?(f?.resolve(),m.skipTransition(),_({state:i,currentLocation:g.currentLocation,nextLocation:g.nextLocation})):(l(i),d({isTransitioning:!0,flushSync:!1,currentLocation:g.currentLocation,nextLocation:g.nextLocation}))},[e.window,t,m,f,r,s,n]);C.useLayoutEffect(()=>e.subscribe(y),[e,y]);let b=o.initialized;C.useLayoutEffect(()=>{!b&&e.state.initialized&&y(e.state,{deletedFetchers:[],flushSync:!1,newErrors:null})},[b,y,e.state]),C.useEffect(()=>{u.isTransitioning&&!u.flushSync&&p(new tee)},[u]),C.useEffect(()=>{if(f&&c&&e.window){let t=c,n=f.promise,i=e.window.document.startViewTransition(async()=>{r===!1?a(t):C.startTransition(()=>{r===!0&&s(e=>ti(e,t)),a(t)}),await n});i.finished.finally(()=>{p(void 0),h(void 0),l(void 0),d({isTransitioning:!1})}),h(i)}},[c,f,e.window,r,s]),C.useEffect(()=>{f&&c&&o.location.key===c.location.key&&f.resolve()},[f,m,o.location,c]),C.useEffect(()=>{!u.isTransitioning&&g&&(l(g.state),d({isTransitioning:!0,flushSync:!1,currentLocation:g.currentLocation,nextLocation:g.nextLocation}),_(void 0))},[u.isTransitioning,g]);let x=C.useMemo(()=>({createHref:e.createHref,encodeLocation:e.encodeLocation,go:t=>e.navigate(t),push:(t,n,r)=>e.navigate(t,{state:n,preventScrollReset:r?.preventScrollReset}),replace:(t,n,r)=>e.navigate(t,{replace:!0,state:n,preventScrollReset:r?.preventScrollReset})}),[e]),S=e.basename||`/`,w=C.useMemo(()=>({router:e,navigator:x,static:!1,basename:S,onError:n}),[e,x,S,n]);return C.createElement(C.Fragment,null,C.createElement(er.Provider,{value:w},C.createElement(tr.Provider,{value:o},C.createElement(ar.Provider,{value:v.current},C.createElement(ir.Provider,{value:u},C.createElement(ai,{basename:S,location:o.location,navigationType:o.historyAction,navigator:x,unstable_useTransitions:r},C.createElement(ni,{routes:e.routes,future:e.future,state:o,isStatic:!1,onError:n})))))),null)}function ti(e,t){return{...e,navigation:t.navigation.state===`idle`?e.navigation:t.navigation,revalidation:t.revalidation===`idle`?e.revalidation:t.revalidation,actionData:t.navigation.state===`submitting`?e.actionData:t.actionData,fetchers:t.fetchers}}var ni=C.memo(ri);function ri({routes:e,future:t,state:n,isStatic:r,onError:i}){return Dr(e,void 0,{state:n,isStatic:r,onError:i,future:t})}function ii(e){return wr(e.context)}function ai({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,unstable_useTransitions:o}){me(!_r(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=C.useMemo(()=>({basename:s,navigator:i,static:a,unstable_useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=ye(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,unstable_mask:m}=n,h=C.useMemo(()=>{let e=Xe(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,unstable_mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return W(h!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),h==null?null:C.createElement(sr.Provider,{value:c},C.createElement(cr.Provider,{children:t,value:h}))}C.Component;var oi=`get`,si=`application/x-www-form-urlencoded`;function ci(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function li(e){return ci(e)&&e.tagName.toLowerCase()===`button`}function ui(e){return ci(e)&&e.tagName.toLowerCase()===`form`}function di(e){return ci(e)&&e.tagName.toLowerCase()===`input`}function fi(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function pi(e,t){return e.button===0&&(!t||t===`_self`)&&!fi(e)}function mi(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function hi(e,t){let n=mi(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var gi=null;function _i(){if(gi===null)try{new FormData(document.createElement(`form`),0),gi=!1}catch{gi=!0}return gi}var vi=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function yi(e){return e!=null&&!vi.has(e)?(W(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${si}"`),null):e}function bi(e,t){let n,r,i,a,o;if(ui(e)){let o=e.getAttribute(`action`);r=o?Xe(o,t):null,n=e.getAttribute(`method`)||oi,i=yi(e.getAttribute(`enctype`))||si,a=new FormData(e)}else if(li(e)||di(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?Xe(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||oi,i=yi(e.getAttribute(`formenctype`))||yi(o.getAttribute(`enctype`))||si,a=new FormData(o,e),!_i()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(ci(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=oi,r=null,i=si,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var xi={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},Si=/[&><\u2028\u2029]/g;function Ci(e){return e.replace(Si,e=>xi[e])}function wi(e,t){if(e===!1||e==null)throw Error(t)}function Ti(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&Xe(i.pathname,t)===`/`?i.pathname=`${ct(t)}/_root.${r}`:i.pathname=`${ct(i.pathname)}.${r}`,i}async function Ei(e,t){if(e.id in t)return t[e.id];try{let n=await ce(()=>import(e.module),[],import.meta.url);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Di(e){return e!=null&&typeof e.page==`string`}function Oi(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function ki(e,t,n){return Pi((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Ei(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Oi).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Ai(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function ji(e,t,{includeHydrateFallback:n}={}){return Mi(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function Mi(e){return[...new Set(e)]}function Ni(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Pi(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Di(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Ni(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Fi(){let e=C.useContext(er);return wi(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Ii(){let e=C.useContext(tr);return wi(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Li=C.createContext(void 0);Li.displayName=`FrameworkContext`;function Ri(){let e=C.useContext(Li);return wi(e,`You must render this element inside a <HydratedRouter> element`),e}function zi(e,t){let n=C.useContext(Li),[r,i]=C.useState(!1),[a,o]=C.useState(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=C.useRef(null);C.useEffect(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return f.current&&e.observe(f.current),()=>{e.disconnect()}}},[e]),C.useEffect(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let p=()=>{i(!0)},m=()=>{i(!1),o(!1)};return n?e===`intent`?[a,f,{onFocus:Bi(s,p),onBlur:Bi(c,m),onMouseEnter:Bi(l,p),onMouseLeave:Bi(u,m),onTouchStart:Bi(d,p)}]:[a,f,{}]:[!1,f,{}]}function Bi(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Vi({page:e,...t}){let n=rr(),{router:r}=Fi(),i=C.useMemo(()=>je(r.routes,e,r.basename),[r.routes,e,r.basename]);return i?n?C.createElement(Ui,{page:e,matches:i,...t}):C.createElement(Wi,{page:e,matches:i,...t}):null}function Hi(e){let{manifest:t,routeModules:n}=Ri(),[r,i]=C.useState([]);return C.useEffect(()=>{let r=!1;return ki(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Ui({page:e,matches:t,...n}){let r=vr(),{future:i}=Ri(),{basename:a}=Fi(),o=C.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Ti(e,a,i.unstable_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.unstable_trailingSlashAwareDataRequests,e,r,t]);return C.createElement(C.Fragment,null,o.map(e=>C.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function Wi({page:e,matches:t,...n}){let r=vr(),{future:i,manifest:a,routeModules:o}=Ri(),{basename:s}=Fi(),{loaderData:c,matches:l}=Ii(),u=C.useMemo(()=>Ai(e,t,l,a,r,`data`),[e,t,l,a,r]),d=C.useMemo(()=>Ai(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=C.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,l=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];!t||!t.hasLoader||(!u.some(t=>t.route.id===e.route.id)&&e.route.id in c&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?l=!0:n.add(e.route.id))}),n.size===0)return[];let d=Ti(e,s,i.unstable_trailingSlashAwareDataRequests,`data`);return l&&n.size>0&&d.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[d.pathname+d.search]},[s,i.unstable_trailingSlashAwareDataRequests,c,r,a,u,t,e,o]),p=C.useMemo(()=>ji(d,a),[d,a]),m=Hi(d);return C.createElement(C.Fragment,null,f.map(e=>C.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>C.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>C.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Gi(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}C.Component;var Ki=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Ki&&(window.__reactRouterVersion=`7.14.1`)}catch{}function qi(e,t){return Bt({basename:t?.basename,getContext:t?.getContext,future:t?.future,history:pe({window:t?.window}),hydrationData:t?.hydrationData||Ji(),routes:e,mapRouteProperties:Qr,hydrationRouteProperties:$r,dataStrategy:t?.dataStrategy,patchRoutesOnNavigation:t?.patchRoutesOnNavigation,window:t?.window,unstable_instrumentations:t?.unstable_instrumentations}).initialize()}function Ji(){let e=window?.__staticRouterHydrationData;return e&&e.errors&&(e={...e,errors:Yi(e.errors)}),e}function Yi(e){if(!e)return null;let t=Object.entries(e),n={};for(let[e,r]of t)if(r&&r.__type===`RouteErrorResponse`)n[e]=new ft(r.status,r.statusText,r.data,r.internal===!0);else if(r&&r.__type===`Error`){if(r.__subType){let t=window[r.__subType];if(typeof t==`function`)try{let i=new t(r.message);i.stack=``,n[e]=i}catch{}}if(n[e]==null){let t=Error(r.message);t.stack=``,n[e]=t}}else n[e]=r;return n}function Xi({basename:e,children:t,history:n,unstable_useTransitions:r}){let[i,a]=C.useState({action:n.action,location:n.location}),o=C.useCallback(e=>{r===!1?a(e):C.startTransition(()=>a(e))},[r]);return C.useLayoutEffect(()=>n.listen(o),[n,o]),C.createElement(ai,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,unstable_useTransitions:r})}Xi.displayName=`unstable_HistoryRouter`;var Zi=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Qi=C.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,unstable_mask:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},m){let{basename:h,navigator:g,unstable_useTransitions:_}=C.useContext(sr),v=typeof l==`string`&&Zi.test(l),y=gt(l,h);l=y.to;let b=gr(l,{relative:r}),x=vr(),S=null;if(o){let e=at(o,[],x.unstable_mask?x.unstable_mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:st([h,e.pathname])),S=g.createHref(e)}let[w,T,E]=zi(n,p),D=aa(l,{replace:a,unstable_mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,unstable_defaultShouldRevalidate:f,unstable_useTransitions:_});function O(t){e&&e(t),t.defaultPrevented||D(t)}let k=!(y.isExternal||i),A=C.createElement(`a`,{...p,...E,href:(k?S:void 0)||y.absoluteURL||b,onClick:k?O:e,ref:Gi(m,T),target:c,"data-discover":!v&&t===`render`?`true`:void 0});return w&&!v?C.createElement(C.Fragment,null,A,C.createElement(Vi,{page:b})):A});Qi.displayName=`Link`;var $i=C.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=Er(a,{relative:c.relative}),d=vr(),f=C.useContext(tr),{navigator:p,basename:m}=C.useContext(sr),h=f!=null&&ga(u)&&o===!0,g=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,_=d.pathname,v=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(_=_.toLowerCase(),v=v?v.toLowerCase():null,g=g.toLowerCase()),v&&m&&(v=Xe(v,m)||v);let y=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,b=_===g||!r&&_.startsWith(g)&&_.charAt(y)===`/`,x=v!=null&&(v===g||!r&&v.startsWith(g)&&v.charAt(g.length)===`/`),S={isActive:b,isPending:x,isTransitioning:h},w=b?e:void 0,T;T=typeof n==`function`?n(S):[n,b?`active`:null,x?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let E=typeof i==`function`?i(S):i;return C.createElement(Qi,{...c,"aria-current":w,className:T,ref:l,style:E,to:a,viewTransition:o},typeof s==`function`?s(S):s)});$i.displayName=`NavLink`;var ea=C.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=oi,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},m)=>{let{unstable_useTransitions:h}=C.useContext(sr),g=la(),_=ua(s,{relative:l}),v=o.toLowerCase()===`get`?`get`:`post`,y=typeof s==`string`&&Zi.test(s);return C.createElement(`form`,{ref:m,method:v,action:_,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,p=()=>g(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f});h&&n!==!1?C.startTransition(()=>p()):p()},...p,"data-discover":!y&&e===`render`?`true`:void 0})});ea.displayName=`Form`;function ta({getKey:e,storageKey:t,...n}){let r=C.useContext(Li),{basename:i}=C.useContext(sr),a=vr(),o=Hr();ma({getKey:e,storageKey:t});let s=C.useMemo(()=>{if(!r||!e)return null;let t=pa(a,o,i,e);return t===a.key?null:t},[]);if(!r||r.isSpaMode)return null;let c=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return C.createElement(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${c})(${Ci(JSON.stringify(t||da))}, ${Ci(JSON.stringify(s))})`}})}ta.displayName=`ScrollRestoration`;function na(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function ra(e){let t=C.useContext(er);return me(t,na(e)),t}function ia(e){let t=C.useContext(tr);return me(t,na(e)),t}function aa(e,{target:t,replace:n,unstable_mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,unstable_defaultShouldRevalidate:c,unstable_useTransitions:l}={}){let u=xr(),d=vr(),f=Er(e,{relative:o});return C.useCallback(p=>{if(pi(p,t)){p.preventDefault();let t=n===void 0?ve(d)===ve(f):n,m=()=>u(e,{replace:t,unstable_mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,unstable_defaultShouldRevalidate:c});l?C.startTransition(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}function oa(e){W(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=C.useRef(mi(e)),n=C.useRef(!1),r=vr(),i=C.useMemo(()=>hi(r.search,n.current?null:t.current),[r.search]),a=xr();return[i,C.useCallback((e,t)=>{let r=mi(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var sa=0,ca=()=>`__${String(++sa)}__`;function la(){let{router:e}=ra(`useSubmit`),{basename:t}=C.useContext(sr),n=Br(),r=e.fetch,i=e.navigate;return C.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=bi(e,t);a.navigate===!1?await r(a.fetcherKey||ca(),n,a.action||o,{unstable_defaultShouldRevalidate:a.unstable_defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync}):await i(a.action||o,{unstable_defaultShouldRevalidate:a.unstable_defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function ua(e,{relative:t}={}){let{basename:n}=C.useContext(sr),r=C.useContext(lr);me(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...Er(e||`.`,{relative:t})},o=vr();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:st([n,a.pathname])),ve(a)}var da=`react-router-scroll-positions`,fa={};function pa(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:Xe(e.pathname,n)||e.pathname},t)),i??=e.key,i}function ma({getKey:e,storageKey:t}={}){let{router:n}=ra(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:i}=ia(`useScrollRestoration`),{basename:a}=C.useContext(sr),o=vr(),s=Hr(),c=Vr();C.useEffect(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),ha(C.useCallback(()=>{if(c.state===`idle`){let t=pa(o,s,a,e);fa[t]=window.scrollY}try{sessionStorage.setItem(t||da,JSON.stringify(fa))}catch(e){W(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[c.state,e,a,o,s,t])),typeof document<`u`&&(C.useLayoutEffect(()=>{try{let e=sessionStorage.getItem(t||da);e&&(fa=JSON.parse(e))}catch{}},[t]),C.useLayoutEffect(()=>{let t=n?.enableScrollRestoration(fa,()=>window.scrollY,e?(t,n)=>pa(t,n,a,e):void 0);return()=>t&&t()},[n,a,e]),C.useLayoutEffect(()=>{if(r!==!1){if(typeof r==`number`){window.scrollTo(0,r);return}try{if(o.hash){let e=document.getElementById(decodeURIComponent(o.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{W(!1,`"${o.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}i!==!0&&window.scrollTo(0,0)}},[o,r,i]))}function ha(e,t){let{capture:n}=t||{};C.useEffect(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function ga(e,{relative:t}={}){let n=C.useContext(ir);me(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=ra(`useViewTransitionState`),i=Er(e,{relative:t});if(!n.isTransitioning)return!1;let a=Xe(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=Xe(n.nextLocation.pathname,r)||n.nextLocation.pathname;return qe(i.pathname,o)!=null||qe(i.pathname,a)!=null}var _a=u(_(),1);function va(e){return C.createElement(ei,{flushSync:_a.flushSync,...e})}var ya=e=>typeof e==`string`,ba=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},xa=e=>e==null?``:String(e),Sa=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},Ca=/###/g,wa=e=>e&&e.includes(`###`)?e.replace(Ca,`.`):e,Ta=e=>!e||ya(e),Ea=(e,t,n)=>{let r=ya(t)?t.split(`.`):t,i=0;for(;i<r.length-1;){if(Ta(e))return{};let t=wa(r[i]);!e[t]&&n&&(e[t]=new n),e=Object.prototype.hasOwnProperty.call(e,t)?e[t]:{},++i}return Ta(e)?{}:{obj:e,k:wa(r[i])}},Da=(e,t,n)=>{let{obj:r,k:i}=Ea(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=Ea(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=Ea(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},Oa=(e,t,n,r)=>{let{obj:i,k:a}=Ea(e,t,Object);i[a]=i[a]||[],i[a].push(n)},ka=(e,t)=>{let{obj:n,k:r}=Ea(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},Aa=(e,t,n)=>{let r=ka(e,n);return r===void 0?ka(t,n):r},ja=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(r in e?ya(e[r])||e[r]instanceof String||ya(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):ja(e[r],t[r],n):e[r]=t[r]);return e},Ma=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),Na={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`,"/":`&#x2F;`},Pa=e=>ya(e)?e.replace(/[&<>"'\/]/g,e=>Na[e]):e,Fa=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},Ia=[` `,`,`,`?`,`!`,`;`],La=new Fa(20),Ra=(e,t,n)=>{t||=``,n||=``;let r=Ia.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=La.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},za=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;e<r.length;){if(!i||typeof i!=`object`)return;let t,a=``;for(let o=e;o<r.length;++o)if(o!==e&&(a+=n),a+=r[o],t=i[a],t!==void 0){if([`string`,`number`,`boolean`].includes(typeof t)&&o<r.length-1)continue;e+=o-e+1;break}i=t}return i},Ba=e=>e?.replace(/_/g,`-`),Va={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},Ha=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||Va,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>ya(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),ya(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},Ua=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r<n;r++)e(...t)}),this.observers[`*`]&&Array.from(this.observers[`*`].entries()).forEach(([n,r])=>{for(let i=0;i<r;i++)n(e,...t)})}},Wa=class extends Ua{constructor(e,t={ns:[`translation`],defaultNS:`translation`}){super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.includes(e)||this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let i=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,a=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,o;e.includes(`.`)?o=e.split(`.`):(o=[e,t],n&&(Array.isArray(n)?o.push(...n):ya(n)&&i?o.push(...n.split(i)):o.push(n)));let s=ka(this.data,o);return!s&&!t&&!n&&e.includes(`.`)&&(e=o[0],t=o[1],n=o.slice(2).join(`.`)),s||!a||!ya(n)?s:za(this.data?.[e]?.[t],n,i)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),Da(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)(ya(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=ka(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?ja(s,n,i):s={...s,...n},Da(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},Ga={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},Ka=Symbol(`i18next/PATH_KEY`);function qa(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===Ka?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function Ja(e,t){let{[Ka]:n}=e(qa()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`;if(n.length>1&&i){let e=t?.ns,a=Array.isArray(e)?e:null;if(a&&a.length>1&&a.slice(1).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var Ya=e=>!ya(e)&&typeof e!=`boolean`&&typeof e!=`number`,Xa=class e extends Ua{constructor(e,t={}){super(),Sa([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=Ha.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=Ya(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,i=t.ns||this.options.defaultNS||[],a=n&&e.includes(n),o=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!Ra(e,n,r);if(a&&!o){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:ya(i)?[i]:i};let a=e.split(n);(n!==r||n===r&&this.options.ns.includes(a[0]))&&(i=a.shift()),e=a.join(r)}return{key:e,namespaces:ya(i)?[i]:i}}translate(t,n,r){let i=typeof n==`object`?{...n}:n;if(typeof i!=`object`&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i==`object`&&(i={...i}),i||={},t==null)return``;typeof t==`function`&&(t=Ja(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?Ja(e,{...this.options,...i}):String(e));let a=i.returnDetails===void 0?this.options.returnDetails:i.returnDetails,o=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,{key:s,namespaces:c}=this.extractFromKey(t[t.length-1],i),l=c[c.length-1],u=i.nsSeparator===void 0?this.options.nsSeparator:i.nsSeparator;u===void 0&&(u=`:`);let d=i.lng||this.language,f=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d?.toLowerCase()===`cimode`)return f?a?{res:`${l}${u}${s}`,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${s}`:a?{res:s,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:s;let p=this.resolve(t,i),m=p?.res,h=p?.usedKey||s,g=p?.exactUsedKey||s,_=[`[object Number]`,`[object Function]`,`[object RegExp]`],v=i.joinArrays===void 0?this.options.joinArrays:i.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=i.count!==void 0&&!ya(i.count),x=e.hasDefaultValue(i),S=b?this.pluralResolver.getSuffix(d,i.count,i):``,C=i.ordinal&&b?this.pluralResolver.getSuffix(d,i.count,{ordinal:!1}):``,w=b&&!i.ordinal&&i.count===0,T=w&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${S}`]||i[`defaultValue${C}`]||i.defaultValue,E=m;y&&!m&&x&&(E=T);let D=Ya(E),O=Object.prototype.toString.apply(E);if(y&&E&&D&&!_.includes(O)&&!(ya(v)&&Array.isArray(E))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,E,{...i,ns:c}):`key '${s} (${this.language})' returned an object instead of string.`;return a?(p.res=e,p.usedParams=this.getUsedParamsDetails(i),p):e}if(o){let e=Array.isArray(E),t=e?[]:{},n=e?g:h;for(let e in E)if(Object.prototype.hasOwnProperty.call(E,e)){let r=`${n}${o}${e}`;x&&!m?t[e]=this.translate(r,{...i,defaultValue:Ya(T)?T[e]:void 0,joinArrays:!1,ns:c}):t[e]=this.translate(r,{...i,joinArrays:!1,ns:c}),t[e]===r&&(t[e]=E[e])}m=t}}else if(y&&ya(v)&&Array.isArray(m))m=m.join(v),m&&=this.extendTranslation(m,t,i,r);else{let e=!1,n=!1;!this.isValidLookup(m)&&x&&(e=!0,m=T),this.isValidLookup(m)||(n=!0,m=s);let a=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:m,c=x&&T!==m&&this.options.updateMissing;if(n||e||c){if(this.logger.log(c?`updateKey`:`missingKey`,d,l,s,c?T:m),o){let e=this.resolve(s,{...i,keySeparator:!1});e&&e.res&&this.logger.warn(`Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.`)}let e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n<t.length;n++)e.push(t[n]);else this.options.saveMissingTo===`all`?e=this.languageUtils.toResolveHierarchy(i.lng||this.language):e.push(i.lng||this.language);let n=(e,t,n)=>{let r=x&&n!==m?n:a;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,r,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,r,c,i),this.emit(`missingKey`,e,l,t,m)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,i);w&&i[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],s+t,i[`defaultValue${t}`]||T)})}):n(e,s,T))}m=this.extendTranslation(m,t,i,p,r),n&&m===s&&this.options.appendNamespaceToMissingKey&&(m=`${l}${u}${s}`),(n||e)&&this.options.parseMissingKeyHandler&&(m=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${s}`:s,e?m:void 0,i))}return a?(p.res=m,p.usedParams=this.getUsedParamsDetails(i),p):m}extendTranslation(e,t,n,r,i){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let a=ya(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),o;if(a){let t=e.match(this.interpolator.nestingRegexp);o=t&&t.length}let s=n.replace&&!ya(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),e=this.interpolator.interpolate(e,s,n.lng||this.language||r.usedLng,n),a){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;o<r&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),n.nest!==!1&&(e=this.interpolator.nest(e,(...e)=>i?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let a=n.postProcess||this.options.postProcess,o=ya(a)?[a]:a;return e!=null&&o?.length&&n.applyPostProcessor!==!1&&(e=Ga.handle(o,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,i,a,o;return ya(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?Ja(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let s=this.extractFromKey(e,t),c=s.key;r=c;let l=s.namespaces;this.options.fallbackNS&&(l=l.concat(this.options.fallbackNS));let u=t.count!==void 0&&!ya(t.count),d=u&&!t.ordinal&&t.count===0,f=t.context!==void 0&&(ya(t.context)||typeof t.context==`number`)&&t.context!==``,p=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);l.forEach(e=>{this.isValidLookup(n)||(o=e,!this.checkedLoadedFor[`${p[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(this.checkedLoadedFor[`${p[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${p.join(`, `)}" won't get resolved as namespace "${o}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`)),p.forEach(r=>{if(this.isValidLookup(n))return;a=r;let o=[c];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(o,c,r,e,t);else{let e;u&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(u&&(t.ordinal&&e.startsWith(i)&&o.push(c+e.replace(i,this.options.pluralSeparator)),o.push(c+e),d&&o.push(c+n)),f){let r=`${c}${this.options.contextSeparator||`_`}${t.context}`;o.push(r),u&&(t.ordinal&&e.startsWith(i)&&o.push(r+e.replace(i,this.options.pluralSeparator)),o.push(r+e),d&&o.push(r+n))}}let s;for(;s=o.pop();)this.isValidLookup(n)||(i=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:i,usedLng:a,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!ya(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},Za=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Ha.create(`languageUtils`)}getScriptPartFromCode(e){if(e=Ba(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=Ba(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(ya(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),ya(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],i=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return ya(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&i(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&i(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&i(this.getLanguagePartFromCode(e))):ya(e)&&i(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||i(this.formatLanguageCode(e))}),r}},Qa={zero:0,one:1,two:2,few:3,many:4,other:5},$a={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},eo=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=Ha.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=Ba(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),$a;if(!e.match(/-|_/))return $a;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>Qa[e]-Qa[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},to=(e,t,n,r=`.`,i=!0)=>{let a=Aa(e,t,n);return!a&&i&&ya(n)&&(a=za(e,n,r),a===void 0&&(a=za(t,n,r))),a},no=e=>e.replace(/\$/g,`$$$$`),ro=class{constructor(e={}){this.logger=Ha.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:_}=e.interpolation;this.escape=t===void 0?Pa:t,this.escapeValue=n===void 0?!0:n,this.useRawValueToEscape=r===void 0?!1:r,this.prefix=i?Ma(i):a||`{{`,this.suffix=o?Ma(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?Ma(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?Ma(l):``,this.nestingPrefix=d?Ma(d):f||Ma(`$t(`),this.nestingSuffix=p?Ma(p):m||Ma(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=_===void 0?!1:_,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let i,a,o,s=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(!e.includes(this.formatSeparator)){let i=to(t,s,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(to(t,s,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.`);let l=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,u=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>no(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?no(this.escape(e)):no(e)}].forEach(t=>{for(o=0;i=t.regex.exec(e);){let n=i[1].trim();if(a=c(n),a===void 0)if(typeof l==`function`){let t=l(e,i,r);a=ya(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))a=``;else if(u){a=i[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),a=``;else !ya(a)&&!this.useRawValueToEscape&&(a=xa(a));let s=t.safeValue(a);if(e=e.replace(i[0],s),u?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=i[0].length):t.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,i,a,o=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${Ma(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,a);let o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||(s?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let s=[];a={...n},a=a.replace&&!ya(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let c=/{.*}/.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(s=r[1].slice(c).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),i=t(o.call(this,r[1].trim(),a),a),i&&r[0]===e&&!ya(i))return i;ya(i)||(i=xa(i)),i||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),s.length&&(i=s.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),i.trim())),e=e.replace(r[0],i),this.regexp.lastIndex=0}return e}},io=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},ao=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(Ba(r),i),t[o]=s),s(n)}},oo=e=>(t,n,r)=>e(Ba(n),r)(t),so=class{constructor(e={}){this.logger=Ha.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?ao:oo;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=ao(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf(`(`)>1&&!i[0].includes(`)`)&&i.find(e=>e.includes(`)`))){let e=i.findIndex(e=>e.includes(`)`));i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{let{formatName:i,formatOptions:a}=io(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}else this.logger.warn(`there was no format function for ${i}`);return e},e)}},co=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},lo=class extends Ua{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=Ha.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{Oa(n.loaded,[i],a),co(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r<this.maxRetries){setTimeout(()=>{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();ya(e)&&(e=this.languageUtils.toResolveHierarchy(e)),ya(t)&&(t=[t]);let i=this.queueLoad(e,t,n,r);if(!i.toLoad.length)return i.pending.length||r(),null;i.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`);return}if(!(n==null||n===``)){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}!e||!e[0]||this.store.addResource(e[0],t,n,r)}}},uo=()=>({debug:!1,initAsync:!0,ns:[`translation`],defaultNS:[`translation`],fallbackLng:[`dev`],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:`all`,preload:!1,keySeparator:`.`,nsSeparator:`:`,pluralSeparator:`_`,contextSeparator:`_`,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:`fallback`,saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]==`object`&&(t=e[1]),ya(e[1])&&(t.defaultValue=e[1]),ya(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),fo=e=>(ya(e.ns)&&(e.ns=[e.ns]),ya(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),ya(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),po=()=>{},mo=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},ho=class e extends Ua{constructor(e={},t){if(super(),this.options=fo(e),this.services={},this.logger=Ha,this.modules={external:[]},mo(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&(ya(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=uo();this.options={...n,...this.options,...fo(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?Ha.init(r(this.modules.logger),this.options):Ha.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:so;let t=new Za(this.options);this.store=new Wa(this.options.resources,this.options);let n=this.services;n.logger=Ha,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new eo(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new ro(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new lo(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new Xa(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=po,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn(`init: no languageDetector is used and no lng is defined`),[`getResource`,`hasResourceBundle`,`getResourceBundle`,`getDataByLanguage`].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let i=ba(),a=()=>{let e=(e,n)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn(`init: i18next is already initialized. You should call init just once!`),this.isInitialized=!0,this.options.isClone||this.logger.log(`initialized`,this.options),this.emit(`initialized`,this.options),i.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),i}loadResources(e,t=po){let n=t,r=ya(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=ba();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=po,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&Ga.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&![`cimode`,`dev`].includes(e)){for(let e=0;e<this.languages.length;e++){let t=this.languages[e];if(![`cimode`,`dev`].includes(t)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&!this.languages.includes(e)&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;let n=ba();this.emit(`languageChanging`,e);let r=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},i=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},a=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=ya(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes(ya(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{i(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e),n}getFixedT(e,t,n){let r=(e,t,...i)=>{let a;a=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(i)),a.lng=a.lng||r.lng,a.lngs=a.lngs||r.lngs,a.ns=a.ns||r.ns,a.keyPrefix!==``&&(a.keyPrefix=a.keyPrefix||n||r.keyPrefix);let o={...this.options,...a};typeof a.keyPrefix==`function`&&(a.keyPrefix=Ja(a.keyPrefix,o));let s=this.options.keySeparator||`.`,c;return a.keyPrefix&&Array.isArray(e)?c=e.map(e=>(typeof e==`function`&&(e=Ja(e,o)),`${a.keyPrefix}${s}${e}`)):(typeof e==`function`&&(e=Ja(e,o)),c=a.keyPrefix?`${a.keyPrefix}${s}${e}`:e),this.t(c,a)};return ya(e)?r.lng=e:r.lngs=e,r.ns=t,r.keyPrefix=n,r}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn(`hasLoadedNamespace: i18next was not initialized`,this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn(`hasLoadedNamespace: i18n.languages were undefined or empty`,this.languages),!1;let n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=ba();return this.options.ns?(ya(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=ba();ya(e)&&(e=[e]);let r=this.options.preload||[],i=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return i.length?(this.options.preload=r.concat(i),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`ar.shu.sqr.ssh.xaa.yhd.yud.aao.abh.abv.acm.acq.acw.acx.acy.adf.ads.aeb.aec.afb.ajp.apc.apd.arb.arq.ars.ary.arz.auz.avl.ayh.ayl.ayn.ayp.bbz.pga.he.iw.ps.pbt.pbu.pst.prp.prd.ug.ur.ydd.yds.yih.ji.yi.hbo.men.xmn.fa.jpr.peo.pes.prs.dv.sam.ckb`.split(`.`),n=this.services?.languageUtils||new Za(uo());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=po){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new Wa(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={...uo().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new ro(n)}return a.translator=new Xa(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();ho.createInstance,ho.dir,ho.init,ho.loadResources,ho.reloadResources,ho.use,ho.changeLanguage,ho.getFixedT,ho.t,ho.exists,ho.setDefaultNamespace,ho.hasLoadedNamespace,ho.loadNamespaces,ho.loadLanguages;var{slice:go,forEach:_o}=[];function vo(e){return _o.call(go.call(arguments,1),t=>{if(t)for(let n in t)e[n]===void 0&&(e[n]=t[n])}),e}function yo(e){return typeof e==`string`?[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(t=>t.test(e)):!1}var bo=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,xo=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:`/`},r=`${e}=${encodeURIComponent(t)}`;if(n.maxAge>0){let e=n.maxAge-0;if(Number.isNaN(e))throw Error(`maxAge should be a Number`);r+=`; Max-Age=${Math.floor(e)}`}if(n.domain){if(!bo.test(n.domain))throw TypeError(`option domain is invalid`);r+=`; Domain=${n.domain}`}if(n.path){if(!bo.test(n.path))throw TypeError(`option path is invalid`);r+=`; Path=${n.path}`}if(n.expires){if(typeof n.expires.toUTCString!=`function`)throw TypeError(`option expires is invalid`);r+=`; Expires=${n.expires.toUTCString()}`}if(n.httpOnly&&(r+=`; HttpOnly`),n.secure&&(r+=`; Secure`),n.sameSite)switch(typeof n.sameSite==`string`?n.sameSite.toLowerCase():n.sameSite){case!0:r+=`; SameSite=Strict`;break;case`lax`:r+=`; SameSite=Lax`;break;case`strict`:r+=`; SameSite=Strict`;break;case`none`:r+=`; SameSite=None`;break;default:throw TypeError(`option sameSite is invalid`)}return n.partitioned&&(r+=`; Partitioned`),r},So={create(e,t,n,r){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:`/`,sameSite:`strict`};n&&(i.expires=new Date,i.expires.setTime(i.expires.getTime()+n*60*1e3)),r&&(i.domain=r),document.cookie=xo(e,t,i)},read(e){let t=`${e}=`,n=document.cookie.split(`;`);for(let e=0;e<n.length;e++){let r=n[e];for(;r.charAt(0)===` `;)r=r.substring(1,r.length);if(r.indexOf(t)===0)return r.substring(t.length,r.length)}return null},remove(e,t){this.create(e,``,-1,t)}},Co={name:`cookie`,lookup(e){let{lookupCookie:t}=e;if(t&&typeof document<`u`)return So.read(t)||void 0},cacheUserLanguage(e,t){let{lookupCookie:n,cookieMinutes:r,cookieDomain:i,cookieOptions:a}=t;n&&typeof document<`u`&&So.create(n,e,r,i,a)}},wo={name:`querystring`,lookup(e){let{lookupQuerystring:t}=e,n;if(typeof window<`u`){let{search:e}=window.location;!window.location.search&&window.location.hash?.indexOf(`?`)>-1&&(e=window.location.hash.substring(window.location.hash.indexOf(`?`)));let r=e.substring(1).split(`&`);for(let e=0;e<r.length;e++){let i=r[e].indexOf(`=`);i>0&&r[e].substring(0,i)===t&&(n=r[e].substring(i+1))}}return n}},To={name:`hash`,lookup(e){let{lookupHash:t,lookupFromHashIndex:n}=e,r;if(typeof window<`u`){let{hash:e}=window.location;if(e&&e.length>2){let i=e.substring(1);if(t){let e=i.split(`&`);for(let n=0;n<e.length;n++){let i=e[n].indexOf(`=`);i>0&&e[n].substring(0,i)===t&&(r=e[n].substring(i+1))}}if(r)return r;if(!r&&n>-1){let t=e.match(/\/([a-zA-Z-]*)/g);return Array.isArray(t)?t[typeof n==`number`?n:0]?.replace(`/`,``):void 0}}}return r}},Eo=null,Do=()=>{if(Eo!==null)return Eo;try{if(Eo=typeof window<`u`&&window.localStorage!==null,!Eo)return!1;let e=`i18next.translate.boo`;window.localStorage.setItem(e,`foo`),window.localStorage.removeItem(e)}catch{Eo=!1}return Eo},Oo={name:`localStorage`,lookup(e){let{lookupLocalStorage:t}=e;if(t&&Do())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:n}=t;n&&Do()&&window.localStorage.setItem(n,e)}},ko=null,Ao=()=>{if(ko!==null)return ko;try{if(ko=typeof window<`u`&&window.sessionStorage!==null,!ko)return!1;let e=`i18next.translate.boo`;window.sessionStorage.setItem(e,`foo`),window.sessionStorage.removeItem(e)}catch{ko=!1}return ko},jo={name:`sessionStorage`,lookup(e){let{lookupSessionStorage:t}=e;if(t&&Ao())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:n}=t;n&&Ao()&&window.sessionStorage.setItem(n,e)}},Mo={name:`navigator`,lookup(e){let t=[];if(typeof navigator<`u`){let{languages:e,userLanguage:n,language:r}=navigator;if(e)for(let n=0;n<e.length;n++)t.push(e[n]);n&&t.push(n),r&&t.push(r)}return t.length>0?t:void 0}},No={name:`htmlTag`,lookup(e){let{htmlTag:t}=e,n,r=t||(typeof document<`u`?document.documentElement:null);return r&&typeof r.getAttribute==`function`&&(n=r.getAttribute(`lang`)),n}},Po={name:`path`,lookup(e){let{lookupFromPathIndex:t}=e;if(typeof window>`u`)return;let n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(Array.isArray(n))return n[typeof t==`number`?t:0]?.replace(`/`,``)}},Fo={name:`subdomain`,lookup(e){let{lookupFromSubdomainIndex:t}=e,n=typeof t==`number`?t+1:1,r=typeof window<`u`&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(r)return r[n]}},Io=!1;try{document.cookie,Io=!0}catch{}var Lo=[`querystring`,`cookie`,`localStorage`,`sessionStorage`,`navigator`,`htmlTag`];Io||Lo.splice(1,1);var Ro=()=>({order:Lo,lookupQuerystring:`lng`,lookupCookie:`i18next`,lookupLocalStorage:`i18nextLng`,lookupSessionStorage:`i18nextLng`,caches:[`localStorage`],excludeCacheFor:[`cimode`],convertDetectedLanguage:e=>e}),zo=class{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type=`languageDetector`,this.detectors={},this.init(e,t)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=vo(t,this.options||{},Ro()),typeof this.options.convertDetectedLanguage==`string`&&this.options.convertDetectedLanguage.indexOf(`15897`)>-1&&(this.options.convertDetectedLanguage=e=>e.replace(`-`,`_`)),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=n,this.addDetector(Co),this.addDetector(wo),this.addDetector(Oo),this.addDetector(jo),this.addDetector(Mo),this.addDetector(No),this.addDetector(Po),this.addDetector(Fo),this.addDetector(To)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,t=[];return e.forEach(e=>{if(this.detectors[e]){let n=this.detectors[e].lookup(this.options);n&&typeof n==`string`&&(n=[n]),n&&(t=t.concat(n))}}),t=t.filter(e=>e!=null&&!yo(e)).map(e=>this.options.convertDetectedLanguage(e)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?t:t.length>0?t[0]:null}cacheUserLanguage(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;t&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||t.forEach(t=>{this.detectors[t]&&this.detectors[t].cacheUserLanguage(e,this.options)}))}};zo.type=`languageDetector`;var Bo=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);qo(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},Vo={},Ho=(e,t,n,r)=>{qo(n)&&Vo[n]||(qo(n)&&(Vo[n]=new Date),Bo(e,t,n,r))},Uo=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},Wo=(e,t,n)=>{e.loadNamespaces(t,Uo(e,n))},Go=(e,t,n,r)=>{if(qo(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return Wo(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,Uo(e,r))},Ko=(e,t,n={})=>!t.languages||!t.languages.length?(Ho(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),qo=e=>typeof e==`string`,Jo=e=>typeof e==`object`&&!!e,Yo=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Xo={"&amp;":`&`,"&#38;":`&`,"&lt;":`<`,"&#60;":`<`,"&gt;":`>`,"&#62;":`>`,"&apos;":`'`,"&#39;":`'`,"&quot;":`"`,"&#34;":`"`,"&nbsp;":` `,"&#160;":` `,"&copy;":`©`,"&#169;":`©`,"&reg;":`®`,"&#174;":`®`,"&hellip;":`…`,"&#8230;":`…`,"&#x2F;":`/`,"&#47;":`/`},Zo=e=>Xo[e],Qo={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(Yo,Zo),transDefaultProps:void 0},$o=(e={})=>{Qo={...Qo,...e}},es=()=>Qo,ts,ns=e=>{ts=e},rs=()=>ts,is={type:`3rdParty`,init(e){$o(e.options.react),ns(e)}},as=(0,C.createContext)(),os=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},ss=s((e=>{var t=p();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),cs=s(((e,t)=>{t.exports=ss()})),ls=cs(),us={t:(e,t)=>{if(qo(t))return t;if(Jo(t)&&qo(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},ds=()=>()=>{},fs=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=(0,C.useContext)(as)||{},a=n||r||rs();a&&!a.reportNamespaces&&(a.reportNamespaces=new os),a||Ho(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let o=(0,C.useMemo)(()=>({...es(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:c}=o,l=e||i||a?.options?.defaultNS,u=qo(l)?[l]:l||[`translation`],d=(0,C.useMemo)(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(d);let f=(0,C.useRef)(0),p=(0,C.useCallback)(e=>{if(!a)return ds;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{f.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),m=(0,C.useRef)(),h=(0,C.useCallback)(()=>{if(!a)return us;let e=!!(a.isInitialized||a.initializedStoreOnce)&&d.every(e=>Ko(e,a,o)),n=t.lng||a.language,r=f.current,i=m.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===c&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?d:d[0],c),ready:e,lng:n,keyPrefix:c,revision:r};return m.current=s,s},[a,d,c,o,t.lng]),[g,_]=(0,C.useState)(0),{t:v,ready:y}=(0,ls.useSyncExternalStore)(p,h,h);(0,C.useEffect)(()=>{if(a&&!y&&!s){let e=()=>_(e=>e+1);t.lng?Go(a,t.lng,d,e):Wo(a,d,e)}},[a,t.lng,d,y,s,g]);let b=a||{},x=(0,C.useRef)(null),S=(0,C.useRef)(),w=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,`__original`,{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},T=(0,C.useMemo)(()=>{let e=b,t=e?.language,n=e;e&&(x.current&&x.current.__original===e&&S.current===t?n=x.current:(n=w(e),x.current=n,S.current=t));let r=!y&&!s?(...e)=>(Ho(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),v(...e)):v,i=[r,n,y];return i.t=r,i.i18n=n,i.ready=y,i},[v,b,y,b.resolvedLanguage,b.language,b.languages]);if(a&&s&&!y)throw new Promise(e=>{let n=()=>e();t.lng?Go(a,t.lng,d,n):Wo(a,d,n)});return T},ps={common:{loading:`Laden`,notFound:`Nicht gefunden`,save:`Speichern`,cancel:`Abbrechen`,delete:`Löschen`,edit:`Bearbeiten`,close:`Schließen`,refresh:`Aktualisieren`,search:`Suche`,enabled:`Aktiviert`,disabled:`Deaktiviert`,online:`Online`,offline:`Offline`,running:`Läuft`,stopped:`Gestoppt`,failed:`Fehlgeschlagen`,starting:`Startet`,devices:`Geräte`,fabrics:`Fabrics`,port:`Port`,unknown:`Unbekannt`,confirm:`Bestätigen`,create:`Erstellen`,back:`Zurück`,next:`Weiter`,actions:`Aktionen`,name:`Name`,type:`Typ`,error:`Fehler`,version:`Version`,copy:`Kopieren`,copied:`Kopiert!`,copyId:`ID kopieren`,later:`Später`,skip:`Überspringen`,reset:`Zurücksetzen`,update:`Aktualisieren`,all:`Alle`,ascending:`Aufsteigend`,descending:`Absteigend`,moveUp:`Nach oben`,moveDown:`Nach unten`,selectAll:`Alle auswählen`,selectNone:`Keine auswählen`,live:`Live`,new:`Neu`,overwrite:`Überschreiben`,active:`Aktiv`,property:`Eigenschaft`,value:`Wert`,custom:`Benutzerdefiniert`,startAll:`Alle starten`,stopAll:`Alle stoppen`,restartAll:`Alle neustarten`,import:`Importieren`,export:`Exportieren`,exportAll:`Alle exportieren`,wizard:`Assistent`},nav:{bridges:`Bridges`,devices:`Alle Geräte`,health:`Status & Diagnose`,diagnostics:`Live-Ereignisse`,settings:`Einstellungen`,networkMap:`Netzwerkkarte`,logs:`Logs`,startupOrder:`Startreihenfolge`,lockCredentials:`Schloss-Zugangsdaten`,filterReference:`Filterreferenz`,systemLogs:`Systemlogs`,lightMode:`Heller Modus`,darkMode:`Dunkler Modus`},status:{error:`Fehler`,unhealthy:`Fehlerhaft`,noBridges:`Keine Bridges`,loadingHealth:`Lade Statusdaten...`,unknown:`Unbekannt`},errorBoundary:{title:`Etwas ist schiefgelaufen`,fallbackMessage:`Ein unerwarteter Fehler ist aufgetreten.`,reload:`Seite neu laden`},settings:{title:`Einstellungen`,language:`Sprache`,languageDescription:`Wähle die Sprache der Benutzeroberfläche.`,checkUpdates:`Nach Updates suchen`,backupRestore:`Sichern & Wiederherstellen`,exportBackup:`Backup exportieren`,importBackup:`Backup importieren`,dangerZone:`Gefahrenzone`,resetAll:`Alles zurücksetzen`,about:`Über`,username:`Benutzername`,password:`Passwort`,enterNewPassword:`Neues Passwort eingeben`,enableAuth:`Authentifizierung aktivieren`,disableAuth:`Authentifizierung deaktivieren`,disableAuthMessage:`Dies entfernt den Passwortschutz der Weboberfläche. Jeder in deinem Netzwerk kann auf die Bridge-Konfiguration zugreifen und sie ändern.`,disableAuthConfirm:`Auth deaktivieren`,usernamePasswordRequired:`Benutzername und Passwort sind erforderlich`,authSaveFailed:`Authentifizierungseinstellungen konnten nicht gespeichert werden`,authLoadFailed:`Authentifizierungseinstellungen konnten nicht geladen werden`,authDisabled:`Authentifizierung deaktiviert.`,authRemoveFailed:`Authentifizierungseinstellungen konnten nicht entfernt werden`},dashboard:{title:`Dashboard`,systemOverview:`Systemübersicht`,quickActions:`Schnellaktionen`,bridgeOverview:`Bridge-Übersicht`,noBridges:`Noch keine Bridges konfiguriert.`,createBridge:`Bridge erstellen`,viewAll:`Alle anzeigen`,totalDevices:`Geräte gesamt`,customize:`Anpassen`,startAll:`Alle starten`,stopAll:`Alle stoppen`,restartAll:`Alle neustarten`,welcome:`Willkommen bei Home Assistant Matter Hub`,welcomeDescription:`Verbinde deine Home Assistant Geräte mit Matter-Controllern wie Apple Home, Google Home und Amazon Alexa.`,bridgeWizard:`Bridge-Assistent`,setupByArea:`Nach Bereich einrichten`,manualSetup:`Manuelle Einrichtung`,areaSetup:`Bereich-Einrichtung`,documentation:`Dokumentation`,quickNavigation:`Schnellnavigation`,haConnection:`HA-Verbindung`,startupOrder:`Startreihenfolge`,lockCredentials:`Schloss-Zugangsdaten`,filterReference:`Filterreferenz`,successMessage:`Deine Bridges sind mit {{count}} Controller-Fabric(s) verbunden. Geräte sollten jetzt in deiner Controller-App erscheinen.`,noBridgesHint:`Noch keine Bridges konfiguriert. Nutze den Bridge-Assistenten oder erstelle eine manuell.`,customizeDashboard:`Dashboard anpassen`,bridgeStatusRunning:`{{running}} läuft`,bridgeStatusFailed:`{{failed}} fehlgeschlagen`,devicesFailed:`{{count}} fehlgeschlagen`,uptimeFormat:`{{time}}`},bridge:{name:`Bridge-Name`,port:`Port`,status:`Status`,pairHint:`Diese Bridge mit deinem Controller koppeln`,pairDescription:`Öffne deine Controller-App (Apple Home, Google Home oder Amazon Alexa), füge ein neues Zubehör hinzu und scanne den QR-Code oder gib den manuellen Kopplungscode ein. Stelle sicher, dass dein Controller im selben Netzwerk wie Home Assistant ist.`,failedEntities:`Fehlgeschlagene Entities`,serverModeRecommended:`Server-Modus empfohlen für Saugroboter`,serverModeDescription:`Diese Bridge enthält einen Saugroboter im Bridge-Modus. Apple Home und Alexa zeigen die Bridge als zusätzliches Gerät an, was zu doppelten Einträgen führt. Aktiviere den Server-Modus, um den Saugroboter als eigenständiges Matter-Gerät bereitzustellen.`,enableServerMode:`Server-Modus aktivieren`,enabling:`Wird aktiviert...`,start:`Starten`,stop:`Stoppen`,restart:`Neustarten`,factoryReset:`Werksreset`,pairingCode:`Kopplungscode`,openCommissioning:`Kopplungsfenster öffnen`,multiPair:`Multi-Fabric-Kopplung`,deleteBridge:`Bridge löschen`,deleteConfirm:`Möchtest du diese Bridge wirklich löschen?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} Entity/Entities konnten nicht geladen werden.`,clickToShow:`Klicke, um Details anzuzeigen.`,clickToHide:`Klicke, um Details auszublenden.`,loadFailed:`Bridge-Details konnten nicht geladen werden`,refreshHint:`Neue Geräte und Label-Änderungen werden alle 30 Sekunden erkannt.`,refreshingStates:`Status wird in {{seconds}} Sekunden aktualisiert...`,serverModeSingleDeviceNote:`Hinweis: Der Server-Modus erfordert, dass der Saugroboter das einzige Gerät auf dieser Bridge ist. Entferne zuerst andere Entities, dann aktiviere den Server-Modus in den Bridge-Einstellungen.`,serverModeEnabled:`Server-Modus aktiviert. Die Bridge wird mit deinem Saugroboter als eigenständiges Gerät neu gestartet.`,serverModeEnableFailed:`Server-Modus konnte nicht aktiviert werden: {{error}}`,pairing:`Kopplung`,bridgeInfo:`Bridge-Info`,commissioned:`Gekoppelt`,addController:`Weiteren Controller hinzufügen`,openingCommissioning:`Kopplungsfenster wird geöffnet...`,fabricTooltip:`Ein Fabric stellt eine Verbindung zu einem Matter-Controller dar (z.B. Apple Home, Google Home, Alexa). Jeder Controller erstellt beim Koppeln ein Fabric.`,forceSync:`Synchronisation erzwingen`,syncing:`Synchronisiere...`,forceSyncTooltip:`Alle aktuellen Gerätezustände an verbundene Controller senden`,editFilters:`Filter bearbeiten`,addFilters:`Filter hinzufügen`,bridgeNotRunning:`Bridge läuft nicht. Starte die Bridge, um Kopplungsinformationen zu sehen.`,manualCode:`Manueller Code`,openingWindow:`Kopplungsfenster wird geöffnet...`,bridgeId:`Bridge-ID`,passcode:`Passcode`,discriminator:`Discriminator`,connectedFabrics:`Verbundene Fabrics ({{count}})`,noFabrics:`Noch keine Controller verbunden. Scanne den QR-Code mit deinem Matter-Controller.`,entityFilters:`Entity-Filter`,noFilters:`Keine Filter konfiguriert. Alle unterstützten Entities werden freigegeben.`,scanQrCode:`Scanne diesen QR-Code mit deinem Matter-Controller (Apple Home, Google Home, Alexa, etc.), um diese Bridge einem weiteren Ökosystem hinzuzufügen.`,appleHomeWarning:`Diese Bridge verwendet den erweiterten Flat-Modus. Deaktiviere dies nur, wenn du ausschließlich Apple Home verwendest.`,googleHomeWarning:`Dies kann Probleme mit Apple Home und Google Home verursachen.`,resetSuccess:`Bridge erfolgreich zurückgesetzt`,deleteSuccess:`Bridge erfolgreich gelöscht`,confirmResetTitle:`Bridge zurücksetzen`,confirmResetMessage:`Dies entfernt alle Kopplungsinformationen und setzt die Bridge in den Ausgangszustand zurück. Verbundene Controller verlieren den Zugriff. Dies kann nicht rückgängig gemacht werden.`,confirmDeleteTitle:`Bridge löschen`,confirmDeleteMessage:`Dies löscht die Bridge, alle Kopplungen und Entity-Zuordnungen dauerhaft. Verbundene Controller verlieren den Zugriff. Dies kann nicht rückgängig gemacht werden.`,importTitle:`Bridges importieren`,overwriteExisting:`Bestehende Bridges überschreiben`,iconLabel:`Bridge-Symbol`,google:`Google`,alexa:`Alexa`,serverMode:`Server-Modus`,autoForceSync:`Auto-Synchronisation`,saveSuccess:`Bridge gespeichert`,updateSuccess:`Aktualisierung abgeschlossen`,exportFailed:`Export fehlgeschlagen`,actionStarted:`Gestartet`,actionStopped:`Gestoppt`,actionRestarted:`Neugestartet`,actionFailed:`{{action}} fehlgeschlagen`,actionResult:`{{label}} {{count}} Bridge(s)`,couldNotLoad:`Bridges konnten nicht geladen werden`,showingFirst:`Zeige erste {{count}}`,importParseFailed:`Import-Datei konnte nicht verarbeitet werden. Bitte eine gültige Export-Datei auswählen.`,importing:`Importiere...`,importCount:`{{count}} Bridge(s) importieren`,jsonEditor:`JSON-Editor`,formEditor:`Formular-Editor`},endpoints:{title:`Endpunkte`,searchPlaceholder:`Endpunkte suchen...`,sortBy:`Sortieren`,sortName:`Name`,sortEndpoint:`Endpunkt-ID`,sortType:`Typ`,cardView:`Kartenansicht`,treeView:`Baumansicht`,clusters:`Cluster`,entityUnavailable:`Entity nicht verfügbar`,showUnavailable:`{{count}} nicht verfügbare anzeigen`,showAll:`Alle Entities anzeigen`,uploadImage:`Gerätebild hochladen`,removeImage:`Benutzerdefiniertes Bild entfernen`,editMapping:`Entity-Zuordnung bearbeiten`,homeAssistantEntity:`Home Assistant Entity`,noEndpoints:`Keine Endpunkte gefunden.`,expandAll:`Alle aufklappen`,collapseAll:`Alle zuklappen`,viewAll:`Alle Geräte anzeigen`,haState:`HA-Status`,aboutEndpoint:`Über diesen Endpunkt`,entityId:`Entity-ID`,customName:`Benutzerdefinierter Name`,deviceTypeOverride:`Gerätetyp-Überschreibung`,keyHaAttributes:`Wichtige HA-Attribute`,entityMappings:`Entity-Zuordnungen`,copyData:`Daten in Zwischenablage kopieren`,behavior:`Verhalten`},health:{title:`Status & Diagnose`,version:`Version`,uptime:`Laufzeit`,homeAssistant:`Home Assistant`,connected:`Verbunden`,disconnected:`Getrennt`,bridgeStatus:`Bridge-Status`,refreshHealth:`Statusdaten aktualisieren`,exportDiagnostic:`Diagnose exportieren`,memory:`Speicher`,fabricDetails:`Fabric-Details`,sessions:`Sitzungen`,subscriptions:`Abonnements`,noFabrics:`Keine Fabrics verbunden`,systemMetrics:`Systemmetriken`,heap:`Heap`,rss:`RSS`,external:`Extern`,systemHealth:`Systemstatus`,fetchFailed:`Statusdaten konnten nicht abgerufen werden`,connectionError:`Verbindungsfehler`,exportFailed:`Diagnosedaten konnten nicht exportiert werden`,restartFailed:`Bridge konnte nicht neu gestartet werden`,unableToLoad:`Statusdaten konnten nicht geladen werden`,sortBy:`Sortieren nach`,created:`Erstellt`,ascending:`Aufsteigend`,descending:`Absteigend`,connectedTo:`Verbunden mit`,autoRecovery:`Auto-Wiederherstellung`,recoveryAttempts:`Wiederherstellungsversuche`,fabrics:`Fabrics`,networkDiagnostics:`Netzwerk-Diagnose`,checksPassed:`bestanden`,checksWarning:`Warnungen`,checksFailed:`fehlgeschlagen`,hideDetails:`Details ausblenden`,showDetails:`Details anzeigen`,allChecks:`Alle Prüfungen`,check:`Prüfung`,statusLabel:`Status`,message:`Nachricht`,networkInterfaces:`Netzwerkschnittstellen`,interfaceName:`Schnittstelle`,refresh:`Aktualisieren`},mapping:{title:`Entity-Zuordnungen`,entityId:`Entity-ID`,deviceType:`Gerätetyp`,customName:`Benutzerdefinierter Name`,status:`Status`,addMapping:`Zuordnung hinzufügen`,editMapping:`Zuordnung bearbeiten`,deleteMapping:`Zuordnung löschen`,saved:`Zuordnung für {{entityId}} gespeichert. Starte die Bridge neu, um Änderungen anzuwenden.`,saveFailed:`Zuordnung konnte nicht gespeichert werden: {{error}}`,deleted:`Zuordnung für {{entityId}} gelöscht.`,deleteFailed:`Zuordnung konnte nicht gelöscht werden.`,matterTag:`Matter-Tag`,exportProfile:`Zuordnungsprofil exportieren`,importProfile:`Zuordnungsprofil importieren`,profileName:`Profilname`,match:`Übereinstimmung`,existing:`Vorhanden`,autoDetect:`Automatisch erkennen (Standard)`,customProductName:`Produktname (benutzerdefiniert)`,customProductNameHelp:`Überschreibt den Produktnamen (Modell), der an Matter-Controller gemeldet wird. Einige Controller (z.B. Aqara) zeigen diesen als Gerätenamen an.`,customVendorName:`Herstellername (benutzerdefiniert)`,customVendorNameHelp:`Überschreibt den Hersteller-/Herstellernamen, der an Matter-Controller gemeldet wird.`,customSerialNumber:`Seriennummer (benutzerdefiniert)`,customSerialNumberHelp:`Überschreibt die Seriennummer, die an Matter-Controller gemeldet wird.`,loadFailed:`Entity-Zuordnungen konnten nicht geladen werden`,noMappings:`Keine benutzerdefinierten Entity-Zuordnungen konfiguriert. Verwende Zuordnungen, um Matter-Gerätetypen zu überschreiben, benutzerdefinierte Namen zu setzen oder bestimmte Entities zu deaktivieren.`,applying:`Wird angewendet...`,applyCount:`{{count}} Zuordnung(en) anwenden`},languageSwitcher:{disclaimer:`Übersetzungen können unvollständig sein.`,contribute:`Hilf sie zu verbessern!`},translationEditor:{title:`Übersetzungseditor`,editLanguage:`Sprache bearbeiten`,info:`Bearbeite Übersetzungen direkt im Browser. Änderungen werden lokal gespeichert und sofort angewendet. Exportiere deine Übersetzungen, um sie dem Projekt einzureichen.`,progress:`{{translated}} / {{total}} Schlüssel übersetzt`,localEdits:`{{count}} lokale Bearbeitung(en)`,searchPlaceholder:`Schlüssel oder Werte suchen...`,filterAll:`Alle Schlüssel`,filterMissing:`Fehlend`,filterEdited:`Bearbeitet`,exportJson:`JSON exportieren`,copyJson:`JSON kopieren`,copied:`Kopiert!`,resetAll:`Alle Bearbeitungen zurücksetzen`,resetKey:`Auf Standard zurücksetzen`,noResults:`Keine passenden Übersetzungsschlüssel gefunden.`,addLanguage:`Sprache hinzufügen`,newLanguageCode:`Sprachcode (z.B. pt, ja, ko)`,newLanguageName:`Sprachname (z.B. Português)`,addLanguageButton:`Hinzufügen`,languageExists:`Diese Sprache existiert bereits.`,codeRequired:`Sprachcode ist erforderlich.`,nameRequired:`Sprachname ist erforderlich.`,removeLanguage:`Sprache entfernen`,importJson:`JSON importieren`,importSuccess:`{{count}} Übersetzung(en) importiert.`,importFailed:`Import fehlgeschlagen: ungültiges JSON-Format.`,removeLanguageConfirm:`Benutzerdefinierte Sprache "{{name}}" entfernen? Alle lokalen Bearbeitungen für diese Sprache gehen verloren.`},backup:{title:`Sichern & Wiederherstellen`,description:`Erstelle ein vollständiges Backup deiner Bridges und Entity-Zuordnungen oder stelle ein vorheriges Backup wieder her.`,configBackup:`Konfigurations-Backup`,configBackupDesc:`Exportiere Bridge-Konfigurationen und Entity-Zuordnungen.`,configBackupNote:`Bridges müssen nach der Wiederherstellung neu kommissioniert werden.`,fullBackup:`Vollständiges Backup (mit Identität)`,fullBackupDesc:`Enthält Matter-Identitätsdateien (Schlüsselpaare, Fabric-Anmeldedaten).`,fullBackupWarning:`Erhält den Kommissionierungsstatus über Wiederherstellungen hinweg. NICHT TEILEN!`,restoreFromBackup:`Aus Backup wiederherstellen`,restoreDesc:`Lade eine zuvor erstellte Backup-Datei hoch, um Bridges und Konfigurationen wiederherzustellen.`,restoreTitle:`Backup wiederherstellen`,selectBridges:`Bridges zur Wiederherstellung auswählen`,overwriteExisting:`Vorhandene Bridges überschreiben`,includeMappings:`Entity-Zuordnungen einschließen`,restoreIdentities:`Matter-Identitäten wiederherstellen (keine Neu-Kommissionierung nötig)`,restore:`Wiederherstellen`,downloadSuccess:`Backup erfolgreich heruntergeladen!`,restartRequired:`Neustart erforderlich`,restartMessage:`Bridges wurden aus dem Backup wiederhergestellt. Ein Neustart ist erforderlich, damit die Änderungen wirksam werden.`,restartNote:`Die Anwendung wird neu gestartet und du musst diese Seite möglicherweise aktualisieren.`,restartNow:`Jetzt neu starten`,storedBackups:`Gespeicherte Backups`,createSnapshot:`Backup erstellen`,noSnapshots:`Noch keine gespeicherten Backups. Backups werden automatisch beim Herunterfahren erstellt oder können manuell erstellt werden.`,downloadSnapshot:`Herunterladen`,restoreSnapshot:`Wiederherstellen`,auto:`Auto`,manual:`Manuell`,snapshotCreated:`Backup erfolgreich erstellt!`,snapshotRestored:`{{bridges}} Bridges, {{mappings}} Zuordnungen, {{identities}} Identitäten wiederhergestellt.`,confirmRestore:`Wiederherstellung bestätigen`,confirmRestoreMessage:`Bist du sicher, dass du aus "{{filename}}" wiederherstellen möchtest? Dies überschreibt deine aktuelle Konfiguration.`,restoreWarning:`Alle vorhandenen Bridges und Konfigurationen werden überschrieben. Ein Neustart ist nach der Wiederherstellung erforderlich.`,confirmDelete:`Backup löschen`,confirmDeleteMessage:`Bist du sicher, dass du "{{filename}}" löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.`,settings:`Backup-Einstellungen`,autoBackupLabel:`Automatisches Backup`,autoBackupDesc:`Erstellt automatisch ein vollständiges Backup wenn die Anwendung heruntergefahren oder neu gestartet wird.`,retentionCount:`Backups behalten`,retentionCountDesc:`Anzahl der aufzubewahrenden Backups (älteste werden automatisch gelöscht)`},notFound:{title:`Seite nicht gefunden`,description:`Die gesuchte Seite existiert nicht.`,backToDashboard:`Zurück zum Dashboard`},footer:{github:`GitHub`,documentation:`Dokumentation`,support:`Unterstützen`},devices:{title:`Geräte`,searchPlaceholder:`Geräte suchen...`,filterBridge:`Bridge`,allBridges:`Alle Bridges`,filterDeviceType:`Gerätetyp`,allTypes:`Alle Typen`,sortBy:`Sortieren nach`,sortBridge:`Bridge`,sortType:`Gerätetyp`,sortName:`Name`,deviceCount:`{{count}} Gerät(e)`,filteredCount:`{{filtered}} von {{total}} Geräten`},diagnostics:{title:`Live-Diagnose`,stateUpdate:`Statusänderung`,command:`Befehl`,entityError:`Fehler`,sessionOpen:`Sitzung geöffnet`,sessionClose:`Sitzung geschlossen`,subscription:`Abonnement`,bridgeStart:`Bridge gestartet`,bridgeStop:`Bridge gestoppt`,entityWarning:`Warnung`,filterEvents:`Ereignistypen filtern`,clearEvents:`Alle Ereignisse löschen`,noEvents:`Keine Ereignisse entsprechen den aktuellen Filtern.`},startup:{title:`Startreihenfolge`,description:`Ziehe Bridges per Drag & Drop, um die Startreihenfolge festzulegen. Niedrigere Positionen starten zuerst.`,saveSuccess:`Startreihenfolge erfolgreich gespeichert`,saveFailed:`Startreihenfolge konnte nicht gespeichert werden`,saveChanges:`Änderungen speichern`,unsavedChanges:`Du hast ungespeicherte Änderungen an der Startreihenfolge.`,noBridges:`Noch keine Bridges konfiguriert.`,saveOrder:`Startreihenfolge speichern`},areaSetup:{title:`Bereich-Einrichtung`,heading:`Bereichsbasierte Bridge-Einrichtung`,description:`Erstelle automatisch eine Bridge pro Home Assistant Bereich. Jede Bridge enthält alle unterstützten Entities aus diesem Bereich.`,noAreas:`Keine Bereiche mit unterstützten Entities in Home Assistant gefunden. Stelle sicher, dass deine Geräte in HA Bereichen zugeordnet sind.`,selectController:`1. Controller auswählen (optional)`,selectAreas:`2. Bereiche auswählen ({{selected}} von {{total}})`,clear:`Leeren`,createBridges:`{{count}} Bridge(s) erstellen`,results:`Ergebnisse`,goToBridges:`Zu den Bridges`,createdSuccess:`{{count}} Bridge(s) erfolgreich erstellt`,createdPartial:`{{succeeded}} erstellt, {{failed}} Bridge(s) fehlgeschlagen`,loadFailed:`Bereiche konnten nicht geladen werden`,creating:`Wird erstellt...`,created:`Erstellt`,unknownError:`Unbekannter Fehler`},lockCredentials:{title:`Schloss-Zugangsdaten`,addCredential:`Zugangsdaten hinzufügen`,editCredential:`Zugangsdaten bearbeiten`,lockEntityId:`Schloss-Entity-ID`,lockEntityHelperText:`Die Home Assistant Entity-ID des Schlosses`,pinCode:`PIN-Code`,nameOptional:`Name (optional)`,namePlaceholder:`Haustür`,nameHelperText:`Anzeigename für diese Zugangsdaten`,entityRequired:`Entity-ID ist erforderlich`,pinLength:`PIN muss 4-8 Ziffern lang sein`,pinDigitsOnly:`PIN darf nur Ziffern enthalten`,saveFailed:`Speichern fehlgeschlagen`,loadFailed:`Zugangsdaten konnten nicht geladen werden`,deleteFailed:`Löschen fehlgeschlagen`,updateFailed:`Aktualisierung fehlgeschlagen`,enable:`Aktivieren`,disable:`Deaktivieren`,confirmDeleteTitle:`Zugangsdaten löschen`,confirmDeleteMessage:`Dies löscht die PIN-Zugangsdaten für {{entity}} dauerhaft. Dies kann nicht rückgängig gemacht werden.`},labels:{title:`Filterreferenz`,info:`Durchsuche alle verfügbaren Filterwerte für deine Bridge-Konfiguration. Klicke auf einen Wert, um ihn in die Zwischenablage zu kopieren.`,searchPlaceholder:`Suchen...`,loadFailed:`Daten konnten nicht geladen werden`,labelsSection:`Labels`,labelsHint:`Verwende mit Filtertyp "entity_label" oder "device_label". Du kannst entweder den Anzeigenamen oder die label_id verwenden.`,noLabels:`Keine Labels in Home Assistant gefunden. Erstelle Labels unter Einstellungen > Labels.`,displayName:`Anzeigename`,labelId:`label_id`,areaId:`area_id`,areasSection:`Bereiche`,areasHint:`Verwende mit Filtertyp "area". Bereiche werden auch für die automatische Raumzuweisung in Matter-Controllern verwendet.`,noAreas:`Keine Bereiche in Home Assistant gefunden. Erstelle Bereiche unter Einstellungen > Bereiche.`,otherFilterValues:`Weitere Filterwerte`,domains:`Domains`,domainsHint:`Verwende mit Filtertyp "domain".`,platforms:`Plattformen / Integrationen`,platformsHint:`Verwende mit Filtertyp "platform".`,entityCategories:`Entity-Kategorien`,entityCategoriesHint:`Verwende mit Filtertyp "entity_category".`,deviceClasses:`Geräteklassen`,deviceClassesHint:`Verwende mit Filtertyp "device_class".`,deviceNames:`Gerätenamen`,deviceNamesHint:`Verwende mit Filtertyp "device_name".`,productNames:`Produktnamen`,productNamesHint:`Verwende mit Filtertyp "product_name".`},logs:{title:`Systemlogs`,logLevel:`Log-Level`,error:`Fehler`,warning:`Warnung`,info:`Info`,debug:`Debug`,searchPlaceholder:`Logs durchsuchen...`,noResults:`Keine Logs gefunden`,autoRefresh:`Automatisch aktualisieren`},networkMap:{title:`Netzwerkkarte`,hubLabel:`HAMH`,undoMove:`Letzte Verschiebung rückgängig`,resetLayout:`Layout zurücksetzen`,refreshData:`Daten aktualisieren`,fullscreen:`Vollbild`,exitFullscreen:`Vollbild beenden`,legend:`Legende`,controller:`Controller`,hub:`HAMH Hub`,bridge:`Bridge`,device:`Gerät`,failed:`Fehlgeschlagen`},updateChecker:{title:`Software-Updates`,checkNow:`Jetzt prüfen`,currentVersion:`Aktuelle Version`,latestVersion:`Neueste Version`,updateAvailable:`Update verfügbar!`,upToDate:`Du verwendest die neueste Version.`,releaseNotes:`Versionshinweise`,notAvailable:`Update-Prüfung in dieser Version nicht verfügbar`,checkFailed:`Update-Prüfung fehlgeschlagen`,unreachable:`Server nicht erreichbar`,instructionAddon:`Aktualisiere über Einstellungen → Add-ons in Home Assistant.`,instructionDocker:`Ziehe das neueste Image und erstelle deinen Container neu.`,instructionNpm:`Ausführen: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Bridge-Einrichtungsassistent`,stepTemplate:`Vorlage`,stepController:`Controller`,stepBridgeInfo:`Bridge-Info`,stepEntityFilter:`Entity-Filter`,stepFeatureFlags:`Feature Flags`,stepReview:`Überprüfen & Erstellen`,autoCompose:`Geräte automatisch zusammensetzen`,autoForceSyncFlag:`Auto-Synchronisation`,invertCover:`Abdeckungsrichtung umkehren`,invertCoverDescription:`Öffnen/Schließen-Richtung für Abdeckungen tauschen. Verwende dies, wenn deine Abdeckungen die falsche Position in Matter-Controllern anzeigen.`,includeHidden:`Versteckte Entities einschließen`,includeHiddenDescription:`Auch Entities anzeigen, die in Home Assistant als versteckt markiert sind.`,bridgeName:`Bridge-Name`,portLabel:`Port`,portAutoAssign:`Wird automatisch dem nächsten verfügbaren Port zugewiesen`,nameRequired:`Bitte gib einen Bridge-Namen ein`,createFailed:`Bridge konnte nicht erstellt werden`,bridgeInfoDescription:`Gib deiner Bridge einen Namen und Port.`,serverModeLabel:`Server-Modus (für Saugroboter)`,serverModeTooltip:`Erforderlich, damit Saugroboter mit Apple Home (Siri) und Alexa funktionieren. Server-Modus-Bridges unterstützen nur EIN Gerät.`,entityFilterDescription:`Konfiguriere, welche Entities in diese Bridge aufgenommen werden sollen.`,includeAll:`Alle Entities einschließen (Platzhalter)`,entityId:`Entity-ID`,includePattern:`Einschlussmuster`,entityFilters:`Entity-Filter`,serverModeEntityHint:`Server-Modus unterstützt nur EIN Gerät. Gib die genaue Entity-ID ein (z.B. vacuum.mein_saugroboter).`,templatePreConfigured:`Durch Vorlage vorkonfiguriert. Nach der Erstellung im vollständigen Editor bearbeiten.`,wildcardHint:`Verwende * für alle, oder Muster wie light.*, switch.*`,commaHint:`Gib spezifische Entity-IDs ein, getrennt durch Kommas`,excludePatterns:`Ausschlussmuster (optional)`,excludeHelperText:`Auszuschließende Muster, durch Kommas getrennt`,skipTemplate:`Vorlage überspringen`,creating:`Wird erstellt...`,createBridge:`Bridge erstellen`,searchRules:`Regeln suchen...`,templateDescription:`Wähle eine Vorlage für einen schnellen Start oder überspringe sie, um eine benutzerdefinierte Bridge zu erstellen.`,controllerDescription:`Welchen Matter-Controller wirst du verwenden? Dies optimiert die Feature Flags für deinen Controller.`,controllerHint:`Du kannst Feature Flags jederzeit in den nächsten Schritten oder nach der Bridge-Erstellung anpassen.`,templateApplied:`Vorlage "{{name}}" angewendet. Passe Name und Port unten an.`,filterPreConfiguredFrom:`Filter ist aus der Vorlage "{{name}}" vorkonfiguriert. Du kannst ihn unten anpassen.`,featureFlagsDescription:`Feature Flags steuern, wie Geräte für Matter-Controller bereitgestellt werden.`,recommendedFlags:`Empfohlene Flags für {{name}} sind vorausgewählt.`,selectFlags:`Wähle die Flags, die zu deiner Einrichtung passen.`,reviewDescription:`Überprüfe deine Bridge-Konfiguration:`,bridgesToCreate:`Zu erstellende Bridges ({{count}})`,bridgesCreated:`{{count}} Bridge(s) bereits in dieser Sitzung erstellt`,addAnother:`Weitere hinzufügen`}},ms={common:{loading:`Loading`,notFound:`Not found`,save:`Save`,cancel:`Cancel`,delete:`Delete`,edit:`Edit`,close:`Close`,refresh:`Refresh`,search:`Search`,enabled:`Enabled`,disabled:`Disabled`,online:`Online`,offline:`Offline`,running:`Running`,stopped:`Stopped`,failed:`Failed`,starting:`Starting`,devices:`Devices`,fabrics:`Fabrics`,port:`Port`,unknown:`Unknown`,confirm:`Confirm`,create:`Create`,back:`Back`,next:`Next`,actions:`Actions`,name:`Name`,type:`Type`,error:`Error`,version:`Version`,copy:`Copy`,copied:`Copied!`,copyId:`Copy ID`,later:`Later`,skip:`Skip`,reset:`Reset`,update:`Update`,all:`All`,ascending:`Ascending`,descending:`Descending`,moveUp:`Move up`,moveDown:`Move down`,selectAll:`Select All`,selectNone:`Select None`,live:`Live`,new:`New`,overwrite:`Overwrite`,active:`Active`,property:`Property`,value:`Value`,custom:`Custom`,startAll:`Start All`,stopAll:`Stop All`,restartAll:`Restart All`,import:`Import`,export:`Export`,exportAll:`Export All`,wizard:`Wizard`},nav:{bridges:`Bridges`,devices:`All Devices`,health:`Health & Diagnostics`,diagnostics:`Live Events`,settings:`Settings`,networkMap:`Network Map`,logs:`Logs`,startupOrder:`Startup Order`,lockCredentials:`Lock Credentials`,filterReference:`Filter Reference`,systemLogs:`System Logs`,lightMode:`Light Mode`,darkMode:`Dark Mode`},status:{error:`Error`,unhealthy:`Unhealthy`,noBridges:`No Bridges`,loadingHealth:`Loading health status...`,unknown:`Unknown`},errorBoundary:{title:`Something went wrong`,fallbackMessage:`An unexpected error occurred.`,reload:`Reload Page`},settings:{title:`Settings`,language:`Language`,languageDescription:`Select the interface language.`,checkUpdates:`Check for Updates`,backupRestore:`Backup & Restore`,exportBackup:`Export Backup`,importBackup:`Import Backup`,dangerZone:`Danger Zone`,resetAll:`Reset All`,about:`About`,username:`Username`,password:`Password`,enterNewPassword:`Enter new password`,enableAuth:`Enable Authentication`,disableAuth:`Disable Authentication`,disableAuthMessage:`This will remove password protection from the web UI. Anyone on your network will be able to access and modify your bridge configuration.`,disableAuthConfirm:`Disable Auth`,usernamePasswordRequired:`Username and password are required`,authSaveFailed:`Failed to save auth settings`,authLoadFailed:`Failed to load auth settings`,authDisabled:`Authentication disabled.`,authRemoveFailed:`Failed to remove auth settings`},dashboard:{title:`Dashboard`,systemOverview:`System Overview`,quickActions:`Quick Actions`,bridgeOverview:`Bridge Overview`,noBridges:`No bridges configured yet.`,createBridge:`Create Bridge`,viewAll:`View All`,totalDevices:`Total Devices`,customize:`Customize`,startAll:`Start All`,stopAll:`Stop All`,restartAll:`Restart All`,welcome:`Welcome to Home Assistant Matter Hub`,welcomeDescription:`Bridge your Home Assistant devices to Matter controllers like Apple Home, Google Home, and Amazon Alexa.`,bridgeWizard:`Bridge Wizard`,setupByArea:`Setup by Area`,manualSetup:`Manual Setup`,areaSetup:`Area Setup`,documentation:`Documentation`,quickNavigation:`Quick Navigation`,haConnection:`HA Connection`,startupOrder:`Startup Order`,lockCredentials:`Lock Credentials`,filterReference:`Filter Reference`,successMessage:`Your bridges are connected to {{count}} controller fabric(s). Devices should now appear in your controller app.`,noBridgesHint:`No bridges configured yet. Use the Bridge Wizard or create one manually.`,customizeDashboard:`Customize dashboard`,bridgeStatusRunning:`{{running}} running`,bridgeStatusFailed:`{{failed}} failed`,devicesFailed:`{{count}} failed`,uptimeFormat:`{{time}}`},bridge:{name:`Bridge Name`,port:`Port`,status:`Status`,pairHint:`Pair this bridge with your controller`,pairDescription:`Open your controller app (Apple Home, Google Home, or Amazon Alexa), add a new accessory, and scan the QR code below or enter the manual pairing code. Make sure your controller is on the same network as Home Assistant.`,failedEntities:`Failed Entities`,serverModeRecommended:`Server Mode Recommended for Robot Vacuums`,serverModeDescription:`This bridge contains a robot vacuum in bridged mode. Apple Home and Alexa will show the bridge as an additional device, resulting in duplicate entries. Enable Server Mode to expose the vacuum as a standalone Matter device for full Siri/Alexa voice command support and no duplicates.`,enableServerMode:`Enable Server Mode`,enabling:`Enabling...`,start:`Start`,stop:`Stop`,restart:`Restart`,factoryReset:`Factory Reset`,pairingCode:`Pairing Code`,openCommissioning:`Open Commissioning Window`,multiPair:`Multi-Fabric Pairing`,deleteBridge:`Delete Bridge`,deleteConfirm:`Are you sure you want to delete this bridge?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entity/entities could not be loaded.`,clickToShow:`Click to show details.`,clickToHide:`Click to hide details.`,loadFailed:`Failed to load Bridge details`,refreshHint:`New devices and changes on labels are discovered every 30 seconds.`,refreshingStates:`Refreshing states in {{seconds}} seconds...`,serverModeSingleDeviceNote:`Note: Server Mode requires the vacuum to be the only device on this bridge. Please remove other entities from this bridge first, then enable Server Mode in the bridge settings.`,serverModeEnabled:`Server Mode enabled. The bridge will restart with your vacuum as a standalone device.`,serverModeEnableFailed:`Failed to enable Server Mode: {{error}}`,pairing:`Pairing`,bridgeInfo:`Bridge Info`,commissioned:`Commissioned`,addController:`Add Another Controller`,openingCommissioning:`Opening Commissioning Window...`,fabricTooltip:`A fabric represents a connection to a Matter controller (e.g., Apple Home, Google Home, Alexa). Each controller creates one fabric when paired.`,forceSync:`Force Sync`,syncing:`Syncing...`,forceSyncTooltip:`Push all current device states to connected controllers`,editFilters:`Edit Filters`,addFilters:`Add Filters`,bridgeNotRunning:`Bridge is not running. Start the bridge to see pairing information.`,manualCode:`Manual Code`,openingWindow:`Opening Commissioning Window...`,bridgeId:`Bridge ID`,passcode:`Passcode`,discriminator:`Discriminator`,connectedFabrics:`Connected Fabrics ({{count}})`,noFabrics:`No controllers connected yet. Scan the QR code with your Matter controller to pair this bridge.`,entityFilters:`Entity Filters`,noFilters:`No filters configured. All supported entities will be exposed.`,scanQrCode:`Scan this QR code with your Matter controller (Apple Home, Google Home, Alexa, etc.) to add this bridge to another ecosystem.`,appleHomeWarning:`This bridge uses Extended Flat mode. Only disable this if you exclusively use Apple Home.`,googleHomeWarning:`This may cause issues with Apple Home and Google Home.`,resetSuccess:`Bridge Reset successfully`,deleteSuccess:`Bridge deleted successfully`,confirmResetTitle:`Factory Reset Bridge`,confirmResetMessage:`This will remove all pairing information and reset the bridge to its initial state. Connected controllers will lose access. This cannot be undone.`,confirmDeleteTitle:`Delete Bridge`,confirmDeleteMessage:`This will permanently delete the bridge, all its pairings, and entity mappings. Connected controllers will lose access. This cannot be undone.`,importTitle:`Import Bridges`,overwriteExisting:`Overwrite existing bridges`,iconLabel:`Bridge Icon`,google:`Google`,alexa:`Alexa`,serverMode:`Server Mode`,autoForceSync:`Auto Force Sync`,saveSuccess:`Bridge saved`,updateSuccess:`Update completed`,exportFailed:`Export failed`,actionStarted:`Started`,actionStopped:`Stopped`,actionRestarted:`Restarted`,actionFailed:`{{action}} failed`,actionResult:`{{label}} {{count}} bridge(s)`,couldNotLoad:`Could not load bridges`,showingFirst:`Showing first {{count}}`,importParseFailed:`Failed to parse import file. Please select a valid export file.`,importing:`Importing...`,importCount:`Import {{count}} Bridge(s)`,jsonEditor:`JSON editor`,formEditor:`Form editor`},endpoints:{title:`Endpoints`,searchPlaceholder:`Search endpoints...`,sortBy:`Sort`,sortName:`Name`,sortEndpoint:`Endpoint ID`,sortType:`Type`,cardView:`Card View`,treeView:`Tree View`,clusters:`Clusters`,entityUnavailable:`Entity unavailable`,showUnavailable:`Show {{count}} unavailable`,showAll:`Show all entities`,uploadImage:`Upload device image`,removeImage:`Remove custom image`,editMapping:`Edit Entity Mapping`,homeAssistantEntity:`Home Assistant Entity`,noEndpoints:`No endpoints found.`,expandAll:`Expand All`,collapseAll:`Collapse All`,viewAll:`View All Devices`,haState:`HA State`,aboutEndpoint:`About this endpoint`,entityId:`Entity ID`,customName:`Custom Name`,deviceTypeOverride:`Device Type Override`,keyHaAttributes:`Key HA Attributes`,entityMappings:`Entity Mappings`,copyData:`Copy data to clipboard`,behavior:`Behavior`},health:{title:`Health & Diagnostics`,version:`Version`,uptime:`Uptime`,homeAssistant:`Home Assistant`,connected:`Connected`,disconnected:`Disconnected`,bridgeStatus:`Bridge Status`,refreshHealth:`Refresh health data`,exportDiagnostic:`Export Diagnostic`,memory:`Memory`,fabricDetails:`Fabric Details`,sessions:`Sessions`,subscriptions:`Subscriptions`,noFabrics:`No fabrics connected`,systemMetrics:`System Metrics`,heap:`Heap`,rss:`RSS`,external:`External`,systemHealth:`System Health`,fetchFailed:`Failed to fetch health status`,connectionError:`Connection error`,exportFailed:`Failed to export diagnostic data`,restartFailed:`Failed to restart bridge`,unableToLoad:`Unable to load health status`,sortBy:`Sort by`,created:`Created`,ascending:`Ascending`,descending:`Descending`,connectedTo:`Connected to`,autoRecovery:`Auto Recovery`,recoveryAttempts:`Recovery attempts`,fabrics:`fabrics`,networkDiagnostics:`Network Diagnostics`,checksPassed:`passed`,checksWarning:`warnings`,checksFailed:`failed`,hideDetails:`Hide details`,showDetails:`Show details`,allChecks:`All Checks`,check:`Check`,statusLabel:`Status`,message:`Message`,networkInterfaces:`Network Interfaces`,interfaceName:`Interface`,refresh:`Refresh`},mapping:{title:`Entity Mappings`,entityId:`Entity ID`,deviceType:`Device Type`,customName:`Custom Name`,status:`Status`,addMapping:`Add Mapping`,editMapping:`Edit Mapping`,deleteMapping:`Delete Mapping`,saved:`Mapping saved for {{entityId}}. Restart the bridge to apply changes.`,saveFailed:`Failed to save mapping: {{error}}`,deleted:`Mapping deleted for {{entityId}}.`,deleteFailed:`Failed to delete mapping.`,matterTag:`Matter Tag`,exportProfile:`Export Mapping Profile`,importProfile:`Import Mapping Profile`,profileName:`Profile Name`,match:`Match`,existing:`Existing`,autoDetect:`Auto-detect (default)`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`,loadFailed:`Failed to load entity mappings`,noMappings:`No custom entity mappings configured. Use mappings to override Matter device types, set custom names, or disable specific entities.`,applying:`Applying...`,applyCount:`Apply {{count}} Mapping(s)`},notFound:{title:`Page not found`,description:`The page you are looking for does not exist.`,backToDashboard:`Back to Dashboard`},devices:{title:`Devices`,searchPlaceholder:`Search devices...`,filterBridge:`Bridge`,allBridges:`All Bridges`,filterDeviceType:`Device Type`,allTypes:`All Types`,sortBy:`Sort By`,sortBridge:`Bridge`,sortType:`Device Type`,sortName:`Name`,deviceCount:`{{count}} device(s)`,filteredCount:`{{filtered}} of {{total}} devices`},diagnostics:{title:`Live Diagnostics`,stateUpdate:`State Update`,command:`Command`,entityError:`Error`,sessionOpen:`Session Open`,sessionClose:`Session Close`,subscription:`Subscription`,bridgeStart:`Bridge Start`,bridgeStop:`Bridge Stop`,entityWarning:`Warning`,filterEvents:`Filter event types`,clearEvents:`Clear all events`,noEvents:`No events match the current filters.`},startup:{title:`Startup Order`,description:`Drag and drop bridges to set the startup order. Lower positions start first.`,saveSuccess:`Startup order saved successfully`,saveFailed:`Failed to save startup order`,saveChanges:`Save Changes`,unsavedChanges:`You have unsaved changes to the startup order.`,noBridges:`No bridges configured yet.`,saveOrder:`Save Startup Order`},areaSetup:{title:`Area Setup`,heading:`Area-based Bridge Setup`,description:`Automatically create one bridge per Home Assistant area. Each bridge will include all supported entities from that area.`,noAreas:`No areas with supported entities found in Home Assistant. Make sure your devices are assigned to areas in HA.`,selectController:`1. Select Controller (optional)`,selectAreas:`2. Select Areas ({{selected}} of {{total}})`,clear:`Clear`,createBridges:`Create {{count}} Bridge(s)`,results:`Results`,goToBridges:`Go to Bridges`,createdSuccess:`Created {{count}} bridge(s) successfully`,createdPartial:`Created {{succeeded}}, failed {{failed}} bridge(s)`,loadFailed:`Failed to load areas`,creating:`Creating...`,created:`Created`,unknownError:`Unknown error`},lockCredentials:{title:`Lock Credentials`,addCredential:`Add Lock Credential`,editCredential:`Edit Lock Credential`,lockEntityId:`Lock Entity ID`,lockEntityHelperText:`The Home Assistant entity ID of the lock`,pinCode:`PIN Code`,nameOptional:`Name (optional)`,namePlaceholder:`Front Door`,nameHelperText:`Friendly name for this credential`,entityRequired:`Entity ID is required`,pinLength:`PIN must be 4-8 digits`,pinDigitsOnly:`PIN must contain only digits`,saveFailed:`Failed to save`,loadFailed:`Failed to load credentials`,deleteFailed:`Failed to delete`,updateFailed:`Failed to update`,enable:`Enable`,disable:`Disable`,confirmDeleteTitle:`Delete Credential`,confirmDeleteMessage:`This will permanently delete the PIN credential for {{entity}}. This cannot be undone.`},labels:{title:`Filter Reference`,info:`Browse all available filter values for your bridge configuration. Click any value to copy it to your clipboard.`,searchPlaceholder:`Search...`,loadFailed:`Failed to load data`,labelsSection:`Labels`,labelsHint:`Use with filter type "entity_label" or "device_label". You can use either the display name or the label_id.`,noLabels:`No labels found in Home Assistant. Create labels under Settings > Labels.`,displayName:`Display Name`,labelId:`label_id`,areaId:`area_id`,areasSection:`Areas`,areasHint:`Use with filter type "area". Areas are also used for automatic room assignment in Matter controllers.`,noAreas:`No areas found in Home Assistant. Create areas under Settings > Areas.`,otherFilterValues:`Other Filter Values`,domains:`Domains`,domainsHint:`Use with filter type "domain".`,platforms:`Platforms / Integrations`,platformsHint:`Use with filter type "platform".`,entityCategories:`Entity Categories`,entityCategoriesHint:`Use with filter type "entity_category".`,deviceClasses:`Device Classes`,deviceClassesHint:`Use with filter type "device_class".`,deviceNames:`Device Names`,deviceNamesHint:`Use with filter type "device_name".`,productNames:`Product Names`,productNamesHint:`Use with filter type "product_name".`},logs:{title:`System Logs`,logLevel:`Log Level`,error:`Error`,warning:`Warning`,info:`Info`,debug:`Debug`,searchPlaceholder:`Search logs...`,noResults:`No logs found`,autoRefresh:`Auto Refresh`},backup:{title:`Backup & Restore`,description:`Create a full backup of your bridges and entity mappings, or restore from a previous backup.`,configBackup:`Config Backup`,configBackupDesc:`Export bridge configurations and entity mappings.`,configBackupNote:`Bridges will need to be re-commissioned after restore.`,fullBackup:`Full Backup (with Identity)`,fullBackupDesc:`Includes Matter identity files (keypairs, fabric credentials).`,fullBackupWarning:`Preserves commissioning state across restores. DONT SHARE!`,restoreFromBackup:`Restore from Backup`,restoreDesc:`Upload a previously created backup file to restore bridges and configurations.`,restoreTitle:`Restore Backup`,selectBridges:`Select bridges to restore`,overwriteExisting:`Overwrite existing bridges`,includeMappings:`Include entity mappings`,restoreIdentities:`Restore Matter identities (no re-commissioning needed)`,restore:`Restore`,downloadSuccess:`Backup downloaded successfully!`,restartRequired:`Restart Required`,restartMessage:`Bridges have been restored from backup. A restart is required for the changes to take effect.`,restartNote:`The application will restart and you may need to refresh this page.`,restartNow:`Restart Now`,storedBackups:`Stored Backups`,createSnapshot:`Create Backup`,noSnapshots:`No stored backups yet. Backups are created automatically on shutdown or can be created manually.`,downloadSnapshot:`Download`,restoreSnapshot:`Restore`,auto:`Auto`,manual:`Manual`,snapshotCreated:`Backup created successfully!`,snapshotRestored:`Restored {{bridges}} bridges, {{mappings}} mappings, {{identities}} identities.`,confirmRestore:`Confirm Restore`,confirmRestoreMessage:`Are you sure you want to restore from "{{filename}}"? This will overwrite your current configuration.`,restoreWarning:`All existing bridges and configurations will be overwritten. A restart is required after restore.`,confirmDelete:`Delete Backup`,confirmDeleteMessage:`Are you sure you want to delete "{{filename}}"? This action cannot be undone.`,settings:`Backup Settings`,autoBackupLabel:`Automatic Backup`,autoBackupDesc:`Automatically create a full backup when the application shuts down or restarts.`,retentionCount:`Keep Backups`,retentionCountDesc:`Number of backups to keep (oldest are deleted automatically)`},networkMap:{title:`Network Map`,hubLabel:`HAMH`,undoMove:`Undo last move`,resetLayout:`Reset layout`,refreshData:`Refresh data`,fullscreen:`Fullscreen`,exitFullscreen:`Exit Fullscreen`,legend:`Legend`,controller:`Controller`,hub:`HAMH Hub`,bridge:`Bridge`,device:`Device`,failed:`Failed`},updateChecker:{title:`Software Updates`,checkNow:`Check Now`,currentVersion:`Current Version`,latestVersion:`Latest Version`,updateAvailable:`Update available!`,upToDate:`You are running the latest version.`,releaseNotes:`Release Notes`,notAvailable:`Update check not available in this version`,checkFailed:`Failed to check for updates`,unreachable:`Unable to reach server`,instructionAddon:`Update via Settings → Add-ons in Home Assistant.`,instructionDocker:`Pull the latest image and recreate your container.`,instructionNpm:`Run: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Bridge Setup Wizard`,stepTemplate:`Template`,stepController:`Controller`,stepBridgeInfo:`Bridge Info`,stepEntityFilter:`Entity Filter`,stepFeatureFlags:`Feature Flags`,stepReview:`Review & Create`,autoCompose:`Auto Compose Devices`,autoForceSyncFlag:`Auto Force Sync`,invertCover:`Invert Cover Direction`,invertCoverDescription:`Swap open/close direction for covers. Use this if your covers show the wrong position in Matter controllers.`,includeHidden:`Include Hidden Entities`,includeHiddenDescription:`Also expose entities that are marked as hidden in Home Assistant.`,bridgeName:`Bridge Name`,portLabel:`Port`,portAutoAssign:`Automatically assigned to next available port`,nameRequired:`Please enter a bridge name`,createFailed:`Failed to create bridge`,bridgeInfoDescription:`Give your bridge a name and port.`,serverModeLabel:`Server Mode (for Robot Vacuums)`,serverModeTooltip:`Required for Robot Vacuums to work with Apple Home (Siri) and Alexa. Server Mode bridges support only ONE device.`,entityFilterDescription:`Configure which entities should be included in this bridge.`,includeAll:`Include all entities (wildcard)`,entityId:`Entity ID`,includePattern:`Include Pattern`,entityFilters:`Entity Filters`,serverModeEntityHint:`Server Mode supports only ONE device. Enter the exact entity ID (e.g., vacuum.my_vacuum).`,templatePreConfigured:`Pre-configured by template. Edit in the full editor after creation.`,wildcardHint:`Use * for all, or patterns like light.*, switch.*`,commaHint:`Enter specific entity IDs separated by commas`,excludePatterns:`Exclude Patterns (optional)`,excludeHelperText:`Patterns to exclude, comma-separated`,skipTemplate:`Skip Template`,creating:`Creating...`,createBridge:`Create Bridge`,searchRules:`Search rules...`,templateDescription:`Choose a template to get started quickly, or skip to create a custom bridge.`,controllerDescription:`Which Matter controller will you use? This optimizes feature flags for your controller.`,controllerHint:`You can always adjust feature flags in the next steps or after bridge creation.`,templateApplied:`Template "{{name}}" applied. Customize the name and port below.`,filterPreConfiguredFrom:`Filter is pre-configured from the "{{name}}" template. You can adjust it below.`,featureFlagsDescription:`Feature flags control how devices are exposed to Matter controllers.`,recommendedFlags:`Recommended flags for {{name}} are pre-selected.`,selectFlags:`Select the flags that match your setup.`,reviewDescription:`Review your bridge configuration:`,bridgesToCreate:`Bridges to create ({{count}})`,bridgesCreated:`{{count}} bridge(s) already created in this session`,addAnother:`Add Another`},footer:{github:`GitHub`,documentation:`Documentation`,support:`Support`},languageSwitcher:{disclaimer:`Translations may be incomplete.`,contribute:`Help improve them!`},translationEditor:{title:`Translation Editor`,editLanguage:`Edit Language`,info:`Edit translations directly in your browser. Changes are saved locally and applied instantly. Export your translations to submit them to the project.`,progress:`{{translated}} / {{total}} keys translated`,localEdits:`{{count}} local edit(s)`,searchPlaceholder:`Search keys or values...`,filterAll:`All keys`,filterMissing:`Missing`,filterEdited:`Edited`,exportJson:`Export JSON`,copyJson:`Copy JSON`,copied:`Copied!`,resetAll:`Reset all edits`,resetKey:`Reset to default`,noResults:`No matching translation keys found.`,addLanguage:`Add Language`,newLanguageCode:`Language Code (e.g. pt, ja, ko)`,newLanguageName:`Language Name (e.g. Português)`,addLanguageButton:`Add`,languageExists:`This language already exists.`,codeRequired:`Language code is required.`,nameRequired:`Language name is required.`,removeLanguage:`Remove Language`,removeLanguageConfirm:`Remove custom language "{{name}}"? All local edits for this language will be lost.`,importJson:`Import JSON`,importSuccess:`Imported {{count}} translation(s).`,importFailed:`Failed to import: invalid JSON format.`}},hs={common:{loading:`Cargando`,notFound:`No encontrado`,save:`Guardar`,cancel:`Cancelar`,delete:`Eliminar`,edit:`Editar`,close:`Cerrar`,refresh:`Actualizar`,search:`Buscar`,enabled:`Activado`,disabled:`Desactivado`,online:`En línea`,offline:`Sin conexión`,running:`En ejecución`,stopped:`Detenido`,failed:`Fallido`,starting:`Iniciando`,devices:`Dispositivos`,fabrics:`Fabrics`,port:`Puerto`,unknown:`Desconocido`,confirm:`Confirmar`,create:`Crear`,back:`Atrás`,next:`Siguiente`,actions:`Acciones`,name:`Nombre`,type:`Tipo`,error:`Error`,version:`Versión`,copy:`Copiar`,copied:`¡Copiado!`,copyId:`Copiar ID`,later:`Más tarde`,skip:`Omitir`,reset:`Restablecer`,update:`Actualizar`,all:`Todos`,ascending:`Ascendente`,descending:`Descendente`,moveUp:`Mover arriba`,moveDown:`Mover abajo`,selectAll:`Seleccionar todo`,selectNone:`No seleccionar ninguno`,live:`En vivo`,new:`Nuevo`,overwrite:`Sobrescribir`,active:`Activo`,property:`Propiedad`,value:`Valor`,custom:`Personalizado`,startAll:`Iniciar todos`,stopAll:`Detener todos`,restartAll:`Reiniciar todos`,import:`Importar`,export:`Exportar`,exportAll:`Exportar todo`,wizard:`Asistente`},nav:{bridges:`Bridges`,devices:`Todos los dispositivos`,health:`Estado y diagnósticos`,diagnostics:`Eventos en vivo`,settings:`Configuración`,networkMap:`Mapa de red`,logs:`Registros`,startupOrder:`Orden de inicio`,lockCredentials:`Credenciales de cerradura`,filterReference:`Referencia de filtros`,systemLogs:`Registros del sistema`,lightMode:`Modo claro`,darkMode:`Modo oscuro`},status:{error:`Error`,unhealthy:`No saludable`,noBridges:`Sin Bridges`,loadingHealth:`Cargando estado de salud...`,unknown:`Desconocido`},errorBoundary:{title:`Algo salió mal`,fallbackMessage:`Se produjo un error inesperado.`,reload:`Recargar página`},settings:{title:`Configuración`,language:`Idioma`,languageDescription:`Selecciona el idioma de la interfaz.`,checkUpdates:`Buscar actualizaciones`,backupRestore:`Copia de seguridad y restauración`,exportBackup:`Exportar copia de seguridad`,importBackup:`Importar copia de seguridad`,dangerZone:`Zona peligrosa`,resetAll:`Restablecer todo`,about:`Acerca de`,username:`Nombre de usuario`,password:`Contraseña`,enterNewPassword:`Ingresar nueva contraseña`,enableAuth:`Habilitar autenticación`,disableAuth:`Deshabilitar autenticación`,disableAuthMessage:`Esto eliminará la protección por contraseña de la interfaz web. Cualquiera en su red podrá acceder y modificar la configuración de su bridge.`,disableAuthConfirm:`Deshabilitar autenticación`,usernamePasswordRequired:`Se requiere nombre de usuario y contraseña`,authSaveFailed:`Error al guardar la configuración de autenticación`,authLoadFailed:`Error al cargar la configuración de autenticación`,authDisabled:`Autenticación deshabilitada.`,authRemoveFailed:`Error al eliminar la configuración de autenticación`},dashboard:{title:`Panel de control`,systemOverview:`Resumen del sistema`,quickActions:`Acciones rápidas`,bridgeOverview:`Resumen de Bridges`,noBridges:`No hay bridges configurados.`,createBridge:`Crear Bridge`,viewAll:`Ver todo`,totalDevices:`Total de dispositivos`,customize:`Personalizar`,startAll:`Iniciar todos`,stopAll:`Detener todos`,restartAll:`Reiniciar todos`,welcome:`Bienvenido a Home Assistant Matter Hub`,welcomeDescription:`Conecta tus dispositivos de Home Assistant a controladores Matter como Apple Home, Google Home y Amazon Alexa.`,bridgeWizard:`Asistente de Bridge`,setupByArea:`Configurar por área`,manualSetup:`Configuración manual`,areaSetup:`Configuración por área`,documentation:`Documentación`,quickNavigation:`Navegación rápida`,haConnection:`Conexión HA`,startupOrder:`Orden de inicio`,lockCredentials:`Credenciales de cerradura`,filterReference:`Referencia de filtros`,successMessage:`Tus bridges están conectados a {{count}} fabric(s) de controlador. Los dispositivos deberían aparecer ahora en tu aplicación.`,noBridgesHint:`No hay bridges configurados. Usa el asistente o crea uno manualmente.`,customizeDashboard:`Personalizar panel de control`,bridgeStatusRunning:`{{running}} en ejecución`,bridgeStatusFailed:`{{failed}} fallidos`,devicesFailed:`{{count}} fallidos`,uptimeFormat:`{{time}}`},bridge:{name:`Nombre del Bridge`,port:`Puerto`,status:`Estado`,pairHint:`Vincular este bridge con tu controlador`,pairDescription:`Abre tu aplicación de controlador (Apple Home, Google Home o Amazon Alexa), añade un nuevo accesorio y escanea el código QR o introduce el código de vinculación manual. Asegúrate de que tu controlador esté en la misma red que Home Assistant.`,failedEntities:`Entidades fallidas`,serverModeRecommended:`Modo Servidor recomendado para aspiradoras robot`,serverModeDescription:`Este bridge contiene una aspiradora robot en modo puente. Apple Home y Alexa mostrarán el bridge como dispositivo adicional, creando duplicados. Activa el Modo Servidor para exponer la aspiradora como dispositivo Matter independiente.`,enableServerMode:`Activar Modo Servidor`,enabling:`Activando...`,start:`Iniciar`,stop:`Detener`,restart:`Reiniciar`,factoryReset:`Restablecimiento de fábrica`,pairingCode:`Código de vinculación`,openCommissioning:`Abrir ventana de puesta en servicio`,multiPair:`Vinculación Multi-Fabric`,deleteBridge:`Eliminar Bridge`,deleteConfirm:`¿Estás seguro de que quieres eliminar este bridge?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entidad(es) no se pudieron cargar.`,clickToShow:`Haz clic para mostrar detalles.`,clickToHide:`Haz clic para ocultar detalles.`,loadFailed:`No se pudieron cargar los detalles del Bridge`,refreshHint:`Los nuevos dispositivos y cambios de etiquetas se detectan cada 30 segundos.`,refreshingStates:`Actualizando estados en {{seconds}} segundos...`,serverModeSingleDeviceNote:`Nota: El Modo Servidor requiere que la aspiradora sea el único dispositivo en este bridge. Elimina primero las otras entidades y luego activa el Modo Servidor en la configuración del bridge.`,serverModeEnabled:`Modo Servidor activado. El bridge se reiniciará con tu aspiradora como dispositivo independiente.`,serverModeEnableFailed:`No se pudo activar el Modo Servidor: {{error}}`,pairing:`Vinculación`,bridgeInfo:`Info del Bridge`,commissioned:`Vinculado`,addController:`Añadir otro controlador`,openingCommissioning:`Abriendo ventana de puesta en servicio...`,fabricTooltip:`Un fabric representa una conexión a un controlador Matter (ej. Apple Home, Google Home, Alexa). Cada controlador crea un fabric cuando se vincula.`,forceSync:`Forzar sincronización`,syncing:`Sincronizando...`,forceSyncTooltip:`Sincronizar todos los estados actuales de los dispositivos con los controladores conectados`,editFilters:`Editar filtros`,addFilters:`Añadir filtros`,bridgeNotRunning:`El bridge no está funcionando. Inicia el bridge para ver la información de vinculación.`,manualCode:`Código manual`,openingWindow:`Abriendo ventana de puesta en servicio...`,bridgeId:`ID del Bridge`,passcode:`Código de acceso`,discriminator:`Discriminador`,connectedFabrics:`Fabrics conectados ({{count}})`,noFabrics:`Ningún controlador conectado. Escanea el código QR con tu controlador Matter.`,entityFilters:`Filtros de entidades`,noFilters:`Sin filtros configurados. Todas las entidades compatibles serán expuestas.`,scanQrCode:`Escanea este código QR con tu controlador Matter (Apple Home, Google Home, Alexa, etc.) para añadir este bridge a otro ecosistema.`,appleHomeWarning:`Este bridge utiliza el modo Plano Extendido. Solo desactive esto si usa exclusivamente Apple Home.`,googleHomeWarning:`Esto puede causar problemas con Apple Home y Google Home.`,resetSuccess:`Bridge restablecido correctamente`,deleteSuccess:`Bridge eliminado correctamente`,confirmResetTitle:`Restablecer Bridge`,confirmResetMessage:`Esto eliminará toda la información de vinculación y restablecerá el bridge a su estado inicial. Los controladores conectados perderán el acceso. Esto no se puede deshacer.`,confirmDeleteTitle:`Eliminar Bridge`,confirmDeleteMessage:`Esto eliminará permanentemente el bridge, todas sus vinculaciones y mapeos de entidades. Los controladores conectados perderán el acceso. Esto no se puede deshacer.`,importTitle:`Importar Bridges`,overwriteExisting:`Sobrescribir bridges existentes`,iconLabel:`Icono del Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`Modo Servidor`,autoForceSync:`Sincronización automática`,saveSuccess:`Bridge guardado`,updateSuccess:`Actualización completada`,exportFailed:`Error en la exportación`,actionStarted:`Iniciado`,actionStopped:`Detenido`,actionRestarted:`Reiniciado`,actionFailed:`{{action}} fallido`,actionResult:`{{label}} {{count}} bridge(s)`,couldNotLoad:`No se pudieron cargar los bridges`,showingFirst:`Mostrando los primeros {{count}}`,importParseFailed:`No se pudo analizar el archivo de importación. Selecciona un archivo de exportación válido.`,importing:`Importando...`,importCount:`Importar {{count}} bridge(s)`,jsonEditor:`Editor JSON`,formEditor:`Editor de formulario`},endpoints:{title:`Endpoints`,searchPlaceholder:`Buscar endpoints...`,sortBy:`Ordenar`,sortName:`Nombre`,sortEndpoint:`ID Endpoint`,sortType:`Tipo`,cardView:`Vista de tarjetas`,treeView:`Vista de árbol`,clusters:`Clusters`,entityUnavailable:`Entidad no disponible`,showUnavailable:`Mostrar {{count}} no disponibles`,showAll:`Mostrar todas las entidades`,uploadImage:`Subir imagen de dispositivo`,removeImage:`Eliminar imagen personalizada`,editMapping:`Editar mapeo de entidad`,homeAssistantEntity:`Entidad Home Assistant`,noEndpoints:`No se encontraron endpoints.`,expandAll:`Expandir todo`,collapseAll:`Contraer todo`,viewAll:`Ver todos los dispositivos`,haState:`Estado HA`,aboutEndpoint:`Acerca de este endpoint`,entityId:`ID de entidad`,customName:`Nombre personalizado`,deviceTypeOverride:`Anulación de tipo de dispositivo`,keyHaAttributes:`Atributos HA clave`,entityMappings:`Mapeos de entidades`,copyData:`Copiar datos al portapapeles`,behavior:`Comportamiento`},health:{title:`Estado y diagnósticos`,version:`Versión`,uptime:`Tiempo de actividad`,homeAssistant:`Home Assistant`,connected:`Conectado`,disconnected:`Desconectado`,bridgeStatus:`Estado de Bridges`,refreshHealth:`Actualizar datos de salud`,exportDiagnostic:`Exportar diagnóstico`,memory:`Memoria`,fabricDetails:`Detalles de Fabric`,sessions:`Sesiones`,subscriptions:`Suscripciones`,noFabrics:`No hay fabrics conectados`,systemMetrics:`Métricas del sistema`,heap:`Heap`,rss:`RSS`,external:`Externo`,systemHealth:`Salud del sistema`,fetchFailed:`No se pudo obtener el estado de salud`,connectionError:`Error de conexión`,exportFailed:`No se pudieron exportar los datos de diagnóstico`,restartFailed:`No se pudo reiniciar el bridge`,unableToLoad:`No se pudo cargar el estado de salud`,sortBy:`Ordenar por`,created:`Creado`,ascending:`Ascendente`,descending:`Descendente`,connectedTo:`Conectado a`,autoRecovery:`Recuperación automática`,recoveryAttempts:`Intentos de recuperación`,fabrics:`fabrics`,networkDiagnostics:`Diagnósticos de red`,checksPassed:`aprobados`,checksWarning:`advertencias`,checksFailed:`fallidos`,hideDetails:`Ocultar detalles`,showDetails:`Mostrar detalles`,allChecks:`Todas las comprobaciones`,check:`Comprobación`,statusLabel:`Estado`,message:`Mensaje`,networkInterfaces:`Interfaces de red`,interfaceName:`Interfaz`,refresh:`Actualizar`},mapping:{title:`Mapeos de entidades`,entityId:`ID Entidad`,deviceType:`Tipo de dispositivo`,customName:`Nombre personalizado`,status:`Estado`,addMapping:`Añadir mapeo`,editMapping:`Editar mapeo`,deleteMapping:`Eliminar mapeo`,saved:`Mapeo guardado para {{entityId}}. Reinicia el bridge para aplicar los cambios.`,saveFailed:`No se pudo guardar el mapeo: {{error}}`,deleted:`Mapeo eliminado para {{entityId}}.`,deleteFailed:`No se pudo eliminar el mapeo.`,matterTag:`Etiqueta Matter`,exportProfile:`Exportar perfil de mapeo`,importProfile:`Importar perfil de mapeo`,profileName:`Nombre del perfil`,match:`Coincidencia`,existing:`Existente`,autoDetect:`Detección automática (predeterminado)`,customProductName:`Nombre de producto personalizado`,customProductNameHelp:`Sobrescribe el nombre del producto (modelo) reportado a los controladores Matter. Algunos controladores (ej. Aqara) muestran esto como el nombre del dispositivo.`,customVendorName:`Nombre de proveedor personalizado`,customVendorNameHelp:`Sobrescribe el nombre del proveedor/fabricante reportado a los controladores Matter.`,customSerialNumber:`Número de serie personalizado`,customSerialNumberHelp:`Sobrescribe el número de serie reportado a los controladores Matter.`,loadFailed:`No se pudieron cargar los mapeos de entidades`,noMappings:`No hay mapeos de entidades configurados. Use mapeos para sobrescribir tipos de dispositivos Matter, establecer nombres personalizados o deshabilitar entidades específicas.`,applying:`Aplicando...`,applyCount:`Aplicar {{count}} mapeo(s)`},notFound:{title:`Página no encontrada`,description:`La página que buscas no existe.`,backToDashboard:`Volver al panel de control`},devices:{title:`Dispositivos`,searchPlaceholder:`Buscar dispositivos...`,filterBridge:`Bridge`,allBridges:`Todos los bridges`,filterDeviceType:`Tipo de dispositivo`,allTypes:`Todos los tipos`,sortBy:`Ordenar por`,sortBridge:`Bridge`,sortType:`Tipo de dispositivo`,sortName:`Nombre`,deviceCount:`{{count}} dispositivo(s)`,filteredCount:`{{filtered}} de {{total}} dispositivos`},diagnostics:{title:`Diagnósticos en vivo`,stateUpdate:`Actualización de estado`,command:`Comando`,entityError:`Error`,sessionOpen:`Sesión abierta`,sessionClose:`Sesión cerrada`,subscription:`Suscripción`,bridgeStart:`Inicio de bridge`,bridgeStop:`Parada de bridge`,entityWarning:`Advertencia`,filterEvents:`Filtrar tipos de eventos`,clearEvents:`Borrar todos los eventos`,noEvents:`No hay eventos que coincidan con los filtros actuales.`},startup:{title:`Orden de inicio`,description:`Arrastra y suelta bridges para establecer el orden de inicio. Las posiciones más bajas se inician primero.`,saveSuccess:`Orden de inicio guardado correctamente`,saveFailed:`Error al guardar el orden de inicio`,saveChanges:`Guardar cambios`,unsavedChanges:`Tienes cambios sin guardar en el orden de inicio.`,noBridges:`No hay bridges configurados aún.`,saveOrder:`Guardar orden de inicio`},areaSetup:{title:`Configuración por área`,heading:`Configuración de bridge basada en áreas`,description:`Crea automáticamente un bridge por área de Home Assistant. Cada bridge incluirá todas las entidades compatibles de esa área.`,noAreas:`No se encontraron áreas con entidades compatibles en Home Assistant. Asegúrate de que tus dispositivos estén asignados a áreas en HA.`,selectController:`1. Seleccionar controlador (opcional)`,selectAreas:`2. Seleccionar áreas ({{selected}} de {{total}})`,clear:`Limpiar`,createBridges:`Crear {{count}} bridge(s)`,results:`Resultados`,goToBridges:`Ir a Bridges`,createdSuccess:`{{count}} bridge(s) creados correctamente`,createdPartial:`Creados {{succeeded}}, fallidos {{failed}} bridge(s)`,loadFailed:`Error al cargar las áreas`,creating:`Creando...`,created:`Creado`,unknownError:`Error desconocido`},lockCredentials:{title:`Credenciales de cerradura`,addCredential:`Añadir credencial`,editCredential:`Editar credencial`,lockEntityId:`ID de entidad de cerradura`,lockEntityHelperText:`El ID de entidad de Home Assistant de la cerradura`,pinCode:`Código PIN`,nameOptional:`Nombre (opcional)`,namePlaceholder:`Puerta principal`,nameHelperText:`Nombre descriptivo para esta credencial`,entityRequired:`El ID de entidad es obligatorio`,pinLength:`El PIN debe tener entre 4 y 8 dígitos`,pinDigitsOnly:`El PIN solo debe contener dígitos`,saveFailed:`Error al guardar`,loadFailed:`Error al cargar credenciales`,deleteFailed:`Error al eliminar`,updateFailed:`Error al actualizar`,enable:`Habilitar`,disable:`Deshabilitar`,confirmDeleteTitle:`Eliminar credencial`,confirmDeleteMessage:`Esto eliminará permanentemente la credencial PIN para {{entity}}. Esto no se puede deshacer.`},labels:{title:`Referencia de filtros`,info:`Explora todos los valores de filtro disponibles para la configuración de tu bridge. Haz clic en cualquier valor para copiarlo al portapapeles.`,searchPlaceholder:`Buscar...`,loadFailed:`Error al cargar datos`,labelsSection:`Etiquetas`,labelsHint:`Úsalo con el tipo de filtro "entity_label" o "device_label". Puedes usar el nombre de visualización o el label_id.`,noLabels:`No se encontraron etiquetas en Home Assistant. Crea etiquetas en Configuración > Etiquetas.`,displayName:`Nombre de visualización`,labelId:`label_id`,areaId:`area_id`,areasSection:`Áreas`,areasHint:`Úsalo con el tipo de filtro "area". Las áreas también se usan para la asignación automática de habitaciones en los controladores Matter.`,noAreas:`No se encontraron áreas en Home Assistant. Crea áreas en Configuración > Áreas.`,otherFilterValues:`Otros valores de filtro`,domains:`Dominios`,domainsHint:`Úsalo con el tipo de filtro "domain".`,platforms:`Plataformas / Integraciones`,platformsHint:`Úsalo con el tipo de filtro "platform".`,entityCategories:`Categorías de entidad`,entityCategoriesHint:`Úsalo con el tipo de filtro "entity_category".`,deviceClasses:`Clases de dispositivo`,deviceClassesHint:`Úsalo con el tipo de filtro "device_class".`,deviceNames:`Nombres de dispositivo`,deviceNamesHint:`Úsalo con el tipo de filtro "device_name".`,productNames:`Nombres de producto`,productNamesHint:`Úsalo con el tipo de filtro "product_name".`},logs:{title:`Registros del sistema`,logLevel:`Nivel de registro`,error:`Error`,warning:`Advertencia`,info:`Información`,debug:`Depuración`,searchPlaceholder:`Buscar registros...`,noResults:`No se encontraron registros`,autoRefresh:`Actualización automática`},backup:{title:`Copia de seguridad y restauración`,description:`Crea una copia de seguridad completa de tus bridges y mapeos de entidades, o restaura desde una copia de seguridad anterior.`,configBackup:`Copia de seguridad de configuración`,configBackupDesc:`Exportar configuraciones de bridge y mapeos de entidades.`,configBackupNote:`Los bridges deberán ser puestos en servicio nuevamente después de la restauración.`,fullBackup:`Copia de seguridad completa (con identidad)`,fullBackupDesc:`Incluye archivos de identidad de Matter (pares de claves, credenciales de fabric).`,fullBackupWarning:`Conserva el estado de puesta en servicio en las restauraciones. ¡NO COMPARTIR!`,restoreFromBackup:`Restaurar desde copia de seguridad`,restoreDesc:`Sube un archivo de copia de seguridad creado previamente para restaurar bridges y configuraciones.`,restoreTitle:`Restaurar copia de seguridad`,selectBridges:`Seleccionar bridges para restaurar`,overwriteExisting:`Sobrescribir bridges existentes`,includeMappings:`Incluir mapeos de entidades`,restoreIdentities:`Restaurar identidades Matter (no requiere nueva puesta en servicio)`,restore:`Restaurar`,downloadSuccess:`¡Copia de seguridad descargada correctamente!`,restartRequired:`Reinicio requerido`,restartMessage:`Los bridges han sido restaurados desde la copia de seguridad. Se requiere un reinicio para que los cambios surtan efecto.`,restartNote:`La aplicación se reiniciará y es posible que debas actualizar esta página.`,restartNow:`Reiniciar ahora`,storedBackups:`Copias de seguridad almacenadas`,createSnapshot:`Crear copia de seguridad`,noSnapshots:`No hay copias de seguridad almacenadas aún. Se crean automáticamente al apagar o se pueden crear manualmente.`,downloadSnapshot:`Descargar`,restoreSnapshot:`Restaurar`,auto:`Automático`,manual:`Manual`,snapshotCreated:`¡Copia de seguridad creada correctamente!`,snapshotRestored:`Restaurados {{bridges}} bridges, {{mappings}} mapeos, {{identities}} identidades.`,confirmRestore:`Confirmar restauración`,confirmRestoreMessage:`¿Estás seguro de que quieres restaurar desde "{{filename}}"? Esto sobrescribirá tu configuración actual.`,restoreWarning:`Todos los bridges y configuraciones existentes serán sobrescritos. Se requiere un reinicio después de la restauración.`,confirmDelete:`Eliminar copia de seguridad`,confirmDeleteMessage:`¿Estás seguro de que quieres eliminar "{{filename}}"? Esta acción no se puede deshacer.`,settings:`Configuración de copia de seguridad`,autoBackupLabel:`Copia de seguridad automática`,autoBackupDesc:`Crea automáticamente una copia de seguridad completa cuando la aplicación se apaga o reinicia.`,retentionCount:`Conservar copias de seguridad`,retentionCountDesc:`Número de copias de seguridad a conservar (las más antiguas se eliminan automáticamente)`},networkMap:{title:`Mapa de red`,hubLabel:`HAMH`,undoMove:`Deshacer último movimiento`,resetLayout:`Restablecer diseño`,refreshData:`Actualizar datos`,fullscreen:`Pantalla completa`,exitFullscreen:`Salir de pantalla completa`,legend:`Leyenda`,controller:`Controlador`,hub:`Hub HAMH`,bridge:`Bridge`,device:`Dispositivo`,failed:`Fallido`},updateChecker:{title:`Actualizaciones de software`,checkNow:`Comprobar ahora`,currentVersion:`Versión actual`,latestVersion:`Última versión`,updateAvailable:`¡Actualización disponible!`,upToDate:`Estás ejecutando la última versión.`,releaseNotes:`Notas de la versión`,notAvailable:`Comprobación de actualizaciones no disponible en esta versión`,checkFailed:`Error al comprobar actualizaciones`,unreachable:`No se puede acceder al servidor`,instructionAddon:`Actualiza en Configuración → Complementos en Home Assistant.`,instructionDocker:`Descarga la última imagen y vuelve a crear tu contenedor.`,instructionNpm:`Ejecuta: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Asistente de configuración de Bridge`,stepTemplate:`Plantilla`,stepController:`Controlador`,stepBridgeInfo:`Info del Bridge`,stepEntityFilter:`Filtro de entidades`,stepFeatureFlags:`Feature Flags`,stepReview:`Revisar y crear`,autoCompose:`Composición automática de dispositivos`,autoForceSyncFlag:`Sincronización forzada automática`,invertCover:`Invertir dirección de persiana`,invertCoverDescription:`Intercambia la dirección de abrir/cerrar para persianas. Usa esto si tus persianas muestran la posición incorrecta en los controladores Matter.`,includeHidden:`Incluir entidades ocultas`,includeHiddenDescription:`También expone entidades que están marcadas como ocultas en Home Assistant.`,bridgeName:`Nombre del Bridge`,portLabel:`Puerto`,portAutoAssign:`Asignado automáticamente al siguiente puerto disponible`,nameRequired:`Por favor, introduce un nombre para el bridge`,createFailed:`Error al crear el bridge`,bridgeInfoDescription:`Dale a tu bridge un nombre y un puerto.`,serverModeLabel:`Modo Servidor (para aspiradoras robot)`,serverModeTooltip:`Requerido para que las aspiradoras robot funcionen con Apple Home (Siri) y Alexa. Los bridges en Modo Servidor admiten solo UN dispositivo.`,entityFilterDescription:`Configura qué entidades deben incluirse en este bridge.`,includeAll:`Incluir todas las entidades (comodín)`,entityId:`ID de entidad`,includePattern:`Patrón de inclusión`,entityFilters:`Filtros de entidades`,serverModeEntityHint:`El Modo Servidor admite solo UN dispositivo. Introduce el ID exacto de la entidad (ej. vacuum.mi_aspiradora).`,templatePreConfigured:`Preconfigurado por plantilla. Edítalo en el editor completo después de la creación.`,wildcardHint:`Usa * para todo, o patrones como light.*, switch.*`,commaHint:`Introduce IDs de entidades específicos separados por comas`,excludePatterns:`Patrones de exclusión (opcional)`,excludeHelperText:`Patrones a excluir, separados por comas`,skipTemplate:`Omitir plantilla`,creating:`Creando...`,createBridge:`Crear Bridge`,searchRules:`Buscar reglas...`,templateDescription:`Elige una plantilla para empezar rápidamente, o omite para crear un bridge personalizado.`,controllerDescription:`¿Qué controlador Matter usarás? Esto optimiza los feature flags para tu controlador.`,controllerHint:`Siempre puedes ajustar los feature flags en los siguientes pasos o después de crear el bridge.`,templateApplied:`Plantilla "{{name}}" aplicada. Personaliza el nombre y el puerto a continuación.`,filterPreConfiguredFrom:`El filtro está preconfigurado desde la plantilla "{{name}}". Puedes ajustarlo a continuación.`,featureFlagsDescription:`Los feature flags controlan cómo se exponen los dispositivos a los controladores Matter.`,recommendedFlags:`Los flags recomendados para {{name}} están preseleccionados.`,selectFlags:`Selecciona los flags que coincidan con tu configuración.`,reviewDescription:`Revisa la configuración de tu bridge:`,bridgesToCreate:`Bridges a crear ({{count}})`,bridgesCreated:`{{count}} bridge(s) ya creados en esta sesión`,addAnother:`Añadir otro`},footer:{github:`GitHub`,documentation:`Documentación`,support:`Soporte`},languageSwitcher:{disclaimer:`Las traducciones pueden estar incompletas.`,contribute:`¡Ayuda a mejorarlas!`},translationEditor:{title:`Editor de traducciones`,editLanguage:`Idioma a editar`,info:`Edita traducciones directamente en tu navegador. Los cambios se guardan localmente y se aplican al instante. Exporta tus traducciones para enviarlas al proyecto.`,progress:`{{translated}} / {{total}} claves traducidas`,localEdits:`{{count}} edición(es) local(es)`,searchPlaceholder:`Buscar claves o valores...`,filterAll:`Todas las claves`,filterMissing:`Faltantes`,filterEdited:`Editadas`,exportJson:`Exportar JSON`,copyJson:`Copiar JSON`,copied:`¡Copiado!`,resetAll:`Restablecer todas las ediciones`,resetKey:`Restablecer al valor predeterminado`,noResults:`No se encontraron claves de traducción coincidentes.`,addLanguage:`Añadir idioma`,newLanguageCode:`Código de idioma (ej. pt, ja, ko)`,newLanguageName:`Nombre del idioma (ej. Português)`,addLanguageButton:`Añadir`,languageExists:`Este idioma ya existe.`,codeRequired:`El código de idioma es obligatorio.`,nameRequired:`El nombre del idioma es obligatorio.`,removeLanguage:`Eliminar idioma`,removeLanguageConfirm:`¿Eliminar el idioma personalizado "{{name}}"? Todas las ediciones locales para este idioma se perderán.`,importJson:`Importar JSON`,importSuccess:`{{count}} traducción(es) importada(s).`,importFailed:`Error en la importación: formato JSON inválido.`}},gs={common:{loading:`Chargement`,notFound:`Introuvable`,save:`Enregistrer`,cancel:`Annuler`,delete:`Supprimer`,edit:`Modifier`,close:`Fermer`,refresh:`Actualiser`,search:`Rechercher`,enabled:`Activé`,disabled:`Désactivé`,online:`En ligne`,offline:`Hors ligne`,running:`En cours`,stopped:`Arrêté`,failed:`Échoué`,starting:`Démarrage`,devices:`Appareils`,fabrics:`Fabrics`,port:`Port`,unknown:`Inconnu`,confirm:`Confirmer`,create:`Créer`,back:`Retour`,next:`Suivant`,actions:`Actions`,name:`Nom`,type:`Type`,error:`Erreur`,version:`Version`,copy:`Copier`,copied:`Copié !`,copyId:`Copier l'ID`,later:`Plus tard`,skip:`Passer`,reset:`Réinitialiser`,update:`Mettre à jour`,all:`Tous`,ascending:`Croissant`,descending:`Décroissant`,moveUp:`Monter`,moveDown:`Descendre`,selectAll:`Tout sélectionner`,selectNone:`Aucune sélection`,live:`En direct`,new:`Nouveau`,overwrite:`Écraser`,active:`Actif`,property:`Propriété`,value:`Valeur`,custom:`Personnalisé`,startAll:`Tout démarrer`,stopAll:`Tout arrêter`,restartAll:`Tout redémarrer`,import:`Importer`,export:`Exporter`,exportAll:`Tout exporter`,wizard:`Assistant`},nav:{bridges:`Bridges`,devices:`Tous les appareils`,health:`Santé & Diagnostics`,diagnostics:`Événements en direct`,settings:`Paramètres`,networkMap:`Carte réseau`,logs:`Journaux`,startupOrder:`Ordre de démarrage`,lockCredentials:`Identifiants verrou`,filterReference:`Référence des filtres`,systemLogs:`Journaux système`,lightMode:`Mode clair`,darkMode:`Mode sombre`},status:{error:`Erreur`,unhealthy:`Défaillant`,noBridges:`Aucun Bridge`,loadingHealth:`Chargement de l'état de santé...`,unknown:`Inconnu`},errorBoundary:{title:`Une erreur est survenue`,fallbackMessage:`Une erreur inattendue s'est produite.`,reload:`Recharger la page`},settings:{title:`Paramètres`,language:`Langue`,languageDescription:`Sélectionnez la langue de l'interface.`,checkUpdates:`Vérifier les mises à jour`,backupRestore:`Sauvegarde & Restauration`,exportBackup:`Exporter la sauvegarde`,importBackup:`Importer la sauvegarde`,dangerZone:`Zone dangereuse`,resetAll:`Tout réinitialiser`,about:`À propos`},dashboard:{title:`Tableau de bord`,systemOverview:`Vue d'ensemble du système`,quickActions:`Actions rapides`,bridgeOverview:`Vue d'ensemble des Bridges`,noBridges:`Aucun bridge configuré.`,createBridge:`Créer un Bridge`,viewAll:`Tout afficher`,totalDevices:`Total des appareils`,customize:`Personnaliser`,startAll:`Tout démarrer`,stopAll:`Tout arrêter`,restartAll:`Tout redémarrer`,welcome:`Bienvenue sur Home Assistant Matter Hub`,welcomeDescription:`Connectez vos appareils Home Assistant aux contrôleurs Matter comme Apple Home, Google Home et Amazon Alexa.`,bridgeWizard:`Assistant Bridge`,setupByArea:`Configurer par zone`,manualSetup:`Configuration manuelle`,areaSetup:`Configuration par zone`,documentation:`Documentation`,quickNavigation:`Navigation rapide`,haConnection:`Connexion HA`,startupOrder:`Ordre de démarrage`,lockCredentials:`Identifiants verrou`,filterReference:`Référence des filtres`,successMessage:`Vos bridges sont connectés à {{count}} fabric(s) contrôleur. Les appareils devraient maintenant apparaître dans votre application.`,noBridgesHint:`Aucun bridge configuré. Utilisez l'assistant ou créez-en un manuellement.`,customizeDashboard:`Personnaliser le tableau de bord`},bridge:{name:`Nom du Bridge`,port:`Port`,status:`Statut`,pairHint:`Associer ce bridge à votre contrôleur`,pairDescription:`Ouvrez votre application contrôleur (Apple Home, Google Home ou Amazon Alexa), ajoutez un nouvel accessoire et scannez le QR code ou entrez le code d'appairage manuel. Assurez-vous que votre contrôleur est sur le même réseau que Home Assistant.`,failedEntities:`Entités échouées`,serverModeRecommended:`Mode Serveur recommandé pour les aspirateurs robots`,serverModeDescription:`Ce bridge contient un aspirateur robot en mode ponté. Apple Home et Alexa afficheront le bridge comme appareil supplémentaire, créant des doublons. Activez le Mode Serveur pour exposer l'aspirateur comme appareil Matter autonome.`,enableServerMode:`Activer le Mode Serveur`,enabling:`Activation...`,start:`Démarrer`,stop:`Arrêter`,restart:`Redémarrer`,factoryReset:`Réinitialisation d'usine`,pairingCode:`Code d'appairage`,openCommissioning:`Ouvrir la fenêtre de mise en service`,multiPair:`Appairage Multi-Fabric`,deleteBridge:`Supprimer le Bridge`,deleteConfirm:`Êtes-vous sûr de vouloir supprimer ce bridge ?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entité(s) n'ont pas pu être chargées.`,clickToShow:`Cliquez pour afficher les détails.`,clickToHide:`Cliquez pour masquer les détails.`,loadFailed:`Impossible de charger les détails du Bridge`,refreshHint:`Les nouveaux appareils et les changements de labels sont détectés toutes les 30 secondes.`,refreshingStates:`Actualisation dans {{seconds}} secondes...`,serverModeSingleDeviceNote:`Remarque : Le Mode Serveur nécessite que l'aspirateur soit le seul appareil sur ce bridge. Supprimez d'abord les autres entités, puis activez le Mode Serveur dans les paramètres du bridge.`,serverModeEnabled:`Mode Serveur activé. Le bridge va redémarrer avec votre aspirateur comme appareil autonome.`,serverModeEnableFailed:`Impossible d'activer le Mode Serveur : {{error}}`,pairing:`Appairage`,bridgeInfo:`Info Bridge`,commissioned:`Appairé`,addController:`Ajouter un autre contrôleur`,forceSync:`Forcer la synchronisation`,syncing:`Synchronisation...`,editFilters:`Modifier les filtres`,addFilters:`Ajouter des filtres`,bridgeNotRunning:`Le bridge ne fonctionne pas. Démarrez le bridge pour voir les informations d'appairage.`,manualCode:`Code manuel`,bridgeId:`ID Bridge`,passcode:`Code d'accès`,discriminator:`Discriminateur`,connectedFabrics:`Fabrics connectés ({{count}})`,noFabrics:`Aucun contrôleur connecté. Scannez le QR code avec votre contrôleur Matter.`,entityFilters:`Filtres d'entités`,noFilters:`Aucun filtre configuré. Toutes les entités prises en charge seront exposées.`,resetSuccess:`Bridge réinitialisé avec succès`,deleteSuccess:`Bridge supprimé avec succès`,confirmResetTitle:`Réinitialiser le Bridge`,confirmDeleteTitle:`Supprimer le Bridge`,importTitle:`Importer des Bridges`,overwriteExisting:`Écraser les bridges existants`,iconLabel:`Icône du Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`Mode Serveur`,autoForceSync:`Synchronisation automatique`,saveSuccess:`Bridge enregistré`,updateSuccess:`Mise à jour terminée`,exportFailed:`Échec de l'export`,actionStarted:`Démarré`,actionStopped:`Arrêté`,actionRestarted:`Redémarré`,actionFailed:`{{action}} échoué`,actionResult:`{{label}} {{count}} bridge(s)`,couldNotLoad:`Impossible de charger les bridges`,showingFirst:`Affichage des {{count}} premiers`,importParseFailed:`Impossible d'analyser le fichier d'import. Veuillez sélectionner un fichier d'export valide.`,importing:`Importation...`,importCount:`Importer {{count}} bridge(s)`,jsonEditor:`Éditeur JSON`,formEditor:`Éditeur de formulaire`},endpoints:{title:`Points de terminaison`,searchPlaceholder:`Rechercher des endpoints...`,sortBy:`Trier`,sortName:`Nom`,sortEndpoint:`ID Endpoint`,sortType:`Type`,cardView:`Vue en cartes`,treeView:`Vue arborescente`,clusters:`Clusters`,entityUnavailable:`Entité indisponible`,showUnavailable:`Afficher {{count}} indisponibles`,showAll:`Afficher toutes les entités`,uploadImage:`Télécharger une image d'appareil`,removeImage:`Supprimer l'image personnalisée`,editMapping:`Modifier le mappage d'entité`,homeAssistantEntity:`Entité Home Assistant`,noEndpoints:`Aucun endpoint trouvé.`,expandAll:`Tout développer`,collapseAll:`Tout réduire`,viewAll:`Voir tous les appareils`,haState:`État HA`,aboutEndpoint:`À propos de cet endpoint`,entityId:`ID Entité`,customName:`Nom personnalisé`,deviceTypeOverride:`Remplacement du type d'appareil`,keyHaAttributes:`Attributs HA clés`,entityMappings:`Mappages d'entités`,copyData:`Copier les données dans le presse-papiers`,behavior:`Comportement`},health:{title:`Santé & Diagnostics`,version:`Version`,uptime:`Temps de fonctionnement`,homeAssistant:`Home Assistant`,connected:`Connecté`,disconnected:`Déconnecté`,bridgeStatus:`Statut des Bridges`,refreshHealth:`Actualiser les données de santé`,exportDiagnostic:`Exporter le diagnostic`,memory:`Mémoire`,fabricDetails:`Détails Fabric`,sessions:`Sessions`,subscriptions:`Abonnements`,noFabrics:`Aucun fabric connecté`,systemMetrics:`Métriques système`,heap:`Heap`,rss:`RSS`,external:`Externe`,systemHealth:`Santé du système`,fetchFailed:`Impossible de récupérer l'état de santé`,connectionError:`Erreur de connexion`,exportFailed:`Impossible d'exporter les données de diagnostic`,restartFailed:`Impossible de redémarrer le bridge`,unableToLoad:`Impossible de charger l'état de santé`,sortBy:`Trier par`,created:`Créé`,ascending:`Croissant`,descending:`Décroissant`,connectedTo:`Connecté à`,autoRecovery:`Récupération automatique`,recoveryAttempts:`Tentatives de récupération`},mapping:{title:`Mappages d'entités`,entityId:`ID Entité`,deviceType:`Type d'appareil`,customName:`Nom personnalisé`,status:`Statut`,addMapping:`Ajouter un mappage`,editMapping:`Modifier le mappage`,deleteMapping:`Supprimer le mappage`,saved:`Mappage enregistré pour {{entityId}}. Redémarrez le bridge pour appliquer les modifications.`,saveFailed:`Impossible d'enregistrer le mappage : {{error}}`,deleted:`Mappage supprimé pour {{entityId}}.`,deleteFailed:`Impossible de supprimer le mappage.`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},languageSwitcher:{disclaimer:`Les traductions peuvent être incomplètes.`,contribute:`Aidez à les améliorer !`},translationEditor:{title:`Éditeur de traductions`,editLanguage:`Langue à modifier`,info:`Modifiez les traductions directement dans votre navigateur. Les modifications sont enregistrées localement et appliquées instantanément. Exportez vos traductions pour les soumettre au projet.`,progress:`{{translated}} / {{total}} clés traduites`,localEdits:`{{count}} modification(s) locale(s)`,searchPlaceholder:`Rechercher des clés ou valeurs...`,filterAll:`Toutes les clés`,filterMissing:`Manquantes`,filterEdited:`Modifiées`,exportJson:`Exporter JSON`,copyJson:`Copier JSON`,copied:`Copié !`,resetAll:`Réinitialiser toutes les modifications`,resetKey:`Réinitialiser par défaut`,noResults:`Aucune clé de traduction correspondante trouvée.`,addLanguage:`Ajouter une langue`,newLanguageCode:`Code langue (ex. pt, ja, ko)`,newLanguageName:`Nom de la langue (ex. Português)`,addLanguageButton:`Ajouter`,languageExists:`Cette langue existe déjà.`,codeRequired:`Le code langue est requis.`,nameRequired:`Le nom de la langue est requis.`,removeLanguage:`Supprimer la langue`,importJson:`Importer JSON`,importSuccess:`{{count}} traduction(s) importée(s).`,importFailed:`Échec de l'import : format JSON invalide.`},notFound:{title:`Page introuvable`,description:`La page que vous recherchez n'existe pas.`,backToDashboard:`Retour au tableau de bord`},footer:{github:`GitHub`,documentation:`Documentation`}},_s={common:{loading:`Caricamento`,notFound:`Non trovato`,save:`Salva`,cancel:`Annulla`,delete:`Elimina`,edit:`Modifica`,close:`Chiudi`,refresh:`Aggiorna`,search:`Cerca`,enabled:`Abilitato`,disabled:`Disabilitato`,online:`Online`,offline:`Offline`,running:`In esecuzione`,stopped:`Arrestato`,failed:`Fallito`,starting:`Avvio`,devices:`Dispositivi`,fabrics:`Fabrics`,port:`Porta`,unknown:`Sconosciuto`,confirm:`Conferma`,create:`Crea`,back:`Indietro`,next:`Avanti`,actions:`Azioni`,name:`Nome`,type:`Tipo`,error:`Errore`,version:`Versione`,copy:`Copia`,copied:`Copiato!`,copyId:`Copia ID`,later:`Più tardi`,skip:`Salta`,reset:`Ripristina`,update:`Aggiorna`,all:`Tutti`,ascending:`Crescente`,descending:`Decrescente`,moveUp:`Sposta su`,moveDown:`Sposta giù`,selectAll:`Seleziona tutto`,selectNone:`Deseleziona tutto`,live:`Live`,new:`Nuovo`,overwrite:`Sovrascrivi`,active:`Attivo`,property:`Proprietà`,value:`Valore`,custom:`Personalizzato`,startAll:`Avvia tutti`,stopAll:`Arresta tutti`,restartAll:`Riavvia tutti`,import:`Importa`,export:`Esporta`,exportAll:`Esporta tutto`,wizard:`Procedura guidata`},nav:{bridges:`Bridges`,devices:`Tutti i dispositivi`,health:`Stato & Diagnostica`,diagnostics:`Eventi in tempo reale`,settings:`Impostazioni`,networkMap:`Mappa di rete`,logs:`Log`,startupOrder:`Ordine di avvio`,lockCredentials:`Credenziali serratura`,filterReference:`Riferimento filtri`,systemLogs:`Log di sistema`,lightMode:`Modalità chiara`,darkMode:`Modalità scura`},status:{error:`Errore`,unhealthy:`Non integro`,noBridges:`Nessun Bridge`,loadingHealth:`Caricamento stato di salute...`,unknown:`Sconosciuto`},errorBoundary:{title:`Qualcosa è andato storto`,fallbackMessage:`Si è verificato un errore imprevisto.`,reload:`Ricarica pagina`},settings:{title:`Impostazioni`,language:`Lingua`,languageDescription:`Seleziona la lingua dell'interfaccia.`,checkUpdates:`Controlla aggiornamenti`,backupRestore:`Backup e ripristino`,exportBackup:`Esporta backup`,importBackup:`Importa backup`,dangerZone:`Zona pericolosa`,resetAll:`Ripristina tutto`,about:`Informazioni`},dashboard:{title:`Dashboard`,systemOverview:`Panoramica del sistema`,quickActions:`Azioni rapide`,bridgeOverview:`Panoramica dei Bridge`,noBridges:`Nessun bridge configurato.`,createBridge:`Crea Bridge`,viewAll:`Mostra tutto`,totalDevices:`Dispositivi totali`,customize:`Personalizza`,startAll:`Avvia tutti`,stopAll:`Arresta tutti`,restartAll:`Riavvia tutti`,welcome:`Benvenuto su Home Assistant Matter Hub`,welcomeDescription:`Collega i tuoi dispositivi Home Assistant ai controller Matter come Apple Home, Google Home e Amazon Alexa.`,bridgeWizard:`Procedura guidata Bridge`,setupByArea:`Configura per area`,manualSetup:`Configurazione manuale`,areaSetup:`Configurazione area`,documentation:`Documentazione`,quickNavigation:`Navigazione rapida`,haConnection:`Connessione HA`,startupOrder:`Ordine di avvio`,lockCredentials:`Credenziali serratura`,filterReference:`Riferimento filtri`,successMessage:`I tuoi bridge sono connessi a {{count}} fabric controller. I dispositivi dovrebbero ora apparire nella tua app.`,noBridgesHint:`Nessun bridge configurato. Usa la procedura guidata o creane uno manualmente.`,customizeDashboard:`Personalizza dashboard`},bridge:{name:`Nome Bridge`,port:`Porta`,status:`Stato`,pairHint:`Associa questo bridge al tuo controller`,pairDescription:`Apri la tua app controller (Apple Home, Google Home o Amazon Alexa), aggiungi un nuovo accessorio e scansiona il codice QR o inserisci il codice di abbinamento manuale. Assicurati che il controller sia sulla stessa rete di Home Assistant.`,failedEntities:`Entità fallite`,serverModeRecommended:`Modalità Server consigliata per aspirapolvere robot`,serverModeDescription:`Questo bridge contiene un aspirapolvere robot in modalità bridge. Apple Home e Alexa mostreranno il bridge come dispositivo aggiuntivo, creando duplicati. Abilita la Modalità Server per esporre l'aspirapolvere come dispositivo Matter autonomo.`,enableServerMode:`Abilita Modalità Server`,enabling:`Abilitazione...`,start:`Avvia`,stop:`Arresta`,restart:`Riavvia`,factoryReset:`Ripristino di fabbrica`,pairingCode:`Codice di abbinamento`,openCommissioning:`Apri finestra di commissioning`,multiPair:`Abbinamento Multi-Fabric`,deleteBridge:`Elimina Bridge`,deleteConfirm:`Sei sicuro di voler eliminare questo bridge?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entità non sono state caricate.`,clickToShow:`Clicca per mostrare i dettagli.`,clickToHide:`Clicca per nascondere i dettagli.`,loadFailed:`Impossibile caricare i dettagli del Bridge`,refreshHint:`Nuovi dispositivi e modifiche alle etichette vengono rilevati ogni 30 secondi.`,refreshingStates:`Aggiornamento tra {{seconds}} secondi...`,serverModeSingleDeviceNote:`Nota: La Modalità Server richiede che l'aspirapolvere sia l'unico dispositivo su questo bridge. Rimuovi prima le altre entità, poi abilita la Modalità Server nelle impostazioni del bridge.`,serverModeEnabled:`Modalità Server abilitata. Il bridge si riavvierà con il tuo aspirapolvere come dispositivo autonomo.`,serverModeEnableFailed:`Impossibile abilitare la Modalità Server: {{error}}`,pairing:`Abbinamento`,bridgeInfo:`Info Bridge`,commissioned:`Abbinato`,addController:`Aggiungi un altro controller`,forceSync:`Forza sincronizzazione`,syncing:`Sincronizzazione...`,editFilters:`Modifica filtri`,addFilters:`Aggiungi filtri`,bridgeNotRunning:`Il bridge non è in esecuzione. Avvia il bridge per vedere le informazioni di abbinamento.`,manualCode:`Codice manuale`,bridgeId:`ID Bridge`,passcode:`Codice di accesso`,discriminator:`Discriminatore`,connectedFabrics:`Fabric connessi ({{count}})`,noFabrics:`Nessun controller connesso. Scansiona il codice QR con il tuo controller Matter.`,entityFilters:`Filtri entità`,noFilters:`Nessun filtro configurato. Tutte le entità supportate saranno esposte.`,resetSuccess:`Bridge ripristinato con successo`,deleteSuccess:`Bridge eliminato con successo`,confirmResetTitle:`Ripristina Bridge`,confirmDeleteTitle:`Elimina Bridge`,importTitle:`Importa Bridge`,overwriteExisting:`Sovrascrivi bridge esistenti`,iconLabel:`Icona Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`Modalità Server`,autoForceSync:`Sincronizzazione automatica`,saveSuccess:`Bridge salvato`,updateSuccess:`Aggiornamento completato`,exportFailed:`Esportazione fallita`,actionStarted:`Avviato`,actionStopped:`Arrestato`,actionRestarted:`Riavviato`,actionFailed:`{{action}} fallito`,actionResult:`{{label}} {{count}} bridge`,couldNotLoad:`Impossibile caricare i bridge`,showingFirst:`Mostro i primi {{count}}`,importParseFailed:`Impossibile analizzare il file di importazione. Seleziona un file di esportazione valido.`,importing:`Importazione...`,importCount:`Importa {{count}} bridge`,jsonEditor:`Editor JSON`,formEditor:`Editor modulo`},endpoints:{title:`Endpoint`,searchPlaceholder:`Cerca endpoint...`,sortBy:`Ordina`,sortName:`Nome`,sortEndpoint:`ID Endpoint`,sortType:`Tipo`,cardView:`Vista schede`,treeView:`Vista ad albero`,clusters:`Cluster`,entityUnavailable:`Entità non disponibile`,showUnavailable:`Mostra {{count}} non disponibili`,showAll:`Mostra tutte le entità`,uploadImage:`Carica immagine dispositivo`,removeImage:`Rimuovi immagine personalizzata`,editMapping:`Modifica mappatura entità`,homeAssistantEntity:`Entità Home Assistant`,noEndpoints:`Nessun endpoint trovato.`,expandAll:`Espandi tutto`,collapseAll:`Comprimi tutto`,viewAll:`Vedi tutti i dispositivi`,haState:`Stato HA`,aboutEndpoint:`Informazioni su questo endpoint`,entityId:`ID Entità`,customName:`Nome personalizzato`,deviceTypeOverride:`Override tipo dispositivo`,keyHaAttributes:`Attributi HA chiave`,entityMappings:`Mappature entità`,copyData:`Copia dati negli appunti`,behavior:`Comportamento`},health:{title:`Stato & Diagnostica`,version:`Versione`,uptime:`Tempo di attività`,homeAssistant:`Home Assistant`,connected:`Connesso`,disconnected:`Disconnesso`,bridgeStatus:`Stato Bridge`,refreshHealth:`Aggiorna dati di salute`,exportDiagnostic:`Esporta diagnostica`,memory:`Memoria`,fabricDetails:`Dettagli Fabric`,sessions:`Sessioni`,subscriptions:`Abbonamenti`,noFabrics:`Nessun fabric connesso`,systemMetrics:`Metriche di sistema`,heap:`Heap`,rss:`RSS`,external:`Esterno`,systemHealth:`Salute del sistema`,fetchFailed:`Impossibile recuperare lo stato di salute`,connectionError:`Errore di connessione`,exportFailed:`Impossibile esportare i dati di diagnostica`,restartFailed:`Impossibile riavviare il bridge`,unableToLoad:`Impossibile caricare lo stato di salute`,sortBy:`Ordina per`,created:`Creato`,ascending:`Crescente`,descending:`Decrescente`,connectedTo:`Connesso a`,autoRecovery:`Recupero automatico`,recoveryAttempts:`Tentativi di recupero`},mapping:{title:`Mappature entità`,entityId:`ID Entità`,deviceType:`Tipo dispositivo`,customName:`Nome personalizzato`,status:`Stato`,addMapping:`Aggiungi mappatura`,editMapping:`Modifica mappatura`,deleteMapping:`Elimina mappatura`,saved:`Mappatura salvata per {{entityId}}. Riavvia il bridge per applicare le modifiche.`,saveFailed:`Impossibile salvare la mappatura: {{error}}`,deleted:`Mappatura eliminata per {{entityId}}.`,deleteFailed:`Impossibile eliminare la mappatura.`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},languageSwitcher:{disclaimer:`Le traduzioni potrebbero essere incomplete.`,contribute:`Aiutaci a migliorarle!`},translationEditor:{title:`Editor traduzioni`,editLanguage:`Lingua da modificare`,info:`Modifica le traduzioni direttamente nel browser. Le modifiche vengono salvate localmente e applicate immediatamente. Esporta le tue traduzioni per inviarle al progetto.`,progress:`{{translated}} / {{total}} chiavi tradotte`,localEdits:`{{count}} modifica/e locale/i`,searchPlaceholder:`Cerca chiavi o valori...`,filterAll:`Tutte le chiavi`,filterMissing:`Mancanti`,filterEdited:`Modificate`,exportJson:`Esporta JSON`,copyJson:`Copia JSON`,copied:`Copiato!`,resetAll:`Ripristina tutte le modifiche`,resetKey:`Ripristina predefinito`,noResults:`Nessuna chiave di traduzione corrispondente trovata.`,addLanguage:`Aggiungi lingua`,newLanguageCode:`Codice lingua (es. pt, ja, ko)`,newLanguageName:`Nome lingua (es. Português)`,addLanguageButton:`Aggiungi`,languageExists:`Questa lingua esiste già.`,codeRequired:`Il codice lingua è obbligatorio.`,nameRequired:`Il nome della lingua è obbligatorio.`,removeLanguage:`Rimuovi lingua`,importJson:`Importa JSON`,importSuccess:`{{count}} traduzione/i importata/e.`,importFailed:`Importazione fallita: formato JSON non valido.`},notFound:{title:`Pagina non trovata`,description:`La pagina che stai cercando non esiste.`,backToDashboard:`Torna alla dashboard`},footer:{github:`GitHub`,documentation:`Documentazione`}},vs={common:{loading:`読み込み中`,notFound:`見つかりませんでした`,save:`保存`,cancel:`キャンセル`,delete:`削除`,edit:`編集`,close:`閉じる`,refresh:`再読み込み`,search:`検索`,enabled:`有効`,disabled:`無効`,online:`オンライン`,offline:`オフライン`,running:`動作中`,stopped:`停止済み`,failed:`失敗`,starting:`起動中`,devices:`デバイス`,fabrics:`ファブリック`,port:`ポート`,unknown:`不明`,confirm:`適用`,create:`作成`,back:`戻る`,next:`次へ`,actions:`アクション`,name:`名前`,type:`タイプ`,error:`エラー`,version:`バージョン`,copy:`コピー`,copied:`コピーしました!`,copyId:`IDのコピー`,later:`後で`,skip:`スキップ`,reset:`リセット`,update:`更新`,all:`すべて`,ascending:`昇順`,descending:`降順`,moveUp:`上に移動`,moveDown:`下に移動`,selectAll:`すべて選択`,selectNone:`未選択`,live:`ライブ`,new:`新しい`,overwrite:`上書き`,active:`アクティブ`,property:`プロパティ`,value:`値`,custom:`カスタム`,startAll:`すべて起動`,stopAll:`すべて停止`,restartAll:`すべて再起動`,import:`インポート`,export:`エクスポート`,exportAll:`すべてエクスポート`,wizard:`ウィザード`},nav:{bridges:`ブリッジ`,devices:`すべてのデバイス`,health:`健康状態と診断`,diagnostics:`ライブイベント`,settings:`設定`,networkMap:`ネットワークマップ`,logs:`ログ`,startupOrder:`開始の順序`,lockCredentials:`スマートロックの認証情報`,filterReference:`フィルター値を参照`,systemLogs:`システムログ`,lightMode:`ライトモード`,darkMode:`ダークモード`},status:{error:`エラー`,unhealthy:`不健康`,noBridges:`ブリッジなし`,loadingHealth:`健康状態を読み込んでいます...`,unknown:`不明`},errorBoundary:{title:`何かがうまくいかなかったようです`,fallbackMessage:`予期しないエラーが発生しました。`,reload:`ページを再読み込み`},settings:{title:`設定`,language:`言語`,languageDescription:`UIの言語を選択してください。`,checkUpdates:`アップデートを確認`,backupRestore:`バックアップと復元`,exportBackup:`バックアップを書き出す`,importBackup:`バックアップを読み込む`,dangerZone:`危険なゾーン`,resetAll:`すべて再起動`,about:`について`,username:`ユーザー名`,password:`パスワード`,enterNewPassword:`新しいパスワード`,enableAuth:`認証を有効にする`,disableAuth:`認証を無効にする`,disableAuthMessage:`この操作により、Web UI からパスワード保護が削除されます。ネットワーク上の誰でもブリッジ設定にアクセスでき、変更できるようになります。`,disableAuthConfirm:`認証を無効化`,usernamePasswordRequired:`ユーザー名とパスワードが必要です`,authSaveFailed:`認証設定の保存に失敗しました`,authLoadFailed:`認証設定の読み込みに失敗しました`,authDisabled:`認証は無効になっています。`,authRemoveFailed:`認証設定の削除に失敗しました`},dashboard:{title:`ダッシュボード`,systemOverview:`システムの概要`,quickActions:`クイックアクション`,bridgeOverview:`ブリッジの概要`,noBridges:`ブリッジがまだ構成されていません。`,createBridge:`ブリッジを作成`,viewAll:`すべて表示`,totalDevices:`合計デバイス`,customize:`カスタマイズ`,startAll:`すべて開始`,stopAll:`すべて停止`,restartAll:`すべて再起動`,welcome:`Home Assistant Matter Hub へようこそ`,welcomeDescription:`Home AssistantのデバイスをApple HomeやGoogle Home、Amazon AlexaなどのMatterコントローラーに接続できます。`,bridgeWizard:`ブリッジ構成ウィザード`,setupByArea:`エリアでセットアップ`,manualSetup:`手動で構成`,areaSetup:`エリアで構成`,documentation:`ドキュメント`,quickNavigation:`クイックナビゲーション`,haConnection:`HAコネクション`,startupOrder:`ブリッジの起動順序`,lockCredentials:`スマートロックの認証情報`,filterReference:`フィルター値を参照`,successMessage:`ブリッジは {{count}} 個のコントローラーに接続されています。デバイスは現在、コントローラーアプリに表示されているはずです。`,noBridgesHint:`ブリッジがまだ構成されていません。ブリッジウィザードを使用するか、手動で作成してください。`,customizeDashboard:`ダッシュボードのカスタマイズ`,bridgeStatusRunning:`{{running}} 動作中`,bridgeStatusFailed:`{{failed}} 失敗`,devicesFailed:`{{count}} 失敗`,uptimeFormat:`稼働時間 {{time}}`},bridge:{name:`ブリッジ名`,port:`ポート`,status:`状態`,pairHint:`このブリッジをコントローラーとペアリングしてください`,pairDescription:`コントローラーアプリ(Apple HomeやGoogle Home、Amazon Alexaなど)を開き、新しいアクセサリを追加から、QRコードをスキャンするか、手動ペアリングコードを入力してください。また、コントローラーがHome Assistantと同じネットワークに接続されていることを確認してください。`,failedEntities:`失敗したエンティティ`,serverModeRecommended:`ロボット掃除機が含まれている場合、サーバーモードが推奨されます`,serverModeDescription:`このブリッジには、ロボット掃除機が含まれています。Apple HomeとAlexaでは、このブリッジが追加デバイスとして表示されるため、重複したエントリが発生します。サーバーモードを有効にすると、掃除機が単一のMatterデバイスとして認識されるため、Siri/Alexaの音声コマンドに完全対応し、重複したエントリも表示されなくなります。`,enableServerMode:`サーバーモードを有効にする`,enabling:`有効化しています...`,start:`起動`,stop:`停止`,restart:`再起動`,factoryReset:`初期状態にリセット`,pairingCode:`ペアリングコード`,openCommissioning:`コミッショニングウィンドウを開く`,multiPair:`マルチファブリックペアリング`,deleteBridge:`ブリッジを削除`,deleteConfirm:`本当にこのブリッジを削除しますか?`,featureFlags:`機能フラグ`,failedEntitiesCount:`{{count}} エンティティをロードできませんでした。`,clickToShow:`クリックして詳細を表示`,clickToHide:`クリックして詳細を隠す`,loadFailed:`ブリッジの詳細の読み込みに失敗しました`,refreshHint:`新しいデバイスやラベルの変更は、30秒ごとに検出されます。`,refreshingStates:`あと {{seconds}} 秒で状態を更新...`,serverModeSingleDeviceNote:`注:サーバーモードを使用する場合、このブリッジ上のデバイスはロボット掃除機のみである必要があります。まず、このブリッジから他のデバイスを削除してから、ブリッジの設定でサーバーモードを有効にしてください。`,serverModeEnabled:`サーバーモードが有効になりました。ブリッジはロボット掃除機のみで単一のデバイスとして再起動します。`,serverModeEnableFailed:`サーバーモードの有効化に失敗しました: {{error}}`,pairing:`ペアリング`,bridgeInfo:`ブリッジ情報`,commissioned:`接続済み`,addController:`別のコントローラーを追加`,openingCommissioning:`コミッショニングウィンドウを開いています...`,fabricTooltip:`ファブリックは、Matterコントローラー(例:Apple Home、Google Home、Alexa)との接続を表すものです。各コントローラーはペアリングされると、1つのファブリックを作成します。`,forceSync:`強制的に同期`,syncing:`同期中...`,forceSyncTooltip:`すべての現在のデバイス状態を接続されているコントローラに同期する`,editFilters:`フィルターを編集`,addFilters:`フィルターを追加`,bridgeNotRunning:`ブリッジが起動していません。ブリッジを起動し、ペアリング情報を確認してください。`,manualCode:`手動ペアリングコード`,openingWindow:`コミッショニングウィンドウを開いています...`,bridgeId:`ブリッジID`,passcode:`パスコード`,discriminator:`識別子`,connectedFabrics:`接続済みのファブリック ({{count}})`,noFabrics:`コントローラが接続されていません。MatterコントローラーでQRコードをスキャンして、このブリッジをペアリングしてください。`,entityFilters:`エンティティフィルター`,noFilters:`フィルターが設定されていません。サポートされているすべてのエンティティが公開されます。`,scanQrCode:`Matterコントローラー(Apple Home、Google Home、Alexaなど)でこのQRコードをスキャンして、このブリッジを別のエコシステムに追加してください。`,appleHomeWarning:`このブリッジは拡張フラットモードを使用しています。Apple Home のみを使用している場合にのみ、無効にしてください。`,googleHomeWarning:`これにより、Apple Home および Google Home に問題が生じる可能性があります。`,resetSuccess:`ブリッジのリセットに成功しました`,deleteSuccess:`ブリッジの削除に成功しました`,confirmResetTitle:`ブリッジを初期状態にリセット`,confirmResetMessage:`これにより、すべてのペアリング情報が削除され、ブリッジが初期状態にリセットされます。接続されているコントローラはアクセスを失います。この操作は元に戻せません。`,confirmDeleteTitle:`ブリッジを削除`,confirmDeleteMessage:`これにより、ブリッジとそのすべてのペアリング、およびエンティティマッピングが永久に削除されます。接続されているコントローラはアクセスを失います。この操作は元に戻せません。`,importTitle:`ブリッジを読み込む`,overwriteExisting:`既存のブリッジを上書きする`,iconLabel:`ブリッジアイコン`,google:`Google`,alexa:`Alexa`,serverMode:`サーバーモード`,autoForceSync:`自動強制同期`,saveSuccess:`ブリッジを保存しました`,updateSuccess:`アップデートが完了しました`,exportFailed:`書き出しに失敗しました`,actionStarted:`起動済み`,actionStopped:`停止済み`,actionRestarted:`再起動済み`,actionFailed:`{{action}} 失敗`,actionResult:` {{label}} {{count}} ブリッジ`,couldNotLoad:`ブリッジを読み込めませんでした`,showingFirst:`最初の {{count}} を表示中`,importParseFailed:`読み込んだファイルの解析に失敗しました。有効なエクスポートしたファイルを選んでください。`,importing:`インポート中...`,importCount:`{{count}} ブリッジをインポート`,jsonEditor:`JSONエディター`,formEditor:`フォームエディター`},endpoints:{title:`エンドポイント`,searchPlaceholder:`エンドポイントを検索...`,sortBy:`並び替え`,sortName:`名前`,sortEndpoint:`エンドポイントID`,sortType:`タイプ`,cardView:`カードビュー`,treeView:`ツリービュー`,clusters:`クラスター`,entityUnavailable:`エンティティが利用できません`,showUnavailable:`{{count}} の利用不可を表示`,showAll:`すべてのエンティティを表示`,uploadImage:`デバイスイメージをアップロード`,removeImage:`カスタムイメージを削除`,editMapping:`エンティティマッピングを編集`,homeAssistantEntity:`Home Assistant エンティティ`,noEndpoints:`エンドポイントが見つかりませんでした。`,expandAll:`すべて展開`,collapseAll:`すべて折りたたむ`,viewAll:`すべてのデバイスを見る`,haState:`HAでの状態`,aboutEndpoint:`このエンドポイントについて`,entityId:`エンティティID`,customName:`カスタム名`,deviceTypeOverride:`デバイスタイプの上書き`,keyHaAttributes:`主要なHAの属性`,entityMappings:`エンティティマッピング`,copyData:`データをクリップボードにコピー`,behavior:`振る舞い`},health:{title:`健康状態と診断`,version:`バージョン`,uptime:`稼働時間`,homeAssistant:`Home Assistant`,connected:`接続済み`,disconnected:`切断済み`,bridgeStatus:`ブリッジの状態`,refreshHealth:`健康データを更新`,exportDiagnostic:`診断を書き出す`,memory:`メモリ`,fabricDetails:`ファブリックの詳細`,sessions:`セッション`,subscriptions:`登録数`,noFabrics:`接続されているファブリックはありません`,systemMetrics:`システムメトリクス`,heap:`ヒープ`,rss:`RSS`,external:`外部`,systemHealth:`システムの健康状態`,fetchFailed:`健康状態の取得に失敗しました`,connectionError:`設定エラー`,exportFailed:`診断データの書き出しに失敗しました`,restartFailed:`ブリッジの再起動に失敗しました`,unableToLoad:`健康状態を読み込めません`,sortBy:`並び替え`,created:`作成済み`,ascending:`昇順`,descending:`降順`,connectedTo:`接続済み`,autoRecovery:`自動回復`,recoveryAttempts:`回復試行数`,fabrics:`ファブリック`,networkDiagnostics:`ネットワーク診断`,checksPassed:`合格`,checksWarning:`警告`,checksFailed:`失敗`,hideDetails:`詳細を非表示`,showDetails:`詳細を表示`,allChecks:`すべてチェック`,check:`チェック`,statusLabel:`状態`,message:`メッセージ`,networkInterfaces:`ネットワークインタフェース`,interfaceName:`インタフェース`,refresh:`更新`},mapping:{title:`エンティティマッピング`,entityId:`エンティティID`,deviceType:`デバイスタイプ`,customName:`カスタム名`,status:`状態`,addMapping:`マッピングを追加`,editMapping:`マッピングを編集`,deleteMapping:`マッピングを削除`,saved:`{{entityId}} のマッピングが保存されました。変更を保存するためにブリッジを再起動してください。`,saveFailed:`マッピングの保存に失敗しました:{{error}}`,deleted:`{{entityId}} のマッピングが削除されました。`,deleteFailed:`マッピングの削除に失敗しました。`,matterTag:`Matterタグ`,exportProfile:`マッピングプロファイルを書き出す`,importProfile:`マッピングプロファイルを読み込む`,profileName:`プロファイル名`,match:`マッチ`,existing:`存在`,autoDetect:`自動検出(デフォルト)`,customProductName:`カスタム製品名`,customProductNameHelp:`Matterコントローラに表示する製品名(モデル)を上書きします。一部のコントローラ(Aqaraなど)はこれをデバイス名として表示します。`,customVendorName:`カスタムベンダー名`,customVendorNameHelp:`Matterコントローラに表示するベンダー/メーカー名を上書きします。`,customSerialNumber:`カスタムシリアルナンバー`,customSerialNumberHelp:`Matterコントローラに表示するシリアル番号を上書きします。`,loadFailed:`エンティティマッピングの読み込みに失敗しました`,noMappings:`カスタムエンティティマッピングが設定されていません。マッピングを使用すると、Matter デバイスタイプを上書きしたり、カスタム名を設定したり、特定のエンティティを無効にしたりできます。`,applying:`適用中...`,applyCount:`{{count}} のマッピングを適用しました`},notFound:{title:`ページが見つかりませんでした`,description:`お探しのページは存在しません。`,backToDashboard:`ダッシュボードへ戻る`},devices:{title:`デバイス`,searchPlaceholder:`デバイスを検索...`,filterBridge:`ブリッジ`,allBridges:`すべてのブリッジ`,filterDeviceType:`デバイスタイプ`,allTypes:`すべてのタイプ`,sortBy:`並び替え`,sortBridge:`ブリッジ`,sortType:`デバイスタイプ`,sortName:`名前`,deviceCount:`{{count}} デバイス`,filteredCount:`{{total}} 中 {{filtered}} のデバイス`},diagnostics:{title:`ライブ診断`,stateUpdate:`状態アップデート`,command:`コマンド`,entityError:`エラー`,sessionOpen:`セッションオープン`,sessionClose:`セッションクローズ`,subscription:`登録`,bridgeStart:`ブリッジ起動`,bridgeStop:`ブリッジ停止`,entityWarning:`警告`,filterEvents:`イベントタイプをフィルタリング`,clearEvents:`すべてのイベントをクリア`,noEvents:`現在のフィルターに一致するイベントはありません。`},startup:{title:`ブリッジの起動順序`,description:`ドラッグ&ドロップでブリッジの起動順序をセットしてください。小さい番号から先に起動されます。`,saveSuccess:`起動順序の保存に成功しました`,saveFailed:`起動順序の保存に失敗しました`,saveChanges:`変更を保存`,unsavedChanges:`未保存の起動順序の変更があります。`,noBridges:`ブリッジがまだ構成されていません。`,saveOrder:`起動順序を保存`},areaSetup:{title:`エリアセットアップ`,heading:`エリアを元にしたブリッジセットアップ`,description:`Home Assistantのエリアごとに、自動的に1つのブリッジを作成します。各ブリッジには、そのエリアからサポートされているすべてのエンティティが含まれます。`,noAreas:`Home Assistant でサポートされているエンティティがあるエリアは見つかりませんでした。HA のエリアにデバイスが割り当てられていることを確認してください。`,selectController:`1. コントローラーを選択(任意)`,selectAreas:`2. エリアを選択({{total}} 中 {{selected}} 選択済み)`,clear:`クリア`,createBridges:`{{count}} ブリッジを作成`,results:`結果`,goToBridges:`ブリッジ一覧に移動`,createdSuccess:`{{count}} のブリッジの作成に成功しました`,createdPartial:`{{succeeded}} のブリッジが作成済み、 {{failed}} のブリッジは作成失敗`,loadFailed:`エリアの読み込みに失敗しました`,creating:`作成中...`,created:`作成しました`,unknownError:`不明なエラー`},lockCredentials:{title:`スマートロックの認証情報`,addCredential:`認証情報を追加`,editCredential:`ロックの認証情報を編集`,lockEntityId:`ロックのエンティティID`,lockEntityHelperText:`ロックの Home Assistant エンティティID`,pinCode:`暗証番号`,nameOptional:`名前(任意)`,namePlaceholder:`玄関`,nameHelperText:`この認証情報の名前`,entityRequired:`エンティティIDが必要です`,pinLength:`暗証番号は4-8桁である必要があります`,pinDigitsOnly:`暗証番号は数字のみでなければいけません`,saveFailed:`保存に失敗しました`,loadFailed:`認証情報の読み込みに失敗しました`,deleteFailed:`削除に失敗しました`,updateFailed:`更新に失敗しました`,enable:`有効`,disable:`無効`,confirmDeleteTitle:`認証情報を削除`,confirmDeleteMessage:`これにより {{entity}} の認証情報が永久に削除されます。この操作は元に戻せません。`},labels:{title:`フィルター値を参照`,info:`ブリッジ設定に利用可能なすべてのフィルター値を確認できます。任意の値をクリックして、クリップボードにコピーしてください。`,searchPlaceholder:`検索...`,loadFailed:`データの読み込みに失敗しました`,labelsSection:`ラベル`,labelsHint:`フィルタータイプ "entity_label" または "device_label" を使用してください。表示名またはlabel_idのどちらでも使用できます。`,noLabels:`Home Assistantからラベルが見つかりませんでした。HAの設定→ラベルからラベルを作成してください。`,displayName:`表示名`,labelId:`label_id`,areaId:`area_id`,areasSection:`エリア`,areasHint:`フィルタータイプ "area" を使用してください。エリアはMatterコントローラーの自動的な部屋割り当てにも使用されます。`,noAreas:`Home Assistantからエリアが見つかりませんでした。`,otherFilterValues:`その他のフィルター値`,domains:`ドメイン`,domainsHint:`フィルタータイプ "domain" を使用してください。`,platforms:`プラットフォーム / インテグレーション`,platformsHint:`フィルタータイプ "platform" を使用してください。`,entityCategories:`エンティティカテゴリ`,entityCategoriesHint:`フィルタータイプ "entity_category" を使用してください。`,deviceClasses:`デバイスクラス`,deviceClassesHint:`フィルタータイプ "device_class" を使用してください。`,deviceNames:`デバイス名`,deviceNamesHint:`フィルタータイプ "device_name" を使用してください。`,productNames:`製品名`,productNamesHint:`フィルタータイプ "product_name" を使用してください。`},logs:{title:`システムログ`,logLevel:`ログレベル`,error:`エラー`,warning:`警告`,info:`情報`,debug:`デバッグ`,searchPlaceholder:`ログを検索...`,noResults:`ログが見つかりません`,autoRefresh:`自動更新`},backup:{title:`バックアップと復元`,description:`ブリッジとエンティティマッピングの完全なバックアップを作成するか、または以前のバックアップから復元することができます。`,configBackup:`バックアップを作成`,configBackupDesc:`ブリッジ構成とエンティティマッピングを書き出します。`,configBackupNote:`ブリッジは復元後に再コミッションする必要があります。`,fullBackup:`完全バックアップ(識別付き)`,fullBackupDesc:`Matter の識別ファイル(キーペア、ファブリック認証情報)を含みます。`,fullBackupWarning:`復元全体にわたって、コミッショニングの状態を保持します。共有しないでください!`,restoreFromBackup:`バックアップから復元`,restoreDesc:`以前に作成したバックアップファイルをアップロードして、ブリッジと設定を復元します。`,restoreTitle:`バックアップを復元`,selectBridges:`復元するブリッジを選択してください`,overwriteExisting:`既存のブリッジを上書き`,includeMappings:`エンティティマッピングを含める`,restoreIdentities:`Matter識別情報を復元(再コミッショニングの必要はありません)`,restore:`復元`,downloadSuccess:`バックアップのダウンロードに成功しました!`,restartRequired:`再起動が必要です`,restartMessage:`バックアップからブリッジが復元されました。変更を有効にするには、再起動が必要です。`,restartNote:`アプリケーションが再起動されるため、このページを再読み込みする必要がある可能性があります。`,restartNow:`今すぐ再起動`,storedBackups:`保存されているバックアップ`,createSnapshot:`バックアップを作成`,noSnapshots:`まだ保存されたバックアップはありません。バックアップはシャットダウン時に自動的に作成されるか、または手動で作成することもできます。`,downloadSnapshot:`ダウンロード`,restoreSnapshot:`復元`,auto:`自動`,manual:`手動`,snapshotCreated:`バックアップの作成に成功しました!`,snapshotRestored:`{{bridges}} のブリッジ、 {{mappings}} のマッピング、 {{identities}} の識別を復元済みです。`,confirmRestore:`復元を確認`,confirmRestoreMessage:`本当に "{{filename}}" から復元しますか?これにより、現在の設定が上書きされます。`,restoreWarning:`既存のすべてのブリッジと設定はすべて上書きされます。復元後は再起動が必要です。`,confirmDelete:`バックアップを削除`,confirmDeleteMessage:`本当に "{{filename}}" を削除しますか?この操作は取り消せません。`,settings:`バックアップの設定`,autoBackupLabel:`自動バックアップ`,autoBackupDesc:`アプリがシャットダウンまたは再起動した際に、自動的に完全バックアップを作成します。`,retentionCount:`バックアップの保持数`,retentionCountDesc:`バックアップの保持数(古い物から自動的に削除されます)`},networkMap:{title:`ネットワークマップ`,hubLabel:`HAMH`,undoMove:`直前の操作を元に戻す`,resetLayout:`レイアウトをリセット`,refreshData:`データを更新`,fullscreen:`フルスクリーン`,exitFullscreen:`フルスクリーンを終了`,legend:`図の説明`,controller:`コントローラ`,hub:`HAMHハブ`,bridge:`ブリッジ`,device:`デバイス`,failed:`失敗`},updateChecker:{title:`ソフトウェアアップデート`,checkNow:`今すぐ確認する`,currentVersion:`現在のバージョン`,latestVersion:`最新のバージョン`,updateAvailable:`アップデートが利用可能になりました!`,upToDate:`既に最新のバージョンを実行しています。`,releaseNotes:`リリースノート`,notAvailable:`このバージョンではアップデートの確認が利用できません`,checkFailed:`アップデートの確認に失敗しました`,unreachable:`サーバーに接続できません`,instructionAddon:`Home Assistantの設定 → アドオン(アプリ)から更新できます。`,instructionDocker:`最新のイメージを取得し、コンテナを再作成してください。`,instructionNpm:`実行:npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`ブリッジ構成ウィザード`,stepTemplate:`テンプレート`,stepController:`コントローラー`,stepBridgeInfo:`ブリッジ情報`,stepEntityFilter:`エンティティフィルター`,stepFeatureFlags:`機能フラグ`,stepReview:`確認と作成`,autoCompose:`自動構成デバイス`,autoForceSyncFlag:`自動強制同期`,invertCover:`カバーの方向を反転`,invertCoverDescription:`カバーの開閉の方向を逆にします。Matterコントローラでカバーの位置が間違って表示される場合に使用してください。`,includeHidden:`非表示のエンティティを含める`,includeHiddenDescription:`Home Assistantで非表示となっているエンティティも公開します。`,bridgeName:`ブリッジ名`,portLabel:`ポート`,portAutoAssign:`自動的に次に利用可能なポートが割り当てられます`,nameRequired:`ブリッジ名を入力してください`,createFailed:`ブリッジの作成に失敗しました`,bridgeInfoDescription:`ブリッジの名前とポートを指定してください。`,serverModeLabel:`サーバーモード(ロボット掃除機用)`,serverModeTooltip:`ロボット掃除機をApple Home(Siri)およびAlexaで使用するために必要です。サーバーモードは1台のデバイスのみです。`,entityFilterDescription:`このブリッジに含める必要があるエンティティを設定してください。`,includeAll:`すべてのエンティティを含める(ワイルドカード)`,entityId:`エンティティID`,includePattern:`パターンを含める`,entityFilters:`エンティティフィルター`,serverModeEntityHint:`サーバーモードは1台のデバイスのみです。正確なエンティティIDを入力してください。(例:vacuum.my_vacuum)`,templatePreConfigured:`テンプレートによって事前に構成されています。作成後、フルエディターで編集してください。`,wildcardHint:`すべて選択したい場合にそのままアスタリスク「*」 を使用するか、次のように「*」を使用してください:「light.* 」「switch.*」`,commaHint:`コンマで区切られている特定のエンティティIDを入力してください`,excludePatterns:`除外するパターン(任意)`,excludeHelperText:`除外するパターンをカンマ「,」で区切ります`,skipTemplate:`テンプレートをスキップ`,creating:`作成中です...`,createBridge:`ブリッジを作成`,searchRules:`ルールを検索...`,templateDescription:`テンプレートを選択してブリッジを作成するか、スキップしてカスタムのブリッジを作成できます。`,controllerDescription:`どのMatterコントローラーを使用しますか?これにより、コントローラーの機能フラグが最適化されます。`,controllerHint:`次のステップやブリッジ作成後でも、いつでも機能フラグを調整できます。`,templateApplied:`テンプレート"{{name}}"が適用されました。名前とポートをカスタマイズしてください。`,filterPreConfiguredFrom:`フィルターは"{{name}}"テンプレートで事前に設定されています。以下で調整できます。`,featureFlagsDescription:`機能フラグは、デバイスがMatterコントローラーにどのように公開されるかを制御します。`,recommendedFlags:`{{name}} の機能フラグは事前に選択されています。`,selectFlags:`お使いの設定に合った機能フラグを選択してください。`,reviewDescription:`ブリッジの設定をご確認ください:`,bridgesToCreate:`作成するブリッジ({{count}})`,bridgesCreated:`{{count}} 件のブリッジがこのセッションで既に作成されています`,addAnother:`さらにブリッジを追加`},footer:{github:`GitHub`,documentation:`ドキュメント`,support:`サポート`},languageSwitcher:{disclaimer:`翻訳が不完全な場合があります。`,contribute:`改善にご協力をお願いします!`},translationEditor:{title:`翻訳エディター`,editLanguage:`言語を編集`,info:`ブラウザ上で直接翻訳を編集できます。変更はローカルに保存され、即座に適用されます。翻訳を書き出して、プロジェクトに提出してください。`,progress:`{{translated}} / {{total}} のキーが翻訳済み`,localEdits:`{{count}} ローカル編集`,searchPlaceholder:`キーまたは値を検索...`,filterAll:`全てのキー`,filterMissing:`欠落`,filterEdited:`編集済み`,exportJson:`JSONを書き出す`,copyJson:`JSONをコピー`,copied:`コピーしました!`,resetAll:`すべての編集をリセット`,resetKey:`デフォルトにリセット`,noResults:`一致する翻訳のキーが見つかりませんでした。`,addLanguage:`言語を追加`,newLanguageCode:`言語コード(例:pt, ja, ko)`,newLanguageName:`言語名(例:Português)`,addLanguageButton:`追加`,languageExists:`その言語はすでに存在しています。`,codeRequired:`言語コードが必要です。`,nameRequired:`言語名が必要です。`,removeLanguage:`言語を削除`,removeLanguageConfirm:`カスタム言語 "{{name}}" を削除しますか? この言語の全ての編集は失われます。`,importJson:`JSONを読み込む`,importSuccess:`{{count}} 翻訳を読み込みました`,importFailed:`読み込みに失敗しました:無効なJSONフォーマットです。`}},ys={common:{loading:`Ładowanie`,notFound:`Nie znaleziono`,save:`Zapisz`,cancel:`Anuluj`,delete:`Usuń`,edit:`Edytuj`,close:`Zamknij`,refresh:`Odśwież`,search:`Szukaj`,enabled:`Włączone`,disabled:`Wyłączone`,online:`Online`,offline:`Offline`,running:`Działa`,stopped:`Zatrzymane`,failed:`Niepowodzenie`,starting:`Uruchamianie`,devices:`Urządzenia`,fabrics:`Fabryki`,port:`Port`,unknown:`Nieznane`,confirm:`Potwierdź`,create:`Utwórz`,back:`Wstecz`,next:`Dalej`,actions:`Akcje`,name:`Nazwa`,type:`Typ`,error:`Błąd`,version:`Wersja`,copy:`Kopiuj`,copied:`Skopiowano!`,copyId:`Kopiuj ID`,later:`Później`,skip:`Pomiń`,reset:`Resetuj`,update:`Aktualizuj`,all:`Wszystkie`,ascending:`Rosnąco`,descending:`Malejąco`,moveUp:`Przesuń w górę`,moveDown:`Przesuń w dół`,selectAll:`Zaznacz wszystko`,selectNone:`Odznacz wszystko`,live:`Na żywo`,new:`Nowe`,overwrite:`Nadpisz`,active:`Aktywne`,property:`Właściwość`,value:`Wartość`,custom:`Własne`,startAll:`Uruchom wszystkie`,stopAll:`Zatrzymaj wszystkie`,restartAll:`Zrestartuj wszystkie`,import:`Importuj`,export:`Eksportuj`,exportAll:`Eksportuj wszystko`,wizard:`Kreator`},nav:{bridges:`Mostki`,devices:`Wszystkie urządzenia`,health:`Stan i diagnostyka`,diagnostics:`Zdarzenia na żywo`,settings:`Ustawienia`,networkMap:`Mapa sieci`,logs:`Logi`,startupOrder:`Kolejność uruchamiania`,lockCredentials:`Dane dostępu do zamków`,filterReference:`Referencja filtrów`,systemLogs:`Logi systemowe`,lightMode:`Tryb jasny`,darkMode:`Tryb ciemny`},status:{error:`Błąd`,unhealthy:`Niezdrowy`,noBridges:`Brak mostków`,loadingHealth:`Ładowanie stanu zdrowia...`,unknown:`Nieznany`},errorBoundary:{title:`Coś poszło nie tak`,fallbackMessage:`Wystąpił nieoczekiwany błąd.`,reload:`Odśwież stronę`},settings:{title:`Ustawienia`,language:`Język`,languageDescription:`Wybierz język interfejsu.`,checkUpdates:`Sprawdź aktualizacje`,backupRestore:`Kopia i przywracanie`,exportBackup:`Eksportuj kopię`,importBackup:`Importuj kopię`,dangerZone:`Strefa zagrożenia`,resetAll:`Resetuj wszystko`,about:`O aplikacji`,username:`Nazwa użytkownika`,password:`Hasło`,enterNewPassword:`Wpisz nowe hasło`,enableAuth:`Włącz uwierzytelnianie`,disableAuth:`Wyłącz uwierzytelnianie`,disableAuthMessage:`To usunie ochronę hasłem z interfejsu WWW. Każda osoba w Twojej sieci będzie mogła uzyskać dostęp i modyfikować konfigurację mostków.`,disableAuthConfirm:`Wyłącz uwierzytelnianie`,usernamePasswordRequired:`Nazwa użytkownika i hasło są wymagane`,authSaveFailed:`Nie udało się zapisać ustawień uwierzytelniania`,authLoadFailed:`Nie udało się wczytać ustawień uwierzytelniania`,authDisabled:`Uwierzytelnianie wyłączone.`,authRemoveFailed:`Nie udało się usunąć ustawień uwierzytelniania`},dashboard:{title:`Pulpit`,systemOverview:`Przegląd systemu`,quickActions:`Szybkie akcje`,bridgeOverview:`Przegląd mostków`,noBridges:`Nie skonfigurowano jeszcze żadnych mostków.`,createBridge:`Utwórz mostek`,viewAll:`Zobacz wszystkie`,totalDevices:`Łącznie urządzeń`,customize:`Dostosuj`,startAll:`Uruchom wszystkie`,stopAll:`Zatrzymaj wszystkie`,restartAll:`Zrestartuj wszystkie`,welcome:`Witamy w Home Assistant Matter Hub`,welcomeDescription:`Połącz swoje urządzenia Home Assistant z kontrolerami Matter, takimi jak Apple Home, Google Home i Amazon Alexa.`,bridgeWizard:`Kreator mostka`,setupByArea:`Konfiguracja wg obszaru`,manualSetup:`Konfiguracja ręczna`,areaSetup:`Konfiguracja obszaru`,documentation:`Dokumentacja`,quickNavigation:`Szybka nawigacja`,haConnection:`Połączenie HA`,startupOrder:`Kolejność uruchamiania`,lockCredentials:`Dane dostępu do zamków`,filterReference:`Referencja filtrów`,successMessage:`Twoje mostki są połączone z {{count}} fabryką(-ami) kontrolera. Urządzenia powinny być teraz widoczne w aplikacji kontrolera.`,noBridgesHint:`Nie skonfigurowano jeszcze mostków. Użyj Kreatora mostka lub utwórz mostek ręcznie.`,customizeDashboard:`Dostosuj pulpit`,bridgeStatusRunning:`{{running}} uruchomione`,bridgeStatusFailed:`{{failed}} nieudane`,devicesFailed:`{{count}} nieudane`,uptimeFormat:`{{time}}`},bridge:{name:`Nazwa mostka`,port:`Port`,status:`Status`,pairHint:`Sparuj ten mostek ze swoim kontrolerem`,pairDescription:`Otwórz aplikację kontrolera (Apple Home, Google Home lub Amazon Alexa), dodaj nowe akcesorium i zeskanuj kod QR poniżej albo wpisz ręczny kod parowania. Upewnij się, że kontroler jest w tej samej sieci co Home Assistant.`,failedEntities:`Nieudane encje`,serverModeRecommended:`Tryb serwera zalecany dla odkurzaczy robotycznych`,serverModeDescription:`Ten mostek zawiera odkurzacz robotyczny w trybie bridge. Apple Home i Alexa pokażą mostek jako dodatkowe urządzenie, co spowoduje duplikaty. Włącz tryb serwera, aby udostępnić odkurzacz jako niezależne urządzenie Matter z pełną obsługą komend głosowych Siri/Alexa i bez duplikatów.`,enableServerMode:`Włącz tryb serwera`,enabling:`Włączanie...`,start:`Uruchom`,stop:`Zatrzymaj`,restart:`Restartuj`,factoryReset:`Przywróć ustawienia fabryczne`,pairingCode:`Kod parowania`,openCommissioning:`Otwórz okno komisjonowania`,multiPair:`Parowanie Multi-Fabric`,deleteBridge:`Usuń mostek`,deleteConfirm:`Czy na pewno chcesz usunąć ten mostek?`,featureFlags:`Flagi funkcji`,failedEntitiesCount:`Nie udało się załadować {{count}} encji.`,clickToShow:`Kliknij, aby pokazać szczegóły.`,clickToHide:`Kliknij, aby ukryć szczegóły.`,loadFailed:`Nie udało się wczytać szczegółów mostka`,refreshHint:`Nowe urządzenia i zmiany etykiet są wykrywane co 30 sekund.`,refreshingStates:`Odświeżanie stanów za {{seconds}} s...`,serverModeSingleDeviceNote:`Uwaga: tryb serwera wymaga, aby odkurzacz był jedynym urządzeniem na tym mostku. Najpierw usuń inne encje z mostka, a następnie włącz tryb serwera w ustawieniach mostka.`,serverModeEnabled:`Tryb serwera włączony. Mostek uruchomi się ponownie z odkurzaczem jako niezależnym urządzeniem.`,serverModeEnableFailed:`Nie udało się włączyć trybu serwera: {{error}}`,pairing:`Parowanie`,bridgeInfo:`Informacje o mostku`,commissioned:`Skomisjonowano`,addController:`Dodaj kolejny kontroler`,openingCommissioning:`Otwieranie okna komisjonowania...`,fabricTooltip:`Fabric reprezentuje połączenie z kontrolerem Matter (np. Apple Home, Google Home, Alexa). Każdy kontroler tworzy jedną fabric podczas parowania.`,forceSync:`Wymuś synchronizację`,syncing:`Synchronizacja...`,forceSyncTooltip:`Wypchnij wszystkie bieżące stany urządzeń do podłączonych kontrolerów`,editFilters:`Edytuj filtry`,addFilters:`Dodaj filtry`,bridgeNotRunning:`Mostek nie jest uruchomiony. Uruchom mostek, aby zobaczyć informacje o parowaniu.`,manualCode:`Kod ręczny`,openingWindow:`Otwieranie okna komisjonowania...`,bridgeId:`ID mostka`,passcode:`Kod dostępu`,discriminator:`Dyskryminator`,connectedFabrics:`Połączone fabrics ({{count}})`,noFabrics:`Nie podłączono jeszcze kontrolerów. Zeskanuj kod QR kontrolerem Matter, aby sparować ten mostek.`,entityFilters:`Filtry encji`,noFilters:`Brak skonfigurowanych filtrów. Wszystkie wspierane encje zostaną udostępnione.`,scanQrCode:`Zeskanuj ten kod QR swoim kontrolerem Matter (Apple Home, Google Home, Alexa itd.), aby dodać ten mostek do kolejnego ekosystemu.`,appleHomeWarning:`Ten mostek używa trybu Extended Flat. Wyłącz to tylko wtedy, gdy używasz wyłącznie Apple Home.`,googleHomeWarning:`Może to powodować problemy z Apple Home i Google Home.`,resetSuccess:`Mostek został pomyślnie zresetowany`,deleteSuccess:`Mostek został pomyślnie usunięty`,confirmResetTitle:`Reset fabryczny mostka`,confirmResetMessage:`To usunie wszystkie informacje parowania i zresetuje mostek do stanu początkowego. Podłączone kontrolery utracą dostęp. Operacji nie można cofnąć.`,confirmDeleteTitle:`Usuń mostek`,confirmDeleteMessage:`To trwale usunie mostek, wszystkie parowania i mapowania encji. Podłączone kontrolery utracą dostęp. Operacji nie można cofnąć.`,importTitle:`Importuj mostki`,overwriteExisting:`Nadpisz istniejące mostki`,iconLabel:`Ikona mostka`,google:`Google`,alexa:`Alexa`,serverMode:`Tryb serwera`,autoForceSync:`Automatyczne wymuszanie synchronizacji`,saveSuccess:`Mostek zapisany`,updateSuccess:`Aktualizacja zakończona`,exportFailed:`Eksport nie powiódł się`,actionStarted:`Uruchomiono`,actionStopped:`Zatrzymano`,actionRestarted:`Zrestartowano`,actionFailed:`{{action}} nie powiodło się`,actionResult:`{{label}} {{count}} mostek(ów)`,couldNotLoad:`Nie udało się wczytać mostków`,showingFirst:`Wyświetlanie pierwszych {{count}}`,importParseFailed:`Nie udało się przetworzyć pliku importu. Wybierz prawidłowy plik eksportu.`,importing:`Importowanie...`,importCount:`Importuj {{count}} mostek(ów)`,jsonEditor:`Edytor JSON`,formEditor:`Edytor formularza`},endpoints:{title:`Endpointy`,searchPlaceholder:`Szukaj endpointów...`,sortBy:`Sortuj`,sortName:`Nazwa`,sortEndpoint:`ID endpointu`,sortType:`Typ`,cardView:`Widok kart`,treeView:`Widok drzewa`,clusters:`Klastry`,entityUnavailable:`Encja niedostępna`,showUnavailable:`Pokaż {{count}} niedostępnych`,showAll:`Pokaż wszystkie encje`,uploadImage:`Prześlij obraz urządzenia`,removeImage:`Usuń niestandardowy obraz`,editMapping:`Edytuj mapowanie encji`,homeAssistantEntity:`Encja Home Assistant`,noEndpoints:`Nie znaleziono endpointów.`,expandAll:`Rozwiń wszystko`,collapseAll:`Zwiń wszystko`,viewAll:`Zobacz wszystkie urządzenia`,haState:`Stan HA`,aboutEndpoint:`O tym endpoincie`,entityId:`ID encji`,customName:`Nazwa własna`,deviceTypeOverride:`Nadpisanie typu urządzenia`,keyHaAttributes:`Kluczowe atrybuty HA`,entityMappings:`Mapowania encji`,copyData:`Skopiuj dane do schowka`,behavior:`Zachowanie`},health:{title:`Stan i diagnostyka`,version:`Wersja`,uptime:`Czas działania`,homeAssistant:`Home Assistant`,connected:`Połączono`,disconnected:`Rozłączono`,bridgeStatus:`Status mostka`,refreshHealth:`Odśwież dane stanu`,exportDiagnostic:`Eksportuj diagnostykę`,memory:`Pamięć`,fabricDetails:`Szczegóły fabric`,sessions:`Sesje`,subscriptions:`Subskrypcje`,noFabrics:`Brak podłączonych fabrics`,systemMetrics:`Metryki systemu`,heap:`Heap`,rss:`RSS`,external:`Zewnętrzne`,systemHealth:`Stan systemu`,fetchFailed:`Nie udało się pobrać stanu`,connectionError:`Błąd połączenia`,exportFailed:`Nie udało się wyeksportować danych diagnostycznych`,restartFailed:`Nie udało się zrestartować mostka`,unableToLoad:`Nie można wczytać stanu`,sortBy:`Sortuj według`,created:`Utworzono`,ascending:`Rosnąco`,descending:`Malejąco`,connectedTo:`Połączono z`,autoRecovery:`Automatyczne odzyskiwanie`,recoveryAttempts:`Próby odzyskania`},mapping:{title:`Mapowania encji`,entityId:`ID encji`,deviceType:`Typ urządzenia`,customName:`Nazwa własna`,status:`Status`,addMapping:`Dodaj mapowanie`,editMapping:`Edytuj mapowanie`,deleteMapping:`Usuń mapowanie`,saved:`Mapowanie zapisano dla {{entityId}}. Uruchom ponownie mostek, aby zastosować zmiany.`,saveFailed:`Nie udało się zapisać mapowania: {{error}}`,deleted:`Mapowanie usunięto dla {{entityId}}.`,deleteFailed:`Nie udało się usunąć mapowania.`,matterTag:`Tag Matter`,exportProfile:`Eksportuj profil mapowania`,importProfile:`Importuj profil mapowania`,profileName:`Nazwa profilu`,match:`Dopasowanie`,existing:`Istniejące`,autoDetect:`Auto-wykrywanie (domyślne)`,loadFailed:`Nie udało się wczytać mapowań encji`,noMappings:`Nie skonfigurowano niestandardowych mapowań encji. Użyj mapowań, aby nadpisać typy urządzeń Matter, ustawić własne nazwy lub wyłączyć konkretne encje.`,applying:`Zastosowywanie...`,applyCount:`Zastosuj {{count}} mapowań`},notFound:{title:`Nie znaleziono strony`,description:`Strona, której szukasz, nie istnieje.`,backToDashboard:`Wróć do pulpitu`},devices:{title:`Urządzenia`,searchPlaceholder:`Szukaj urządzeń...`,filterBridge:`Mostek`,allBridges:`Wszystkie mostki`,filterDeviceType:`Typ urządzenia`,allTypes:`Wszystkie typy`,sortBy:`Sortuj według`,sortBridge:`Mostek`,sortType:`Typ urządzenia`,sortName:`Nazwa`,deviceCount:`{{count}} urządzeń`,filteredCount:`{{filtered}} z {{total}} urządzeń`},diagnostics:{title:`Diagnostyka na żywo`,stateUpdate:`Aktualizacja stanu`,command:`Komenda`,entityError:`Błąd`,sessionOpen:`Otwarcie sesji`,sessionClose:`Zamknięcie sesji`,subscription:`Subskrypcja`,bridgeStart:`Start mostka`,bridgeStop:`Stop mostka`,filterEvents:`Filtruj typy zdarzeń`,clearEvents:`Wyczyść wszystkie zdarzenia`,noEvents:`Brak zdarzeń pasujących do aktualnych filtrów.`},startup:{title:`Kolejność uruchamiania`,description:`Przeciągnij i upuść mostki, aby ustawić kolejność uruchamiania. Niższe pozycje uruchamiane są jako pierwsze.`,saveSuccess:`Kolejność uruchamiania została zapisana`,saveFailed:`Nie udało się zapisać kolejności uruchamiania`,saveChanges:`Zapisz zmiany`,unsavedChanges:`Masz niezapisane zmiany kolejności uruchamiania.`,noBridges:`Nie skonfigurowano jeszcze żadnych mostków.`,saveOrder:`Zapisz kolejność uruchamiania`},areaSetup:{title:`Konfiguracja obszaru`,heading:`Konfiguracja mostków wg obszarów`,description:`Automatycznie utwórz jeden mostek dla każdego obszaru Home Assistant. Każdy mostek będzie zawierał wszystkie wspierane encje z tego obszaru.`,noAreas:`Nie znaleziono obszarów ze wspieranymi encjami w Home Assistant. Upewnij się, że Twoje urządzenia są przypisane do obszarów w HA.`,selectController:`1. Wybierz kontroler (opcjonalnie)`,selectAreas:`2. Wybierz obszary ({{selected}} z {{total}})`,clear:`Wyczyść`,createBridges:`Utwórz {{count}} mostek(ów)`,results:`Wyniki`,goToBridges:`Przejdź do mostków`,createdSuccess:`Pomyślnie utworzono {{count}} mostek(ów)`,createdPartial:`Utworzono {{succeeded}}, niepowodzenia {{failed}} mostek(ów)`,loadFailed:`Nie udało się wczytać obszarów`,creating:`Tworzenie...`,created:`Utworzono`,unknownError:`Nieznany błąd`},lockCredentials:{title:`Dane dostępu do zamków`,addCredential:`Dodaj dane dostępu do zamka`,editCredential:`Edytuj dane dostępu do zamka`,lockEntityId:`ID encji zamka`,lockEntityHelperText:`ID encji zamka w Home Assistant`,pinCode:`Kod PIN`,nameOptional:`Nazwa (opcjonalnie)`,namePlaceholder:`Drzwi wejściowe`,nameHelperText:`Przyjazna nazwa dla tych danych dostępu`,entityRequired:`ID encji jest wymagane`,pinLength:`PIN musi mieć 4-8 cyfr`,pinDigitsOnly:`PIN może zawierać tylko cyfry`,saveFailed:`Nie udało się zapisać`,loadFailed:`Nie udało się wczytać danych dostępu`,deleteFailed:`Nie udało się usunąć`,updateFailed:`Nie udało się zaktualizować`,enable:`Włącz`,disable:`Wyłącz`,confirmDeleteTitle:`Usuń dane dostępu`,confirmDeleteMessage:`To trwale usunie kod PIN dla {{entity}}. Operacji nie można cofnąć.`},labels:{title:`Referencja filtrów`,info:`Przeglądaj wszystkie dostępne wartości filtrów dla konfiguracji mostka. Kliknij dowolną wartość, aby skopiować ją do schowka.`,searchPlaceholder:`Szukaj...`,loadFailed:`Nie udało się wczytać danych`,labelsSection:`Etykiety`,labelsHint:`Użyj z typem filtra "entity_label" lub "device_label". Możesz użyć nazwy wyświetlanej albo label_id.`,noLabels:`Nie znaleziono etykiet w Home Assistant. Utwórz etykiety w Ustawienia > Etykiety.`,displayName:`Nazwa wyświetlana`,labelId:`label_id`,areaId:`area_id`,areasSection:`Obszary`,areasHint:`Użyj z typem filtra "area". Obszary są także używane do automatycznego przypisywania pomieszczeń w kontrolerach Matter.`,noAreas:`Nie znaleziono obszarów w Home Assistant. Utwórz obszary w Ustawienia > Obszary.`,otherFilterValues:`Inne wartości filtrów`,domains:`Domeny`,domainsHint:`Użyj z typem filtra "domain".`,platforms:`Platformy / Integracje`,platformsHint:`Użyj z typem filtra "platform".`,entityCategories:`Kategorie encji`,entityCategoriesHint:`Użyj z typem filtra "entity_category".`,deviceClasses:`Klasy urządzeń`,deviceClassesHint:`Użyj z typem filtra "device_class".`,deviceNames:`Nazwy urządzeń`,deviceNamesHint:`Użyj z typem filtra "device_name".`,productNames:`Nazwy produktów`,productNamesHint:`Użyj z typem filtra "product_name".`},logs:{title:`Logi systemowe`,logLevel:`Poziom logowania`,error:`Błąd`,warning:`Ostrzeżenie`,info:`Informacja`,debug:`Debug`,searchPlaceholder:`Szukaj w logach...`,noResults:`Nie znaleziono logów`,autoRefresh:`Automatyczne odświeżanie`},backup:{title:`Kopia i przywracanie`,description:`Utwórz pełną kopię zapasową mostków i mapowań encji albo przywróć z poprzedniej kopii.`,configBackup:`Kopia konfiguracji`,configBackupDesc:`Eksportuj konfiguracje mostków i mapowania encji.`,configBackupNote:`Po przywróceniu mostki będą wymagały ponownego komisjonowania.`,fullBackup:`Pełna kopia (z tożsamością)`,fullBackupDesc:`Zawiera pliki tożsamości Matter (pary kluczy, poświadczenia fabric).`,fullBackupWarning:`Zachowuje stan komisjonowania między przywróceniami. NIE UDOSTĘPNIAJ!`,restoreFromBackup:`Przywróć z kopii`,restoreDesc:`Prześlij wcześniej utworzony plik kopii, aby przywrócić mostki i konfiguracje.`,restoreTitle:`Przywróć kopię`,selectBridges:`Wybierz mostki do przywrócenia`,overwriteExisting:`Nadpisz istniejące mostki`,includeMappings:`Uwzględnij mapowania encji`,restoreIdentities:`Przywróć tożsamości Matter (bez ponownego komisjonowania)`,restore:`Przywróć`,downloadSuccess:`Kopia została pobrana pomyślnie!`,restartRequired:`Wymagany restart`,restartMessage:`Mostki zostały przywrócone z kopii. Aby zastosować zmiany, wymagany jest restart.`,restartNote:`Aplikacja zostanie uruchomiona ponownie i może być konieczne odświeżenie tej strony.`,restartNow:`Restartuj teraz`,storedBackups:`Zapisane kopie`,createSnapshot:`Utwórz kopię`,noSnapshots:`Brak zapisanych kopii. Kopie są tworzone automatycznie przy zamykaniu lub można je utworzyć ręcznie.`,downloadSnapshot:`Pobierz`,restoreSnapshot:`Przywróć`,auto:`Automatyczna`,manual:`Ręczna`,snapshotCreated:`Kopia została utworzona pomyślnie!`,snapshotRestored:`Przywrócono {{bridges}} mostek(ów), {{mappings}} mapowań, {{identities}} tożsamości.`,confirmRestore:`Potwierdź przywracanie`,confirmRestoreMessage:`Czy na pewno chcesz przywrócić z "{{filename}}"? To nadpisze bieżącą konfigurację.`,restoreWarning:`Wszystkie istniejące mostki i konfiguracje zostaną nadpisane. Po przywróceniu wymagany jest restart.`,confirmDelete:`Usuń kopię`,confirmDeleteMessage:`Czy na pewno chcesz usunąć "{{filename}}"? Tej akcji nie można cofnąć.`,settings:`Ustawienia kopii`,autoBackupLabel:`Automatyczna kopia`,autoBackupDesc:`Automatycznie twórz pełną kopię podczas zamykania lub restartu aplikacji.`,retentionCount:`Liczba przechowywanych kopii`,retentionCountDesc:`Liczba kopii do zachowania (najstarsze są usuwane automatycznie)`},networkMap:{title:`Mapa sieci`,hubLabel:`HAMH`,undoMove:`Cofnij ostatnie przesunięcie`,resetLayout:`Resetuj układ`,refreshData:`Odśwież dane`,fullscreen:`Pełny ekran`,exitFullscreen:`Wyjdź z pełnego ekranu`,legend:`Legenda`,controller:`Kontroler`,hub:`Hub HAMH`,bridge:`Mostek`,device:`Urządzenie`,failed:`Niepowodzenie`},updateChecker:{title:`Aktualizacje oprogramowania`,checkNow:`Sprawdź teraz`,currentVersion:`Obecna wersja`,latestVersion:`Najnowsza wersja`,updateAvailable:`Dostępna aktualizacja!`,upToDate:`Używasz najnowszej wersji.`,releaseNotes:`Informacje o wydaniu`,notAvailable:`Sprawdzanie aktualizacji niedostępne w tej wersji`,checkFailed:`Nie udało się sprawdzić aktualizacji`,unreachable:`Nie można połączyć się z serwerem`,instructionAddon:`Zaktualizuj przez Ustawienia → Dodatki w Home Assistant.`,instructionDocker:`Pobierz najnowszy obraz i odtwórz kontener.`,instructionNpm:`Uruchom: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Kreator konfiguracji mostka`,stepTemplate:`Szablon`,stepController:`Kontroler`,stepBridgeInfo:`Informacje o mostku`,stepEntityFilter:`Filtr encji`,stepFeatureFlags:`Flagi funkcji`,stepReview:`Przegląd i utworzenie`,autoCompose:`Automatyczne komponowanie urządzeń`,autoForceSyncFlag:`Automatyczne wymuszanie synchronizacji`,invertCover:`Odwróć kierunek rolet`,invertCoverDescription:`Zamień kierunek otwierania/zamykania rolet. Użyj, jeśli rolety pokazują błędną pozycję w kontrolerach Matter.`,includeHidden:`Uwzględnij ukryte encje`,includeHiddenDescription:`Udostępnij również encje oznaczone jako ukryte w Home Assistant.`,bridgeName:`Nazwa mostka`,portLabel:`Port`,portAutoAssign:`Automatycznie przypisany do kolejnego wolnego portu`,nameRequired:`Wpisz nazwę mostka`,createFailed:`Nie udało się utworzyć mostka`,bridgeInfoDescription:`Nadaj mostkowi nazwę i port.`,serverModeLabel:`Tryb serwera (dla odkurzaczy robotycznych)`,serverModeTooltip:`Wymagany, aby odkurzacze robotyczne działały z Apple Home (Siri) i Alexą. Mostki w trybie serwera obsługują tylko JEDNO urządzenie.`,entityFilterDescription:`Skonfiguruj, które encje mają być uwzględnione w tym mostku.`,includeAll:`Uwzględnij wszystkie encje (wildcard)`,entityId:`ID encji`,includePattern:`Wzorzec uwzględniania`,entityFilters:`Filtry encji`,serverModeEntityHint:`Tryb serwera obsługuje tylko JEDNO urządzenie. Wpisz dokładne ID encji (np. vacuum.my_vacuum).`,templatePreConfigured:`Skonfigurowane przez szablon. Edytuj w pełnym edytorze po utworzeniu.`,wildcardHint:`Użyj * dla wszystkich lub wzorców typu light.*, switch.*`,commaHint:`Wpisz konkretne ID encji rozdzielone przecinkami`,excludePatterns:`Wzorce wykluczeń (opcjonalnie)`,excludeHelperText:`Wzorce do wykluczenia, rozdzielone przecinkami`,skipTemplate:`Pomiń szablon`,creating:`Tworzenie...`,createBridge:`Utwórz mostek`,searchRules:`Szukaj reguł...`,templateDescription:`Wybierz szablon, aby szybko zacząć, lub pomiń, by utworzyć własny mostek.`,controllerDescription:`Którego kontrolera Matter będziesz używać? To zoptymalizuje flagi funkcji dla Twojego kontrolera.`,controllerHint:`Możesz zawsze dostosować flagi funkcji w kolejnych krokach lub po utworzeniu mostka.`,templateApplied:`Zastosowano szablon "{{name}}". Dostosuj poniżej nazwę i port.`,filterPreConfiguredFrom:`Filtr jest wstępnie skonfigurowany z szablonu "{{name}}". Możesz go dostosować poniżej.`,featureFlagsDescription:`Flagi funkcji kontrolują sposób udostępniania urządzeń kontrolerom Matter.`,recommendedFlags:`Zalecane flagi dla {{name}} są wstępnie zaznaczone.`,selectFlags:`Wybierz flagi pasujące do Twojej konfiguracji.`,reviewDescription:`Sprawdź konfigurację mostka:`,bridgesToCreate:`Mostki do utworzenia ({{count}})`,bridgesCreated:`{{count}} mostek(ów) już utworzono w tej sesji`,addAnother:`Dodaj kolejny`},footer:{github:`GitHub`,documentation:`Dokumentacja`},languageSwitcher:{disclaimer:`Tłumaczenia mogą być niekompletne.`,contribute:`Pomóż je ulepszyć!`},translationEditor:{title:`Edytor tłumaczeń`,editLanguage:`Edytuj język`,info:`Edytuj tłumaczenia bezpośrednio w przeglądarce. Zmiany są zapisywane lokalnie i stosowane natychmiast. Wyeksportuj tłumaczenia, aby przesłać je do projektu.`,progress:`Przetłumaczono {{translated}} / {{total}} kluczy`,localEdits:`{{count}} lokalnych edycji`,searchPlaceholder:`Szukaj kluczy lub wartości...`,filterAll:`Wszystkie klucze`,filterMissing:`Brakujące`,filterEdited:`Edytowane`,exportJson:`Eksportuj JSON`,copyJson:`Kopiuj JSON`,copied:`Skopiowano!`,resetAll:`Resetuj wszystkie edycje`,resetKey:`Przywróć domyślne`,noResults:`Nie znaleziono pasujących kluczy tłumaczenia.`,addLanguage:`Dodaj język`,newLanguageCode:`Kod języka (np. pt, ja, ko)`,newLanguageName:`Nazwa języka (np. Português)`,addLanguageButton:`Dodaj`,languageExists:`Ten język już istnieje.`,codeRequired:`Kod języka jest wymagany.`,nameRequired:`Nazwa języka jest wymagana.`,removeLanguage:`Usuń język`,removeLanguageConfirm:`Usunąć niestandardowy język "{{name}}"? Wszystkie lokalne edycje tego języka zostaną utracone.`,importJson:`Importuj JSON`,importSuccess:`Zaimportowano {{count}} tłumaczeń.`,importFailed:`Import nie powiódł się: nieprawidłowy format JSON.`}},bs={common:{loading:`Загрузка`,notFound:`Не найдено`,save:`Сохранить`,cancel:`Отмена`,delete:`Удалить`,edit:`Редактировать`,close:`Закрыть`,refresh:`Обновить`,search:`Поиск`,enabled:`Включено`,disabled:`Отключено`,online:`В сети`,offline:`Не в сети`,running:`Работает`,stopped:`Остановлено`,failed:`Ошибка`,starting:`Запуск`,devices:`Устройства`,fabrics:`Fabric-соединения`,port:`Порт`,unknown:`Неизвестно`,confirm:`Подтвердить`,create:`Создать`,back:`Назад`,next:`Далее`,actions:`Действия`,name:`Имя`,type:`Тип`,error:`Ошибка`,version:`Версия`,copy:`Копировать`,copied:`Скопировано!`,copyId:`Копировать ID`,later:`Позже`,skip:`Пропустить`,reset:`Сбросить`,update:`Обновить`,all:`Все`,ascending:`По возрастанию`,descending:`По убыванию`,moveUp:`Вверх`,moveDown:`Вниз`,selectAll:`Выбрать все`,selectNone:`Снять выбор`,live:`Живой`,new:`Новый`,overwrite:`Перезаписать`,active:`Активно`,property:`Свойство`,value:`Значение`,custom:`Пользовательский`,startAll:`Запустить все`,stopAll:`Остановить все`,restartAll:`Перезапустить все`,import:`Импорт`,export:`Экспорт`,exportAll:`Экспортировать все`,wizard:`Мастер настройки`},nav:{bridges:`Мосты`,devices:`Все устройства`,health:`Состояние и диагностика`,diagnostics:`События в реальном времени`,settings:`Настройки`,networkMap:`Карта сети`,logs:`Журналы`,startupOrder:`Порядок запуска`,lockCredentials:`Учётные данные замков`,filterReference:`Справочник фильтров`,systemLogs:`Системные журналы`,lightMode:`Светлая тема`,darkMode:`Тёмная тема`},status:{error:`Ошибка`,unhealthy:`Неисправно`,noBridges:`Нет мостов`,loadingHealth:`Загрузка состояния...`,unknown:`Неизвестно`},errorBoundary:{title:`Что-то пошло не так`,fallbackMessage:`Произошла непредвиденная ошибка.`,reload:`Перезагрузить страницу`},settings:{title:`Настройки`,language:`Язык`,languageDescription:`Выберите язык интерфейса.`,checkUpdates:`Проверить обновления`,backupRestore:`Резервное копирование и восстановление`,exportBackup:`Экспорт резервной копии`,importBackup:`Импорт резервной копии`,dangerZone:`Опасная зона`,resetAll:`Сбросить все`,about:`О программе`,username:`Имя пользователя`,password:`Пароль`,enterNewPassword:`Введите новый пароль`,enableAuth:`Включить аутентификацию`,disableAuth:`Отключить аутентификацию`,disableAuthMessage:`Это удалит защиту паролем с веб-интерфейса. Любой в вашей сети сможет получить доступ к конфигурации мостов и изменять её.`,disableAuthConfirm:`Отключить аутентификацию`,usernamePasswordRequired:`Имя пользователя и пароль обязательны`,authSaveFailed:`Не удалось сохранить настройки аутентификации`,authLoadFailed:`Не удалось загрузить настройки аутентификации`,authDisabled:`Аутентификация отключена.`,authRemoveFailed:`Не удалось удалить настройки аутентификации`},dashboard:{title:`Панель управления`,systemOverview:`Обзор системы`,quickActions:`Быстрые действия`,bridgeOverview:`Обзор мостов`,noBridges:`Мосты пока не настроены.`,createBridge:`Создать мост`,viewAll:`Показать все`,totalDevices:`Всего устройств`,customize:`Настроить`,startAll:`Запустить все`,stopAll:`Остановить все`,restartAll:`Перезапустить все`,welcome:`Добро пожаловать в Home Assistant Matter Hub`,welcomeDescription:`Подключите устройства Home Assistant к Matter-контроллерам, таким как Apple Home, Google Home и Amazon Alexa.`,bridgeWizard:`Мастер настройки моста`,setupByArea:`Настройка по зонам`,manualSetup:`Ручная настройка`,areaSetup:`Настройка зон`,documentation:`Документация`,quickNavigation:`Быстрая навигация`,haConnection:`Подключение к HA`,startupOrder:`Порядок запуска`,lockCredentials:`Учётные данные замков`,filterReference:`Справочник фильтров`,successMessage:`Ваши мосты подключены к {{count}} fabric-соединениям контроллеров. Устройства должны появиться в приложении контроллера.`,noBridgesHint:`Мосты пока не настроены. Используйте мастер настройки или создайте мост вручную.`,customizeDashboard:`Настроить панель управления`,bridgeStatusRunning:`{{running}} работает`,bridgeStatusFailed:`{{failed}} с ошибками`,devicesFailed:`{{count}} с ошибками`,uptimeFormat:`{{time}}`},bridge:{name:`Имя моста`,port:`Порт`,status:`Статус`,pairHint:`Подключите этот мост к вашему контроллеру`,pairDescription:`Откройте приложение контроллера (Apple Home, Google Home или Amazon Alexa), добавьте новое устройство и отсканируйте QR-код ниже или введите код сопряжения вручную. Убедитесь, что контроллер находится в одной сети с Home Assistant.`,failedEntities:`Ошибочные объекты`,serverModeRecommended:`Серверный режим рекомендуется для роботов-пылесосов`,serverModeDescription:`Этот мост содержит робот-пылесос в режиме моста. Apple Home и Alexa покажут мост как дополнительное устройство, что приведёт к дублированию. Включите серверный режим, чтобы представить пылесос как самостоятельное Matter-устройство.`,enableServerMode:`Включить серверный режим`,enabling:`Включение...`,start:`Запустить`,stop:`Остановить`,restart:`Перезапустить`,factoryReset:`Сброс к заводским настройкам`,pairingCode:`Код сопряжения`,openCommissioning:`Открыть окно сопряжения`,multiPair:`Мульти-fabric сопряжение`,deleteBridge:`Удалить мост`,deleteConfirm:`Вы уверены, что хотите удалить этот мост?`,featureFlags:`Флаги функций`,failedEntitiesCount:`{{count}} объект(ов) не удалось загрузить.`,clickToShow:`Нажмите для просмотра деталей.`,clickToHide:`Нажмите, чтобы скрыть детали.`,loadFailed:`Не удалось загрузить данные моста`,refreshHint:`Новые устройства и изменения меток обнаруживаются каждые 30 секунд.`,refreshingStates:`Обновление состояний через {{seconds}} сек...`,serverModeSingleDeviceNote:`Примечание: серверный режим требует, чтобы пылесос был единственным устройством на этом мосту. Сначала удалите другие объекты, затем включите серверный режим в настройках моста.`,serverModeEnabled:`Серверный режим включён. Мост перезапустится с пылесосом как самостоятельным устройством.`,serverModeEnableFailed:`Не удалось включить серверный режим: {{error}}`,pairing:`Сопряжение`,bridgeInfo:`Информация о мосте`,commissioned:`Подключён`,addController:`Добавить ещё контроллер`,openingCommissioning:`Открытие окна сопряжения...`,fabricTooltip:`Fabric представляет подключение к Matter-контроллеру (например, Apple Home, Google Home, Alexa). Каждый контроллер создаёт один fabric при сопряжении.`,forceSync:`Принудительная синхронизация`,syncing:`Синхронизация...`,forceSyncTooltip:`Отправить все текущие состояния устройств подключённым контроллерам`,editFilters:`Редактировать фильтры`,addFilters:`Добавить фильтры`,bridgeNotRunning:`Мост не запущен. Запустите мост, чтобы увидеть информацию о сопряжении.`,manualCode:`Код для ввода вручную`,openingWindow:`Открытие окна сопряжения...`,bridgeId:`ID моста`,passcode:`Пароль`,discriminator:`Дискриминатор`,connectedFabrics:`Подключённые fabric-соединения ({{count}})`,noFabrics:`Контроллеры пока не подключены. Отсканируйте QR-код вашим Matter-контроллером для сопряжения.`,entityFilters:`Фильтры объектов`,noFilters:`Фильтры не настроены. Все поддерживаемые объекты будут доступны.`,scanQrCode:`Отсканируйте этот QR-код вашим Matter-контроллером (Apple Home, Google Home, Alexa и др.), чтобы добавить мост в другую экосистему.`,appleHomeWarning:`Этот мост использует расширенный Flat-режим. Отключайте только если вы используете исключительно Apple Home.`,googleHomeWarning:`Это может вызвать проблемы с Apple Home и Google Home.`,resetSuccess:`Мост успешно сброшен`,deleteSuccess:`Мост успешно удалён`,confirmResetTitle:`Сброс моста к заводским настройкам`,confirmResetMessage:`Это удалит всю информацию о сопряжении и вернёт мост в исходное состояние. Подключённые контроллеры потеряют доступ. Это действие нельзя отменить.`,confirmDeleteTitle:`Удалить мост`,confirmDeleteMessage:`Это навсегда удалит мост, все его сопряжения и привязки объектов. Подключённые контроллеры потеряют доступ. Это действие нельзя отменить.`,importTitle:`Импорт мостов`,overwriteExisting:`Перезаписать существующие мосты`,iconLabel:`Иконка моста`,google:`Google`,alexa:`Alexa`,serverMode:`Серверный режим`,autoForceSync:`Автоматическая синхронизация`,saveSuccess:`Мост сохранён`,updateSuccess:`Обновление завершено`,exportFailed:`Ошибка экспорта`,actionStarted:`Запущено`,actionStopped:`Остановлено`,actionRestarted:`Перезапущено`,actionFailed:`{{action}}, ошибка`,actionResult:`{{label}} {{count}} мост(ов)`,couldNotLoad:`Не удалось загрузить мосты`,showingFirst:`Показаны первые {{count}}`,importParseFailed:`Не удалось разобрать файл импорта. Выберите корректный файл экспорта.`,importing:`Импорт...`,importCount:`Импортировать {{count}} мост(ов)`,jsonEditor:`JSON-редактор`,formEditor:`Редактор форм`},endpoints:{title:`Конечные точки`,searchPlaceholder:`Поиск конечных точек...`,sortBy:`Сортировка`,sortName:`Имя`,sortEndpoint:`ID конечной точки`,sortType:`Тип`,cardView:`Карточки`,treeView:`Дерево`,clusters:`Кластеры`,entityUnavailable:`Объект недоступен`,showUnavailable:`Показать {{count}} недоступных`,showAll:`Показать все объекты`,uploadImage:`Загрузить изображение устройства`,removeImage:`Удалить пользовательское изображение`,editMapping:`Редактировать привязку объекта`,homeAssistantEntity:`Объект Home Assistant`,noEndpoints:`Конечные точки не найдены.`,expandAll:`Развернуть все`,collapseAll:`Свернуть все`,viewAll:`Все устройства`,haState:`Состояние HA`,aboutEndpoint:`Об этой конечной точке`,entityId:`ID объекта`,customName:`Пользовательское имя`,deviceTypeOverride:`Переопределение типа устройства`,keyHaAttributes:`Ключевые атрибуты HA`,entityMappings:`Привязки объектов`,copyData:`Копировать данные в буфер обмена`,behavior:`Поведение`},health:{title:`Состояние и диагностика`,version:`Версия`,uptime:`Время работы`,homeAssistant:`Home Assistant`,connected:`Подключено`,disconnected:`Отключено`,bridgeStatus:`Статус моста`,refreshHealth:`Обновить данные о состоянии`,exportDiagnostic:`Экспорт диагностики`,memory:`Память`,fabricDetails:`Данные fabric`,sessions:`Сессии`,subscriptions:`Подписки`,noFabrics:`Нет подключённых fabric`,systemMetrics:`Системные метрики`,heap:`Heap`,rss:`RSS`,external:`Внешняя`,systemHealth:`Состояние системы`,fetchFailed:`Не удалось получить данные о состоянии`,connectionError:`Ошибка подключения`,exportFailed:`Не удалось экспортировать данные диагностики`,restartFailed:`Не удалось перезапустить мост`,unableToLoad:`Не удалось загрузить данные о состоянии`,sortBy:`Сортировать по`,created:`Создано`,ascending:`По возрастанию`,descending:`По убыванию`,connectedTo:`Подключено к`,autoRecovery:`Автовосстановление`,recoveryAttempts:`Попытки восстановления`,fabrics:`фабрик`,networkDiagnostics:`Диагностика сети`,checksPassed:`пройдено`,checksWarning:`предупреждения`,checksFailed:`ошибки`,hideDetails:`Скрыть детали`,showDetails:`Показать детали`,allChecks:`Все проверки`,check:`Проверка`,statusLabel:`Статус`,message:`Сообщение`,networkInterfaces:`Сетевые интерфейсы`,interfaceName:`Интерфейс`,refresh:`Обновить`},mapping:{title:`Привязки объектов`,entityId:`ID объекта`,deviceType:`Тип устройства`,customName:`Пользовательское имя`,status:`Статус`,addMapping:`Добавить привязку`,editMapping:`Редактировать привязку`,deleteMapping:`Удалить привязку`,saved:`Привязка для {{entityId}} сохранена. Перезапустите мост для применения изменений.`,saveFailed:`Не удалось сохранить привязку: {{error}}`,deleted:`Привязка для {{entityId}} удалена.`,deleteFailed:`Не удалось удалить привязку.`,matterTag:`Matter-тег`,exportProfile:`Экспорт профиля привязок`,importProfile:`Импорт профиля привязок`,profileName:`Имя профиля`,match:`Совпадение`,existing:`Существует`,autoDetect:`Автоопределение (по умолчанию)`,loadFailed:`Не удалось загрузить привязки объектов`,noMappings:`Пользовательские привязки не настроены. Используйте привязки для переопределения типов Matter-устройств, установки пользовательских имён или отключения отдельных объектов.`,applying:`Применение...`,applyCount:`Применить {{count}} привязку(и)`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},notFound:{title:`Страница не найдена`,description:`Запрашиваемая страница не существует.`,backToDashboard:`Вернуться на панель управления`},devices:{title:`Устройства`,searchPlaceholder:`Поиск устройств...`,filterBridge:`Мост`,allBridges:`Все мосты`,filterDeviceType:`Тип устройства`,allTypes:`Все типы`,sortBy:`Сортировать по`,sortBridge:`Мост`,sortType:`Тип устройства`,sortName:`Имя`,deviceCount:`{{count}} устройство(а)`,filteredCount:`{{filtered}} из {{total}} устройств`},diagnostics:{title:`Диагностика в реальном времени`,stateUpdate:`Обновление состояния`,command:`Команда`,entityError:`Ошибка`,sessionOpen:`Сессия открыта`,sessionClose:`Сессия закрыта`,subscription:`Подписка`,bridgeStart:`Мост запущен`,bridgeStop:`Мост остановлен`,entityWarning:`Предупреждение`,filterEvents:`Фильтр типов событий`,clearEvents:`Очистить все события`,noEvents:`Нет событий, соответствующих текущим фильтрам.`},startup:{title:`Порядок запуска`,description:`Перетаскивайте мосты для настройки порядка запуска. Мосты с меньшей позицией запускаются первыми.`,saveSuccess:`Порядок запуска успешно сохранён`,saveFailed:`Не удалось сохранить порядок запуска`,saveChanges:`Сохранить изменения`,unsavedChanges:`У вас есть несохранённые изменения порядка запуска.`,noBridges:`Мосты пока не настроены.`,saveOrder:`Сохранить порядок запуска`},areaSetup:{title:`Настройка зон`,heading:`Настройка мостов по зонам`,description:`Автоматически создать по одному мосту на каждую зону Home Assistant. Каждый мост будет содержать все поддерживаемые объекты из этой зоны.`,noAreas:`Не найдено зон с поддерживаемыми объектами в Home Assistant. Убедитесь, что ваши устройства назначены зонам в HA.`,selectController:`1. Выберите контроллер (необязательно)`,selectAreas:`2. Выберите зоны ({{selected}} из {{total}})`,clear:`Очистить`,createBridges:`Создать {{count}} мост(ов)`,results:`Результаты`,goToBridges:`Перейти к мостам`,createdSuccess:`Успешно создано {{count}} мост(ов)`,createdPartial:`Создано {{succeeded}}, ошибка у {{failed}} мост(ов)`,loadFailed:`Не удалось загрузить зоны`,creating:`Создание...`,created:`Создано`,unknownError:`Неизвестная ошибка`},lockCredentials:{title:`Учётные данные замков`,addCredential:`Добавить учётные данные`,editCredential:`Редактировать учётные данные`,lockEntityId:`ID объекта замка`,lockEntityHelperText:`ID объекта Home Assistant для замка`,pinCode:`PIN-код`,nameOptional:`Имя (необязательно)`,namePlaceholder:`Входная дверь`,nameHelperText:`Понятное имя для этих учётных данных`,entityRequired:`ID объекта обязателен`,pinLength:`PIN должен содержать 4-8 цифр`,pinDigitsOnly:`PIN должен содержать только цифры`,saveFailed:`Не удалось сохранить`,loadFailed:`Не удалось загрузить учётные данные`,deleteFailed:`Не удалось удалить`,updateFailed:`Не удалось обновить`,enable:`Включить`,disable:`Отключить`,confirmDeleteTitle:`Удалить учётные данные`,confirmDeleteMessage:`Это навсегда удалит PIN-код для {{entity}}. Это действие нельзя отменить.`},labels:{title:`Справочник фильтров`,info:`Просматривайте все доступные значения фильтров для конфигурации моста. Нажмите на значение, чтобы скопировать его в буфер обмена.`,searchPlaceholder:`Поиск...`,loadFailed:`Не удалось загрузить данные`,labelsSection:`Метки`,labelsHint:`Используйте с типом фильтра "entity_label" или "device_label". Можно использовать как отображаемое имя, так и label_id.`,noLabels:`Метки в Home Assistant не найдены. Создайте метки в разделе Настройки > Метки.`,displayName:`Отображаемое имя`,labelId:`label_id`,areaId:`area_id`,areasSection:`Зоны`,areasHint:`Используйте с типом фильтра "area". Зоны также используются для автоматического назначения комнат в Matter-контроллерах.`,noAreas:`Зоны в Home Assistant не найдены. Создайте зоны в разделе Настройки > Зоны.`,otherFilterValues:`Другие значения фильтров`,domains:`Домены`,domainsHint:`Используйте с типом фильтра "domain".`,platforms:`Платформы / Интеграции`,platformsHint:`Используйте с типом фильтра "platform".`,entityCategories:`Категории объектов`,entityCategoriesHint:`Используйте с типом фильтра "entity_category".`,deviceClasses:`Классы устройств`,deviceClassesHint:`Используйте с типом фильтра "device_class".`,deviceNames:`Имена устройств`,deviceNamesHint:`Используйте с типом фильтра "device_name".`,productNames:`Названия продуктов`,productNamesHint:`Используйте с типом фильтра "product_name".`},logs:{title:`Системные журналы`,logLevel:`Уровень журнала`,error:`Ошибка`,warning:`Предупреждение`,info:`Информация`,debug:`Отладка`,searchPlaceholder:`Поиск в журналах...`,noResults:`Записи не найдены`,autoRefresh:`Автообновление`},backup:{title:`Резервное копирование и восстановление`,description:`Создайте полную резервную копию мостов и привязок объектов или восстановите из предыдущей копии.`,configBackup:`Резервная копия конфигурации`,configBackupDesc:`Экспорт конфигураций мостов и привязок объектов.`,configBackupNote:`После восстановления мосты потребуют повторного сопряжения.`,fullBackup:`Полная резервная копия (с идентификацией)`,fullBackupDesc:`Включает файлы идентификации Matter (ключи, учётные данные fabric).`,fullBackupWarning:`Сохраняет состояние сопряжения при восстановлении. НЕ ПЕРЕДАВАЙТЕ!`,restoreFromBackup:`Восстановить из резервной копии`,restoreDesc:`Загрузите ранее созданный файл резервной копии для восстановления мостов и конфигураций.`,restoreTitle:`Восстановление из резервной копии`,selectBridges:`Выберите мосты для восстановления`,overwriteExisting:`Перезаписать существующие мосты`,includeMappings:`Включить привязки объектов`,restoreIdentities:`Восстановить идентификации Matter (без повторного сопряжения)`,restore:`Восстановить`,downloadSuccess:`Резервная копия успешно загружена!`,restartRequired:`Требуется перезапуск`,restartMessage:`Мосты восстановлены из резервной копии. Для применения изменений необходим перезапуск.`,restartNote:`Приложение перезапустится, и вам может потребоваться обновить эту страницу.`,restartNow:`Перезапустить сейчас`,storedBackups:`Сохранённые резервные копии`,createSnapshot:`Создать резервную копию`,noSnapshots:`Сохранённых резервных копий пока нет. Копии создаются автоматически при завершении работы или могут быть созданы вручную.`,downloadSnapshot:`Скачать`,restoreSnapshot:`Восстановить`,auto:`Авто`,manual:`Вручную`,snapshotCreated:`Резервная копия успешно создана!`,snapshotRestored:`Восстановлено: {{bridges}} мостов, {{mappings}} привязок, {{identities}} идентификаций.`,confirmRestore:`Подтвердить восстановление`,confirmRestoreMessage:`Вы уверены, что хотите восстановить из "{{filename}}"? Это перезапишет текущую конфигурацию.`,restoreWarning:`Все существующие мосты и конфигурации будут перезаписаны. После восстановления потребуется перезапуск.`,confirmDelete:`Удалить резервную копию`,confirmDeleteMessage:`Вы уверены, что хотите удалить "{{filename}}"? Это действие нельзя отменить.`,settings:`Настройки резервного копирования`,autoBackupLabel:`Автоматическое резервное копирование`,autoBackupDesc:`Автоматически создавать полную резервную копию при завершении или перезапуске приложения.`,retentionCount:`Хранить копий`,retentionCountDesc:`Количество резервных копий для хранения (старые удаляются автоматически)`},networkMap:{title:`Карта сети`,hubLabel:`HAMH`,undoMove:`Отменить перемещение`,resetLayout:`Сбросить расположение`,refreshData:`Обновить данные`,fullscreen:`Полный экран`,exitFullscreen:`Выйти из полного экрана`,legend:`Легенда`,controller:`Контроллер`,hub:`HAMH Hub`,bridge:`Мост`,device:`Устройство`,failed:`Ошибка`},updateChecker:{title:`Обновления программного обеспечения`,checkNow:`Проверить сейчас`,currentVersion:`Текущая версия`,latestVersion:`Последняя версия`,updateAvailable:`Доступно обновление!`,upToDate:`Вы используете последнюю версию.`,releaseNotes:`Примечания к выпуску`,notAvailable:`Проверка обновлений недоступна в этой версии`,checkFailed:`Не удалось проверить обновления`,unreachable:`Сервер недоступен`,instructionAddon:`Обновите через Настройки → Дополнения в Home Assistant.`,instructionDocker:`Загрузите последний образ и пересоздайте контейнер.`,instructionNpm:`Выполните: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Мастер настройки моста`,stepTemplate:`Шаблон`,stepController:`Контроллер`,stepBridgeInfo:`Информация о мосте`,stepEntityFilter:`Фильтр объектов`,stepFeatureFlags:`Флаги функций`,stepReview:`Проверка и создание`,autoCompose:`Автоматическое объединение устройств`,autoForceSyncFlag:`Автоматическая синхронизация`,invertCover:`Инвертировать направление штор`,invertCoverDescription:`Поменять местами направления открытия/закрытия штор. Используйте, если шторы показывают неправильное положение в Matter-контроллерах.`,includeHidden:`Включить скрытые объекты`,includeHiddenDescription:`Также отображать объекты, отмеченные как скрытые в Home Assistant.`,bridgeName:`Имя моста`,portLabel:`Порт`,portAutoAssign:`Автоматически назначается следующий доступный порт`,nameRequired:`Пожалуйста, введите имя моста`,createFailed:`Не удалось создать мост`,bridgeInfoDescription:`Задайте имя и порт для моста.`,serverModeLabel:`Серверный режим (для роботов-пылесосов)`,serverModeTooltip:`Необходим для работы роботов-пылесосов с Apple Home (Siri) и Alexa. Мосты в серверном режиме поддерживают только ОДНО устройство.`,entityFilterDescription:`Настройте, какие объекты должны быть включены в этот мост.`,includeAll:`Включить все объекты (подстановочный знак)`,entityId:`ID объекта`,includePattern:`Шаблон включения`,entityFilters:`Фильтры объектов`,serverModeEntityHint:`Серверный режим поддерживает только ОДНО устройство. Введите точный ID объекта (например, vacuum.my_vacuum).`,templatePreConfigured:`Предварительно настроено шаблоном. Редактируйте в полном редакторе после создания.`,wildcardHint:`Используйте * для всех или шаблоны вроде light.*, switch.*`,commaHint:`Введите конкретные ID объектов через запятую`,excludePatterns:`Шаблоны исключения (необязательно)`,excludeHelperText:`Шаблоны для исключения через запятую`,skipTemplate:`Пропустить шаблон`,creating:`Создание...`,createBridge:`Создать мост`,searchRules:`Поиск правил...`,templateDescription:`Выберите шаблон для быстрого старта или пропустите для создания пользовательского моста.`,controllerDescription:`Какой Matter-контроллер вы будете использовать? Это оптимизирует флаги функций для вашего контроллера.`,controllerHint:`Вы можете изменить флаги функций на следующих шагах или после создания моста.`,templateApplied:`Шаблон "{{name}}" применён. Настройте имя и порт ниже.`,filterPreConfiguredFrom:`Фильтр предварительно настроен из шаблона "{{name}}". Вы можете изменить его ниже.`,featureFlagsDescription:`Флаги функций управляют тем, как устройства представляются Matter-контроллерам.`,recommendedFlags:`Рекомендуемые флаги для {{name}} предварительно выбраны.`,selectFlags:`Выберите флаги, подходящие для вашей конфигурации.`,reviewDescription:`Проверьте конфигурацию моста:`,bridgesToCreate:`Мосты для создания ({{count}})`,bridgesCreated:`{{count}} мост(ов) уже создано в этой сессии`,addAnother:`Добавить ещё`},footer:{github:`GitHub`,documentation:`Документация`},languageSwitcher:{disclaimer:`Переводы могут быть неполными.`,contribute:`Помогите их улучшить!`},translationEditor:{title:`Редактор переводов`,editLanguage:`Язык для редактирования`,info:`Редактируйте переводы прямо в браузере. Изменения сохраняются локально и применяются мгновенно. Экспортируйте переводы для отправки в проект.`,progress:`{{translated}} / {{total}} ключей переведено`,localEdits:`{{count}} локальных правок`,searchPlaceholder:`Поиск ключей или значений...`,filterAll:`Все ключи`,filterMissing:`Отсутствующие`,filterEdited:`Изменённые`,exportJson:`Экспорт JSON`,copyJson:`Копировать JSON`,copied:`Скопировано!`,resetAll:`Сбросить все правки`,resetKey:`Сбросить к значению по умолчанию`,noResults:`Совпадающие ключи перевода не найдены.`,addLanguage:`Добавить язык`,newLanguageCode:`Код языка (например, pt, ja, ko)`,newLanguageName:`Название языка (например, Português)`,addLanguageButton:`Добавить`,languageExists:`Этот язык уже существует.`,codeRequired:`Код языка обязателен.`,nameRequired:`Название языка обязательно.`,removeLanguage:`Удалить язык`,removeLanguageConfirm:`Удалить пользовательский язык "{{name}}"? Все локальные правки для этого языка будут потеряны.`,importJson:`Импорт JSON`,importSuccess:`Импортировано {{count}} перевод(ов).`,importFailed:`Ошибка импорта: недопустимый формат JSON.`}},xs={common:{loading:`Laddar`,notFound:`Hittades inte`,save:`Spara`,cancel:`Avbryt`,delete:`Radera`,edit:`Redigera`,close:`Stäng`,refresh:`Uppdatera`,search:`Sök`,enabled:`Aktiverad`,disabled:`Inaktiverad`,online:`Online`,offline:`Offline`,running:`Körs`,stopped:`Stoppad`,failed:`Misslyckades`,starting:`Startar`,devices:`Enheter`,fabrics:`Märken`,port:`Port`,unknown:`Okänd`,confirm:`Bekräfta`,create:`Skapa`,back:`Tillbaka`,next:`Nästa`,actions:`Åtgärder`,name:`Namn`,type:`Typ`,error:`Fel`,version:`Version`,copy:`Kopiera`,copied:`Kopierat!`,copyId:`Kopiera ID`,later:`Senare`,skip:`Hoppa över`,reset:`Återställ`,update:`Uppdatera`,all:`Alla`,ascending:`Stigande`,descending:`Fallande`,moveUp:`Flytta upp`,moveDown:`Flytta ner`,selectAll:`Välj alla`,selectNone:`Avmarkera alla`,live:`Live`,new:`Ny`,overwrite:`Skriv över`,active:`Aktiv`,property:`Egenskap`,value:`Värde`,custom:`Anpassad`,startAll:`Starta alla`,stopAll:`Stoppa alla`,restartAll:`Starta om alla`,import:`Importera`,export:`Exportera`,exportAll:`Exportera alla`,wizard:`Guide`},nav:{bridges:`Bryggor`,devices:`Alla enheter`,health:`Hälsa & Diagnostik`,diagnostics:`Livehändelser`,settings:`Inställningar`,networkMap:`Nätverkskarta`,logs:`Loggar`,startupOrder:`Uppstartsordning`,lockCredentials:`Låsuppgifter`,filterReference:`Filterreferens`,systemLogs:`Systemloggar`,lightMode:`Ljust läge`,darkMode:`Mörkt läge`},status:{error:`Fel`,unhealthy:`Ohälsosam`,noBridges:`Inga Bryggor`,loadingHealth:`Laddar hälsostatus...`,unknown:`Okänd`},errorBoundary:{title:`Något gick fel`,fallbackMessage:`Ett oväntat fel inträffade.`,reload:`Ladda om sidan`},settings:{title:`Inställningar`,language:`Språk`,languageDescription:`Välj gränssnittets språk.`,checkUpdates:`Sök efter uppdateringar`,backupRestore:`Säkerhetskopiering & Återställning`,exportBackup:`Exportera säkerhetskopia`,importBackup:`Importera säkerhetskopia`,dangerZone:`Farozon`,resetAll:`Återställ allt`,about:`Om`,username:`Användarnamn`,password:`Lösenord`,enterNewPassword:`Ange nytt lösenord`,enableAuth:`Aktivera autentisering`,disableAuth:`Avaktivera autentisering`,disableAuthMessage:`Detta tar bort lösenordsskyddet från webbgränssnittet. Alla i ditt nätverk kommer att kunna komma åt och ändra din bryggkonfiguration.`,disableAuthConfirm:`Inaktivera autentisering`,usernamePasswordRequired:`Användarnamn och lösenord krävs`,authSaveFailed:`Kunde inte spara autentiseringsinställningarna`,authLoadFailed:`Misslyckades med att läsa in autentiseringsinställningarna`,authDisabled:`Autentisering inaktiverad.`,authRemoveFailed:`Misslyckades med att ta bort autentiseringsinställningarna`},dashboard:{title:`Instrumentpanel`,systemOverview:`Systemöversikt`,quickActions:`Snabbåtgärder`,bridgeOverview:`Brygg-översikt`,noBridges:`Inga bryggor konfigurerade.`,createBridge:`Skapa Brygga`,viewAll:`Visa alla`,totalDevices:`Totalt antal enheter`,customize:`Anpassa`,startAll:`Starta alla`,stopAll:`Stoppa alla`,restartAll:`Starta om alla`,welcome:`Välkommen till Home Assistant Matter Hub`,welcomeDescription:`Koppla dina Home Assistant-enheter till Matter-kontroller som Apple Home, Google Home och Amazon Alexa.`,bridgeWizard:`Brygg-guide`,setupByArea:`Konfigurera efter område`,manualSetup:`Manuell konfiguration`,areaSetup:`Områdeskonfiguration`,documentation:`Dokumentation`,quickNavigation:`Snabbnavigering`,haConnection:`HA-anslutning`,startupOrder:`Startordning`,lockCredentials:`Låsuppgifter`,filterReference:`Filterreferens`,successMessage:`Dina bryggor är anslutna till {{count}} kontroller-fabric(s). Enheter bör nu visas i din kontroller-app.`,noBridgesHint:`Inga bryggor konfigurerade. Använd Brygg-guiden eller skapa en manuellt.`,customizeDashboard:`Anpassa instrumentpanelen`,bridgeStatusRunning:`{{running}} Körs`,bridgeStatusFailed:`{{failed}} misslyckades`,devicesFailed:`{{count}} misslyckades`,uptimeFormat:`{{time}}`},bridge:{name:`Brygg-namn`,port:`Port`,status:`Status`,pairHint:`Koppla denna brygga med din kontroller`,pairDescription:`Öppna din kontroller-app (Apple Home, Google Home eller Amazon Alexa), lägg till ett nytt tillbehör och skanna QR-koden nedan eller ange den manuella kopplingskoden. Se till att din kontroller är på samma nätverk som Home Assistant.`,failedEntities:`Misslyckade entiteter`,serverModeRecommended:`Serverläge rekommenderas för robotdammsugare`,serverModeDescription:`Denna brygga innehåller en robotdammsugare i bryggläge. Apple Home och Alexa visar bryggan som en extra enhet, vilket skapar dubbletter. Aktivera Serverläge för att exponera dammsugaren som en fristående Matter-enhet.`,enableServerMode:`Aktivera Serverläge`,enabling:`Aktiverar...`,start:`Starta`,stop:`Stoppa`,restart:`Starta om`,factoryReset:`Fabriksåterställning`,pairingCode:`Kopplingskod`,openCommissioning:`Öppna kopplingsfönster`,multiPair:`Multi-Fabric-koppling`,deleteBridge:`Radera brygga`,deleteConfirm:`Är du säker på att du vill radera denna brygga?`,featureFlags:`Funktionsflaggor`,failedEntitiesCount:`{{count}} entitet(er) kunde inte laddas.`,clickToShow:`Klicka för att visa detaljer.`,clickToHide:`Klicka för att dölja detaljer.`,loadFailed:`Kunde inte ladda Brygg-detaljer`,refreshHint:`Nya enheter och etikettändringar upptäcks var 30:e sekund.`,refreshingStates:`Uppdaterar tillstånd om {{seconds}} sekunder...`,serverModeSingleDeviceNote:`Obs: Serverläge kräver att dammsugaren är den enda enheten på denna brygga. Ta bort andra entiteter först, aktivera sedan Serverläge i brygg-inställningarna.`,serverModeEnabled:`Serverläge aktiverat. Bryggan startar om med din dammsugare som fristående enhet.`,serverModeEnableFailed:`Kunde inte aktivera Serverläge: {{error}}`,pairing:`Koppling`,bridgeInfo:`Brygg-info`,commissioned:`Kopplad`,addController:`Lägg till en annan kontroller`,openingCommissioning:`Öppnar driftsättningsfönstret...`,fabricTooltip:`En fabric representerar en anslutning till en Matter-kontroller (t.ex. Apple Home, Google Home, Alexa). Varje kontroller skapar en fabric när den paras ihop.`,forceSync:`Tvinga synkronisering`,syncing:`Synkroniserar...`,forceSyncTooltip:`Skicka alla aktuella enhetstillstånd till anslutna styrenheter`,editFilters:`Redigera filter`,addFilters:`Lägg till filter`,bridgeNotRunning:`Bridgen körs inte. Starta bridgen för att se kopplingsinformation.`,manualCode:`Manuell kod`,openingWindow:`Öppnar driftsättningsfönstret...`,bridgeId:`Brygg-ID`,passcode:`Lösenkod`,discriminator:`Diskriminator`,connectedFabrics:`Anslutna Märken ({{count}})`,noFabrics:`Ingen kontroller ansluten. Skanna QR-koden med din Matter-kontroller.`,entityFilters:`Entitetsfilter`,noFilters:`Inga filter konfigurerade. Alla stödda entiteter kommer att exponeras.`,scanQrCode:`Skanna den här QR-koden med din Matter-kontroll (Apple Home, Google Home, Alexa, etc.) för att lägga till den här bryggan i ett annat ekosystem.`,appleHomeWarning:`Den här bryggan använder utökat platt läge. Inaktivera endast detta om du uteslutande använder Apple Home.`,googleHomeWarning:`Detta kan orsaka problem med Apple Home och Google Home.`,resetSuccess:`Brygga återställd`,deleteSuccess:`Brygga raderad`,confirmResetTitle:`Återställ Brygga`,confirmResetMessage:`Detta tar bort all parkopplingsinformation och återställer bryggan till sitt ursprungliga tillstånd. Anslutna handkontroller förlorar åtkomst. Detta kan inte ångras.`,confirmDeleteTitle:`Radera Brygga`,confirmDeleteMessage:`Detta kommer att permanent ta bort bryggan, alla dess parkopplingar och entitetsmappningar. Anslutna styrenheter kommer att förlora åtkomst. Detta kan inte ångras.`,importTitle:`Importera Brygga`,overwriteExisting:`Skriv över befintliga brygga`,iconLabel:`Brygg-ikon`,google:`Google`,alexa:`Alexa`,serverMode:`Serverläge`,autoForceSync:`Automatisk synkronisering`,saveSuccess:`Brygga sparad`,updateSuccess:`Uppdatering slutförd`,exportFailed:`Export misslyckades`,actionStarted:`Startad`,actionStopped:`Stoppad`,actionRestarted:`Omstartad`,actionFailed:`{{action}} misslyckades`,actionResult:`{{label}} {{count}} brygga(or)`,couldNotLoad:`Kunde inte ladda bryggor`,showingFirst:`Visar första {{count}}`,importParseFailed:`Kunde inte tolka importfilen. Välj en giltig exportfil.`,importing:`Importerar...`,importCount:`Importera {{count}} brygga(or)`,jsonEditor:`JSON-redigerare`,formEditor:`Formulärredigerare`},endpoints:{title:`Slutpunkter`,searchPlaceholder:`Sök slutpunkter...`,sortBy:`Sortera`,sortName:`Namn`,sortEndpoint:`Slutpunkts-ID`,sortType:`Typ`,cardView:`Kortvy`,treeView:`Trädvy`,clusters:`Kluster`,entityUnavailable:`Entitet otillgänglig`,showUnavailable:`Visa {{count}} otillgängliga`,showAll:`Visa alla entiteter`,uploadImage:`Ladda upp enhetsbild`,removeImage:`Ta bort anpassad bild`,editMapping:`Redigera entitetsmappning`,homeAssistantEntity:`Home Assistant-entitet`,noEndpoints:`Inga slutpunkter hittades.`,expandAll:`Expandera alla`,collapseAll:`Komprimera alla`,viewAll:`Visa alla enheter`,haState:`HA-status`,aboutEndpoint:`Om denna slutpunkt`,entityId:`Entitets-ID`,customName:`Anpassat namn`,deviceTypeOverride:`Åsidosatt enhetstyp`,keyHaAttributes:`Viktiga HA-attribut`,entityMappings:`Entitetsmappningar`,copyData:`Kopiera data till urklipp`,behavior:`Beteende`},health:{title:`Hälsa & Diagnostik`,version:`Version`,uptime:`Drifttid`,homeAssistant:`Home Assistant`,connected:`Ansluten`,disconnected:`Frånkopplad`,bridgeStatus:`Brygg-status`,refreshHealth:`Uppdatera hälsodata`,exportDiagnostic:`Exportera diagnostik`,memory:`Minne`,fabricDetails:`Fabric-detaljer`,sessions:`Sessioner`,subscriptions:`Prenumerationer`,noFabrics:`Inga Märken anslutna`,systemMetrics:`Systemmått`,heap:`Heap`,rss:`RSS`,external:`Extern`,systemHealth:`Systemhälsa`,fetchFailed:`Kunde inte hämta hälsostatus`,connectionError:`Anslutningsfel`,exportFailed:`Kunde inte exportera diagnostikdata`,restartFailed:`Kunde inte starta om bridge`,unableToLoad:`Kunde inte ladda hälsostatus`,sortBy:`Sortera efter`,created:`Skapad`,ascending:`Stigande`,descending:`Fallande`,connectedTo:`Ansluten till`,autoRecovery:`Automatisk återställning`,recoveryAttempts:`Återställningsförsök`,fabrics:`Märke`,networkDiagnostics:`Nätverks diagnostik`,checksPassed:`Godkänd`,checksWarning:`Varning`,checksFailed:`misslyckades`,hideDetails:`Dölj detaljer`,showDetails:`Visa detaljer`,allChecks:`Alla Kontroller`,check:`Kontroller`,statusLabel:`Status`,message:`Meddelande`,networkInterfaces:`Nätverksgränssnitt`,interfaceName:`Gränssnitt`,refresh:`Uppdatera`},mapping:{title:`Entitetsmappningar`,entityId:`Entitets-ID`,deviceType:`Enhetstyp`,customName:`Anpassat namn`,status:`Status`,addMapping:`Lägg till mappning`,editMapping:`Redigera mappning`,deleteMapping:`Radera mappning`,saved:`Mappning sparad för {{entityId}}. Starta om bridgen för att tillämpa ändringar.`,saveFailed:`Kunde inte spara mappning: {{error}}`,deleted:`Mappning raderad för {{entityId}}.`,deleteFailed:`Kunde inte radera mappning.`,matterTag:`Matter Tag`,exportProfile:`Exportera mappningsprofil`,importProfile:`Importera mappningsprofil`,profileName:`Profilnamn`,match:`Match`,existing:`Existerande`,autoDetect:`Automatisk identifiering (standard)`,customProductName:`Anpassat produktnamn`,customProductNameHelp:`Åsidosätt produktnamnet (modellen) som rapporterats till Matter-kontroller. Vissa kontroller (t.ex. Aqara) visar detta som enhetsnamn`,customVendorName:`Anpassat leverantörsnamn`,customVendorNameHelp:`Åsidosätt leverantörs-/tillverkarenamnet som rapporterats till ärendeansvariga`,customSerialNumber:`Anpassat serienummer`,customSerialNumberHelp:`Åsidosätt serienumret som rapporteras till ärendekontroller`,loadFailed:`Misslyckades med att läsa in entitetsmappningar`,noMappings:`Inga anpassade entitetsmappningar har konfigurerats. Använd mappningar för att åsidosätta enhetstyper för Matter, ange anpassade namn eller inaktivera specifika entiteter.`,applying:`Tillämpar`,applyCount:`Tillämpa {{count}} mappning(ar)`},notFound:{title:`Sidan hittades inte`,description:`Sidan du letar efter finns inte.`,backToDashboard:`Tillbaka till instrumentpanelen`},devices:{title:`Enheter`,searchPlaceholder:`Sök enheter`,filterBridge:`Brygga`,allBridges:`Alla bryggor`,filterDeviceType:`Enhetstyp`,allTypes:`Alla typer`,sortBy:`Sortera efter`,sortBridge:`Brygga`,sortType:`Enhetstyp`,sortName:`Namn`,deviceCount:`{{count}} Enheter`,filteredCount:`{{filtered}} av {{total}} enheter`},diagnostics:{title:`Live diagnostik`,stateUpdate:`Uppdatering om tillstånd`,command:`Kommando`,entityError:`Fel`,sessionOpen:`Session öppen`,sessionClose:`Session stängd`,subscription:`Prenumeration`,bridgeStart:`Brygg start`,bridgeStop:`Brygg stop`,entityWarning:`Varning`,filterEvents:`Filtrera händelsetyper`,clearEvents:`Rensa alla händelser`,noEvents:`Inga händelser matchar de aktuella filtren.`},startup:{title:`Uppstartsordning`,description:`Dra och släpp bryggor för att ställa in startordningen. Lägre positioner börjar först.`,saveSuccess:`Startordern har sparats`,saveFailed:`Kunde inte spara startordningen`,saveChanges:`Spara ändringar`,unsavedChanges:`Du har osparade ändringar i startordningen.`,noBridges:`Inga bryggor konfigurerade än.`,saveOrder:`Spara Uppstartsordning`},areaSetup:{title:`Områdes inställning`,heading:`Områdesbaserad brygginstallation`,description:`Skapa automatiskt en brygga per Home Assistant-område. Varje brygga kommer att inkludera alla enheter som stöds från det området.`,noAreas:`Inga områden med stödda enheter hittades i Home Assistant. Se till att dina enheter är tilldelade områden i HA.`,selectController:`1. Välj styrenhet (valfritt)`,selectAreas:`2. Välj områden ({{selected}} av {{total}})`,clear:`Rensa`,createBridges:`Skapa {{count}} brygga(or)`,results:`Resultat`,goToBridges:`Gå till bryggor`,createdSuccess:`{{count}} brygga(or) har skapats`,createdPartial:`Skapade {{succeeded}}, misslyckades med {{failed}} brygga(or)`,loadFailed:`Misslyckades med att ladda områden`,creating:`Skapande...`,created:`Skapad`,unknownError:`Okänt fel`},lockCredentials:{title:`Lås inloggningsuppgifter`,addCredential:`Lägg till låsuppgifter`,editCredential:`Redigera låsuppgifter`,lockEntityId:`Lås enhets-ID`,lockEntityHelperText:`Låsets enhets-ID för Home Assistant`,pinCode:`PIN-kod`,nameOptional:`Namn (valfritt)`,namePlaceholder:`Ytterdörr`,nameHelperText:`Vänligt namn för denna autentiseringsuppgift`,entityRequired:`Enhets-ID krävs`,pinLength:`PIN-koden måste vara 4-8 siffror`,pinDigitsOnly:`PIN-koden får endast innehålla siffror`,saveFailed:`Misslyckades med att spara`,loadFailed:`Misslyckades med att ladda inloggningsuppgifterna`,deleteFailed:`Misslyckades med att radera`,updateFailed:`Misslyckades med att uppdatera`,enable:`Aktivera`,disable:`Inaktivera`,confirmDeleteTitle:`Ta bort autentiseringsuppgifter`,confirmDeleteMessage:`Detta kommer att permanent radera PIN-uppgifterna för {{entity}}. Detta kan inte ångras.`},labels:{title:`Filterreferens`,info:`Bläddra bland alla tillgängliga filtervärden för din bryggkonfiguration. Klicka på valfritt värde för att kopiera det till urklipp.`,searchPlaceholder:`Sök`,loadFailed:`Misslyckades med att ladda data`,labelsSection:`Etiketter`,labelsHint:`Använd med filtertypen "entity_label" eller "device_label". Du kan använda antingen visningsnamnet eller etikett_id.`,noLabels:`Inga etiketter hittades i Home Assistant. Skapa etiketter under Inställningar > Etiketter.`,displayName:`Visningsnamn`,labelId:`etikett_id`,areaId:`områdes-id`,areasSection:`Områden`,areasHint:`Använd med filtertypen "område". Områden används även för automatisk rumstilldelning i Matter-regulatorer.`,noAreas:`Inga områden hittades i Home Assistant. Skapa områden under Inställningar > Områden.`,otherFilterValues:`Andra filtervärden`,domains:`Domäner`,domainsHint:`Använd med filtertypen "domän".`,platforms:`Plattformar / Integrationer`,platformsHint:`Använd med filtertypen "plattform".`,entityCategories:`Enhetskategorier`,entityCategoriesHint:`Använd med filtertypen "entitetskategori".`,deviceClasses:`Enhetsklasser`,deviceClassesHint:`Använd med filtertypen "device_class".`,deviceNames:`Enhetsnamn`,deviceNamesHint:`Använd med filtertypen "enhetsnamn".`,productNames:`Produktnamn`,productNamesHint:`Använd med filtertypen "produktnamn".`},logs:{title:`Systemloggar`,logLevel:`Loggnivå`,error:`Fel`,warning:`Varning`,info:`Info`,debug:`Felsök`,searchPlaceholder:`Sök i loggar...`,noResults:`Inga loggar hittades`,autoRefresh:`Automatisk uppdatering`},backup:{title:`Säkerhetskopiering & Återställning`,description:`Skapa en fullständig säkerhetskopia av dina bryggor och entitetsmappningar, eller återställ från en tidigare säkerhetskopia.`,configBackup:`Enkel säkerhetskopia`,configBackupDesc:`Exportera bryggkonfigurationer och entitetsmappningar.`,configBackupNote:`Bryggorna kommer att behöva tas i bruk igen efter återställning.`,fullBackup:`Full säkerhetskopia (med identitet)`,fullBackupDesc:`Inkluderar ärendeidentitetsfiler (nyckelpar, fabric-inloggningsuppgifter).`,fullBackupWarning:`Bevarar driftsättningstillståndet vid återställningar. DELA INTE!`,restoreFromBackup:`Återställ från säkerhetskopia`,restoreDesc:`Ladda upp en tidigare skapad säkerhetskopia för att återställa bryggor och konfigurationer.`,restoreTitle:`Återställ säkerhetskopia`,selectBridges:`Välj bryggor att återställa`,overwriteExisting:`Skriv över befintliga bryggor`,includeMappings:`Inkludera entitetsmappningar`,restoreIdentities:`Återställ Matter-identiteter (ingen återinsättning krävs)`,restore:`Återställ`,downloadSuccess:`Säkerhetskopieringen har laddats ner!`,restartRequired:`Omstart krävs`,restartMessage:`Bryggorna har återställts från säkerhetskopian. En omstart krävs för att ändringarna ska träda i kraft.`,restartNote:`Applikationen startar om och du kan behöva uppdatera sidan.`,restartNow:`Starta om nu`,storedBackups:`Lagrade säkerhetskopior`,createSnapshot:`Skapa säkerhetskopia`,noSnapshots:`Inga lagrade säkerhetskopior ännu. Säkerhetskopior skapas automatiskt vid avstängning eller så kan de skapas manuellt.`,downloadSnapshot:`Ladda ner`,restoreSnapshot:`Återställ`,auto:`Auto`,manual:`Manuell`,snapshotCreated:`Säkerhetskopiering skapad!`,snapshotRestored:`Återställda {{bridges}} bryggor, {{mappings}} mappningar, {{identities}} identiteter.`,confirmRestore:`Bekräfta återställning`,confirmRestoreMessage:`Är du säker på att du vill återställa från "{{filename}}"? Detta kommer att skriva över din nuvarande konfiguration.`,restoreWarning:`Alla befintliga bryggor och konfigurationer kommer att skrivas över. En omstart krävs efter återställningen.`,confirmDelete:`Ta bort säkerhetskopia`,confirmDeleteMessage:`Är du säker på att du vill ta bort "{{filename}}"? Den här åtgärden kan inte ångras.`,settings:`Säkerhetskopieringsinställningar`,autoBackupLabel:`Automatisk säkerhetskopiering`,autoBackupDesc:`Skapar automatiskt en fullständig säkerhetskopia när programmet stängs av eller startas om.`,retentionCount:`Behåll säkerhetskopior`,retentionCountDesc:`Antal säkerhetskopior att behålla (de äldsta raderas automatiskt)`},networkMap:{title:`Nätverkskarta`,hubLabel:`HAMH`,undoMove:`Ångra senaste drag`,resetLayout:`Nollställ utseende`,refreshData:`Uppdatera data`,fullscreen:`Fullskärm`,exitFullscreen:`Avsluta fullskärm`,legend:`Legend`,controller:`Kontroller`,hub:`HAMH Hub`,bridge:`Brygga`,device:`Enhet`,failed:`Misslyckades`},updateChecker:{title:`Programvaru uppdatering`,checkNow:`Kontrollera nu`,currentVersion:`Nuvarande version`,latestVersion:`Senaste version`,updateAvailable:`Uppdatering tillgänglig`,upToDate:`Du kör den senaste versionen`,releaseNotes:`Versionsinformation`,notAvailable:`Uppdateringskontroll är inte tillgänglig i den här versionen`,checkFailed:`Misslyckades med att söka efter uppdateringar`,unreachable:`Det gick inte att nå servern`,instructionAddon:`Uppdatera via Inställningar → Appar i Home Assistant.`,instructionDocker:`Hämta den senaste avbildningen och återskapa din container.`,instructionNpm:`Kör: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Guiden för brygginstallation`,stepTemplate:`Template`,stepController:`Kontroller`,stepBridgeInfo:`Brygg info`,stepEntityFilter:`Entitetsfilter`,stepFeatureFlags:`Funktionsflaggor`,stepReview:`Granska & skapa`,autoCompose:`Auto Komponera enheter`,autoForceSyncFlag:`Automatisk tvångssynkronisering`,invertCover:`Invertera rullgardin`,invertCoverDescription:`Byt öppnings-/stängningsriktning för omslag. Använd detta om dina omslag visar fel position i Matter-kontrollerna.`,includeHidden:`Inkludera gömda enheter`,includeHiddenDescription:`Visa även enheter som är markerade som dolda i Home Assistant.`,bridgeName:`Brygg namn`,portLabel:`Port`,portAutoAssign:`Tilldelas automatiskt till nästa tillgängliga port`,nameRequired:`Ange ett namn på en brygga`,createFailed:`Misslyckades att skapa brygga`,bridgeInfoDescription:`Ge din brygga ett namn och en port.`,serverModeLabel:`Serverläge (för robotdammsugare)`,serverModeTooltip:`Krävs för att robotdammsugare ska fungera med Apple Home (Siri) och Alexa. Serverlägesbryggor stödjer endast EN enhet.`,entityFilterDescription:`Konfigurera vilka entiteter som ska inkluderas i den här bryggan.`,includeAll:`Inkludera alla entiteter (jokertecken)`,entityId:`Enhets-ID`,includePattern:`Inkludera mönster`,entityFilters:`Entitetsfilter`,serverModeEntityHint:`Serverläget stödjer endast EN enhet. Ange exakt enhets-ID (t.ex. vacuum.my_vacuum).`,templatePreConfigured:`Förkonfigurerad av mall. Redigera i den fullständiga redigeraren efter skapandet.`,wildcardHint:`Använd * för alla, eller mönster som light.*, switch.*`,commaHint:`Ange specifika enhets-ID:n separerade med kommatecken`,excludePatterns:`Uteslut mönster (valfritt)`,excludeHelperText:`Mönster att utesluta, kommaseparerade`,skipTemplate:`Hoppa över mall`,creating:`Skapar`,createBridge:`Skapa brygga`,searchRules:`Sök regler`,templateDescription:`Välj en mall för att komma igång snabbt, eller hoppa över för att skapa en anpassad brygga.`,controllerDescription:`Vilken Matter-kontroller kommer du att använda? Detta optimerar funktionsflaggor för din kontroller.`,controllerHint:`Du kan alltid justera funktionsflaggor i nästa steg eller efter att bryggan har skapats.`,templateApplied:`Mallen "{{name}}" har tillämpats. Anpassa namnet och porten nedan.`,filterPreConfiguredFrom:`Filtret är förkonfigurerat från mallen "{{name}}". Du kan justera det nedan.`,featureFlagsDescription:`Funktionsflaggor styr hur enheter exponeras för Matter-kontroller.`,recommendedFlags:`Rekommenderade flaggor för {{name}} är förvalda.`,selectFlags:`Välj de flaggor som matchar din inställning.`,reviewDescription:`Granska din bryggkonfiguration:`,bridgesToCreate:`Bryggor att skapa ({{count}})`,bridgesCreated:`{{count}} brygga(or) har redan skapats i den här sessionen`,addAnother:`Lägg till ytterligare en`},footer:{github:`GitHub`,documentation:`Dokumentation`,support:`Support`},languageSwitcher:{disclaimer:`Översättningar kan vara ofullständiga.`,contribute:`Hjälp till att förbättra dem!`},translationEditor:{title:`Översättningsredigerare`,editLanguage:`Redigera språk`,info:`Redigera översättningar direkt i din webbläsare. Ändringar sparas lokalt och tillämpas direkt. Exportera dina översättningar för att skicka in dem till projektet.`,progress:`{{translated}} / {{total}} nycklar översatta`,localEdits:`{{count}} lokal(a) redigering(ar)`,searchPlaceholder:`Sök nycklar eller värden...`,filterAll:`Alla nycklar`,filterMissing:`Saknade`,filterEdited:`Redigerade`,exportJson:`Exportera JSON`,copyJson:`Kopiera JSON`,copied:`Kopierat!`,resetAll:`Återställ alla redigeringar`,resetKey:`Återställ till standard`,noResults:`Inga matchande översättningsnycklar hittades.`,addLanguage:`Lägg till språk`,newLanguageCode:`Språkkod (t.ex. pt, ja, ko)`,newLanguageName:`Språknamn (t.ex. Português)`,addLanguageButton:`Lägg till`,languageExists:`Detta språk finns redan.`,codeRequired:`Språkkod krävs.`,nameRequired:`Språknamn krävs.`,removeLanguage:`Ta bort språk`,removeLanguageConfirm:`Vill du ta bort det anpassade språket "{{name}}"? Alla lokala redigeringar för det här språket kommer att gå förlorade.`,importJson:`Importera JSON`,importSuccess:`{{count}} översättning(ar) importerade.`,importFailed:`Import misslyckades: ogiltigt JSON-format.`}},Ss={common:{loading:`กำลังโหลด`,notFound:`ไม่พบ`,save:`บันทึก`,cancel:`ยกเลิก`,delete:`ลบ`,edit:`แก้ไข`,close:`ปิด`,refresh:`รีเฟรช`,search:`ค้นหา`,enabled:`เปิดใช้งาน`,disabled:`ปิดใช้งาน`,online:`ออนไลน์`,offline:`ออฟไลน์`,running:`กำลังทำงาน`,stopped:`หยุดแล้ว`,failed:`ล้มเหลว`,starting:`กำลังเริ่ม`,devices:`อุปกรณ์`,fabrics:`Fabrics`,port:`พอร์ต`,unknown:`ไม่ทราบ`,confirm:`ยืนยัน`,create:`สร้าง`,back:`ย้อนกลับ`,next:`ถัดไป`,actions:`การดำเนินการ`,name:`ชื่อ`,type:`ประเภท`,error:`ข้อผิดพลาด`,version:`เวอร์ชัน`,copy:`คัดลอก`,copied:`คัดลอกแล้ว!`,copyId:`คัดลอก ID`,later:`ภายหลัง`,skip:`ข้าม`,reset:`รีเซ็ต`,update:`อัปเดต`,all:`ทั้งหมด`,ascending:`น้อยไปมาก`,descending:`มากไปน้อย`,moveUp:`เลื่อนขึ้น`,moveDown:`เลื่อนลง`,selectAll:`เลือกทั้งหมด`,selectNone:`ไม่เลือก`,live:`สด`,new:`ใหม่`,overwrite:`เขียนทับ`,active:`ใช้งานอยู่`,property:`คุณสมบัติ`,value:`ค่า`,custom:`กำหนดเอง`,startAll:`เริ่มทั้งหมด`,stopAll:`หยุดทั้งหมด`,restartAll:`รีสตาร์ททั้งหมด`,import:`นำเข้า`,export:`ส่งออก`,exportAll:`ส่งออกทั้งหมด`,wizard:`ตัวช่วยสร้าง`},nav:{bridges:`Bridges`,devices:`อุปกรณ์ทั้งหมด`,health:`สุขภาพและการวินิจฉัย`,diagnostics:`เหตุการณ์สด`,settings:`การตั้งค่า`,networkMap:`แผนผังเครือข่าย`,logs:`บันทึก`,startupOrder:`ลำดับการเริ่มต้น`,lockCredentials:`ข้อมูลรับรองล็อค`,filterReference:`อ้างอิงตัวกรอง`,systemLogs:`บันทึกระบบ`,lightMode:`โหมดสว่าง`,darkMode:`โหมดมืด`},status:{error:`ข้อผิดพลาด`,unhealthy:`ไม่ปกติ`,noBridges:`ไม่มี Bridge`,loadingHealth:`กำลังโหลดสถานะสุขภาพ...`,unknown:`ไม่ทราบ`},errorBoundary:{title:`เกิดข้อผิดพลาด`,fallbackMessage:`เกิดข้อผิดพลาดที่ไม่คาดคิด`,reload:`โหลดหน้าใหม่`},settings:{title:`การตั้งค่า`,language:`ภาษา`,languageDescription:`เลือกภาษาของอินเทอร์เฟซ`,checkUpdates:`ตรวจสอบการอัปเดต`,backupRestore:`สำรองข้อมูลและกู้คืน`,exportBackup:`ส่งออกข้อมูลสำรอง`,importBackup:`นำเข้าข้อมูลสำรอง`,dangerZone:`โซนอันตราย`,resetAll:`รีเซ็ตทั้งหมด`,about:`เกี่ยวกับ`},dashboard:{title:`แดชบอร์ด`,systemOverview:`ภาพรวมระบบ`,quickActions:`การดำเนินการด่วน`,bridgeOverview:`ภาพรวม Bridge`,noBridges:`ยังไม่มี Bridge ที่กำหนดค่า`,createBridge:`สร้าง Bridge`,viewAll:`ดูทั้งหมด`,totalDevices:`อุปกรณ์ทั้งหมด`,customize:`ปรับแต่ง`,startAll:`เริ่มทั้งหมด`,stopAll:`หยุดทั้งหมด`,restartAll:`รีสตาร์ททั้งหมด`,welcome:`ยินดีต้อนรับสู่ Home Assistant Matter Hub`,welcomeDescription:`เชื่อมต่ออุปกรณ์ Home Assistant ของคุณกับคอนโทรลเลอร์ Matter เช่น Apple Home, Google Home และ Amazon Alexa`,bridgeWizard:`ตัวช่วยสร้าง Bridge`,setupByArea:`ตั้งค่าตามพื้นที่`,manualSetup:`ตั้งค่าด้วยตนเอง`,areaSetup:`ตั้งค่าพื้นที่`,documentation:`เอกสาร`,quickNavigation:`นำทางด่วน`,haConnection:`การเชื่อมต่อ HA`,startupOrder:`ลำดับการเริ่มต้น`,lockCredentials:`ข้อมูลรับรองล็อค`,filterReference:`อ้างอิงตัวกรอง`,successMessage:`Bridge ของคุณเชื่อมต่อกับ {{count}} Fabric คอนโทรลเลอร์แล้ว อุปกรณ์ควรปรากฏในแอปคอนโทรลเลอร์ของคุณ`,noBridgesHint:`ยังไม่มี Bridge ที่กำหนดค่า ใช้ตัวช่วยสร้าง Bridge หรือสร้างด้วยตนเอง`,customizeDashboard:`ปรับแต่งแดชบอร์ด`},bridge:{name:`ชื่อ Bridge`,port:`พอร์ต`,status:`สถานะ`,pairHint:`จับคู่ Bridge นี้กับคอนโทรลเลอร์ของคุณ`,pairDescription:`เปิดแอปคอนโทรลเลอร์ (Apple Home, Google Home หรือ Amazon Alexa) เพิ่มอุปกรณ์เสริมใหม่ แล้วสแกน QR โค้ดด้านล่างหรือป้อนรหัสจับคู่ด้วยตนเอง ตรวจสอบให้แน่ใจว่าคอนโทรลเลอร์อยู่ในเครือข่ายเดียวกับ Home Assistant`,failedEntities:`เอนทิตีที่ล้มเหลว`,serverModeRecommended:`แนะนำโหมดเซิร์ฟเวอร์สำหรับหุ่นยนต์ดูดฝุ่น`,serverModeDescription:`Bridge นี้มีหุ่นยนต์ดูดฝุ่นในโหมดบริดจ์ Apple Home และ Alexa จะแสดง Bridge เป็นอุปกรณ์เพิ่มเติม ทำให้เกิดรายการซ้ำ เปิดใช้โหมดเซิร์ฟเวอร์เพื่อเปิดเผยหุ่นยนต์ดูดฝุ่นเป็นอุปกรณ์ Matter แบบสแตนด์อโลน`,enableServerMode:`เปิดใช้โหมดเซิร์ฟเวอร์`,enabling:`กำลังเปิดใช้...`,start:`เริ่ม`,stop:`หยุด`,restart:`รีสตาร์ท`,factoryReset:`รีเซ็ตเป็นค่าโรงงาน`,pairingCode:`รหัสจับคู่`,openCommissioning:`เปิดหน้าต่างจับคู่`,multiPair:`จับคู่ Multi-Fabric`,deleteBridge:`ลบ Bridge`,deleteConfirm:`คุณแน่ใจหรือไม่ว่าต้องการลบ Bridge นี้?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} เอนทิตีไม่สามารถโหลดได้`,clickToShow:`คลิกเพื่อแสดงรายละเอียด`,clickToHide:`คลิกเพื่อซ่อนรายละเอียด`,loadFailed:`ไม่สามารถโหลดรายละเอียด Bridge`,refreshHint:`อุปกรณ์ใหม่และการเปลี่ยนแปลงป้ายกำกับจะถูกตรวจพบทุก 30 วินาที`,refreshingStates:`รีเฟรชสถานะใน {{seconds}} วินาที...`,serverModeSingleDeviceNote:`หมายเหตุ: โหมดเซิร์ฟเวอร์ต้องการให้หุ่นยนต์ดูดฝุ่นเป็นอุปกรณ์เดียวบน Bridge นี้ กรุณาลบเอนทิตีอื่นออกก่อน แล้วเปิดใช้โหมดเซิร์ฟเวอร์ในการตั้งค่า Bridge`,serverModeEnabled:`เปิดใช้โหมดเซิร์ฟเวอร์แล้ว Bridge จะรีสตาร์ทโดยมีหุ่นยนต์ดูดฝุ่นเป็นอุปกรณ์สแตนด์อโลน`,serverModeEnableFailed:`ไม่สามารถเปิดใช้โหมดเซิร์ฟเวอร์: {{error}}`,pairing:`การจับคู่`,bridgeInfo:`ข้อมูล Bridge`,commissioned:`จับคู่แล้ว`,addController:`เพิ่มคอนโทรลเลอร์อื่น`,forceSync:`บังคับซิงค์`,syncing:`กำลังซิงค์...`,editFilters:`แก้ไขตัวกรอง`,addFilters:`เพิ่มตัวกรอง`,bridgeNotRunning:`Bridge ไม่ได้ทำงาน เริ่ม Bridge เพื่อดูข้อมูลการจับคู่`,manualCode:`รหัสด้วยตนเอง`,bridgeId:`ID Bridge`,passcode:`รหัสผ่าน`,discriminator:`Discriminator`,connectedFabrics:`Fabric ที่เชื่อมต่อ ({{count}})`,noFabrics:`ยังไม่มีคอนโทรลเลอร์เชื่อมต่อ สแกน QR โค้ดด้วยคอนโทรลเลอร์ Matter`,entityFilters:`ตัวกรองเอนทิตี`,noFilters:`ไม่มีตัวกรองที่กำหนดค่า เอนทิตีที่รองรับทั้งหมดจะถูกเปิดเผย`,resetSuccess:`รีเซ็ต Bridge สำเร็จ`,deleteSuccess:`ลบ Bridge สำเร็จ`,confirmResetTitle:`รีเซ็ต Bridge`,confirmDeleteTitle:`ลบ Bridge`,importTitle:`นำเข้า Bridges`,overwriteExisting:`เขียนทับ Bridge ที่มีอยู่`,iconLabel:`ไอคอน Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`โหมดเซิร์ฟเวอร์`,autoForceSync:`ซิงค์อัตโนมัติ`,saveSuccess:`บันทึก Bridge แล้ว`,updateSuccess:`อัปเดตเสร็จสิ้น`,exportFailed:`ส่งออกล้มเหลว`,actionStarted:`เริ่มแล้ว`,actionStopped:`หยุดแล้ว`,actionRestarted:`รีสตาร์ทแล้ว`,actionFailed:`{{action}} ล้มเหลว`,actionResult:`{{label}} {{count}} Bridge`,couldNotLoad:`ไม่สามารถโหลด Bridge`,showingFirst:`แสดง {{count}} รายการแรก`,importParseFailed:`ไม่สามารถแยกวิเคราะห์ไฟล์นำเข้า กรุณาเลือกไฟล์ส่งออกที่ถูกต้อง`,importing:`กำลังนำเข้า...`,importCount:`นำเข้า {{count}} Bridge`,jsonEditor:`ตัวแก้ไข JSON`,formEditor:`ตัวแก้ไขแบบฟอร์ม`},endpoints:{title:`จุดปลายทาง`,searchPlaceholder:`ค้นหาจุดปลายทาง...`,sortBy:`เรียงลำดับ`,sortName:`ชื่อ`,sortEndpoint:`ID จุดปลายทาง`,sortType:`ประเภท`,cardView:`มุมมองการ์ด`,treeView:`มุมมองต้นไม้`,clusters:`คลัสเตอร์`,entityUnavailable:`เอนทิตีไม่พร้อมใช้งาน`,showUnavailable:`แสดง {{count}} ที่ไม่พร้อมใช้งาน`,showAll:`แสดงเอนทิตีทั้งหมด`,uploadImage:`อัปโหลดรูปภาพอุปกรณ์`,removeImage:`ลบรูปภาพที่กำหนดเอง`,editMapping:`แก้ไขการแมปเอนทิตี`,homeAssistantEntity:`เอนทิตี Home Assistant`,noEndpoints:`ไม่พบจุดปลายทาง`,expandAll:`ขยายทั้งหมด`,collapseAll:`ยุบทั้งหมด`,viewAll:`ดูอุปกรณ์ทั้งหมด`,haState:`สถานะ HA`,aboutEndpoint:`เกี่ยวกับจุดปลายทางนี้`,entityId:`ID เอนทิตี`,customName:`ชื่อที่กำหนดเอง`,deviceTypeOverride:`แทนที่ประเภทอุปกรณ์`,keyHaAttributes:`แอตทริบิวต์ HA สำคัญ`,entityMappings:`การแมปเอนทิตี`,copyData:`คัดลอกข้อมูลไปยังคลิปบอร์ด`,behavior:`พฤติกรรม`},health:{title:`สุขภาพและการวินิจฉัย`,version:`เวอร์ชัน`,uptime:`เวลาทำงาน`,homeAssistant:`Home Assistant`,connected:`เชื่อมต่อแล้ว`,disconnected:`ยกเลิกการเชื่อมต่อ`,bridgeStatus:`สถานะ Bridge`,refreshHealth:`รีเฟรชข้อมูลสุขภาพ`,exportDiagnostic:`ส่งออกการวินิจฉัย`,memory:`หน่วยความจำ`,fabricDetails:`รายละเอียด Fabric`,sessions:`เซสชัน`,subscriptions:`การสมัครรับข้อมูล`,noFabrics:`ไม่มี Fabric เชื่อมต่อ`,systemMetrics:`เมตริกระบบ`,heap:`Heap`,rss:`RSS`,external:`ภายนอก`,systemHealth:`สุขภาพระบบ`,fetchFailed:`ไม่สามารถดึงข้อมูลสถานะสุขภาพ`,connectionError:`ข้อผิดพลาดในการเชื่อมต่อ`,exportFailed:`ไม่สามารถส่งออกข้อมูลการวินิจฉัย`,restartFailed:`ไม่สามารถรีสตาร์ท Bridge`,unableToLoad:`ไม่สามารถโหลดสถานะสุขภาพ`,sortBy:`เรียงตาม`,created:`สร้างเมื่อ`,ascending:`น้อยไปมาก`,descending:`มากไปน้อย`,connectedTo:`เชื่อมต่อกับ`,autoRecovery:`การกู้คืนอัตโนมัติ`,recoveryAttempts:`ความพยายามในการกู้คืน`},mapping:{title:`การแมปเอนทิตี`,entityId:`ID เอนทิตี`,deviceType:`ประเภทอุปกรณ์`,customName:`ชื่อที่กำหนดเอง`,status:`สถานะ`,addMapping:`เพิ่มการแมป`,editMapping:`แก้ไขการแมป`,deleteMapping:`ลบการแมป`,saved:`บันทึกการแมปสำหรับ {{entityId}} แล้ว รีสตาร์ท Bridge เพื่อใช้การเปลี่ยนแปลง`,saveFailed:`ไม่สามารถบันทึกการแมป: {{error}}`,deleted:`ลบการแมปสำหรับ {{entityId}} แล้ว`,deleteFailed:`ไม่สามารถลบการแมป`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},languageSwitcher:{disclaimer:`การแปลอาจไม่สมบูรณ์`,contribute:`ช่วยปรับปรุงการแปล!`},translationEditor:{title:`ตัวแก้ไขการแปล`,editLanguage:`แก้ไขภาษา`,info:`แก้ไขการแปลโดยตรงในเบราว์เซอร์ของคุณ การเปลี่ยนแปลงจะถูกบันทึกในเครื่องและใช้งานได้ทันที ส่งออกการแปลของคุณเพื่อส่งให้โครงการ`,progress:`{{translated}} / {{total}} คีย์ที่แปลแล้ว`,localEdits:`{{count}} การแก้ไขในเครื่อง`,searchPlaceholder:`ค้นหาคีย์หรือค่า...`,filterAll:`คีย์ทั้งหมด`,filterMissing:`ขาดหายไป`,filterEdited:`แก้ไขแล้ว`,exportJson:`ส่งออก JSON`,copyJson:`คัดลอก JSON`,copied:`คัดลอกแล้ว!`,resetAll:`รีเซ็ตการแก้ไขทั้งหมด`,resetKey:`รีเซ็ตเป็นค่าเริ่มต้น`,noResults:`ไม่พบคีย์การแปลที่ตรงกัน`,addLanguage:`เพิ่มภาษา`,newLanguageCode:`รหัสภาษา (เช่น pt, ja, ko)`,newLanguageName:`ชื่อภาษา (เช่น Português)`,addLanguageButton:`เพิ่ม`,languageExists:`ภาษานี้มีอยู่แล้ว`,codeRequired:`ต้องระบุรหัสภาษา`,nameRequired:`ต้องระบุชื่อภาษา`,removeLanguage:`ลบภาษา`,importJson:`นำเข้า JSON`,importSuccess:`นำเข้า {{count}} การแปลแล้ว`,importFailed:`นำเข้าล้มเหลว: รูปแบบ JSON ไม่ถูกต้อง`},notFound:{title:`ไม่พบหน้า`,description:`หน้าที่คุณกำลังมองหาไม่มีอยู่`,backToDashboard:`กลับไปยังแดชบอร์ด`},footer:{github:`GitHub`,documentation:`เอกสาร`}},Cs={common:{loading:`Yükleniyor`,notFound:`Bulunamadı`,save:`Kaydet`,cancel:`İptal`,delete:`Sil`,edit:`Düzenle`,close:`Kapat`,refresh:`Yenile`,search:`Ara`,enabled:`Etkin`,disabled:`Devre dışı`,online:`Çevrimiçi`,offline:`Çevrimdışı`,running:`Çalışıyor`,stopped:`Durduruldu`,failed:`Başarısız`,starting:`Başlatılıyor`,devices:`Cihazlar`,fabrics:`Fabric'ler`,port:`Port`,unknown:`Bilinmiyor`,confirm:`Onayla`,create:`Oluştur`,back:`Geri`,next:`İleri`,actions:`İşlemler`,name:`Ad`,type:`Tür`,error:`Hata`,version:`Sürüm`,copy:`Kopyala`,copied:`Kopyalandı`,copyId:`Kimliği kopyala`,later:`Daha sonra`,skip:`Atla`,reset:`Sıfırla`,update:`Güncelle`,all:`Tümü`,ascending:`Artan`,descending:`Azalan`,moveUp:`Yukarı taşı`,moveDown:`Aşağı taşı`,selectAll:`Tümünü seç`,selectNone:`Seçimi kaldır`,live:`Canlı`,new:`Yeni`,overwrite:`Üzerine yaz`,active:`Aktif`,property:`Özellik`,value:`Değer`,custom:`Özel`,startAll:`Tümünü başlat`,stopAll:`Tümünü durdur`,restartAll:`Tümünü yeniden başlat`,import:`İçe aktar`,export:`Dışa aktar`,exportAll:`Tümünü dışa aktar`,wizard:`Sihirbaz`},nav:{bridges:`Köprüler`,devices:`Cihazlar`,health:`Sağlık`,diagnostics:`Tanılama`,settings:`Ayarlar`,networkMap:`Ağ haritası`,logs:`Kayıtlar`,startupOrder:`Başlangıç sırası`,lockCredentials:`Kilit kimlik bilgileri`,filterReference:`Filtre referansı`,systemLogs:`Sistem kayıtları`,lightMode:`Açık mod`,darkMode:`Koyu mod`},status:{error:`Hata`,unhealthy:`Sağlıksız`,noBridges:`Köprü yok`,loadingHealth:`Sağlık durumu yükleniyor`,unknown:`Bilinmiyor`},errorBoundary:{title:`Bir hata oluştu`,fallbackMessage:`Beklenmeyen bir sorun oluştu. Lütfen sayfayı yeniden yükleyin.`,reload:`Yeniden yükle`},settings:{title:`Ayarlar`,language:`Dil`,languageDescription:`Arayüz dilini seçin.`,checkUpdates:`Güncellemeleri kontrol et`,backupRestore:`Yedekleme ve geri yükleme`,exportBackup:`Yedeği dışa aktar`,importBackup:`Yedek içe aktar`,dangerZone:`Tehlikeli bölge`,resetAll:`Her şeyi sıfırla`,about:`Hakkında`,username:`Kullanıcı adı`,password:`Şifre`,enterNewPassword:`Yeni şifreyi girin`,enableAuth:`Kimlik doğrulamayı etkinleştir`,disableAuth:`Kimlik doğrulamayı devre dışı bırak`,disableAuthMessage:`Kimlik doğrulamayı devre dışı bırakmak sistemi korumasız hale getirebilir.`,disableAuthConfirm:`Kimlik doğrulamayı devre dışı bırakmak istediğinize emin misiniz?`,usernamePasswordRequired:`Kullanıcı adı ve şifre gerekli.`,authSaveFailed:`Kimlik doğrulama ayarları kaydedilemedi.`,authLoadFailed:`Kimlik doğrulama ayarları yüklenemedi.`,authDisabled:`Kimlik doğrulama devre dışı bırakıldı.`,authRemoveFailed:`Kimlik doğrulama kaldırılamadı.`},dashboard:{title:`Gösterge paneli`,systemOverview:`Sistem özeti`,quickActions:`Hızlı işlemler`,bridgeOverview:`Köprü özeti`,noBridges:`Henüz köprü yok`,createBridge:`Köprü oluştur`,viewAll:`Tümünü görüntüle`,totalDevices:`Toplam cihaz`,customize:`Özelleştir`,startAll:`Tümünü başlat`,stopAll:`Tümünü durdur`,restartAll:`Tümünü yeniden başlat`,welcome:`Hoş geldiniz`,welcomeDescription:`Sisteminizi buradan hızlıca yönetebilirsiniz.`,bridgeWizard:`Köprü sihirbazı`,setupByArea:`Alana göre kurulum`,manualSetup:`Manuel kurulum`,areaSetup:`Alan kurulumu`,documentation:`Dokümantasyon`,quickNavigation:`Hızlı gezinme`,haConnection:`Home Assistant bağlantısı`,startupOrder:`Başlangıç sırası`,lockCredentials:`Kilit kimlik bilgileri`,filterReference:`Filtre referansı`,successMessage:`İşlem başarıyla tamamlandı.`,noBridgesHint:`Başlamak için ilk köprünüzü oluşturun.`,customizeDashboard:`Gösterge panelini özelleştir`,bridgeStatusRunning:`Çalışan köprüler`,bridgeStatusFailed:`Başarısız köprüler`,devicesFailed:`Hatalı cihazlar`,uptimeFormat:`Çalışma süresi: {value}`},bridge:{name:`Ad`,port:`Port`,status:`Durum`,pairHint:`Eşleştirme için aşağıdaki bilgileri kullanın.`,pairDescription:`Bu köprüyü desteklenen ekosistemlerle eşleştirebilirsiniz.`,failedEntities:`Başarısız varlıklar`,serverModeRecommended:`Sunucu modu önerilir`,serverModeDescription:`Sunucu modu, tek cihaz yerine daha kararlı bir bağlantı deneyimi sunar.`,enableServerMode:`Sunucu modunu etkinleştir`,enabling:`Etkinleştiriliyor`,start:`Başlat`,stop:`Durdur`,restart:`Yeniden başlat`,factoryReset:`Fabrika ayarlarına sıfırla`,pairingCode:`Eşleştirme kodu`,openCommissioning:`Komisyon penceresini aç`,multiPair:`Çoklu eşleştirme`,deleteBridge:`Köprüyü sil`,deleteConfirm:`Bu köprüyü silmek istediğinize emin misiniz?`,featureFlags:`Özellik bayrakları`,failedEntitiesCount:`Başarısız varlık sayısı`,clickToShow:`Göstermek için tıklayın`,clickToHide:`Gizlemek için tıklayın`,loadFailed:`Yüklenemedi`,refreshHint:`Durumu güncellemek için yenileyin.`,refreshingStates:`Durumlar yenileniyor`,serverModeSingleDeviceNote:`Sunucu modu, tek cihaz yapılandırmalarında farklı davranabilir.`,serverModeEnabled:`Sunucu modu etkin`,serverModeEnableFailed:`Sunucu modu etkinleştirilemedi`,pairing:`Eşleştirme`,bridgeInfo:`Köprü bilgisi`,commissioned:`Komisyonlandı`,addController:`Denetleyici ekle`,openingCommissioning:`Komisyon penceresi açılıyor`,fabricTooltip:`Bu köprüye bağlı fabric bilgileri`,forceSync:`Zorla eşitle`,syncing:`Eşitleniyor`,forceSyncTooltip:`Tüm varlıkları yeniden eşitlemeye zorlar.`,editFilters:`Filtreleri düzenle`,addFilters:`Filtre ekle`,bridgeNotRunning:`Köprü çalışmıyor`,manualCode:`Manuel kod`,openingWindow:`Pencere açılıyor`,bridgeId:`Köprü kimliği`,passcode:`Geçiş kodu`,discriminator:`Ayırt edici`,connectedFabrics:`Bağlı fabric'ler`,noFabrics:`Fabric yok`,entityFilters:`Varlık filtreleri`,noFilters:`Filtre yok`,scanQrCode:`QR kodu tara`,appleHomeWarning:`Apple Home ile eşleştirmeden önce mevcut yapılandırmayı kontrol edin.`,googleHomeWarning:`Google Home ile eşleştirmeden önce mevcut yapılandırmayı kontrol edin.`,resetSuccess:`Sıfırlama başarılı`,deleteSuccess:`Silme başarılı`,confirmResetTitle:`Sıfırlamayı onayla`,confirmResetMessage:`Bu köprüyü fabrika ayarlarına sıfırlamak istediğinize emin misiniz?`,confirmDeleteTitle:`Silmeyi onayla`,confirmDeleteMessage:`Bu köprü kalıcı olarak silinecek. Devam etmek istiyor musunuz?`,importTitle:`Köprü içe aktar`,overwriteExisting:`Mevcut olanların üzerine yaz`,iconLabel:`Simge etiketi`,google:`Google`,alexa:`Alexa`,serverMode:`Sunucu modu`,autoForceSync:`Otomatik zorla eşitle`,saveSuccess:`Başarıyla kaydedildi`,updateSuccess:`Başarıyla güncellendi`,exportFailed:`Dışa aktarma başarısız`,actionStarted:`İşlem başlatıldı`,actionStopped:`İşlem durduruldu`,actionRestarted:`İşlem yeniden başlatıldı`,actionFailed:`İşlem başarısız oldu`,actionResult:`İşlem sonucu`,couldNotLoad:`Yüklenemedi`,showingFirst:`İlk {count} kayıt gösteriliyor`,importParseFailed:`İçe aktarılan veri çözümlenemedi`,importing:`İçe aktarılıyor`,importCount:`{count} öğe içe aktarılacak`,jsonEditor:`JSON düzenleyici`,formEditor:`Form düzenleyici`},endpoints:{title:`Uç noktalar`,searchPlaceholder:`Uç nokta ara`,sortBy:`Sıralama ölçütü`,sortName:`Ada göre sırala`,sortEndpoint:`Uç noktaya göre sırala`,sortType:`Türe göre sırala`,cardView:`Kart görünümü`,treeView:`Ağaç görünümü`,clusters:`Kümeler`,entityUnavailable:`Varlık kullanılamıyor`,showUnavailable:`Kullanılamayanları göster`,showAll:`Tümünü göster`,uploadImage:`Görsel yükle`,removeImage:`Görseli kaldır`,editMapping:`Eşlemeyi düzenle`,homeAssistantEntity:`Home Assistant varlığı`,noEndpoints:`Uç nokta yok`,expandAll:`Tümünü genişlet`,collapseAll:`Tümünü daralt`,viewAll:`Tümünü görüntüle`,haState:`HA durumu`,aboutEndpoint:`Uç nokta hakkında`,entityId:`Varlık kimliği`,customName:`Özel ad`,deviceTypeOverride:`Cihaz türünü geçersiz kıl`,keyHaAttributes:`Ana HA öznitelikleri`,entityMappings:`Varlık eşlemeleri`,copyData:`Veriyi kopyala`,behavior:`Davranış`},health:{title:`Sağlık durumu`,version:`Sürüm`,uptime:`Çalışma süresi`,homeAssistant:`Home Assistant`,connected:`Bağlı`,disconnected:`Bağlantı yok`,bridgeStatus:`Köprü durumu`,refreshHealth:`Sağlık durumunu yenile`,exportDiagnostic:`Tanılama verisini dışa aktar`,memory:`Bellek`,fabricDetails:`Fabric detayları`,sessions:`Oturumlar`,subscriptions:`Abonelikler`,noFabrics:`Fabric yok`,systemMetrics:`Sistem metrikleri`,heap:`Heap`,rss:`RSS`,external:`Harici`,systemHealth:`Sistem sağlığı`,fetchFailed:`Veri alınamadı`,connectionError:`Bağlantı hatası`,exportFailed:`Dışa aktarma başarısız`,restartFailed:`Yeniden başlatma başarısız`,unableToLoad:`Yüklenemiyor`,sortBy:`Sırala`,created:`Oluşturulma`,ascending:`Artan`,descending:`Azalan`,connectedTo:`Bağlı olduğu yer`,autoRecovery:`Otomatik kurtarma`,recoveryAttempts:`Kurtarma denemeleri`,fabrics:`fabric`,networkDiagnostics:`Ağ Tanılama`,checksPassed:`başarılı`,checksWarning:`uyarılar`,checksFailed:`başarısız`,hideDetails:`Detayları gizle`,showDetails:`Detayları göster`,allChecks:`Tüm Kontroller`,check:`Kontrol`,statusLabel:`Durum`,message:`Mesaj`,networkInterfaces:`Ağ Arayüzleri`,interfaceName:`Arayüz`,refresh:`Yenile`},mapping:{title:`Eşleme`,entityId:`Varlık kimliği`,deviceType:`Cihaz türü`,customName:`Özel ad`,status:`Durum`,addMapping:`Eşleme ekle`,editMapping:`Eşlemeyi düzenle`,deleteMapping:`Eşlemeyi sil`,saved:`Kaydedildi`,saveFailed:`Kaydetme başarısız`,deleted:`Silindi`,deleteFailed:`Silme başarısız`,matterTag:`Matter etiketi`,exportProfile:`Profili dışa aktar`,importProfile:`Profil içe aktar`,profileName:`Profil adı`,match:`Eşleşme`,existing:`Mevcut`,autoDetect:`Otomatik algıla`,loadFailed:`Yükleme başarısız`,noMappings:`Eşleme yok`,applying:`Uygulanıyor`,applyCount:`{count} eşleme uygulanacak`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},notFound:{title:`Sayfa bulunamadı`,description:`Aradığınız sayfa mevcut değil veya taşınmış olabilir.`,backToDashboard:`Gösterge paneline dön`},devices:{title:`Cihazlar`,searchPlaceholder:`Cihaz ara`,filterBridge:`Köprüye göre filtrele`,allBridges:`Tüm köprüler`,filterDeviceType:`Cihaz türüne göre filtrele`,allTypes:`Tüm türler`,sortBy:`Sırala`,sortBridge:`Köprüye göre sırala`,sortType:`Türe göre sırala`,sortName:`Ada göre sırala`,deviceCount:`Cihaz sayısı`,filteredCount:`Filtrelenmiş kayıt sayısı`},diagnostics:{title:`Tanılama`,stateUpdate:`Durum güncellemesi`,command:`Komut`,entityError:`Varlık hatası`,sessionOpen:`Oturum açıldı`,sessionClose:`Oturum kapandı`,subscription:`Abonelik`,bridgeStart:`Köprü başlatıldı`,bridgeStop:`Köprü durduruldu`,entityWarning:`Uyarı`,filterEvents:`Olayları filtrele`,clearEvents:`Olayları temizle`,noEvents:`Olay yok`},startup:{title:`Başlangıç sırası`,description:`Köprülerin başlangıç sırasını belirleyin.`,saveSuccess:`Başlangıç sırası kaydedildi`,saveFailed:`Başlangıç sırası kaydedilemedi`,saveChanges:`Değişiklikleri kaydet`,unsavedChanges:`Kaydedilmemiş değişiklikler var`,noBridges:`Köprü yok`,saveOrder:`Sırayı kaydet`},areaSetup:{title:`Alan kurulumu`,heading:`Alanlara göre köprü oluştur`,description:`Seçilen alanlara göre otomatik köprüler oluşturun.`,noAreas:`Alan bulunamadı`,selectController:`Denetleyici seçin`,selectAreas:`Alanları seçin`,clear:`Temizle`,createBridges:`Köprüleri oluştur`,results:`Sonuçlar`,goToBridges:`Köprülere git`,createdSuccess:`Köprüler başarıyla oluşturuldu`,createdPartial:`Bazı köprüler oluşturuldu`,loadFailed:`Veri yüklenemedi`,creating:`Oluşturuluyor`,created:`Oluşturuldu`,unknownError:`Bilinmeyen hata`},lockCredentials:{title:`Kilit kimlik bilgileri`,addCredential:`Kimlik bilgisi ekle`,editCredential:`Kimlik bilgisini düzenle`,lockEntityId:`Kilit varlık kimliği`,lockEntityHelperText:`Kimlik bilgisinin uygulanacağı kilit varlığını girin.`,pinCode:`PIN kodu`,nameOptional:`Ad (isteğe bağlı)`,namePlaceholder:`Örn. Misafir PIN`,nameHelperText:`Bu kimlik bilgisini daha kolay ayırt etmek için bir ad verin.`,entityRequired:`Varlık gerekli`,pinLength:`PIN uzunluğu geçersiz`,pinDigitsOnly:`PIN yalnızca rakamlardan oluşmalıdır`,saveFailed:`Kaydetme başarısız`,loadFailed:`Yükleme başarısız`,deleteFailed:`Silme başarısız`,updateFailed:`Güncelleme başarısız`,enable:`Etkinleştir`,disable:`Devre dışı bırak`,confirmDeleteTitle:`Silmeyi onayla`,confirmDeleteMessage:`Bu kimlik bilgisini silmek istediğinize emin misiniz?`},labels:{title:`Etiketler`,info:`Filtreleme ve referans için kullanılabilecek etiketler ve alanlar.`,searchPlaceholder:`Etiket ara`,loadFailed:`Etiketler yüklenemedi`,labelsSection:`Etiketler`,labelsHint:`Mevcut etiket değerleri`,noLabels:`Etiket yok`,displayName:`Görünen ad`,labelId:`Etiket kimliği`,areaId:`Alan kimliği`,areasSection:`Alanlar`,areasHint:`Mevcut alan değerleri`,noAreas:`Alan yok`,otherFilterValues:`Diğer filtre değerleri`,domains:`Domain'ler`,domainsHint:`Kullanılabilir domain değerleri`,platforms:`Platformlar`,platformsHint:`Kullanılabilir platform değerleri`,entityCategories:`Varlık kategorileri`,entityCategoriesHint:`Kullanılabilir varlık kategori değerleri`,deviceClasses:`Cihaz sınıfları`,deviceClassesHint:`Kullanılabilir cihaz sınıfı değerleri`,deviceNames:`Cihaz adları`,deviceNamesHint:`Kullanılabilir cihaz adı değerleri`,productNames:`Ürün adları`,productNamesHint:`Kullanılabilir ürün adı değerleri`},logs:{title:`Kayıtlar`,logLevel:`Kayıt seviyesi`,error:`Hata`,warning:`Uyarı`,info:`Bilgi`,debug:`Hata ayıklama`,searchPlaceholder:`Kayıtlarda ara`,noResults:`Sonuç yok`,autoRefresh:`Otomatik yenile`},backup:{title:`Yedekleme`,description:`Yapılandırmalarınızı ve verilerinizi yedekleyin veya geri yükleyin.`,configBackup:`Yapılandırma yedeği`,configBackupDesc:`Yalnızca yapılandırma ayarlarını yedekler.`,configBackupNote:`Bu seçenek cihaz verilerini içermez.`,fullBackup:`Tam yedek`,fullBackupDesc:`Tüm yapılandırmaları ve ilişkili verileri yedekler.`,fullBackupWarning:`Tam yedekler daha büyük boyutlu olabilir.`,restoreFromBackup:`Yedekten geri yükle`,restoreDesc:`Daha önce alınmış bir yedeği geri yükleyin.`,restoreTitle:`Yedeği geri yükle`,selectBridges:`Köprüleri seç`,overwriteExisting:`Mevcut olanların üzerine yaz`,includeMappings:`Eşlemeleri dahil et`,restoreIdentities:`Kimlikleri geri yükle`,restore:`Geri yükle`,downloadSuccess:`İndirme başarılı`,restartRequired:`Yeniden başlatma gerekiyor`,restartMessage:`Değişikliklerin uygulanması için sistem yeniden başlatılmalıdır.`,restartNote:`Kaydedilmemiş işlemler etkilenebilir.`,restartNow:`Şimdi yeniden başlat`,storedBackups:`Kayıtlı yedekler`,createSnapshot:`Anlık görüntü oluştur`,noSnapshots:`Anlık görüntü yok`,downloadSnapshot:`Anlık görüntüyü indir`,restoreSnapshot:`Anlık görüntüyü geri yükle`,auto:`Otomatik`,manual:`Manuel`,snapshotCreated:`Anlık görüntü oluşturuldu`,snapshotRestored:`Anlık görüntü geri yüklendi`,confirmRestore:`Geri yüklemeyi onayla`,confirmRestoreMessage:`Bu işlem mevcut yapılandırmayı değiştirebilir. Devam etmek istiyor musunuz?`,restoreWarning:`Geri yükleme mevcut verilerin üzerine yazabilir.`,confirmDelete:`Silmeyi onayla`,confirmDeleteMessage:`Bu yedeği silmek istediğinize emin misiniz?`,settings:`Ayarlar`,autoBackupLabel:`Otomatik yedekleme`,autoBackupDesc:`Belirli aralıklarla otomatik yedek oluştur.`,retentionCount:`Saklama adedi`,retentionCountDesc:`Saklanacak otomatik yedek sayısı`},networkMap:{title:`Ağ haritası`,hubLabel:`Merkez`,undoMove:`Taşımayı geri al`,resetLayout:`Yerleşimi sıfırla`,refreshData:`Veriyi yenile`,fullscreen:`Tam ekran`,exitFullscreen:`Tam ekrandan çık`,legend:`Lejant`,controller:`Denetleyici`,hub:`Merkez`,bridge:`Köprü`,device:`Cihaz`,failed:`Başarısız`},updateChecker:{title:`Güncelleme denetleyicisi`,checkNow:`Şimdi kontrol et`,currentVersion:`Mevcut sürüm`,latestVersion:`En son sürüm`,updateAvailable:`Güncelleme mevcut`,upToDate:`Güncel`,releaseNotes:`Sürüm notları`,notAvailable:`Bilgi mevcut değil`,checkFailed:`Güncelleme kontrolü başarısız`,unreachable:`Erişilemiyor`,instructionAddon:`Eklentiyi güncellemek için ilgili paket yöneticisini kullanın.`,instructionDocker:`Docker imajını güncellemek için en son sürümü çekin ve yeniden başlatın.`,instructionNpm:`npm üzerinden güncellemek için en son paketi yükleyin.`},bridgeWizard:{title:`Köprü sihirbazı`,stepTemplate:`Şablon`,stepController:`Denetleyici`,stepBridgeInfo:`Köprü bilgisi`,stepEntityFilter:`Varlık filtresi`,stepFeatureFlags:`Özellik bayrakları`,stepReview:`Gözden geçir`,autoCompose:`Otomatik oluştur`,autoForceSyncFlag:`Otomatik zorla eşitle`,invertCover:`Kapak yönünü ters çevir`,invertCoverDescription:`Kapak yönünü ters çevirmek için bu seçeneği etkinleştirin.`,includeHidden:`Gizlileri dahil et`,includeHiddenDescription:`Gizli varlıkları da dahil eder.`,bridgeName:`Köprü adı`,portLabel:`Port`,portAutoAssign:`Portu otomatik ata`,nameRequired:`Ad gerekli`,createFailed:`Köprü oluşturulamadı`,bridgeInfoDescription:`Köprü için temel bilgileri girin.`,serverModeLabel:`Sunucu modu`,serverModeTooltip:`Sunucu modu daha kararlı bağlantı sağlayabilir.`,entityFilterDescription:`Hangi varlıkların dahil edileceğini belirleyin.`,includeAll:`Tümünü dahil et`,entityId:`Varlık kimliği`,includePattern:`Dahil etme deseni`,entityFilters:`Varlık filtreleri`,serverModeEntityHint:`Sunucu modunda bazı varlık davranışları değişebilir.`,templatePreConfigured:`Şablon önceden yapılandırılmış`,wildcardHint:`Joker karakter olarak * kullanabilirsiniz.`,commaHint:`Birden fazla değeri virgülle ayırın.`,excludePatterns:`Hariç tutma desenleri`,excludeHelperText:`Hariç tutulacak varlık desenlerini girin.`,skipTemplate:`Şablonu atla`,creating:`Oluşturuluyor`,createBridge:`Köprü oluştur`,searchRules:`Arama kuralları`,templateDescription:`Hazır şablonlardan biriyle hızlı başlangıç yapın.`,controllerDescription:`Bu köprünün bağlanacağı denetleyiciyi seçin.`,controllerHint:`Uygun denetleyiciyi listeden seçin.`,templateApplied:`Şablon uygulandı`,filterPreConfiguredFrom:`Filtre şuradan önceden yapılandırıldı:`,featureFlagsDescription:`İsteğe bağlı özellikleri etkinleştirin veya devre dışı bırakın.`,recommendedFlags:`Önerilen bayraklar`,selectFlags:`Bayrak seçin`,reviewDescription:`Oluşturmadan önce yapılandırmanızı gözden geçirin.`,bridgesToCreate:`Oluşturulacak köprüler`,bridgesCreated:`Köprüler oluşturuldu`,addAnother:`Bir tane daha ekle`},footer:{github:`GitHub`,documentation:`Dokümantasyon`},languageSwitcher:{disclaimer:`Çeviriler topluluk katkıları içerebilir.`,contribute:`Katkıda bulun`},translationEditor:{title:`Çeviri düzenleyici`,editLanguage:`Dili düzenle`,info:`Eksik veya değiştirilmiş çevirileri buradan yönetebilirsiniz.`,progress:`İlerleme`,localEdits:`Yerel düzenlemeler`,searchPlaceholder:`Anahtar veya çeviri ara`,filterAll:`Tümü`,filterMissing:`Eksik olanlar`,filterEdited:`Düzenlenenler`,exportJson:`JSON dışa aktar`,copyJson:`JSON'u kopyala`,copied:`Kopyalandı`,resetAll:`Tümünü sıfırla`,resetKey:`Anahtarı sıfırla`,noResults:`Sonuç yok`,addLanguage:`Dil ekle`,newLanguageCode:`Yeni dil kodu`,newLanguageName:`Yeni dil adı`,addLanguageButton:`Dili ekle`,languageExists:`Bu dil zaten mevcut`,codeRequired:`Dil kodu gerekli`,nameRequired:`Dil adı gerekli`,removeLanguage:`Dili kaldır`,removeLanguageConfirm:`Bu dili kaldırmak istediğinize emin misiniz?`,importJson:`JSON içe aktar`,importSuccess:`İçe aktarma başarılı`,importFailed:`İçe aktarma başarısız`}},ws={common:{loading:`加载中`,notFound:`未找到`,save:`保存`,cancel:`取消`,delete:`删除`,edit:`编辑`,close:`关闭`,refresh:`刷新`,search:`搜索`,enabled:`已启用`,disabled:`已禁用`,online:`在线`,offline:`离线`,running:`运行中`,stopped:`已停止`,failed:`失败`,starting:`启动中`,devices:`设备`,fabrics:`Fabrics`,port:`端口`,unknown:`未知`,confirm:`确认`,create:`创建`,back:`返回`,next:`下一步`,actions:`操作`,name:`名称`,type:`类型`,error:`错误`,version:`版本`,copy:`复制`,copied:`已复制!`,copyId:`复制 ID`,later:`稍后`,skip:`跳过`,reset:`重置`,update:`更新`,all:`全部`,ascending:`升序`,descending:`降序`,moveUp:`上移`,moveDown:`下移`,selectAll:`全选`,selectNone:`取消全选`,live:`实时`,new:`新建`,overwrite:`覆盖`,active:`活动`,property:`属性`,value:`值`,custom:`自定义`,startAll:`全部启动`,stopAll:`全部停止`,restartAll:`全部重启`,import:`导入`,export:`导出`,exportAll:`全部导出`,wizard:`向导`},nav:{bridges:`Bridges`,devices:`所有设备`,health:`健康与诊断`,diagnostics:`实时事件`,settings:`设置`,networkMap:`网络拓扑`,logs:`日志`,startupOrder:`启动顺序`,lockCredentials:`锁具凭证`,filterReference:`过滤器参考`,systemLogs:`系统日志`,lightMode:`浅色模式`,darkMode:`深色模式`},status:{error:`错误`,unhealthy:`异常`,noBridges:`无 Bridge`,loadingHealth:`正在加载健康状态...`,unknown:`未知`},errorBoundary:{title:`出现错误`,fallbackMessage:`发生了意外错误。`,reload:`重新加载页面`},settings:{title:`设置`,language:`语言`,languageDescription:`选择界面语言。`,checkUpdates:`检查更新`,backupRestore:`备份与恢复`,exportBackup:`导出备份`,importBackup:`导入备份`,dangerZone:`危险操作`,resetAll:`全部重置`,about:`关于`},dashboard:{title:`仪表盘`,systemOverview:`系统概览`,quickActions:`快捷操作`,bridgeOverview:`Bridge 概览`,noBridges:`尚未配置 Bridge。`,createBridge:`创建 Bridge`,viewAll:`查看全部`,totalDevices:`设备总数`,customize:`自定义`,startAll:`全部启动`,stopAll:`全部停止`,restartAll:`全部重启`,welcome:`欢迎使用 Home Assistant Matter Hub`,welcomeDescription:`将你的 Home Assistant 设备桥接到 Apple Home、Google Home 和 Amazon Alexa 等 Matter 控制器。`,bridgeWizard:`Bridge 向导`,setupByArea:`按区域设置`,manualSetup:`手动设置`,areaSetup:`区域设置`,documentation:`文档`,quickNavigation:`快捷导航`,haConnection:`HA 连接`,startupOrder:`启动顺序`,lockCredentials:`锁具凭证`,filterReference:`过滤器参考`,successMessage:`你的 Bridge 已连接到 {{count}} 个控制器 Fabric。设备现在应该出现在你的控制器应用中。`,noBridgesHint:`尚未配置 Bridge。使用 Bridge 向导或手动创建一个。`,customizeDashboard:`自定义仪表盘`},bridge:{name:`Bridge 名称`,port:`端口`,status:`状态`,pairHint:`将此 Bridge 与你的控制器配对`,pairDescription:`打开你的控制器应用(Apple Home、Google Home 或 Amazon Alexa),添加新配件,扫描下方的二维码或输入手动配对码。确保你的控制器与 Home Assistant 在同一网络上。`,failedEntities:`失败的实体`,serverModeRecommended:`推荐为扫地机器人启用服务器模式`,serverModeDescription:`此 Bridge 包含一个桥接模式的扫地机器人。Apple Home 和 Alexa 会将 Bridge 显示为额外设备,导致重复条目。启用服务器模式可将扫地机器人作为独立的 Matter 设备公开。`,enableServerMode:`启用服务器模式`,enabling:`正在启用...`,start:`启动`,stop:`停止`,restart:`重启`,factoryReset:`恢复出厂设置`,pairingCode:`配对码`,openCommissioning:`打开配对窗口`,multiPair:`多 Fabric 配对`,deleteBridge:`删除 Bridge`,deleteConfirm:`确定要删除此 Bridge 吗?`,featureFlags:`功能标志`,failedEntitiesCount:`{{count}} 个实体无法加载。`,clickToShow:`点击显示详情。`,clickToHide:`点击隐藏详情。`,loadFailed:`无法加载 Bridge 详情`,refreshHint:`新设备和标签更改每 30 秒检测一次。`,refreshingStates:`{{seconds}} 秒后刷新状态...`,serverModeSingleDeviceNote:`注意:服务器模式要求扫地机器人是此 Bridge 上的唯一设备。请先移除其他实体,然后在 Bridge 设置中启用服务器模式。`,serverModeEnabled:`服务器模式已启用。Bridge 将以你的扫地机器人作为独立设备重启。`,serverModeEnableFailed:`无法启用服务器模式:{{error}}`,pairing:`配对`,bridgeInfo:`Bridge 信息`,commissioned:`已配对`,addController:`添加其他控制器`,forceSync:`强制同步`,syncing:`同步中...`,editFilters:`编辑过滤器`,addFilters:`添加过滤器`,bridgeNotRunning:`Bridge 未运行。启动 Bridge 以查看配对信息。`,manualCode:`手动代码`,bridgeId:`Bridge ID`,passcode:`密码`,discriminator:`Discriminator`,connectedFabrics:`已连接的 Fabric ({{count}})`,noFabrics:`尚无控制器连接。请使用 Matter 控制器扫描二维码。`,entityFilters:`实体过滤器`,noFilters:`未配置过滤器。所有支持的实体将被公开。`,resetSuccess:`Bridge 重置成功`,deleteSuccess:`Bridge 删除成功`,confirmResetTitle:`重置 Bridge`,confirmDeleteTitle:`删除 Bridge`,importTitle:`导入 Bridge`,overwriteExisting:`覆盖现有 Bridge`,iconLabel:`Bridge 图标`,google:`Google`,alexa:`Alexa`,serverMode:`服务器模式`,autoForceSync:`自动同步`,saveSuccess:`Bridge 已保存`,updateSuccess:`更新完成`,exportFailed:`导出失败`,actionStarted:`已启动`,actionStopped:`已停止`,actionRestarted:`已重启`,actionFailed:`{{action}} 失败`,actionResult:`{{label}} {{count}} 个 Bridge`,couldNotLoad:`无法加载 Bridge`,showingFirst:`显示前 {{count}} 个`,importParseFailed:`无法解析导入文件。请选择有效的导出文件。`,importing:`导入中...`,importCount:`导入 {{count}} 个 Bridge`,jsonEditor:`JSON 编辑器`,formEditor:`表单编辑器`},endpoints:{title:`端点`,searchPlaceholder:`搜索端点...`,sortBy:`排序`,sortName:`名称`,sortEndpoint:`端点 ID`,sortType:`类型`,cardView:`卡片视图`,treeView:`树状视图`,clusters:`集群`,entityUnavailable:`实体不可用`,showUnavailable:`显示 {{count}} 个不可用`,showAll:`显示所有实体`,uploadImage:`上传设备图片`,removeImage:`移除自定义图片`,editMapping:`编辑实体映射`,homeAssistantEntity:`Home Assistant 实体`,noEndpoints:`未找到端点。`,expandAll:`全部展开`,collapseAll:`全部折叠`,viewAll:`查看所有设备`,haState:`HA 状态`,aboutEndpoint:`关于此端点`,entityId:`实体 ID`,customName:`自定义名称`,deviceTypeOverride:`设备类型覆盖`,keyHaAttributes:`关键 HA 属性`,entityMappings:`实体映射`,copyData:`复制数据到剪贴板`,behavior:`行为`},health:{title:`健康与诊断`,version:`版本`,uptime:`运行时间`,homeAssistant:`Home Assistant`,connected:`已连接`,disconnected:`已断开`,bridgeStatus:`Bridge 状态`,refreshHealth:`刷新健康数据`,exportDiagnostic:`导出诊断`,memory:`内存`,fabricDetails:`Fabric 详情`,sessions:`会话`,subscriptions:`订阅`,noFabrics:`无 Fabric 连接`,systemMetrics:`系统指标`,heap:`堆内存`,rss:`RSS`,external:`外部`,systemHealth:`系统健康`,fetchFailed:`无法获取健康状态`,connectionError:`连接错误`,exportFailed:`无法导出诊断数据`,restartFailed:`无法重启 Bridge`,unableToLoad:`无法加载健康状态`,sortBy:`排序方式`,created:`创建时间`,ascending:`升序`,descending:`降序`,connectedTo:`已连接到`,autoRecovery:`自动恢复`,recoveryAttempts:`恢复尝试`},mapping:{title:`实体映射`,entityId:`实体 ID`,deviceType:`设备类型`,customName:`自定义名称`,status:`状态`,addMapping:`添加映射`,editMapping:`编辑映射`,deleteMapping:`删除映射`,saved:`已为 {{entityId}} 保存映射。重启 Bridge 以应用更改。`,saveFailed:`无法保存映射:{{error}}`,deleted:`已删除 {{entityId}} 的映射。`,deleteFailed:`无法删除映射。`,customProductName:`自定义产品名称`,customProductNameHelp:`覆盖报告给 Matter 控制器的产品名称(型号)。某些控制器(如 Aqara)会将此显示为设备名称。`,customVendorName:`自定义厂商名称`,customVendorNameHelp:`覆盖报告给 Matter 控制器的厂商/制造商名称。`,customSerialNumber:`自定义序列号`,customSerialNumberHelp:`覆盖报告给 Matter 控制器的序列号。`},languageSwitcher:{disclaimer:`翻译可能不完整。`,contribute:`帮助改进翻译!`},translationEditor:{title:`翻译编辑器`,editLanguage:`编辑语言`,info:`直接在浏览器中编辑翻译。更改会本地保存并立即应用。导出你的翻译以提交给项目。`,progress:`{{translated}} / {{total}} 个键已翻译`,localEdits:`{{count}} 处本地编辑`,searchPlaceholder:`搜索键或值...`,filterAll:`所有键`,filterMissing:`缺失`,filterEdited:`已编辑`,exportJson:`导出 JSON`,copyJson:`复制 JSON`,copied:`已复制!`,resetAll:`重置所有编辑`,resetKey:`重置为默认值`,noResults:`未找到匹配的翻译键。`,addLanguage:`添加语言`,newLanguageCode:`语言代码(如 pt、ja、ko)`,newLanguageName:`语言名称(如 Português)`,addLanguageButton:`添加`,languageExists:`该语言已存在。`,codeRequired:`语言代码为必填项。`,nameRequired:`语言名称为必填项。`,removeLanguage:`移除语言`,importJson:`导入 JSON`,importSuccess:`已导入 {{count}} 条翻译。`,importFailed:`导入失败:JSON 格式无效。`},notFound:{title:`页面未找到`,description:`您要查找的页面不存在。`,backToDashboard:`返回仪表盘`},footer:{github:`GitHub`,documentation:`文档`}},Ts={common:{loading:`載入中`,notFound:`未找到`,save:`儲存`,cancel:`取消`,delete:`刪除`,edit:`編輯`,close:`關閉`,refresh:`重新整理`,search:`搜尋`,enabled:`已啟用`,disabled:`已停用`,online:`上線`,offline:`離線`,running:`執行中`,stopped:`已停止`,failed:`失敗`,starting:`啟動中`,devices:`裝置`,fabrics:`Fabrics`,port:`連接埠`,unknown:`未知`,confirm:`確認`,create:`建立`,back:`返回`,next:`下一步`,actions:`操作`,name:`名稱`,type:`類型`,error:`錯誤`,version:`版本`,copy:`複製`,copied:`已複製!`,copyId:`複製 ID`,later:`稍後`,skip:`跳過`,reset:`重設`,update:`更新`,all:`全部`,ascending:`遞增`,descending:`遞減`,moveUp:`上移`,moveDown:`下移`,selectAll:`全選`,selectNone:`全不選`,live:`即時`,new:`新增`,overwrite:`覆蓋`,active:`活動`,property:`屬性`,value:`值`,custom:`自定義`,startAll:`全部啟動`,stopAll:`全部停止`,restartAll:`全部重新啟動`,import:`匯入`,export:`匯出`,exportAll:`全部匯出`,wizard:`設定精靈`},nav:{bridges:`橋接器 (Bridges)`,devices:`所有裝置`,health:`狀態診斷`,diagnostics:`即時事件`,settings:`設定`,networkMap:`網路拓撲`,logs:`日誌`,startupOrder:`啟動順序`,lockCredentials:`鎖具憑證`,filterReference:`篩選器參考`,systemLogs:`系統日誌`,lightMode:`淺色模式`,darkMode:`深色模式`},status:{error:`錯誤`,unhealthy:`異常`,noBridges:`無橋接器`,loadingHealth:`正在載入健康狀態...`,unknown:`未知`},errorBoundary:{title:`發生錯誤`,fallbackMessage:`發生預料之外的錯誤。`,reload:`重新載入頁面`},settings:{title:`設定`,language:`語言`,languageDescription:`選擇介面語言。`,checkUpdates:`檢查更新`,backupRestore:`備份與還原`,exportBackup:`匯出備份`,importBackup:`匯入備份`,dangerZone:`危險區域`,resetAll:`全部重設`,about:`關於`,username:`使用者名稱`,password:`密碼`,enterNewPassword:`輸入新密碼`,enableAuth:`啟用驗證`,disableAuth:`停用驗證`,disableAuthMessage:`您確定要停用身份驗證嗎?這將允許任何存取此網址的使用者控制您的裝置。`,disableAuthConfirm:`確認停用`,usernamePasswordRequired:`需要使用者名稱和密碼`,authSaveFailed:`儲存驗證設定失敗`,authLoadFailed:`載入驗證設定失敗`,authDisabled:`驗證已停用`,authRemoveFailed:`移除驗證失敗`},dashboard:{title:`儀表板`,systemOverview:`系統概覽`,quickActions:`快速操作`,bridgeOverview:`橋接器概覽`,noBridges:`尚未設定橋接器。`,createBridge:`建立橋接器`,viewAll:`查看全部`,totalDevices:`裝置總數`,customize:`自定義`,startAll:`全部啟動`,stopAll:`全部停止`,restartAll:`全部重新啟動`,welcome:`歡迎使用 Home Assistant Matter Hub`,welcomeDescription:`將您的 Home Assistant 裝置橋接到 Apple Home、Google Home 和 Amazon Alexa 等 Matter 控制器。`,bridgeWizard:`橋接器精靈`,setupByArea:`按區域設定`,manualSetup:`手動設定`,areaSetup:`區域設定`,documentation:`文件`,quickNavigation:`快速導覽`,haConnection:`HA 連線`,startupOrder:`啟動順序`,lockCredentials:`鎖具憑證`,filterReference:`篩選器參考`,successMessage:`您的橋接器已連線到 {{count}} 個控制器 Fabric。裝置現在應該會出現在您的控制器 App 中。`,noBridgesHint:`尚未設定橋接器。請使用精靈或手動建立一個。`,customizeDashboard:`自定義儀表板`,bridgeStatusRunning:`橋接器運作中`,bridgeStatusFailed:`橋接器異常`,devicesFailed:`裝置失敗`,uptimeFormat:`已運行時間`},bridge:{name:`橋接器名稱`,port:`連接埠`,status:`狀態`,pairHint:`將此橋接器與您的控制器配對`,pairDescription:`開啟您的控制器 App(Apple Home、Google Home 或 Amazon Alexa),新增配件,掃描下方的 QR Code 或輸入手動配對碼。請確保您的控制器與 Home Assistant 位於同一網路環境。`,failedEntities:`失敗的實體`,serverModeRecommended:`建議為掃地機器人啟用伺服器模式`,serverModeDescription:`此橋接器包含一個橋接模式的掃地機器人。Apple Home 和 Alexa 會將橋接器顯示為額外裝置,導致重複項目。啟用伺服器模式可將掃地機器人作為獨立的 Matter 裝置公開。`,enableServerMode:`啟用伺服器模式`,enabling:`啟用中...`,start:`啟動`,stop:`停止`,restart:`重新啟動`,factoryReset:`恢復出廠設定`,pairingCode:`配對碼`,openCommissioning:`開啟配對視窗`,multiPair:`多 Fabric 配對`,deleteBridge:`刪除橋接器`,deleteConfirm:`確定要刪除此橋接器嗎?`,featureFlags:`功能旗標`,failedEntitiesCount:`{{count}} 個實體無法載入。`,clickToShow:`點擊顯示詳情`,clickToHide:`點擊隱藏詳情`,loadFailed:`無法載入橋接器詳情`,refreshHint:`每 30 秒會偵測一次新裝置和標籤更改。`,refreshingStates:`{{seconds}} 秒後重新整理狀態...`,serverModeSingleDeviceNote:`注意:伺服器模式要求掃地機器人為此橋接器上的唯一裝置。請先移除其他實體,再於設定中啟用伺服器模式。`,serverModeEnabled:`伺服器模式已啟用。橋接器將以掃地機器人作為獨立裝置重新啟動。`,serverModeEnableFailed:`無法啟用伺服器模式:{{error}}`,pairing:`配對`,bridgeInfo:`橋接器資訊`,commissioned:`已配對`,addController:`新增其他控制器`,openingCommissioning:`正在開啟配對視窗...`,fabricTooltip:`Fabric 詳情`,forceSync:`強制同步`,syncing:`同步中...`,forceSyncTooltip:`強制與 Home Assistant 同步實體`,editFilters:`編輯篩選器`,addFilters:`新增篩選器`,bridgeNotRunning:`橋接器未執行。請啟動以查看配對資訊。`,manualCode:`手動代碼`,openingWindow:`開啟視窗中...`,bridgeId:`橋接器 ID`,passcode:`配對密碼`,discriminator:`辨別碼 (Discriminator)`,connectedFabrics:`已連接的 Fabric ({{count}})`,noFabrics:`尚無控制器連接。請使用 Matter 控制器掃描 QR Code。`,entityFilters:`實體篩選器`,noFilters:`未設定篩選器。所有支援的實體都將公開。`,scanQrCode:`掃描 QR Code`,appleHomeWarning:`Apple Home 限制`,googleHomeWarning:`Google Home 限制`,resetSuccess:`橋接器重設成功`,deleteSuccess:`橋接器刪除成功`,confirmResetTitle:`重設橋接器`,confirmResetMessage:`確定要重設此橋接器嗎?這將移除所有配對資訊。`,confirmDeleteTitle:`刪除橋接器`,confirmDeleteMessage:`確定要永久刪除此橋接器嗎?此操作無法復原。`,importTitle:`匯入橋接器`,overwriteExisting:`覆蓋現有橋接器`,iconLabel:`橋接器圖示`,google:`Google`,alexa:`Alexa`,serverMode:`伺服器模式`,autoForceSync:`自動同步`,saveSuccess:`橋接器已儲存`,updateSuccess:`更新完成`,exportFailed:`匯出失敗`,actionStarted:`已啟動`,actionStopped:`已停止`,actionRestarted:`已重新啟動`,actionFailed:`{{action}} 失敗`,actionResult:`{{label}} {{count}} 個橋接器`,couldNotLoad:`無法載入橋接器`,showingFirst:`顯示前 {{count}} 個`,importParseFailed:`無法解析匯入檔案。請選擇正確的匯出檔案。`,importing:`匯入中...`,importCount:`匯入 {{count}} 個橋接器`,jsonEditor:`JSON 編輯器`,formEditor:`表單編輯器`},endpoints:{title:`端點 (Endpoints)`,searchPlaceholder:`搜尋端點...`,sortBy:`排序`,sortName:`名稱`,sortEndpoint:`端點 ID`,sortType:`類型`,cardView:`卡片檢視`,treeView:`樹狀檢視`,clusters:`叢集 (Clusters)`,entityUnavailable:`實體不可用`,showUnavailable:`顯示 {{count}} 個不可用項目`,showAll:`顯示所有實體`,uploadImage:`上傳裝置圖片`,removeImage:`移除自定義圖片`,editMapping:`編輯實體對應`,homeAssistantEntity:`Home Assistant 實體`,noEndpoints:`未找到端點。`,expandAll:`全部展開`,collapseAll:`全部摺疊`,viewAll:`查看所有裝置`,haState:`HA 狀態`,aboutEndpoint:`關於此端點`,entityId:`實體 ID`,customName:`自定義名稱`,deviceTypeOverride:`裝置類型覆蓋`,keyHaAttributes:`關鍵 HA 屬性`,entityMappings:`實體對應`,copyData:`複製數據到剪貼簿`,behavior:`行為`},health:{title:`狀態與診斷`,version:`版本`,uptime:`運行時間`,homeAssistant:`Home Assistant`,connected:`已連線`,disconnected:`已斷開`,bridgeStatus:`橋接器狀態`,refreshHealth:`重新整理狀態`,exportDiagnostic:`匯出診斷數據`,memory:`記憶體`,fabricDetails:`Fabric 詳情`,sessions:`工作階段 (Sessions)`,subscriptions:`訂閱 (Subscriptions)`,noFabrics:`無 Fabric 連接`,systemMetrics:`系統指標`,heap:`堆積記憶體 (Heap)`,rss:`常駐集大小 (RSS)`,external:`外部`,systemHealth:`系統健康度`,fetchFailed:`無法取得狀態`,connectionError:`連線錯誤`,exportFailed:`無法匯出診斷數據`,restartFailed:`無法重新啟動橋接器`,unableToLoad:`無法載入健康狀態`,sortBy:`排序方式`,created:`建立時間`,ascending:`遞增`,descending:`遞減`,connectedTo:`已連線至`,autoRecovery:`自動恢復`,recoveryAttempts:`恢復嘗試`},mapping:{title:`實體對應`,entityId:`實體 ID`,deviceType:`裝置類型`,customName:`自定義名稱`,status:`狀態`,addMapping:`新增對應`,editMapping:`編輯對應`,deleteMapping:`刪除對應`,saved:`已為 {{entityId}} 儲存對應。請重啟橋接器以套用變更。`,saveFailed:`無法儲存對應:{{error}}`,deleted:`已刪除 {{entityId}} 的對應。`,deleteFailed:`無法刪除對應。`,matterTag:`Matter 標籤`,exportProfile:`匯出設定檔`,importProfile:`匯入設定檔`,profileName:`設定檔名稱`,match:`匹配`,existing:`現有`,autoDetect:`自動偵測`,loadFailed:`載入失敗`,noMappings:`無對應資料`,applying:`套用中...`,applyCount:`套用數量`},notFound:{title:`找不到頁面`,description:`您搜尋的頁面不存在。`,backToDashboard:`返回儀表板`},devices:{title:`裝置列表`,searchPlaceholder:`搜尋裝置...`,filterBridge:`按橋接器篩選`,allBridges:`所有橋接器`,filterDeviceType:`按裝置類型篩選`,allTypes:`所有類型`,sortBy:`排序方式`,sortBridge:`橋接器`,sortType:`類型`,sortName:`名稱`,deviceCount:`裝置總數`,filteredCount:`已篩選數量`},diagnostics:{title:`即時事件`,stateUpdate:`狀態更新`,command:`指令`,entityError:`實體錯誤`,sessionOpen:`工作階段開啟`,sessionClose:`工作階段關閉`,subscription:`訂閱`,bridgeStart:`橋接器啟動`,bridgeStop:`橋接器停止`,filterEvents:`篩選事件`,clearEvents:`清除事件`,noEvents:`尚無事件`},startup:{title:`啟動設定`,description:`設定橋接器的啟動順序與延遲。`,saveSuccess:`啟動設定已儲存`,saveFailed:`儲存失敗`,saveChanges:`儲存變更`,unsavedChanges:`有未儲存的變更`,noBridges:`沒有可設定的橋接器`,saveOrder:`儲存順序`},areaSetup:{title:`按區域設定`,heading:`區域橋接器精靈`,description:`為每個 Home Assistant 區域建立獨立的橋接器。`,noAreas:`找不到區域。`,selectController:`選擇目標控制器`,selectAreas:`選擇區域`,clear:`清除`,createBridges:`建立橋接器`,results:`結果`,goToBridges:`前往橋接器頁面`,createdSuccess:`成功建立橋接器`,createdPartial:`部分橋接器建立失敗`,loadFailed:`無法載入區域`,creating:`正在建立...`,created:`已建立`,unknownError:`發生未知錯誤`},lockCredentials:{title:`門鎖憑證`,addCredential:`新增憑證`,editCredential:`編輯憑證`,lockEntityId:`門鎖實體`,lockEntityHelperText:`選擇要套用此憑證的門鎖實體。`,pinCode:`PIN 碼`,nameOptional:`名稱 (選填)`,namePlaceholder:`例如:清潔人員`,nameHelperText:`用來識別此憑證的易記名稱。`,entityRequired:`必須選擇實體`,pinLength:`PIN 碼長度必須在 4 到 8 位之間`,pinDigitsOnly:`PIN 碼只能包含數字`,saveFailed:`儲存憑證失敗`,loadFailed:`載入憑證失敗`,deleteFailed:`刪除憑證失敗`,updateFailed:`更新憑證失敗`,enable:`啟用`,disable:`停用`,confirmDeleteTitle:`刪除憑證`,confirmDeleteMessage:`確定要刪除此憑證嗎?`},labels:{title:`標籤與過濾`,info:`使用標籤來組織和篩選您的實體。`,searchPlaceholder:`搜尋標籤...`,loadFailed:`載入標籤失敗`,labelsSection:`標籤`,labelsHint:`按 Home Assistant 標籤篩選`,noLabels:`未發現標籤`,displayName:`顯示名稱`,labelId:`標籤 ID`,areaId:`區域 ID`,areasSection:`區域`,areasHint:`按區域篩選實體`,noAreas:`無可用區域`,otherFilterValues:`其他篩選值`,domains:`領域 (Domains)`,domainsHint:`按實體領域篩選`,platforms:`平台 (Platforms)`,platformsHint:`按整合平台篩選`,entityCategories:`實體類別`,entityCategoriesHint:`按類別篩選 (如:組態、診斷)`,deviceClasses:`裝置類別`,deviceClassesHint:`按裝置類別篩選`,deviceNames:`裝置名稱`,deviceNamesHint:`按裝置名稱篩選`,productNames:`產品名稱`,productNamesHint:`按產品型號篩選`},logs:{title:`日誌`,logLevel:`日誌層級`,error:`錯誤`,warning:`警告`,info:`資訊`,debug:`除錯`,searchPlaceholder:`搜尋日誌...`,noResults:`未找到日誌項目`,autoRefresh:`自動重新整理`},backup:{title:`備份與還原`,description:`管理您的配置備份以防止數據遺失。`,configBackup:`配置備份`,configBackupDesc:`僅備份橋接器設定與對應關係。`,configBackupNote:`不包含 Matter 配對身份資訊。`,fullBackup:`完整備份`,fullBackupDesc:`備份所有數據,包含 Matter 配對身份資訊。`,fullBackupWarning:`注意:還原完整備份會覆蓋現有的所有 Matter 憑證。`,restoreFromBackup:`從備份還原`,restoreDesc:`上傳備份檔案以還原設定。`,restoreTitle:`還原設定`,selectBridges:`選擇橋接器`,overwriteExisting:`覆蓋現有項目`,includeMappings:`包含實體對應`,restoreIdentities:`還原配對身份`,restore:`還原`,downloadSuccess:`下載成功`,restartRequired:`需要重新啟動`,restartMessage:`必須重新啟動套件以完成還原。`,restartNote:`重啟過程中連線將暫時中斷。`,restartNow:`立即重新啟動`,storedBackups:`已儲存的備份`,createSnapshot:`建立快照`,noSnapshots:`尚無快照`,downloadSnapshot:`下載快照`,restoreSnapshot:`還原快照`,auto:`自動`,manual:`手動`,snapshotCreated:`快照已建立`,snapshotRestored:`快照已還原`,confirmRestore:`確認還原`,confirmRestoreMessage:`確定要從此快照還原嗎?現有設定將被覆蓋。`,restoreWarning:`此操作無法撤銷。`,confirmDelete:`確認刪除`,confirmDeleteMessage:`確定要刪除此備份嗎?`,settings:`備份設定`,autoBackupLabel:`自動備份`,autoBackupDesc:`每天自動建立快照`,retentionCount:`保留數量`,retentionCountDesc:`要保留的快照份數`},networkMap:{title:`網路拓撲圖`,hubLabel:`Matter Hub`,undoMove:`復原移動`,resetLayout:`重置佈局`,refreshData:`重新整理數據`,fullscreen:`全螢幕`,exitFullscreen:`結束全螢幕`,legend:`圖例`,controller:`控制器`,hub:`集線器 (Hub)`,bridge:`橋接器`,device:`裝置`,failed:`失敗`},updateChecker:{title:`更新檢查`,checkNow:`立即檢查`,currentVersion:`目前版本`,latestVersion:`最新版本`,updateAvailable:`有可用更新!`,upToDate:`軟體已是最新狀態`,releaseNotes:`版本說明`,notAvailable:`無法取得版本資訊`,checkFailed:`檢查更新失敗`,unreachable:`無法連線至更新伺服器`,instructionAddon:`請在 Home Assistant Add-on 商店中更新。`,instructionDocker:`請拉取最新的 Docker 映像檔。`,instructionNpm:`請執行 npm install 以更新。`},bridgeWizard:{title:`建立橋接器精靈`,stepTemplate:`選擇範本`,stepController:`目標控制器`,stepBridgeInfo:`基本資訊`,stepEntityFilter:`實體篩選`,stepFeatureFlags:`功能旗標`,stepReview:`確認設定`,autoCompose:`自動組合`,autoForceSyncFlag:`自動強制同步`,invertCover:`反轉窗簾/捲簾方向`,invertCoverDescription:`若窗簾狀態相反,請啟用此項。`,includeHidden:`包含隱藏實體`,includeHiddenDescription:`是否顯示在 HA 中被隱藏的實體。`,bridgeName:`橋接器名稱`,portLabel:`連接埠號碼`,portAutoAssign:`自動分配連接埠`,nameRequired:`必須輸入名稱`,createFailed:`建立橋接器失敗`,bridgeInfoDescription:`為您的橋接器設定名稱與通訊埠。`,serverModeLabel:`啟用伺服器模式`,serverModeTooltip:`將此裝置作為單獨的 Matter 裝置公開,而非橋接模式。`,entityFilterDescription:`選擇哪些實體要透過此橋接器公開。`,includeAll:`包含所有支援的實體`,entityId:`實體 ID`,includePattern:`包含規則 (Pattern)`,entityFilters:`實體篩選器`,serverModeEntityHint:`伺服器模式僅支援單一實體。`,templatePreConfigured:`預設範本`,wildcardHint:`支援萬用字元如 light.*`,commaHint:`使用逗號分隔多個項目`,excludePatterns:`排除規則`,excludeHelperText:`排除特定實體,即使符合包含規則也會被過濾。`,skipTemplate:`不使用範本`,creating:`建立中...`,createBridge:`建立橋接器`,searchRules:`搜尋規則`,templateDescription:`範本可協助您快速預設篩選器和旗標。`,controllerDescription:`選擇您預計使用的控制器以套用推薦的最佳設定。`,controllerHint:`這將自動調整功能旗標以達到最佳相容性。`,templateApplied:`範本已套用`,filterPreConfiguredFrom:`篩選器已根據 {{template}} 預設`,featureFlagsDescription:`調整特殊功能以改善特定控制器的行為。`,recommendedFlags:`推薦旗標`,selectFlags:`選擇旗標`,reviewDescription:`請確認您的橋接器設定。`,bridgesToCreate:`待建立的橋接器`,bridgesCreated:`橋接器已建立`,addAnother:`新增另一個`},footer:{github:`GitHub`,documentation:`說明文件`},languageSwitcher:{disclaimer:`翻譯可能不完全完整。`,contribute:`協助改進翻譯!`},translationEditor:{title:`翻譯編輯器`,editLanguage:`編輯語言`,info:`直接在瀏覽器中編輯翻譯。變更會立即儲存在本地並生效。您可以匯出翻譯檔案並提交給專案。`,progress:`已翻譯 {{translated}} / {{total}} 個項目`,localEdits:`有 {{count}} 處本地修改`,searchPlaceholder:`搜尋鍵或翻譯內容...`,filterAll:`所有項目`,filterMissing:`未翻譯`,filterEdited:`已編輯`,exportJson:`匯出 JSON`,copyJson:`複製 JSON`,copied:`已複製!`,resetAll:`重置所有修改`,resetKey:`重置為預設值`,noResults:`未找到匹配的翻譯項目。`,addLanguage:`新增語言`,newLanguageCode:`語言代碼 (如 pt、ja、ko)`,newLanguageName:`語言名稱 (如 Português)`,addLanguageButton:`新增`,languageExists:`此語言已存在。`,codeRequired:`語言代碼為必填。`,nameRequired:`語言名稱為必填。`,removeLanguage:`移除語言`,removeLanguageConfirm:`確定要移除此語言嗎?所有未導出的本地修改都將丟失。`,importJson:`匯入 JSON`,importSuccess:`已成功匯入 {{count}} 條翻譯。`,importFailed:`匯入失敗:JSON 格式無效。`}},Es=`hamh-translation-overrides`,Ds=`hamh-custom-languages`;function Os(e,t=``){let n={};for(let[r,i]of Object.entries(e)){let e=t?`${t}.${r}`:r;typeof i==`object`&&i&&!Array.isArray(i)?Object.assign(n,Os(i,e)):n[e]=String(i??``)}return n}function ks(e){let t={};for(let[n,r]of Object.entries(e)){let e=n.split(`.`),i=t;for(let t=0;t<e.length-1;t++)e[t]in i||(i[e[t]]={}),i=i[e[t]];i[e[e.length-1]]=r}return t}function As(){try{let e=localStorage.getItem(Es);if(!e)return;let t=JSON.parse(e);for(let[e,n]of Object.entries(t)){if(!n||Object.keys(n).length===0)continue;let t=ho.getResourceBundle(e,`translation`),r=ks({...t?Os(t):{},...n});ho.addResourceBundle(e,`translation`,r,!0,!0)}}catch{}}function js(){try{let e=localStorage.getItem(Ds);if(!e)return;let t=JSON.parse(e);for(let e of t)ho.hasResourceBundle(e.code,`translation`)||ho.addResourceBundle(e.code,`translation`,{},!0,!0)}catch{}}ho.use(zo).use(is).init({resources:{en:{translation:ms},de:{translation:ps},fr:{translation:gs},it:{translation:_s},ja:{translation:vs},es:{translation:hs},zh:{translation:ws},"zh-TW":{translation:Ts},th:{translation:Ss},sv:{translation:xs},tr:{translation:Cs},ru:{translation:bs},pl:{translation:ys}},fallbackLng:`en`,interpolation:{escapeValue:!1},detection:{order:[`localStorage`,`navigator`,`htmlTag`],caches:[`localStorage`]}}),js(),As();var Ms=ho;function Ns(e,...t){let n=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>n.searchParams.append(`args[]`,e)),`Minified MUI error #${e}; visit ${n} for the full message.`}function Ps(e){if(typeof e!=`string`)throw Error(Ns(7));return e.charAt(0).toUpperCase()+e.slice(1)}var Fs=s((e=>{var t=Symbol.for(`react.fragment`),n=Symbol.for(`react.strict_mode`),r=Symbol.for(`react.profiler`),i=Symbol.for(`react.consumer`),a=Symbol.for(`react.context`),o=Symbol.for(`react.forward_ref`),s=Symbol.for(`react.suspense`),c=Symbol.for(`react.suspense_list`),l=Symbol.for(`react.memo`),u=Symbol.for(`react.lazy`),d=Symbol.for(`react.client.reference`);e.isValidElementType=function(e){return!!(typeof e==`string`||typeof e==`function`||e===t||e===r||e===n||e===s||e===c||typeof e==`object`&&e&&(e.$$typeof===u||e.$$typeof===l||e.$$typeof===a||e.$$typeof===i||e.$$typeof===o||e.$$typeof===d||e.getModuleId!==void 0))}})),Is=s(((e,t)=>{t.exports=Fs()}))();function Ls(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function Rs(e){if(C.isValidElement(e)||(0,Is.isValidElementType)(e)||!Ls(e))return e;let t={};return Object.keys(e).forEach(n=>{t[n]=Rs(e[n])}),t}function zs(e,t,n={clone:!0}){let r=n.clone?{...e}:e;return Ls(e)&&Ls(t)&&Object.keys(t).forEach(i=>{C.isValidElement(t[i])||(0,Is.isValidElementType)(t[i])?r[i]=t[i]:Ls(t[i])&&Object.prototype.hasOwnProperty.call(e,i)&&Ls(e[i])?r[i]=zs(e[i],t[i],n):n.clone?r[i]=Ls(t[i])?Rs(t[i]):t[i]:r[i]=t[i]}),r}function Bs(e,t){return t?zs(e,t,{clone:!1}):e}function Vs(e,t){if(!e.containerQueries)return t;let n=Object.keys(t).filter(e=>e.startsWith(`@container`)).sort((e,t)=>{let n=/min-width:\s*([0-9.]+)/;return(e.match(n)?.[1]||0)-+(t.match(n)?.[1]||0)});return n.length?n.reduce((e,n)=>{let r=t[n];return delete e[n],e[n]=r,e},{...t}):t}function Hs(e,t){return t===`@`||t.startsWith(`@`)&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}function Us(e,t){let n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;let[,r,i]=n,a=Number.isNaN(+r)?r||0:+r;return e.containerQueries(i).up(a)}function nee(e){let t=(e,t)=>e.replace(`@media`,t?`@container ${t}`:`@container`);function n(n,r){n.up=(...n)=>t(e.breakpoints.up(...n),r),n.down=(...n)=>t(e.breakpoints.down(...n),r),n.between=(...n)=>t(e.breakpoints.between(...n),r),n.only=(...n)=>t(e.breakpoints.only(...n),r),n.not=(...n)=>{let i=t(e.breakpoints.not(...n),r);return i.includes(`not all and`)?i.replace(`not all and `,``).replace(`min-width:`,`width<`).replace(`max-width:`,`width>`).replace(`and`,`or`):i}}let r={},i=e=>(n(r,e),r);return n(i),{...e,containerQueries:i}}var Ws={xs:0,sm:600,md:900,lg:1200,xl:1536},Gs={keys:[`xs`,`sm`,`md`,`lg`,`xl`],up:e=>`@media (min-width:${Ws[e]}px)`},Ks={containerQueries:e=>({up:t=>{let n=typeof t==`number`?t:Ws[t]||t;return typeof n==`number`&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function qs(e,t,n){let r=e.theme||{};if(Array.isArray(t)){let e=r.breakpoints||Gs;return t.reduce((r,i,a)=>(r[e.up(e.keys[a])]=n(t[a]),r),{})}if(typeof t==`object`){let e=r.breakpoints||Gs;return Object.keys(t).reduce((i,a)=>{if(Hs(e.keys,a)){let e=Us(r.containerQueries?r:Ks,a);e&&(i[e]=n(t[a],a))}else if(Object.keys(e.values||Ws).includes(a)){let r=e.up(a);i[r]=n(t[a],a)}else{let e=a;i[e]=t[e]}return i},{})}return n(t)}function Js(e={}){return e.keys?.reduce((t,n)=>{let r=e.up(n);return t[r]={},t},{})||{}}function Ys(e,t){return e.reduce((e,t)=>{let n=e[t];return(!n||Object.keys(n).length===0)&&delete e[t],e},t)}function Xs(e,...t){let n=Js(e),r=[n,...t].reduce((e,t)=>zs(e,t),{});return Ys(Object.keys(n),r)}function Zs(e,t){if(typeof e!=`object`)return{};let n={},r=Object.keys(t);return Array.isArray(e)?r.forEach((t,r)=>{r<e.length&&(n[t]=!0)}):r.forEach(t=>{e[t]!=null&&(n[t]=!0)}),n}function Qs({values:e,breakpoints:t,base:n}){let r=n||Zs(e,t),i=Object.keys(r);if(i.length===0)return e;let a;return i.reduce((t,n,r)=>(Array.isArray(e)?(t[n]=e[r]==null?e[a]:e[r],a=r):typeof e==`object`?(t[n]=e[n]==null?e[a]:e[n],a=n):t[n]=e,t),{})}function $s(e,t,n=!0){if(!t||typeof t!=`string`)return null;if(e&&e.vars&&n){let n=`vars.${t}`.split(`.`).reduce((e,t)=>e&&e[t]?e[t]:null,e);if(n!=null)return n}return t.split(`.`).reduce((e,t)=>e&&e[t]!=null?e[t]:null,e)}function ec(e,t,n,r=n){let i;return i=typeof e==`function`?e(n):Array.isArray(e)?e[n]||r:$s(e,n)||r,t&&(i=t(i,r,e)),i}function tc(e){let{prop:t,cssProperty:n=e.prop,themeKey:r,transform:i}=e,a=e=>{if(e[t]==null)return null;let a=e[t],o=e.theme,s=$s(o,r)||{};return qs(e,a,e=>{let r=ec(s,i,e);return e===r&&typeof e==`string`&&(r=ec(s,i,`${t}${e===`default`?``:Ps(e)}`,e)),n===!1?r:{[n]:r}})};return a.propTypes={},a.filterProps=[t],a}function nc(e){let t={};return n=>(t[n]===void 0&&(t[n]=e(n)),t[n])}var rc={m:`margin`,p:`padding`},ic={t:`Top`,r:`Right`,b:`Bottom`,l:`Left`,x:[`Left`,`Right`],y:[`Top`,`Bottom`]},ac={marginX:`mx`,marginY:`my`,paddingX:`px`,paddingY:`py`},oc=nc(e=>{if(e.length>2)if(ac[e])e=ac[e];else return[e];let[t,n]=e.split(``),r=rc[t],i=ic[n]||``;return Array.isArray(i)?i.map(e=>r+e):[r+i]}),sc=[`m`,`mt`,`mr`,`mb`,`ml`,`mx`,`my`,`margin`,`marginTop`,`marginRight`,`marginBottom`,`marginLeft`,`marginX`,`marginY`,`marginInline`,`marginInlineStart`,`marginInlineEnd`,`marginBlock`,`marginBlockStart`,`marginBlockEnd`],cc=[`p`,`pt`,`pr`,`pb`,`pl`,`px`,`py`,`padding`,`paddingTop`,`paddingRight`,`paddingBottom`,`paddingLeft`,`paddingX`,`paddingY`,`paddingInline`,`paddingInlineStart`,`paddingInlineEnd`,`paddingBlock`,`paddingBlockStart`,`paddingBlockEnd`],lc=[...sc,...cc];function uc(e,t,n,r){let i=$s(e,t,!0)??n;return typeof i==`number`||typeof i==`string`?e=>typeof e==`string`?e:typeof i==`string`?i.startsWith(`var(`)&&e===0?0:i.startsWith(`var(`)&&e===1?i:`calc(${e} * ${i})`:i*e:Array.isArray(i)?e=>{if(typeof e==`string`)return e;let t=i[Math.abs(e)];return e>=0?t:typeof t==`number`?-t:typeof t==`string`&&t.startsWith(`var(`)?`calc(-1 * ${t})`:`-${t}`}:typeof i==`function`?i:()=>void 0}function dc(e){return uc(e,`spacing`,8,`spacing`)}function fc(e,t){return typeof t==`string`||t==null?t:e(t)}function pc(e,t){return n=>e.reduce((e,r)=>(e[r]=fc(t,n),e),{})}function mc(e,t,n,r){if(!t.includes(n))return null;let i=pc(oc(n),r),a=e[n];return qs(e,a,i)}function hc(e,t){let n=dc(e.theme);return Object.keys(e).map(r=>mc(e,t,r,n)).reduce(Bs,{})}function gc(e){return hc(e,sc)}gc.propTypes={},gc.filterProps=sc;function _c(e){return hc(e,cc)}_c.propTypes={},_c.filterProps=cc;function vc(e){return hc(e,lc)}vc.propTypes={},vc.filterProps=lc;function yc(...e){let t=e.reduce((e,t)=>(t.filterProps.forEach(n=>{e[n]=t}),e),{}),n=e=>Object.keys(e).reduce((n,r)=>t[r]?Bs(n,t[r](e)):n,{});return n.propTypes={},n.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),n}function bc(e){return typeof e==`number`?`${e}px solid`:e}function xc(e,t){return tc({prop:e,themeKey:`borders`,transform:t})}var Sc=xc(`border`,bc),Cc=xc(`borderTop`,bc),wc=xc(`borderRight`,bc),Tc=xc(`borderBottom`,bc),Ec=xc(`borderLeft`,bc),Dc=xc(`borderColor`),Oc=xc(`borderTopColor`),kc=xc(`borderRightColor`),Ac=xc(`borderBottomColor`),jc=xc(`borderLeftColor`),Mc=xc(`outline`,bc),Nc=xc(`outlineColor`),Pc=e=>{if(e.borderRadius!==void 0&&e.borderRadius!==null){let t=uc(e.theme,`shape.borderRadius`,4,`borderRadius`);return qs(e,e.borderRadius,e=>({borderRadius:fc(t,e)}))}return null};Pc.propTypes={},Pc.filterProps=[`borderRadius`],yc(Sc,Cc,wc,Tc,Ec,Dc,Oc,kc,Ac,jc,Pc,Mc,Nc);var Fc=e=>{if(e.gap!==void 0&&e.gap!==null){let t=uc(e.theme,`spacing`,8,`gap`);return qs(e,e.gap,e=>({gap:fc(t,e)}))}return null};Fc.propTypes={},Fc.filterProps=[`gap`];var Ic=e=>{if(e.columnGap!==void 0&&e.columnGap!==null){let t=uc(e.theme,`spacing`,8,`columnGap`);return qs(e,e.columnGap,e=>({columnGap:fc(t,e)}))}return null};Ic.propTypes={},Ic.filterProps=[`columnGap`];var Lc=e=>{if(e.rowGap!==void 0&&e.rowGap!==null){let t=uc(e.theme,`spacing`,8,`rowGap`);return qs(e,e.rowGap,e=>({rowGap:fc(t,e)}))}return null};Lc.propTypes={},Lc.filterProps=[`rowGap`],yc(Fc,Ic,Lc,tc({prop:`gridColumn`}),tc({prop:`gridRow`}),tc({prop:`gridAutoFlow`}),tc({prop:`gridAutoColumns`}),tc({prop:`gridAutoRows`}),tc({prop:`gridTemplateColumns`}),tc({prop:`gridTemplateRows`}),tc({prop:`gridTemplateAreas`}),tc({prop:`gridArea`}));function Rc(e,t){return t===`grey`?t:e}yc(tc({prop:`color`,themeKey:`palette`,transform:Rc}),tc({prop:`bgcolor`,cssProperty:`backgroundColor`,themeKey:`palette`,transform:Rc}),tc({prop:`backgroundColor`,themeKey:`palette`,transform:Rc}));function zc(e){return e<=1&&e!==0?`${e*100}%`:e}var Bc=tc({prop:`width`,transform:zc}),Vc=e=>e.maxWidth!==void 0&&e.maxWidth!==null?qs(e,e.maxWidth,t=>{let n=e.theme?.breakpoints?.values?.[t]||Ws[t];return n?e.theme?.breakpoints?.unit===`px`?{maxWidth:n}:{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:zc(t)}}):null;Vc.filterProps=[`maxWidth`];var Hc=tc({prop:`minWidth`,transform:zc}),Uc=tc({prop:`height`,transform:zc}),Wc=tc({prop:`maxHeight`,transform:zc}),Gc=tc({prop:`minHeight`,transform:zc});tc({prop:`size`,cssProperty:`width`,transform:zc}),tc({prop:`size`,cssProperty:`height`,transform:zc}),yc(Bc,Vc,Hc,Uc,Wc,Gc,tc({prop:`boxSizing`}));var Kc={border:{themeKey:`borders`,transform:bc},borderTop:{themeKey:`borders`,transform:bc},borderRight:{themeKey:`borders`,transform:bc},borderBottom:{themeKey:`borders`,transform:bc},borderLeft:{themeKey:`borders`,transform:bc},borderColor:{themeKey:`palette`},borderTopColor:{themeKey:`palette`},borderRightColor:{themeKey:`palette`},borderBottomColor:{themeKey:`palette`},borderLeftColor:{themeKey:`palette`},outline:{themeKey:`borders`,transform:bc},outlineColor:{themeKey:`palette`},borderRadius:{themeKey:`shape.borderRadius`,style:Pc},color:{themeKey:`palette`,transform:Rc},bgcolor:{themeKey:`palette`,cssProperty:`backgroundColor`,transform:Rc},backgroundColor:{themeKey:`palette`,transform:Rc},p:{style:_c},pt:{style:_c},pr:{style:_c},pb:{style:_c},pl:{style:_c},px:{style:_c},py:{style:_c},padding:{style:_c},paddingTop:{style:_c},paddingRight:{style:_c},paddingBottom:{style:_c},paddingLeft:{style:_c},paddingX:{style:_c},paddingY:{style:_c},paddingInline:{style:_c},paddingInlineStart:{style:_c},paddingInlineEnd:{style:_c},paddingBlock:{style:_c},paddingBlockStart:{style:_c},paddingBlockEnd:{style:_c},m:{style:gc},mt:{style:gc},mr:{style:gc},mb:{style:gc},ml:{style:gc},mx:{style:gc},my:{style:gc},margin:{style:gc},marginTop:{style:gc},marginRight:{style:gc},marginBottom:{style:gc},marginLeft:{style:gc},marginX:{style:gc},marginY:{style:gc},marginInline:{style:gc},marginInlineStart:{style:gc},marginInlineEnd:{style:gc},marginBlock:{style:gc},marginBlockStart:{style:gc},marginBlockEnd:{style:gc},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:Fc},rowGap:{style:Lc},columnGap:{style:Ic},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:`zIndex`},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:`shadows`},width:{transform:zc},maxWidth:{style:Vc},minWidth:{transform:zc},height:{transform:zc},maxHeight:{transform:zc},minHeight:{transform:zc},boxSizing:{},font:{themeKey:`font`},fontFamily:{themeKey:`typography`},fontSize:{themeKey:`typography`},fontStyle:{themeKey:`typography`},fontWeight:{themeKey:`typography`},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:`typography`}};function qc(...e){let t=e.reduce((e,t)=>e.concat(Object.keys(t)),[]),n=new Set(t);return e.every(e=>n.size===Object.keys(e).length)}function Jc(e,t){return typeof e==`function`?e(t):e}function Yc(){function e(e,t,n,r){let i={[e]:t,theme:n},a=r[e];if(!a)return{[e]:t};let{cssProperty:o=e,themeKey:s,transform:c,style:l}=a;if(t==null)return null;if(s===`typography`&&t===`inherit`)return{[e]:t};let u=$s(n,s)||{};return l?l(i):qs(i,t,t=>{let n=ec(u,c,t);return t===n&&typeof t==`string`&&(n=ec(u,c,`${e}${t===`default`?``:Ps(t)}`,t)),o===!1?n:{[o]:n}})}function t(n){let{sx:r,theme:i={},nested:a}=n||{};if(!r)return null;let o=i.unstable_sxConfig??Kc;function s(n){let r=n;if(typeof n==`function`)r=n(i);else if(typeof n!=`object`)return n;if(!r)return null;let s=Js(i.breakpoints),c=Object.keys(s),l=s;return Object.keys(r).forEach(n=>{let a=Jc(r[n],i);if(a!=null)if(typeof a==`object`)if(o[n])l=Bs(l,e(n,a,i,o));else{let e=qs({theme:i},a,e=>({[n]:e}));qc(e,a)?l[n]=t({sx:a,theme:i,nested:!0}):l=Bs(l,e)}else l=Bs(l,e(n,a,i,o))}),!a&&i.modularCssLayers?{"@layer sx":Vs(i,Ys(c,l))}:Vs(i,Ys(c,l))}return Array.isArray(r)?r.map(s):s(r)}return t}var Xc=Yc();Xc.filterProps=[`sx`];var Zc=e=>{let t={systemProps:{},otherProps:{}},n=e?.theme?.unstable_sxConfig??Kc;return Object.keys(e).forEach(r=>{n[r]?t.systemProps[r]=e[r]:t.otherProps[r]=e[r]}),t};function Qc(e){let{sx:t,...n}=e,{systemProps:r,otherProps:i}=Zc(n),a;return a=Array.isArray(t)?[r,...t]:typeof t==`function`?(...e)=>{let n=t(...e);return Ls(n)?{...r,...n}:r}:{...r,...t},{...i,sx:a}}function $c(){return $c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},$c.apply(null,arguments)}var el=!1;function tl(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}function nl(e){var t=document.createElement(`style`);return t.setAttribute(`data-emotion`,e.key),e.nonce!==void 0&&t.setAttribute(`nonce`,e.nonce),t.appendChild(document.createTextNode(``)),t.setAttribute(`data-s`,``),t}var rl=function(){function e(e){var t=this;this._insertTag=function(e){var n=t.tags.length===0?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling;t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=e.speedy===void 0?!el:e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(nl(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=tl(t);try{n.insertRule(e,n.cssRules.length)}catch{}}else t.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach(function(e){return e.parentNode?.removeChild(e)}),this.tags=[],this.ctr=0},e}(),il=`-ms-`,al=`-moz-`,ol=`-webkit-`,sl=`comm`,cl=`rule`,ll=`decl`,ul=`@import`,dl=`@keyframes`,fl=`@layer`,pl=Math.abs,ml=String.fromCharCode,hl=Object.assign;function gl(e,t){return xl(e,0)^45?(((t<<2^xl(e,0))<<2^xl(e,1))<<2^xl(e,2))<<2^xl(e,3):0}function _l(e){return e.trim()}function vl(e,t){return(e=t.exec(e))?e[0]:e}function yl(e,t,n){return e.replace(t,n)}function bl(e,t){return e.indexOf(t)}function xl(e,t){return e.charCodeAt(t)|0}function Sl(e,t,n){return e.slice(t,n)}function Cl(e){return e.length}function wl(e){return e.length}function Tl(e,t){return t.push(e),e}function El(e,t){return e.map(t).join(``)}var Dl=1,Ol=1,kl=0,Al=0,jl=0,Ml=``;function Nl(e,t,n,r,i,a,o){return{value:e,root:t,parent:n,type:r,props:i,children:a,line:Dl,column:Ol,length:o,return:``}}function Pl(e,t){return hl(Nl(``,null,null,``,null,null,0),e,{length:-e.length},t)}function Fl(){return jl}function Il(){return jl=Al>0?xl(Ml,--Al):0,Ol--,jl===10&&(Ol=1,Dl--),jl}function Ll(){return jl=Al<kl?xl(Ml,Al++):0,Ol++,jl===10&&(Ol=1,Dl++),jl}function Rl(){return xl(Ml,Al)}function zl(){return Al}function Bl(e,t){return Sl(Ml,e,t)}function Vl(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function Hl(e){return Dl=Ol=1,kl=Cl(Ml=e),Al=0,[]}function Ul(e){return Ml=``,e}function Wl(e){return _l(Bl(Al-1,ql(e===91?e+2:e===40?e+1:e)))}function Gl(e){for(;(jl=Rl())&&jl<33;)Ll();return Vl(e)>2||Vl(jl)>3?``:` `}function Kl(e,t){for(;--t&&Ll()&&!(jl<48||jl>102||jl>57&&jl<65||jl>70&&jl<97););return Bl(e,zl()+(t<6&&Rl()==32&&Ll()==32))}function ql(e){for(;Ll();)switch(jl){case e:return Al;case 34:case 39:e!==34&&e!==39&&ql(jl);break;case 40:e===41&&ql(e);break;case 92:Ll();break}return Al}function Jl(e,t){for(;Ll()&&e+jl!==57&&!(e+jl===84&&Rl()===47););return`/*`+Bl(t,Al-1)+`*`+ml(e===47?e:Ll())}function Yl(e){for(;!Vl(Rl());)Ll();return Bl(e,Al)}function Xl(e){return Ul(Zl(``,null,null,null,[``],e=Hl(e),0,[0],e))}function Zl(e,t,n,r,i,a,o,s,c){for(var l=0,u=0,d=o,f=0,p=0,m=0,h=1,g=1,_=1,v=0,y=``,b=i,x=a,S=r,C=y;g;)switch(m=v,v=Ll()){case 40:if(m!=108&&xl(C,d-1)==58){bl(C+=yl(Wl(v),`&`,`&\f`),`&\f`)!=-1&&(_=-1);break}case 34:case 39:case 91:C+=Wl(v);break;case 9:case 10:case 13:case 32:C+=Gl(m);break;case 92:C+=Kl(zl()-1,7);continue;case 47:switch(Rl()){case 42:case 47:Tl($l(Jl(Ll(),zl()),t,n),c);break;default:C+=`/`}break;case 123*h:s[l++]=Cl(C)*_;case 125*h:case 59:case 0:switch(v){case 0:case 125:g=0;case 59+u:_==-1&&(C=yl(C,/\f/g,``)),p>0&&Cl(C)-d&&Tl(p>32?eu(C+`;`,r,n,d-1):eu(yl(C,` `,``)+`;`,r,n,d-2),c);break;case 59:C+=`;`;default:if(Tl(S=Ql(C,t,n,l,u,i,s,y,b=[],x=[],d),a),v===123)if(u===0)Zl(C,t,S,S,b,a,d,s,x);else switch(f===99&&xl(C,3)===110?100:f){case 100:case 108:case 109:case 115:Zl(e,S,S,r&&Tl(Ql(e,S,S,0,0,i,s,y,i,b=[],d),x),i,x,d,s,r?b:x);break;default:Zl(C,S,S,S,[``],x,0,s,x)}}l=u=p=0,h=_=1,y=C=``,d=o;break;case 58:d=1+Cl(C),p=m;default:if(h<1){if(v==123)--h;else if(v==125&&h++==0&&Il()==125)continue}switch(C+=ml(v),v*h){case 38:_=u>0?1:(C+=`\f`,-1);break;case 44:s[l++]=(Cl(C)-1)*_,_=1;break;case 64:Rl()===45&&(C+=Wl(Ll())),f=Rl(),u=d=Cl(y=C+=Yl(zl())),v++;break;case 45:m===45&&Cl(C)==2&&(h=0)}}return a}function Ql(e,t,n,r,i,a,o,s,c,l,u){for(var d=i-1,f=i===0?a:[``],p=wl(f),m=0,h=0,g=0;m<r;++m)for(var _=0,v=Sl(e,d+1,d=pl(h=o[m])),y=e;_<p;++_)(y=_l(h>0?f[_]+` `+v:yl(v,/&\f/g,f[_])))&&(c[g++]=y);return Nl(e,t,n,i===0?cl:s,c,l,u)}function $l(e,t,n){return Nl(e,t,n,sl,ml(Fl()),Sl(e,2,-2),0)}function eu(e,t,n,r){return Nl(e,t,n,ll,Sl(e,0,r),Sl(e,r+1,-1),r)}function tu(e,t){for(var n=``,r=wl(e),i=0;i<r;i++)n+=t(e[i],i,e,t)||``;return n}function nu(e,t,n,r){switch(e.type){case fl:if(e.children.length)break;case ul:case ll:return e.return=e.return||e.value;case sl:return``;case dl:return e.return=e.value+`{`+tu(e.children,r)+`}`;case cl:e.value=e.props.join(`,`)}return Cl(n=tu(e.children,r))?e.return=e.value+`{`+n+`}`:``}function ru(e){var t=wl(e);return function(n,r,i,a){for(var o=``,s=0;s<t;s++)o+=e[s](n,r,i,a)||``;return o}}function iu(e){return function(t){t.root||(t=t.return)&&e(t)}}function au(e){var t=Object.create(null);return function(n){return t[n]===void 0&&(t[n]=e(n)),t[n]}}var ou=function(e,t,n){for(var r=0,i=0;r=i,i=Rl(),r===38&&i===12&&(t[n]=1),!Vl(i);)Ll();return Bl(e,Al)},su=function(e,t){var n=-1,r=44;do switch(Vl(r)){case 0:r===38&&Rl()===12&&(t[n]=1),e[n]+=ou(Al-1,t,n);break;case 2:e[n]+=Wl(r);break;case 4:if(r===44){e[++n]=Rl()===58?`&\f`:``,t[n]=e[n].length;break}default:e[n]+=ml(r)}while(r=Ll());return e},cu=function(e,t){return Ul(su(Hl(e),t))},lu=new WeakMap,uu=function(e){if(!(e.type!==`rule`||!e.parent||e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;n.type!==`rule`;)if(n=n.parent,!n)return;if(!(e.props.length===1&&t.charCodeAt(0)!==58&&!lu.get(n))&&!r){lu.set(e,!0);for(var i=[],a=cu(t,i),o=n.props,s=0,c=0;s<a.length;s++)for(var l=0;l<o.length;l++,c++)e.props[c]=i[s]?a[s].replace(/&\f/g,o[l]):o[l]+` `+a[s]}}},du=function(e){if(e.type===`decl`){var t=e.value;t.charCodeAt(0)===108&&t.charCodeAt(2)===98&&(e.return=``,e.value=``)}};function fu(e,t){switch(gl(e,t)){case 5103:return ol+`print-`+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return ol+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return ol+e+al+e+il+e+e;case 6828:case 4268:return ol+e+il+e+e;case 6165:return ol+e+il+`flex-`+e+e;case 5187:return ol+e+yl(e,/(\w+).+(:[^]+)/,ol+`box-$1$2`+il+`flex-$1$2`)+e;case 5443:return ol+e+il+`flex-item-`+yl(e,/flex-|-self/,``)+e;case 4675:return ol+e+il+`flex-line-pack`+yl(e,/align-content|flex-|-self/,``)+e;case 5548:return ol+e+il+yl(e,`shrink`,`negative`)+e;case 5292:return ol+e+il+yl(e,`basis`,`preferred-size`)+e;case 6060:return ol+`box-`+yl(e,`-grow`,``)+ol+e+il+yl(e,`grow`,`positive`)+e;case 4554:return ol+yl(e,/([^-])(transform)/g,`$1`+ol+`$2`)+e;case 6187:return yl(yl(yl(e,/(zoom-|grab)/,ol+`$1`),/(image-set)/,ol+`$1`),e,``)+e;case 5495:case 3959:return yl(e,/(image-set\([^]*)/,ol+"$1$`$1");case 4968:return yl(yl(e,/(.+:)(flex-)?(.*)/,ol+`box-pack:$3`+il+`flex-pack:$3`),/s.+-b[^;]+/,`justify`)+ol+e+e;case 4095:case 3583:case 4068:case 2532:return yl(e,/(.+)-inline(.+)/,ol+`$1$2`)+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(Cl(e)-1-t>6)switch(xl(e,t+1)){case 109:if(xl(e,t+4)!==45)break;case 102:return yl(e,/(.+:)(.+)-([^]+)/,`$1`+ol+`$2-$3$1`+al+(xl(e,t+3)==108?`$3`:`$2-$3`))+e;case 115:return~bl(e,`stretch`)?fu(yl(e,`stretch`,`fill-available`),t)+e:e}break;case 4949:if(xl(e,t+1)!==115)break;case 6444:switch(xl(e,Cl(e)-3-(~bl(e,`!important`)&&10))){case 107:return yl(e,`:`,`:`+ol)+e;case 101:return yl(e,/(.+:)([^;!]+)(;|!.+)?/,`$1`+ol+(xl(e,14)===45?`inline-`:``)+`box$3$1`+ol+`$2$3$1`+il+`$2box$3`)+e}break;case 5936:switch(xl(e,t+11)){case 114:return ol+e+il+yl(e,/[svh]\w+-[tblr]{2}/,`tb`)+e;case 108:return ol+e+il+yl(e,/[svh]\w+-[tblr]{2}/,`tb-rl`)+e;case 45:return ol+e+il+yl(e,/[svh]\w+-[tblr]{2}/,`lr`)+e}return ol+e+il+e+e}return e}var pu=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case ll:e.return=fu(e.value,e.length);break;case dl:return tu([Pl(e,{value:yl(e.value,`@`,`@`+ol)})],r);case cl:if(e.length)return El(e.props,function(t){switch(vl(t,/(::plac\w+|:read-\w+)/)){case`:read-only`:case`:read-write`:return tu([Pl(e,{props:[yl(t,/:(read-\w+)/,`:`+al+`$1`)]})],r);case`::placeholder`:return tu([Pl(e,{props:[yl(t,/:(plac\w+)/,`:`+ol+`input-$1`)]}),Pl(e,{props:[yl(t,/:(plac\w+)/,`:`+al+`$1`)]}),Pl(e,{props:[yl(t,/:(plac\w+)/,il+`input-$1`)]})],r)}return``})}}],mu=function(e){var t=e.key;if(t===`css`){var n=document.querySelectorAll(`style[data-emotion]:not([data-s])`);Array.prototype.forEach.call(n,function(e){e.getAttribute(`data-emotion`).indexOf(` `)!==-1&&(document.head.appendChild(e),e.setAttribute(`data-s`,``))})}var r=e.stylisPlugins||pu,i={},a,o=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll(`style[data-emotion^="`+t+` "]`),function(e){for(var t=e.getAttribute(`data-emotion`).split(` `),n=1;n<t.length;n++)i[t[n]]=!0;o.push(e)});var s,c=[uu,du],l,u=[nu,iu(function(e){l.insert(e)})],d=ru(c.concat(r,u)),f=function(e){return tu(Xl(e),d)};s=function(e,t,n,r){l=n,f(e?e+`{`+t.styles+`}`:t.styles),r&&(p.inserted[t.name]=!0)};var p={key:t,sheet:new rl({key:t,container:a,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:i,registered:{},insert:s};return p.sheet.hydrate(o),p},hu=s((e=>{var t=typeof Symbol==`function`&&Symbol.for,n=t?Symbol.for(`react.element`):60103,r=t?Symbol.for(`react.portal`):60106,i=t?Symbol.for(`react.fragment`):60107,a=t?Symbol.for(`react.strict_mode`):60108,o=t?Symbol.for(`react.profiler`):60114,s=t?Symbol.for(`react.provider`):60109,c=t?Symbol.for(`react.context`):60110,l=t?Symbol.for(`react.async_mode`):60111,u=t?Symbol.for(`react.concurrent_mode`):60111,d=t?Symbol.for(`react.forward_ref`):60112,f=t?Symbol.for(`react.suspense`):60113,p=t?Symbol.for(`react.suspense_list`):60120,m=t?Symbol.for(`react.memo`):60115,h=t?Symbol.for(`react.lazy`):60116,g=t?Symbol.for(`react.block`):60121,_=t?Symbol.for(`react.fundamental`):60117,v=t?Symbol.for(`react.responder`):60118,y=t?Symbol.for(`react.scope`):60119;function b(e){if(typeof e==`object`&&e){var t=e.$$typeof;switch(t){case n:switch(e=e.type,e){case l:case u:case i:case o:case a:case f:return e;default:switch(e&&=e.$$typeof,e){case c:case d:case h:case m:case s:return e;default:return t}}case r:return t}}}function x(e){return b(e)===u}e.AsyncMode=l,e.ConcurrentMode=u,e.ContextConsumer=c,e.ContextProvider=s,e.Element=n,e.ForwardRef=d,e.Fragment=i,e.Lazy=h,e.Memo=m,e.Portal=r,e.Profiler=o,e.StrictMode=a,e.Suspense=f,e.isAsyncMode=function(e){return x(e)||b(e)===l},e.isConcurrentMode=x,e.isContextConsumer=function(e){return b(e)===c},e.isContextProvider=function(e){return b(e)===s},e.isElement=function(e){return typeof e==`object`&&!!e&&e.$$typeof===n},e.isForwardRef=function(e){return b(e)===d},e.isFragment=function(e){return b(e)===i},e.isLazy=function(e){return b(e)===h},e.isMemo=function(e){return b(e)===m},e.isPortal=function(e){return b(e)===r},e.isProfiler=function(e){return b(e)===o},e.isStrictMode=function(e){return b(e)===a},e.isSuspense=function(e){return b(e)===f},e.isValidElementType=function(e){return typeof e==`string`||typeof e==`function`||e===i||e===u||e===o||e===a||e===f||e===p||typeof e==`object`&&!!e&&(e.$$typeof===h||e.$$typeof===m||e.$$typeof===s||e.$$typeof===c||e.$$typeof===d||e.$$typeof===_||e.$$typeof===v||e.$$typeof===y||e.$$typeof===g)},e.typeOf=b})),gu=s(((e,t)=>{t.exports=hu()})),_u=s(((e,t)=>{var n=gu(),r={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};s[n.ForwardRef]=a,s[n.Memo]=o;function c(e){return n.isMemo(e)?o:s[e.$$typeof]||r}var l=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;function h(e,t,n){if(typeof t!=`string`){if(m){var r=p(t);r&&r!==m&&h(e,r,n)}var a=u(t);d&&(a=a.concat(d(t)));for(var o=c(e),s=c(t),g=0;g<a.length;++g){var _=a[g];if(!i[_]&&!(n&&n[_])&&!(s&&s[_])&&!(o&&o[_])){var v=f(t,_);try{l(e,_,v)}catch{}}}}return e}t.exports=h})),vu=!0;function yu(e,t,n){var r=``;return n.split(` `).forEach(function(n){e[n]===void 0?n&&(r+=n+` `):t.push(e[n]+`;`)}),r}var bu=function(e,t,n){var r=e.key+`-`+t.name;(n===!1||vu===!1)&&e.registered[r]===void 0&&(e.registered[r]=t.styles)},xu=function(e,t,n){bu(e,t,n);var r=e.key+`-`+t.name;if(e.inserted[t.name]===void 0){var i=t;do e.insert(t===i?`.`+r:``,i,e.sheet,!0),i=i.next;while(i!==void 0)}};function Su(e){for(var t=0,n,r=0,i=e.length;i>=4;++r,i-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var Cu={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},wu=!1,Tu=/[A-Z]|^ms/g,Eu=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Du=function(e){return e.charCodeAt(1)===45},Ou=function(e){return e!=null&&typeof e!=`boolean`},ku=au(function(e){return Du(e)?e:e.replace(Tu,`-$&`).toLowerCase()}),Au=function(e,t){switch(e){case`animation`:case`animationName`:if(typeof t==`string`)return t.replace(Eu,function(e,t,n){return Fu={name:t,styles:n,next:Fu},t})}return Cu[e]!==1&&!Du(e)&&typeof t==`number`&&t!==0?t+`px`:t},ju=`Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.`;function Mu(e,t,n){if(n==null)return``;var r=n;if(r.__emotion_styles!==void 0)return r;switch(typeof n){case`boolean`:return``;case`object`:var i=n;if(i.anim===1)return Fu={name:i.name,styles:i.styles,next:Fu},i.name;var a=n;if(a.styles!==void 0){var o=a.next;if(o!==void 0)for(;o!==void 0;)Fu={name:o.name,styles:o.styles,next:Fu},o=o.next;return a.styles+`;`}return Nu(e,t,n);case`function`:if(e!==void 0){var s=Fu,c=n(e);return Fu=s,Mu(e,t,c)}break}var l=n;if(t==null)return l;var u=t[l];return u===void 0?l:u}function Nu(e,t,n){var r=``;if(Array.isArray(n))for(var i=0;i<n.length;i++)r+=Mu(e,t,n[i])+`;`;else for(var a in n){var o=n[a];if(typeof o!=`object`){var s=o;t!=null&&t[s]!==void 0?r+=a+`{`+t[s]+`}`:Ou(s)&&(r+=ku(a)+`:`+Au(a,s)+`;`)}else{if(a===`NO_COMPONENT_SELECTOR`&&wu)throw Error(ju);if(Array.isArray(o)&&typeof o[0]==`string`&&(t==null||t[o[0]]===void 0))for(var c=0;c<o.length;c++)Ou(o[c])&&(r+=ku(a)+`:`+Au(a,o[c])+`;`);else{var l=Mu(e,t,o);switch(a){case`animation`:case`animationName`:r+=ku(a)+`:`+l+`;`;break;default:r+=a+`{`+l+`}`}}}}return r}var Pu=/label:\s*([^\s;{]+)\s*(;|$)/g,Fu;function Iu(e,t,n){if(e.length===1&&typeof e[0]==`object`&&e[0]!==null&&e[0].styles!==void 0)return e[0];var r=!0,i=``;Fu=void 0;var a=e[0];a==null||a.raw===void 0?(r=!1,i+=Mu(n,t,a)):i+=a[0];for(var o=1;o<e.length;o++)i+=Mu(n,t,e[o]),r&&(i+=a[o]);Pu.lastIndex=0;for(var s=``,c;(c=Pu.exec(i))!==null;)s+=`-`+c[1];return{name:Su(i)+s,styles:i,next:Fu}}var Lu=function(e){return e()},Ru=C.useInsertionEffect?C.useInsertionEffect:!1,zu=Ru||Lu,Bu=Ru||C.useLayoutEffect,Vu=C.createContext(typeof HTMLElement<`u`?mu({key:`css`}):null);Vu.Provider;var Hu=function(e){return(0,C.forwardRef)(function(t,n){return e(t,(0,C.useContext)(Vu),n)})},Uu=C.createContext({}),Wu={}.hasOwnProperty,Gu=`__EMOTION_TYPE_PLEASE_DO_NOT_USE__`,Ku=function(e,t){var n={};for(var r in t)Wu.call(t,r)&&(n[r]=t[r]);return n[Gu]=e,n},qu=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return bu(t,n,r),zu(function(){return xu(t,n,r)}),null},Ju=Hu(function(e,t,n){var r=e.css;typeof r==`string`&&t.registered[r]!==void 0&&(r=t.registered[r]);var i=e[Gu],a=[r],o=``;typeof e.className==`string`?o=yu(t.registered,a,e.className):e.className!=null&&(o=e.className+` `);var s=Iu(a,void 0,C.useContext(Uu));o+=t.key+`-`+s.name;var c={};for(var l in e)Wu.call(e,l)&&l!==`css`&&l!==Gu&&(c[l]=e[l]);return c.className=o,n&&(c.ref=n),C.createElement(C.Fragment,null,C.createElement(qu,{cache:t,serialized:s,isStringTag:typeof i==`string`}),C.createElement(i,c))});_u();var Yu=function(e,t){var n=arguments;if(t==null||!Wu.call(t,`css`))return C.createElement.apply(void 0,n);var r=n.length,i=Array(r);i[0]=Ju,i[1]=Ku(e,t);for(var a=2;a<r;a++)i[a]=n[a];return C.createElement.apply(null,i)};(function(e){var t;(function(e){})(t||=e.JSX||={})})(Yu||={});var Xu=Hu(function(e,t){var n=e.styles,r=Iu([n],void 0,C.useContext(Uu)),i=C.useRef();return Bu(function(){var e=t.key+`-global`,n=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),a=!1,o=document.querySelector(`style[data-emotion="`+e+` `+r.name+`"]`);return t.sheet.tags.length&&(n.before=t.sheet.tags[0]),o!==null&&(a=!0,o.setAttribute(`data-emotion`,e),n.hydrate([o])),i.current=[n,a],function(){n.flush()}},[t]),Bu(function(){var e=i.current,n=e[0];if(e[1]){e[1]=!1;return}r.next!==void 0&&xu(t,r.next,!0),n.tags.length&&(n.before=n.tags[n.tags.length-1].nextElementSibling,n.flush()),t.insert(``,r,n,!1)},[t,r.name]),null});function Zu(){return Iu([...arguments])}function Qu(){var e=Zu.apply(void 0,arguments),t=`animation-`+e.name;return{name:t,styles:`@keyframes `+t+`{`+e.styles+`}`,anim:1,toString:function(){return`_EMO_`+this.name+`_`+this.styles+`_EMO_`}}}var $u=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,ed=au(function(e){return $u.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91}),td=!1,nd=ed,rd=function(e){return e!==`theme`},id=function(e){return typeof e==`string`&&e.charCodeAt(0)>96?nd:rd},ad=function(e,t,n){var r;if(t){var i=t.shouldForwardProp;r=e.__emotion_forwardProp&&i?function(t){return e.__emotion_forwardProp(t)&&i(t)}:i}return typeof r!=`function`&&n&&(r=e.__emotion_forwardProp),r},od=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return bu(t,n,r),zu(function(){return xu(t,n,r)}),null},sd=function e(t,n){var r=t.__emotion_real===t,i=r&&t.__emotion_base||t,a,o;n!==void 0&&(a=n.label,o=n.target);var s=ad(t,n,r),c=s||id(i),l=!c(`as`);return function(){var u=arguments,d=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(a!==void 0&&d.push(`label:`+a+`;`),u[0]==null||u[0].raw===void 0)d.push.apply(d,u);else{var f=u[0];d.push(f[0]);for(var p=u.length,m=1;m<p;m++)d.push(u[m],f[m])}var h=Hu(function(e,t,n){var r=l&&e.as||i,a=``,u=[],f=e;if(e.theme==null){for(var p in f={},e)f[p]=e[p];f.theme=C.useContext(Uu)}typeof e.className==`string`?a=yu(t.registered,u,e.className):e.className!=null&&(a=e.className+` `);var m=Iu(d.concat(u),t.registered,f);a+=t.key+`-`+m.name,o!==void 0&&(a+=` `+o);var h=l&&s===void 0?id(r):c,g={};for(var _ in e)l&&_===`as`||h(_)&&(g[_]=e[_]);return g.className=a,n&&(g.ref=n),C.createElement(C.Fragment,null,C.createElement(od,{cache:t,serialized:m,isStringTag:typeof r==`string`}),C.createElement(r,g))});return h.displayName=a===void 0?`Styled(`+(typeof i==`string`?i:i.displayName||i.name||`Component`)+`)`:a,h.defaultProps=t.defaultProps,h.__emotion_real=h,h.__emotion_base=i,h.__emotion_styles=d,h.__emotion_forwardProp=s,Object.defineProperty(h,`toString`,{value:function(){return o===void 0&&td?`NO_COMPONENT_SELECTOR`:`.`+o}}),h.withComponent=function(t,r){return e(t,$c({},n,r,{shouldForwardProp:ad(h,r,!0)})).apply(void 0,d)},h}},cd=`a.abbr.address.area.article.aside.audio.b.base.bdi.bdo.big.blockquote.body.br.button.canvas.caption.cite.code.col.colgroup.data.datalist.dd.del.details.dfn.dialog.div.dl.dt.em.embed.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.iframe.img.input.ins.kbd.keygen.label.legend.li.link.main.map.mark.marquee.menu.menuitem.meta.meter.nav.noscript.object.ol.optgroup.option.output.p.param.picture.pre.progress.q.rp.rt.ruby.s.samp.script.section.select.small.source.span.strong.style.sub.summary.sup.table.tbody.td.textarea.tfoot.th.thead.time.title.tr.track.u.ul.var.video.wbr.circle.clipPath.defs.ellipse.foreignObject.g.image.line.linearGradient.mask.path.pattern.polygon.polyline.radialGradient.rect.stop.svg.text.tspan`.split(`.`),ld=sd.bind(null);cd.forEach(function(e){ld[e]=ld(e)});var ud=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),G=s(((e,t)=>{t.exports=ud()}))();function dd(e){return e==null||Object.keys(e).length===0}function fd(e){let{styles:t,defaultTheme:n={}}=e;return(0,G.jsx)(Xu,{styles:typeof t==`function`?e=>t(dd(e)?n:e):t})}function pd(e,t){return ld(e,t)}function md(e,t){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}var hd=[];function gd(e){return hd[0]=e,Iu(hd)}var _d=e=>{let t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})};function vd(e){let{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n=`px`,step:r=5,...i}=e,a=_d(t),o=Object.keys(a);function s(e){return`@media (min-width:${typeof t[e]==`number`?t[e]:e}${n})`}function c(e){return`@media (max-width:${(typeof t[e]==`number`?t[e]:e)-r/100}${n})`}function l(e,i){let a=o.indexOf(i);return`@media (min-width:${typeof t[e]==`number`?t[e]:e}${n}) and (max-width:${(a!==-1&&typeof t[o[a]]==`number`?t[o[a]]:i)-r/100}${n})`}function u(e){return o.indexOf(e)+1<o.length?l(e,o[o.indexOf(e)+1]):s(e)}function d(e){let t=o.indexOf(e);return t===0?s(o[1]):t===o.length-1?c(o[t]):l(e,o[o.indexOf(e)+1]).replace(`@media`,`@media not all and`)}return{keys:o,values:a,up:s,down:c,between:l,only:u,not:d,unit:n,...i}}var yd={borderRadius:4};function bd(e=8,t=dc({spacing:e})){if(e.mui)return e;let n=(...e)=>(e.length===0?[1]:e).map(e=>{let n=t(e);return typeof n==`number`?`${n}px`:n}).join(` `);return n.mui=!0,n}function xd(e,t){let n=this;if(n.vars){if(!n.colorSchemes?.[e]||typeof n.getColorSchemeSelector!=`function`)return{};let r=n.getColorSchemeSelector(e);return r===`&`?t:((r.includes(`data-`)||r.includes(`.`))&&(r=`*:where(${r.replace(/\s*&$/,``)}) &`),{[r]:t})}return n.palette.mode===e?t:{}}function Sd(e={},...t){let{breakpoints:n={},palette:r={},spacing:i,shape:a={},...o}=e,s=vd(n),c=bd(i),l=zs({breakpoints:s,direction:`ltr`,components:{},palette:{mode:`light`,...r},spacing:c,shape:{...yd,...a}},o);return l=nee(l),l.applyStyles=xd,l=t.reduce((e,t)=>zs(e,t),l),l.unstable_sxConfig={...Kc,...o?.unstable_sxConfig},l.unstable_sx=function(e){return Xc({sx:e,theme:this})},l}function Cd(e){return Object.keys(e).length===0}function wd(e=null){let t=C.useContext(Uu);return!t||Cd(t)?e:t}var Td=Sd();function Ed(e=Td){return wd(e)}function Dd(e){let t=gd(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles=`@layer global{${t.styles}}`),t):e}function Od({styles:e,themeId:t,defaultTheme:n={}}){let r=Ed(n),i=t&&r[t]||r,a=typeof e==`function`?e(i):e;return i.modularCssLayers&&(a=Array.isArray(a)?a.map(e=>Dd(typeof e==`function`?e(i):e)):Dd(a)),(0,G.jsx)(fd,{styles:a})}var kd=e=>e,Ad=(()=>{let e=kd;return{configure(t){e=t},generate(t){return e(t)},reset(){e=kd}}})();function jd(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=jd(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function K(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=jd(e))&&(r&&(r+=` `),r+=t);return r}function ree(e={}){let{themeId:t,defaultTheme:n,defaultClassName:r=`MuiBox-root`,generateClassName:i}=e,a=pd(`div`,{shouldForwardProp:e=>e!==`theme`&&e!==`sx`&&e!==`as`})(Xc);return C.forwardRef(function(e,o){let s=Ed(n),{className:c,component:l=`div`,...u}=Qc(e);return(0,G.jsx)(a,{as:l,ref:o,className:K(c,i?i(r):r),theme:t&&s[t]||s,...u})})}var iee={active:`active`,checked:`checked`,completed:`completed`,disabled:`disabled`,error:`error`,expanded:`expanded`,focused:`focused`,focusVisible:`focusVisible`,open:`open`,readOnly:`readOnly`,required:`required`,selected:`selected`};function Md(e,t,n=`Mui`){let r=iee[t];return r?`${n}-${r}`:`${Ad.generate(e)}-${t}`}function Nd(e,t,n=`Mui`){let r={};return t.forEach(t=>{r[t]=Md(e,t,n)}),r}function Pd(e){let{variants:t,...n}=e,r={variants:t,style:gd(n),isProcessed:!0};return r.style===n||t&&t.forEach(e=>{typeof e.style!=`function`&&(e.style=gd(e.style))}),r}var Fd=Sd();function Id(e){return e!==`ownerState`&&e!==`theme`&&e!==`sx`&&e!==`as`}function Ld(e,t){return t&&e&&typeof e==`object`&&e.styles&&!e.styles.startsWith(`@layer`)&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function Rd(e){return e?(t,n)=>n[e]:null}function zd(e,t,n){e.theme=Ud(e.theme)?n:e.theme[t]||e.theme}function Bd(e,t,n){let r=typeof t==`function`?t(e):t;if(Array.isArray(r))return r.flatMap(t=>Bd(e,t,n));if(Array.isArray(r?.variants)){let t;if(r.isProcessed)t=n?Ld(r.style,n):r.style;else{let{variants:e,...i}=r;t=n?Ld(gd(i),n):i}return Vd(e,r.variants,[t],n)}return r?.isProcessed?n?Ld(gd(r.style),n):r.style:n?Ld(gd(r),n):r}function Vd(e,t,n=[],r=void 0){let i;variantLoop:for(let a=0;a<t.length;a+=1){let o=t[a];if(typeof o.props==`function`){if(i??={...e,...e.ownerState,ownerState:e.ownerState},!o.props(i))continue}else for(let t in o.props)if(e[t]!==o.props[t]&&e.ownerState?.[t]!==o.props[t])continue variantLoop;typeof o.style==`function`?(i??={...e,...e.ownerState,ownerState:e.ownerState},n.push(r?Ld(gd(o.style(i)),r):o.style(i))):n.push(r?Ld(gd(o.style),r):o.style)}return n}function Hd(e={}){let{themeId:t,defaultTheme:n=Fd,rootShouldForwardProp:r=Id,slotShouldForwardProp:i=Id}=e;function a(e){zd(e,t,n)}return(e,t={})=>{md(e,e=>e.filter(e=>e!==Xc));let{name:n,slot:o,skipVariantsResolver:s,skipSx:c,overridesResolver:l=Rd(Gd(o)),...u}=t,d=n&&n.startsWith(`Mui`)||o?`components`:`custom`,f=s===void 0?o&&o!==`Root`&&o!==`root`||!1:s,p=c||!1,m=Id;o===`Root`||o===`root`?m=r:o?m=i:Wd(e)&&(m=void 0);let h=pd(e,{shouldForwardProp:m,label:void 0,...u}),g=e=>{if(e.__emotion_real===e)return e;if(typeof e==`function`)return function(t){return Bd(t,e,t.theme.modularCssLayers?d:void 0)};if(Ls(e)){let t=Pd(e);return function(e){return t.variants?Bd(e,t,e.theme.modularCssLayers?d:void 0):e.theme.modularCssLayers?Ld(t.style,d):t.style}}return e},_=(...t)=>{let r=[],i=t.map(g),o=[];if(r.push(a),n&&l&&o.push(function(e){let t=e.theme.components?.[n]?.styleOverrides;if(!t)return null;let r={};for(let n in t)r[n]=Bd(e,t[n],e.theme.modularCssLayers?`theme`:void 0);return l(e,r)}),n&&!f&&o.push(function(e){let t=e.theme?.components?.[n]?.variants;return t?Vd(e,t,[],e.theme.modularCssLayers?`theme`:void 0):null}),p||o.push(Xc),Array.isArray(i[0])){let e=i.shift(),t=Array(r.length).fill(``),n=Array(o.length).fill(``),a;a=[...t,...e,...n],a.raw=[...t,...e.raw,...n],r.unshift(a)}let s=h(...r,...i,...o);return e.muiName&&(s.muiName=e.muiName),s};return h.withConfig&&(_.withConfig=h.withConfig),_}}function Ud(e){for(let t in e)return!1;return!0}function Wd(e){return typeof e==`string`&&e.charCodeAt(0)>96}function Gd(e){return e&&e.charAt(0).toLowerCase()+e.slice(1)}var Kd=Hd();function qd(e,t,n=!1){let r={...t};for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let a=i;if(a===`components`||a===`slots`)r[a]={...e[a],...r[a]};else if(a===`componentsProps`||a===`slotProps`){let i=e[a],o=t[a];if(!o)r[a]=i||{};else if(!i)r[a]=o;else{r[a]={...o};for(let e in i)if(Object.prototype.hasOwnProperty.call(i,e)){let t=e;r[a][t]=qd(i[t],o[t],n)}}}else a===`className`&&n&&t.className?r.className=K(e?.className,t?.className):a===`style`&&n&&t.style?r.style={...e?.style,...t?.style}:r[a]===void 0&&(r[a]=e[a])}return r}function Jd(e){let{theme:t,name:n,props:r}=e;return!t||!t.components||!t.components[n]||!t.components[n].defaultProps?r:qd(t.components[n].defaultProps,r)}function Yd({props:e,name:t,defaultTheme:n,themeId:r}){let i=Ed(n);return r&&(i=i[r]||i),Jd({theme:i,name:t,props:e})}var Xd=typeof window<`u`?C.useLayoutEffect:C.useEffect;function Zd(e,t,n,r,i){let[a,o]=C.useState(()=>i&&n?n(e).matches:r?r(e).matches:t);return Xd(()=>{if(!n)return;let t=n(e),r=()=>{o(t.matches)};return r(),t.addEventListener(`change`,r),()=>{t.removeEventListener(`change`,r)}},[e,n]),a}var Qd={...C}.useSyncExternalStore;function $d(e,t,n,r,i){let a=C.useCallback(()=>t,[t]),o=C.useMemo(()=>{if(i&&n)return()=>n(e).matches;if(r!==null){let{matches:t}=r(e);return()=>t}return a},[a,e,r,i,n]),[s,c]=C.useMemo(()=>{if(n===null)return[a,()=>()=>{}];let t=n(e);return[()=>t.matches,e=>(t.addEventListener(`change`,e),()=>{t.removeEventListener(`change`,e)})]},[a,n,e]);return Qd(c,s,o)}function ef(e={}){let{themeId:t}=e;return function(e,n={}){let r=wd();r&&t&&(r=r[t]||r);let i=typeof window<`u`&&window.matchMedia!==void 0,{defaultMatches:a=!1,matchMedia:o=i?window.matchMedia:null,ssrMatchMedia:s=null,noSsr:c=!1}=Jd({name:`MuiUseMediaQuery`,props:n,theme:r}),l=typeof e==`function`?e(r):e;return l=l.replace(/^@media( ?)/m,``),l.includes(`print`)&&console.warn(["MUI: You have provided a `print` query to the `useMediaQuery` hook.",`Using the print media query to modify print styles can lead to unexpected results.`,"Consider using the `displayPrint` field in the `sx` prop instead.","More information about `displayPrint` on our docs: https://mui.com/system/display/#display-in-print."].join(`
13
13
  `)),(Qd===void 0?Zd:$d)(l,a,o,s,c)}}ef();function tf(e,t=-(2**53-1),n=2**53-1){return Math.max(t,Math.min(e,n))}function nf(e,t=0,n=1){return tf(e,t,n)}function rf(e){e=e.slice(1);let t=RegExp(`.{1,${e.length>=6?2:1}}`,`g`),n=e.match(t);return n&&n[0].length===1&&(n=n.map(e=>e+e)),n?`rgb${n.length===4?`a`:``}(${n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(`, `)})`:``}function af(e){if(e.type)return e;if(e.charAt(0)===`#`)return af(rf(e));let t=e.indexOf(`(`),n=e.substring(0,t);if(![`rgb`,`rgba`,`hsl`,`hsla`,`color`].includes(n))throw Error(Ns(9,e));let r=e.substring(t+1,e.length-1),i;if(n===`color`){if(r=r.split(` `),i=r.shift(),r.length===4&&r[3].charAt(0)===`/`&&(r[3]=r[3].slice(1)),![`srgb`,`display-p3`,`a98-rgb`,`prophoto-rgb`,`rec-2020`].includes(i))throw Error(Ns(10,i))}else r=r.split(`,`);return r=r.map(e=>parseFloat(e)),{type:n,values:r,colorSpace:i}}var of=e=>{let t=af(e);return t.values.slice(0,3).map((e,n)=>t.type.includes(`hsl`)&&n!==0?`${e}%`:e).join(` `)},sf=(e,t)=>{try{return of(e)}catch{return e}};function cf(e){let{type:t,colorSpace:n}=e,{values:r}=e;return t.includes(`rgb`)?r=r.map((e,t)=>t<3?parseInt(e,10):e):t.includes(`hsl`)&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=t.includes(`color`)?`${n} ${r.join(` `)}`:`${r.join(`, `)}`,`${t}(${r})`}function lf(e){e=af(e);let{values:t}=e,n=t[0],r=t[1]/100,i=t[2]/100,a=r*Math.min(i,1-i),o=(e,t=(e+n/30)%12)=>i-a*Math.max(Math.min(t-3,9-t,1),-1),s=`rgb`,c=[Math.round(o(0)*255),Math.round(o(8)*255),Math.round(o(4)*255)];return e.type===`hsla`&&(s+=`a`,c.push(t[3])),cf({type:s,values:c})}function uf(e){e=af(e);let t=e.type===`hsl`||e.type===`hsla`?af(lf(e)).values:e.values;return t=t.map(t=>(e.type!==`color`&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function df(e,t){let n=uf(e),r=uf(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function ff(e,t){return e=af(e),t=nf(t),(e.type===`rgb`||e.type===`hsl`)&&(e.type+=`a`),e.type===`color`?e.values[3]=`/${t}`:e.values[3]=t,cf(e)}function pf(e,t,n){try{return ff(e,t)}catch{return e}}function mf(e,t){if(e=af(e),t=nf(t),e.type.includes(`hsl`))e.values[2]*=1-t;else if(e.type.includes(`rgb`)||e.type.includes(`color`))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return cf(e)}function hf(e,t,n){try{return mf(e,t)}catch{return e}}function gf(e,t){if(e=af(e),t=nf(t),e.type.includes(`hsl`))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes(`rgb`))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.includes(`color`))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return cf(e)}function _f(e,t,n){try{return gf(e,t)}catch{return e}}function vf(e,t=.15){return uf(e)>.5?mf(e,t):gf(e,t)}function yf(e,t,n){try{return vf(e,t)}catch{return e}}var bf=C.createContext(null);function xf(){return C.useContext(bf)}var Sf=typeof Symbol==`function`&&Symbol.for?Symbol.for(`mui.nested`):`__THEME_NESTED__`;function Cf(e,t){return typeof t==`function`?t(e):{...e,...t}}function wf(e){let{children:t,theme:n}=e,r=xf(),i=C.useMemo(()=>{let e=r===null?{...n}:Cf(r,n);return e!=null&&(e[Sf]=r!==null),e},[n,r]);return(0,G.jsx)(bf.Provider,{value:i,children:t})}var Tf=C.createContext();function Ef({value:e,...t}){return(0,G.jsx)(Tf.Provider,{value:e??!0,...t})}var Df=()=>C.useContext(Tf)??!1,Of=C.createContext(void 0);function kf({value:e,children:t}){return(0,G.jsx)(Of.Provider,{value:e,children:t})}function Af(e){let{theme:t,name:n,props:r}=e;if(!t||!t.components||!t.components[n])return r;let i=t.components[n];return i.defaultProps?qd(i.defaultProps,r,t.components.mergeClassNameAndStyle):!i.styleOverrides&&!i.variants?qd(i,r,t.components.mergeClassNameAndStyle):r}function jf({props:e,name:t}){return Af({props:e,name:t,theme:{components:C.useContext(Of)}})}var Mf=0;function Nf(e){let[t,n]=C.useState(e),r=e||t;return C.useEffect(()=>{t??(Mf+=1,n(`mui-${Mf}`))},[t]),r}var Pf={...C}.useId;function Ff(e){if(Pf!==void 0){let t=Pf();return e??t}return Nf(e)}function If(e){let t=wd(),n=Ff()||``,{modularCssLayers:r}=e,i=`mui.global, mui.components, mui.theme, mui.custom, mui.sx`;return i=!r||t!==null?``:typeof r==`string`?r.replace(/mui(?!\.)/g,i):`@layer ${i};`,Xd(()=>{let e=document.querySelector(`head`);if(!e)return;let t=e.firstChild;if(i){if(t&&t.hasAttribute?.(`data-mui-layer-order`)&&t.getAttribute(`data-mui-layer-order`)===n)return;let r=document.createElement(`style`);r.setAttribute(`data-mui-layer-order`,n),r.textContent=i,e.prepend(r)}else e.querySelector(`style[data-mui-layer-order="${n}"]`)?.remove()},[i,n]),i?(0,G.jsx)(Od,{styles:i}):null}var Lf={};function Rf(e,t,n,r=!1){return C.useMemo(()=>{let i=e&&t[e]||t;if(typeof n==`function`){let a=n(i),o=e?{...t,[e]:a}:a;return r?()=>o:o}return e?{...t,[e]:n}:{...t,...n}},[e,t,n,r])}function zf(e){let{children:t,theme:n,themeId:r}=e,i=wd(Lf),a=xf()||Lf,o=Rf(r,i,n),s=Rf(r,a,n,!0),c=(r?o[r]:o).direction===`rtl`,l=If(o);return(0,G.jsx)(wf,{theme:s,children:(0,G.jsx)(Uu.Provider,{value:o,children:(0,G.jsx)(Ef,{value:c,children:(0,G.jsxs)(kf,{value:r?o[r].components:o.components,children:[l,t]})})})})}var Bf={theme:void 0};function Vf(e){let t,n;return function(r){let i=t;return(i===void 0||r.theme!==n)&&(Bf.theme=r.theme,i=Pd(e(Bf)),t=i,n=r.theme),i}}var Hf=`mode`,Uf=`color-scheme`,Wf=`data-color-scheme`;function Gf(e){let{defaultMode:t=`system`,defaultLightColorScheme:n=`light`,defaultDarkColorScheme:r=`dark`,modeStorageKey:i=Hf,colorSchemeStorageKey:a=Uf,attribute:o=Wf,colorSchemeNode:s=`document.documentElement`,nonce:c}=e||{},l=``,u=o;if(o===`class`&&(u=`.%s`),o===`data`&&(u=`[data-%s]`),u.startsWith(`.`)){let e=u.substring(1);l+=`${s}.classList.remove('${e}'.replace('%s', light), '${e}'.replace('%s', dark));
14
14
  ${s}.classList.add('${e}'.replace('%s', colorScheme));`}let d=u.match(/\[([^[\]]+)\]/);if(d){let[e,t]=d[1].split(`=`);t||(l+=`${s}.removeAttribute('${e}'.replace('%s', light));
15
15
  ${s}.removeAttribute('${e}'.replace('%s', dark));`),l+=`
@@ -470,4 +470,4 @@ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\
470
470
  To pick up a draggable item, press the space bar.
471
471
  While dragging, use the arrow keys to move the item.
472
472
  Press space again to drop the item in its new position, or press escape to cancel.
473
- `},F4e={onDragStart(e){let{active:t}=e;return`Picked up draggable item `+t.id+`.`},onDragOver(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was moved over droppable area `+n.id+`.`:`Draggable item `+t.id+` is no longer over a droppable area.`},onDragEnd(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was dropped over droppable area `+n.id:`Draggable item `+t.id+` was dropped.`},onDragCancel(e){let{active:t}=e;return`Dragging was cancelled. Draggable item `+t.id+` was dropped.`}};function I4e(e){let{announcements:t=F4e,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=P4e}=e,{announce:a,announcement:o}=A4e(),s=p9(`DndLiveRegion`),[c,l]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{l(!0)},[]),M4e((0,C.useMemo)(()=>({onDragStart(e){let{active:n}=e;a(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&a(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;a(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;a(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;a(t.onDragCancel({active:n,over:r}))}}),[a,t])),!c)return null;let u=C.createElement(C.Fragment,null,C.createElement(O4e,{id:r,value:i.draggable}),C.createElement(k4e,{id:s,announcement:o}));return n?(0,_a.createPortal)(u,n):u}var y9;(function(e){e.DragStart=`dragStart`,e.DragMove=`dragMove`,e.DragEnd=`dragEnd`,e.DragCancel=`dragCancel`,e.DragOver=`dragOver`,e.RegisterDroppable=`registerDroppable`,e.SetDroppableDisabled=`setDroppableDisabled`,e.UnregisterDroppable=`unregisterDroppable`})(y9||={});function b9(){}function L4e(e,t){return(0,C.useMemo)(()=>({sensor:e,options:t??{}}),[e,t])}function R4e(){var e=[...arguments];return(0,C.useMemo)(()=>[...e].filter(e=>e!=null),[...e])}var x9=Object.freeze({x:0,y:0});function z4e(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function B4e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function V4e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function H4e(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function U4e(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}function W4e(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}var G4e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=W4e(t,t.left,t.top),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=z4e(W4e(r),i);a.push({id:t,data:{droppableContainer:e,value:n}})}}return a.sort(B4e)},K4e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=H4e(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=H4e(r),o=i.reduce((e,t,r)=>e+z4e(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(B4e)};function q4e(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=i-r,s=a-n;if(r<i&&n<a){let n=t.width*t.height,r=e.width*e.height,i=o*s,a=i/(n+r-i);return Number(a.toFixed(4))}return 0}var J4e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=[];for(let e of r){let{id:r}=e,a=n.get(r);if(a){let n=q4e(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(V4e)};function Y4e(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function X4e(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:x9}function Z4e(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}var Q4e=Z4e(1);function $4e(e){if(e.startsWith(`matrix3d(`)){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith(`matrix(`)){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function e3e(e,t,n){let r=$4e(t);if(!r)return e;let{scaleX:i,scaleY:a,x:o,y:s}=r,c=e.left-o-(1-i)*parseFloat(n),l=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(` `)+1)),u=i?e.width/i:e.width,d=a?e.height/a:e.height;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c}}var t3e={ignoreTransform:!1};function S9(e,t){t===void 0&&(t=t3e);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=n9(e).getComputedStyle(e);t&&(n=e3e(n,t,r))}let{top:r,left:i,width:a,height:o,bottom:s,right:c}=n;return{top:r,left:i,width:a,height:o,bottom:s,right:c}}function n3e(e){return S9(e,{ignoreTransform:!0})}function r3e(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function i3e(e,t){return t===void 0&&(t=n9(e).getComputedStyle(e)),t.position===`fixed`}function a3e(e,t){t===void 0&&(t=n9(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`?n.test(r):!1})}function C9(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(r9(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!i9(i)||b4e(i)||n.includes(i))return n;let a=n9(e).getComputedStyle(i);return i!==e&&a3e(i,a)&&n.push(i),i3e(i,a)?n:r(i.parentNode)}return e?r(e):n}function o3e(e){let[t]=C9(e,1);return t??null}function w9(e){return!$7||!e?null:e9(e)?e:t9(e)?r9(e)||e===a9(e).scrollingElement?window:i9(e)?e:null:null}function s3e(e){return e9(e)?e.scrollX:e.scrollLeft}function c3e(e){return e9(e)?e.scrollY:e.scrollTop}function T9(e){return{x:s3e(e),y:c3e(e)}}var E9;(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(E9||={});function l3e(e){return!$7||!e?!1:e===document.scrollingElement}function u3e(e){let t={x:0,y:0},n=l3e(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}var d3e={x:.2,y:.2};function f3e(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=d3e);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=u3e(e),p={x:0,y:0},m={x:0,y:0},h={height:t.height*i.y,width:t.width*i.x};return!l&&a<=t.top+h.height?(p.y=E9.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=E9.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=E9.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=E9.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function p3e(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function m3e(e){return e.reduce((e,t)=>m9(e,T9(t)),x9)}function h3e(e){return e.reduce((e,t)=>e+s3e(t),0)}function g3e(e){return e.reduce((e,t)=>e+c3e(t),0)}function _3e(e,t){if(t===void 0&&(t=S9),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);o3e(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}var v3e=[[`x`,[`left`,`right`],h3e],[`y`,[`top`,`bottom`],g3e]],D9=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;let n=C9(t),r=m3e(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of v3e)for(let a of t)Object.defineProperty(this,a,{get:()=>{let t=i(n),o=r[e]-t;return this.rect[a]+o},enumerable:!0});Object.defineProperty(this,`rect`,{enumerable:!1})}},O9=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>this.target?.removeEventListener(...e))},this.target=e}add(e,t,n){var r;(r=this.target)==null||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}};function y3e(e){let{EventTarget:t}=n9(e);return e instanceof t?e:a9(e)}function k9(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return typeof t==`number`?Math.sqrt(n**2+r**2)>t:`x`in t&&`y`in t?n>t.x&&r>t.y:`x`in t?n>t.x:`y`in t?r>t.y:!1}var A9;(function(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(A9||={});function b3e(e){e.preventDefault()}function x3e(e){e.stopPropagation()}var j9;(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(j9||={});var S3e={start:[j9.Space,j9.Enter],cancel:[j9.Esc],end:[j9.Space,j9.Enter,j9.Tab]},C3e=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case j9.Right:return{...n,x:n.x+25};case j9.Left:return{...n,x:n.x-25};case j9.Down:return{...n,y:n.y+25};case j9.Up:return{...n,y:n.y-25}}},M9=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;let{event:{target:t}}=e;this.props=e,this.listeners=new O9(a9(t)),this.windowListeners=new O9(n9(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(A9.Resize,this.handleCancel),this.windowListeners.add(A9.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(A9.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&_3e(n),t(x9)}handleKeyDown(e){if(g9(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=S3e,coordinateGetter:a=C3e,scrollBehavior:o=`smooth`}=r,{code:s}=e;if(i.end.includes(s)){this.handleEnd(e);return}if(i.cancel.includes(s)){this.handleCancel(e);return}let{collisionRect:c}=n.current,l=c?{x:c.left,y:c.top}:x9;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=h9(u,l),r={x:0,y:0},{scrollableAncestors:i}=n.current;for(let n of i){let i=e.code,{isTop:a,isRight:s,isLeft:c,isBottom:l,maxScroll:d,minScroll:f}=u3e(n),p=p3e(n),m={x:Math.min(i===j9.Right?p.right-p.width/2:p.right,Math.max(i===j9.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===j9.Down?p.bottom-p.height/2:p.bottom,Math.max(i===j9.Down?p.top:p.top+p.height/2,u.y))},h=i===j9.Right&&!s||i===j9.Left&&!c,g=i===j9.Down&&!l||i===j9.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===j9.Right&&e<=d.x||i===j9.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}a?r.x=n.scrollLeft-e:r.x=i===j9.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}else if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===j9.Down&&e<=d.y||i===j9.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}a?r.y=n.scrollTop-e:r.y=i===j9.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,m9(h9(u,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}};M9.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=S3e,onActivation:i}=t,{active:a}=n,{code:o}=e.nativeEvent;if(r.start.includes(o)){let t=a.activatorNode.current;return t&&e.target!==t?!1:(e.preventDefault(),i?.({event:e.nativeEvent}),!0)}return!1}}];function w3e(e){return!!(e&&`distance`in e)}function T3e(e){return!!(e&&`delay`in e)}var N9=class{constructor(e,t,n){n===void 0&&(n=y3e(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;let{event:r}=e,{target:i}=r;this.props=e,this.events=t,this.document=a9(i),this.documentListeners=new O9(this.document),this.listeners=new O9(n),this.windowListeners=new O9(n9(i)),this.initialCoordinates=_9(r)??x9,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(A9.Resize,this.handleCancel),this.windowListeners.add(A9.DragStart,b3e),this.windowListeners.add(A9.VisibilityChange,this.handleCancel),this.windowListeners.add(A9.ContextMenu,b3e),this.documentListeners.add(A9.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(T3e(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(w3e(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(A9.Click,x3e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(A9.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){let{activated:t,initialCoordinates:n,props:r}=this,{onMove:i,options:{activationConstraint:a}}=r;if(!n)return;let o=_9(e)??x9,s=h9(n,o);if(!t&&a){if(w3e(a)){if(a.tolerance!=null&&k9(s,a.tolerance))return this.handleCancel();if(k9(s,a.distance))return this.handleStart()}if(T3e(a)&&k9(s,a.tolerance))return this.handleCancel();this.handlePending(a,s);return}e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===j9.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},E3e={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},P9=class extends N9{constructor(e){let{event:t}=e,n=a9(t.target);super(e,E3e,n)}};P9.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];var D3e={move:{name:`mousemove`},end:{name:`mouseup`}},O3e;(function(e){e[e.RightClick=2]=`RightClick`})(O3e||={});var k3e=class extends N9{constructor(e){super(e,D3e,a9(e.event.target))}};k3e.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===O3e.RightClick?!1:(r?.({event:n}),!0)}}];var F9={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},A3e=class extends N9{constructor(e){super(e,F9)}static setup(){return window.addEventListener(F9.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(F9.move.name,e)};function e(){}}};A3e.activators=[{eventName:`onTouchStart`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}];var I9;(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(I9||={});var L9;(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(L9||={});function j3e(e){let{acceleration:t,activator:n=I9.Pointer,canScroll:r,draggingRect:i,enabled:a,interval:o=5,order:s=L9.TreeOrder,pointerCoordinates:c,scrollableAncestors:l,scrollableAncestorRects:u,delta:d,threshold:f}=e,p=N3e({delta:d,disabled:!a}),[m,h]=x4e(),g=(0,C.useRef)({x:0,y:0}),_=(0,C.useRef)({x:0,y:0}),v=(0,C.useMemo)(()=>{switch(n){case I9.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case I9.DraggableRect:return i}},[n,i,c]),y=(0,C.useRef)(null),b=(0,C.useCallback)(()=>{let e=y.current;if(!e)return;let t=g.current.x*_.current.x,n=g.current.y*_.current.y;e.scrollBy(t,n)},[]),x=(0,C.useMemo)(()=>s===L9.TreeOrder?[...l].reverse():l,[s,l]);(0,C.useEffect)(()=>{if(!a||!l.length||!v){h();return}for(let e of x){if(r?.(e)===!1)continue;let n=u[l.indexOf(e)];if(!n)continue;let{direction:i,speed:a}=f3e(e,n,v,t,f);for(let e of[`x`,`y`])p[e][i[e]]||(a[e]=0,i[e]=0);if(a.x>0||a.y>0){h(),y.current=e,m(b,o),g.current=a,_.current=i;return}}g.current={x:0,y:0},_.current={x:0,y:0},h()},[t,b,r,h,a,o,JSON.stringify(v),JSON.stringify(p),m,l,x,u,JSON.stringify(f)])}var M3e={x:{[E9.Backward]:!1,[E9.Forward]:!1},y:{[E9.Backward]:!1,[E9.Forward]:!1}};function N3e(e){let{delta:t,disabled:n}=e,r=d9(t);return l9(e=>{if(n||!r||!e)return M3e;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[E9.Backward]:e.x[E9.Backward]||i.x===-1,[E9.Forward]:e.x[E9.Forward]||i.x===1},y:{[E9.Backward]:e.y[E9.Backward]||i.y===-1,[E9.Forward]:e.y[E9.Forward]||i.y===1}}},[n,t,r])}function P3e(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return l9(e=>t==null?null:r??e??null,[r,t])}function F3e(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{sensor:r}=n,i=r.activators.map(e=>({eventName:e.eventName,handler:t(e.handler,n)}));return[...e,...i]},[]),[e,t])}var R9;(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(R9||={});var I3e;(function(e){e.Optimized=`optimized`})(I3e||={});var L3e=new Map;function R3e(e,t){let{dragging:n,dependencies:r,config:i}=t,[a,o]=(0,C.useState)(null),{frequency:s,measure:c,strategy:l}=i,u=(0,C.useRef)(e),d=g(),f=c9(d),p=(0,C.useCallback)(function(e){e===void 0&&(e=[]),!f.current&&o(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[f]),m=(0,C.useRef)(null),h=l9(t=>{if(d&&!n)return L3e;if(!t||t===L3e||u.current!==e||a!=null){let t=new Map;for(let n of e){if(!n)continue;if(a&&a.length>0&&!a.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new D9(c(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,a,n,d,c]);return(0,C.useEffect)(()=>{u.current=e},[e]),(0,C.useEffect)(()=>{d||p()},[n,d]),(0,C.useEffect)(()=>{a&&a.length>0&&o(null)},[JSON.stringify(a)]),(0,C.useEffect)(()=>{d||typeof s!=`number`||m.current!==null||(m.current=setTimeout(()=>{p(),m.current=null},s))},[s,d,p,...r]),{droppableRects:h,measureDroppableContainers:p,measuringScheduled:a!=null};function g(){switch(l){case R9.Always:return!1;case R9.BeforeDragging:return n;default:return!n}}}function z3e(e,t){return l9(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function B3e(e,t){return z3e(e,t)}function V3e(e){let{callback:t,disabled:n}=e,r=s9(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function z9(e){let{callback:t,disabled:n}=e,r=s9(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function H3e(e){return new D9(S9(e),e)}function U3e(e,t,n){t===void 0&&(t=H3e);let[r,i]=(0,C.useState)(null);function a(){i(r=>{if(!e)return null;if(e.isConnected===!1)return r??n??null;let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let o=V3e({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){a();break}}}}),s=z9({callback:a});return o9(()=>{a(),e?(s?.observe(e),o?.observe(document.body,{childList:!0,subtree:!0})):(s?.disconnect(),o?.disconnect())},[e]),r}function W3e(e){return X4e(e,z3e(e))}var G3e=[];function K3e(e){let t=(0,C.useRef)(e),n=l9(n=>e?n&&n!==G3e&&e&&t.current&&e.parentNode===t.current.parentNode?n:C9(e):G3e,[e]);return(0,C.useEffect)(()=>{t.current=e},[e]),n}function q3e(e){let[t,n]=(0,C.useState)(null),r=(0,C.useRef)(e),i=(0,C.useCallback)(e=>{let t=w9(e.target);t&&n(e=>e?(e.set(t,T9(t)),new Map(e)):null)},[]);return(0,C.useEffect)(()=>{let t=r.current;if(e!==t){a(t);let o=e.map(e=>{let t=w9(e);return t?(t.addEventListener(`scroll`,i,{passive:!0}),[t,T9(t)]):null}).filter(e=>e!=null);n(o.length?new Map(o):null),r.current=e}return()=>{a(e),a(t)};function a(e){e.forEach(e=>{w9(e)?.removeEventListener(`scroll`,i)})}},[i,e]),(0,C.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>m9(e,t),x9):m3e(e):x9,[e,t])}function J3e(e,t){t===void 0&&(t=[]);let n=(0,C.useRef)(null);return(0,C.useEffect)(()=>{n.current=null},t),(0,C.useEffect)(()=>{let t=e!==x9;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?h9(e,n.current):x9}function Y3e(e){(0,C.useEffect)(()=>{if(!$7)return;let t=e.map(e=>{let{sensor:t}=e;return t.setup==null?void 0:t.setup()});return()=>{for(let e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function X3e(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{eventName:r,handler:i}=n;return e[r]=e=>{i(e,t)},e},{}),[e,t])}function Z3e(e){return(0,C.useMemo)(()=>e?r3e(e):null,[e])}var Q3e=[];function $3e(e,t){t===void 0&&(t=S9);let[n]=e,r=Z3e(n?n9(n):null),[i,a]=(0,C.useState)(Q3e);function o(){a(()=>e.length?e.map(e=>l3e(e)?r:new D9(t(e),e)):Q3e)}let s=z9({callback:o});return o9(()=>{s?.disconnect(),o(),e.forEach(e=>s?.observe(e))},[e]),i}function e6e(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return i9(t)?t:e}function t6e(e){let{measure:t}=e,[n,r]=(0,C.useState)(null),i=z9({callback:(0,C.useCallback)(e=>{for(let{target:n}of e)if(i9(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),[a,o]=u9((0,C.useCallback)(e=>{let n=e6e(e);i?.disconnect(),n&&i?.observe(n),r(n?t(n):null)},[t,i]));return(0,C.useMemo)(()=>({nodeRef:a,rect:n,setRef:o}),[n,a,o])}var n6e=[{sensor:P9,options:{}},{sensor:M9,options:{}}],r6e={current:{}},B9={draggable:{measure:n3e},droppable:{measure:n3e,strategy:R9.WhileDragging,frequency:I3e.Optimized},dragOverlay:{measure:S9}},V9=class extends Map{get(e){return e==null?void 0:super.get(e)??void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){return this.get(e)?.node.current??void 0}},i6e={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new V9,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:b9},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:B9,measureDroppableContainers:b9,windowRect:null,measuringScheduled:!1},a6e={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:b9,draggableNodes:new Map,over:null,measureDroppableContainers:b9},H9=(0,C.createContext)(a6e),o6e=(0,C.createContext)(i6e);function s6e(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new V9}}}function c6e(e,t){switch(t.type){case y9.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case y9.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case y9.DragEnd:case y9.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case y9.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new V9(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case y9.SetDroppableDisabled:{let{id:n,key:r,disabled:i}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;let o=new V9(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case y9.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new V9(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function l6e(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:i}=(0,C.useContext)(H9),a=d9(r),o=d9(n?.id);return(0,C.useEffect)(()=>{if(!t&&!r&&a&&o!=null){if(!g9(a)||document.activeElement===a.target)return;let e=i.get(o);if(!e)return;let{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=E4e(e);if(t){t.focus();break}}})}},[r,t,i,o,a]),null}function u6e(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function d6e(e){return(0,C.useMemo)(()=>({draggable:{...B9.draggable,...e?.draggable},droppable:{...B9.droppable,...e?.droppable},dragOverlay:{...B9.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function f6e(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e,a=(0,C.useRef)(!1),{x:o,y:s}=typeof i==`boolean`?{x:i,y:i}:i;o9(()=>{if(!o&&!s||!t){a.current=!1;return}if(a.current||!r)return;let e=t?.node.current;if(!e||e.isConnected===!1)return;let i=X4e(n(e),r);if(o||(i.x=0),s||(i.y=0),a.current=!0,Math.abs(i.x)>0||Math.abs(i.y)>0){let t=o3e(e);t&&t.scrollBy({top:i.y,left:i.x})}},[t,o,s,r,n])}var p6e=(0,C.createContext)({...x9,scaleX:1,scaleY:1}),U9;(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(U9||={});var m6e=(0,C.memo)(function(e){let{id:t,accessibility:n,autoScroll:r=!0,children:i,sensors:a=n6e,collisionDetection:o=J4e,measuring:s,modifiers:c,...l}=e,[u,d]=(0,C.useReducer)(c6e,void 0,s6e),[f,p]=N4e(),[m,h]=(0,C.useState)(U9.Uninitialized),g=m===U9.Initialized,{draggable:{active:_,nodes:v,translate:y},droppable:{containers:b}}=u,x=_==null?null:v.get(_),S=(0,C.useRef)({initial:null,translated:null}),w=(0,C.useMemo)(()=>_==null?null:{id:_,data:x?.data??r6e,rect:S},[_,x]),T=(0,C.useRef)(null),[E,D]=(0,C.useState)(null),[O,k]=(0,C.useState)(null),A=c9(l,Object.values(l)),j=p9(`DndDescribedBy`,t),M=(0,C.useMemo)(()=>b.getEnabled(),[b]),N=d6e(s),{droppableRects:P,measureDroppableContainers:F,measuringScheduled:I}=R3e(M,{dragging:g,dependencies:[y.x,y.y],config:N.droppable}),L=P3e(v,_),R=(0,C.useMemo)(()=>O?_9(O):null,[O]),ee=Te(),z=B3e(L,N.draggable.measure);f6e({activeNode:_==null?null:v.get(_),config:ee.layoutShiftCompensation,initialRect:z,measure:N.draggable.measure});let te=U3e(L,N.draggable.measure,z),B=U3e(L?L.parentElement:null),V=(0,C.useRef)({activatorEvent:null,active:null,activeNode:L,collisionRect:null,collisions:null,droppableRects:P,draggableNodes:v,draggingNode:null,draggingNodeRect:null,droppableContainers:b,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ne=b.getNodeFor(V.current.over?.id),re=t6e({measure:N.dragOverlay.measure}),ie=re.nodeRef.current??L,ae=g?re.rect??te:null,oe=!!(re.nodeRef.current&&re.rect),se=W3e(oe?null:te),ce=Z3e(ie?n9(ie):null),le=K3e(g?ne??L:null),ue=$3e(le),H=u6e(c,{transform:{x:y.x-se.x,y:y.y-se.y,scaleX:1,scaleY:1},activatorEvent:O,active:w,activeNodeRect:te,containerNodeRect:B,draggingNodeRect:ae,over:V.current.over,overlayNodeRect:re.rect,scrollableAncestors:le,scrollableAncestorRects:ue,windowRect:ce}),de=R?m9(R,y):null,fe=q3e(le),U=J3e(fe),pe=J3e(fe,[te]),me=m9(H,U),W=ae?Q4e(ae,H):null,he=w&&W?o({active:w,collisionRect:W,droppableRects:P,droppableContainers:M,pointerCoordinates:de}):null,ge=U4e(he,`id`),[_e,ve]=(0,C.useState)(null),ye=Y4e(oe?H:m9(H,pe),_e?.rect??null,te),be=(0,C.useRef)(null),xe=(0,C.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(T.current==null)return;let i=v.get(T.current);if(!i)return;let a=e.nativeEvent;be.current=new n({active:T.current,activeNode:i,event:a,options:r,context:V,onAbort(e){if(!v.get(e))return;let{onDragAbort:t}=A.current,n={id:e};t?.(n),f({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!v.get(e))return;let{onDragPending:i}=A.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),f({type:`onDragPending`,event:a})},onStart(e){let t=T.current;if(t==null)return;let n=v.get(t);if(!n)return;let{onDragStart:r}=A.current,i={activatorEvent:a,active:{id:t,data:n.data,rect:S}};(0,_a.unstable_batchedUpdates)(()=>{r?.(i),h(U9.Initializing),d({type:y9.DragStart,initialCoordinates:e,active:t}),f({type:`onDragStart`,event:i}),D(be.current),k(a)})},onMove(e){d({type:y9.DragMove,coordinates:e})},onEnd:o(y9.DragEnd),onCancel:o(y9.DragCancel)});function o(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=V.current,o=null;if(t&&i){let{cancelDrop:s}=A.current;o={activatorEvent:a,active:t,collisions:n,delta:i,over:r},e===y9.DragEnd&&typeof s==`function`&&await Promise.resolve(s(o))&&(e=y9.DragCancel)}T.current=null,(0,_a.unstable_batchedUpdates)(()=>{d({type:e}),h(U9.Uninitialized),ve(null),D(null),k(null),be.current=null;let t=e===y9.DragEnd?`onDragEnd`:`onDragCancel`;if(o){let e=A.current[t];e?.(o),f({type:t,event:o})}})}}},[v]),Se=F3e(a,(0,C.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=v.get(r);if(T.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},T.current=r,xe(n,t))},[v,xe]));Y3e(a),o9(()=>{te&&m===U9.Initializing&&h(U9.Initialized)},[te,m]),(0,C.useEffect)(()=>{let{onDragMove:e}=A.current,{active:t,activatorEvent:n,collisions:r,over:i}=V.current;if(!t||!n)return;let a={active:t,activatorEvent:n,collisions:r,delta:{x:me.x,y:me.y},over:i};(0,_a.unstable_batchedUpdates)(()=>{e?.(a),f({type:`onDragMove`,event:a})})},[me.x,me.y]),(0,C.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=V.current;if(!e||T.current==null||!t||!i)return;let{onDragOver:a}=A.current,o=r.get(ge),s=o&&o.rect.current?{id:o.id,rect:o.rect.current,data:o.data,disabled:o.disabled}:null,c={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:s};(0,_a.unstable_batchedUpdates)(()=>{ve(s),a?.(c),f({type:`onDragOver`,event:c})})},[ge]),o9(()=>{V.current={activatorEvent:O,active:w,activeNode:L,collisionRect:W,collisions:he,droppableRects:P,draggableNodes:v,draggingNode:ie,draggingNodeRect:ae,droppableContainers:b,over:_e,scrollableAncestors:le,scrollAdjustedTranslate:me},S.current={initial:ae,translated:W}},[w,L,he,W,v,ie,ae,P,b,_e,le,me]),j3e({...ee,delta:y,draggingRect:W,pointerCoordinates:de,scrollableAncestors:le,scrollableAncestorRects:ue});let Ce=(0,C.useMemo)(()=>({active:w,activeNode:L,activeNodeRect:te,activatorEvent:O,collisions:he,containerNodeRect:B,dragOverlay:re,draggableNodes:v,droppableContainers:b,droppableRects:P,over:_e,measureDroppableContainers:F,scrollableAncestors:le,scrollableAncestorRects:ue,measuringConfiguration:N,measuringScheduled:I,windowRect:ce}),[w,L,te,O,he,B,re,v,b,P,_e,F,le,ue,N,I,ce]),we=(0,C.useMemo)(()=>({activatorEvent:O,activators:Se,active:w,activeNodeRect:te,ariaDescribedById:{draggable:j},dispatch:d,draggableNodes:v,over:_e,measureDroppableContainers:F}),[O,Se,w,te,d,j,v,_e,F]);return C.createElement(j4e.Provider,{value:p},C.createElement(H9.Provider,{value:we},C.createElement(o6e.Provider,{value:Ce},C.createElement(p6e.Provider,{value:ye},i)),C.createElement(l6e,{disabled:n?.restoreFocus===!1})),C.createElement(I4e,{...n,hiddenTextDescribedById:j}));function Te(){let e=E?.autoScrollEnabled===!1,t=typeof r==`object`?r.enabled===!1:r===!1,n=g&&!e&&!t;return typeof r==`object`?{...r,enabled:n}:{enabled:n}}}),h6e=(0,C.createContext)(null),g6e=`button`,_6e=`Draggable`;function v6e(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e,a=p9(_6e),{activators:o,activatorEvent:s,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:d,over:f}=(0,C.useContext)(H9),{role:p=g6e,roleDescription:m=`draggable`,tabIndex:h=0}=i??{},g=c?.id===t,_=(0,C.useContext)(g?p6e:h6e),[v,y]=u9(),[b,x]=u9(),S=X3e(o,t),w=c9(n);return o9(()=>(d.set(t,{id:t,key:a,node:v,activatorNode:b,data:w}),()=>{let e=d.get(t);e&&e.key===a&&d.delete(t)}),[d,t]),{active:c,activatorEvent:s,activeNodeRect:l,attributes:(0,C.useMemo)(()=>({role:p,tabIndex:h,"aria-disabled":r,"aria-pressed":g&&p===g6e?!0:void 0,"aria-roledescription":m,"aria-describedby":u.draggable}),[r,p,h,g,m,u.draggable]),isDragging:g,listeners:r?void 0:S,node:v,over:f,setNodeRef:y,setActivatorNodeRef:x,transform:_}}function y6e(){return(0,C.useContext)(o6e)}var b6e=`Droppable`,x6e={timeout:25};function S6e(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e,a=p9(b6e),{active:o,dispatch:s,over:c,measureDroppableContainers:l}=(0,C.useContext)(H9),u=(0,C.useRef)({disabled:n}),d=(0,C.useRef)(!1),f=(0,C.useRef)(null),p=(0,C.useRef)(null),{disabled:m,updateMeasurementsFor:h,timeout:g}={...x6e,...i},_=c9(h??r),v=z9({callback:(0,C.useCallback)(()=>{if(!d.current){d.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{l(Array.isArray(_.current)?_.current:[_.current]),p.current=null},g)},[g]),disabled:m||!o}),[y,b]=u9((0,C.useCallback)((e,t)=>{v&&(t&&(v.unobserve(t),d.current=!1),e&&v.observe(e))},[v])),x=c9(t);return(0,C.useEffect)(()=>{!v||!y.current||(v.disconnect(),d.current=!1,v.observe(y.current))},[y,v]),(0,C.useEffect)(()=>(s({type:y9.RegisterDroppable,element:{id:r,key:a,disabled:n,node:y,rect:f,data:x}}),()=>s({type:y9.UnregisterDroppable,key:a,id:r})),[r]),(0,C.useEffect)(()=>{n!==u.current.disabled&&(s({type:y9.SetDroppableDisabled,id:r,key:a,disabled:n}),u.current.disabled=n)},[r,a,n,s]),{active:o,rect:f,isOver:c?.id===r,node:y,over:c,setNodeRef:b}}function W9(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function C6e(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function G9(e){return e!==null&&e>=0}function w6e(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function T6e(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}var E6e=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=W9(t,r,n),o=t[i],s=a[i];return!s||!o?null:{x:s.left-o.left,y:s.top-o.top,scaleX:s.width/o.width,scaleY:s.height/o.height}},K9={scaleX:1,scaleY:1},D6e=e=>{let{activeIndex:t,activeNodeRect:n,index:r,rects:i,overIndex:a}=e,o=i[t]??n;if(!o)return null;if(r===t){let e=i[a];return e?{x:0,y:t<a?e.top+e.height-(o.top+o.height):e.top-o.top,...K9}:null}let s=O6e(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...K9}:r<t&&r>=a?{x:0,y:o.height+s,...K9}:{x:0,y:0,...K9}};function O6e(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return r?n<t?i?r.top-(i.top+i.height):a?a.top-(r.top+r.height):0:a?a.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}var k6e=`Sortable`,A6e=C.createContext({activeIndex:-1,containerId:k6e,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:E6e,disabled:{draggable:!1,droppable:!1}});function j6e(e){let{children:t,id:n,items:r,strategy:i=E6e,disabled:a=!1}=e,{active:o,dragOverlay:s,droppableRects:c,over:l,measureDroppableContainers:u}=y6e(),d=p9(k6e,n),f=s.rect!==null,p=(0,C.useMemo)(()=>r.map(e=>typeof e==`object`&&`id`in e?e.id:e),[r]),m=o!=null,h=o?p.indexOf(o.id):-1,g=l?p.indexOf(l.id):-1,_=(0,C.useRef)(p),v=!w6e(p,_.current),y=g!==-1&&h===-1||v,b=T6e(a);o9(()=>{v&&m&&u(p)},[v,p,m,u]),(0,C.useEffect)(()=>{_.current=p},[p]);let x=(0,C.useMemo)(()=>({activeIndex:h,containerId:d,disabled:b,disableTransforms:y,items:p,overIndex:g,useDragOverlay:f,sortedRects:C6e(p,c),strategy:i}),[h,d,b.draggable,b.droppable,y,p,g,c,f,i]);return C.createElement(A6e.Provider,{value:x},t)}var M6e=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return W9(n,r,i).indexOf(t)},N6e=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:a,newIndex:o,previousItems:s,previousContainerId:c,transition:l}=e;return!l||!r||s!==a&&i===o?!1:n?!0:o!==i&&t===c},P6e={duration:200,easing:`ease`},F6e=`transform`,I6e=v9.Transition.toString({property:F6e,duration:0,easing:`linear`}),L6e={roleDescription:`sortable`};function R6e(e){let{disabled:t,index:n,node:r,rect:i}=e,[a,o]=(0,C.useState)(null),s=(0,C.useRef)(n);return o9(()=>{if(!t&&n!==s.current&&r.current){let e=i.current;if(e){let t=S9(r.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&o(n)}}n!==s.current&&(s.current=n)},[t,n,r,i]),(0,C.useEffect)(()=>{a&&o(null)},[a]),a}function z6e(e){let{animateLayoutChanges:t=N6e,attributes:n,disabled:r,data:i,getNewIndex:a=M6e,id:o,strategy:s,resizeObserverConfig:c,transition:l=P6e}=e,{items:u,containerId:d,activeIndex:f,disabled:p,disableTransforms:m,sortedRects:h,overIndex:g,useDragOverlay:_,strategy:v}=(0,C.useContext)(A6e),y=B6e(r,p),b=u.indexOf(o),x=(0,C.useMemo)(()=>({sortable:{containerId:d,index:b,items:u},...i}),[d,i,b,u]),S=(0,C.useMemo)(()=>u.slice(u.indexOf(o)),[u,o]),{rect:w,node:T,isOver:E,setNodeRef:D}=S6e({id:o,data:x,disabled:y.droppable,resizeObserverConfig:{updateMeasurementsFor:S,...c}}),{active:O,activatorEvent:k,activeNodeRect:A,attributes:j,setNodeRef:M,listeners:N,isDragging:P,over:F,setActivatorNodeRef:I,transform:L}=v6e({id:o,data:x,attributes:{...L6e,...n},disabled:y.draggable}),R=y4e(D,M),ee=!!O,z=ee&&!m&&G9(f)&&G9(g),te=!_&&P,B=z?(te&&z?L:null)??(s??v)({rects:h,activeNodeRect:A,activeIndex:f,overIndex:g,index:b}):null,V=G9(f)&&G9(g)?a({id:o,items:u,activeIndex:f,overIndex:g}):b,ne=O?.id,re=(0,C.useRef)({activeId:ne,items:u,newIndex:V,containerId:d}),ie=u!==re.current.items,ae=t({active:O,containerId:d,isDragging:P,isSorting:ee,id:o,index:b,items:u,newIndex:re.current.newIndex,previousItems:re.current.items,previousContainerId:re.current.containerId,transition:l,wasDragging:re.current.activeId!=null}),oe=R6e({disabled:!ae,index:b,node:T,rect:w});return(0,C.useEffect)(()=>{ee&&re.current.newIndex!==V&&(re.current.newIndex=V),d!==re.current.containerId&&(re.current.containerId=d),u!==re.current.items&&(re.current.items=u)},[ee,V,d,u]),(0,C.useEffect)(()=>{if(ne===re.current.activeId)return;if(ne!=null&&re.current.activeId==null){re.current.activeId=ne;return}let e=setTimeout(()=>{re.current.activeId=ne},50);return()=>clearTimeout(e)},[ne]),{active:O,activeIndex:f,attributes:j,data:x,rect:w,index:b,newIndex:V,items:u,isOver:E,isSorting:ee,isDragging:P,listeners:N,node:T,overIndex:g,over:F,setNodeRef:R,setActivatorNodeRef:I,setDroppableNodeRef:D,setDraggableNodeRef:M,transform:oe??B,transition:se()};function se(){if(oe||ie&&re.current.newIndex===b)return I6e;if(!(te&&!g9(k)||!l)&&(ee||ae))return v9.Transition.toString({...l,property:F6e})}}function B6e(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}function q9(e){if(!e)return!1;let t=e.data.current;return!!(t&&`sortable`in t&&typeof t.sortable==`object`&&`containerId`in t.sortable&&`items`in t.sortable&&`index`in t.sortable)}var V6e=[j9.Down,j9.Right,j9.Up,j9.Left],H6e=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:a,over:o,scrollableAncestors:s}}=t;if(V6e.includes(e.code)){if(e.preventDefault(),!n||!r)return;let t=[];a.getEnabled().forEach(n=>{if(!n||n!=null&&n.disabled)return;let a=i.get(n.id);if(a)switch(e.code){case j9.Down:r.top<a.top&&t.push(n);break;case j9.Up:r.top>a.top&&t.push(n);break;case j9.Left:r.left>a.left&&t.push(n);break;case j9.Right:r.left<a.left&&t.push(n);break}});let c=K4e({active:n,collisionRect:r,droppableRects:i,droppableContainers:t,pointerCoordinates:null}),l=U4e(c,`id`);if(l===o?.id&&c.length>1&&(l=c[1].id),l!=null){let e=a.get(n.id),t=a.get(l),o=t?i.get(t.id):null,c=t?.node.current;if(c&&o&&e&&t){let n=C9(c).some((e,t)=>s[t]!==e),i=U6e(e,t),a=W6e(e,t),l=n||!i?{x:0,y:0}:{x:a?r.width-o.width:0,y:a?r.height-o.height:0},u={x:o.left,y:o.top};return l.x&&l.y?u:h9(u,l)}}}};function U6e(e,t){return!q9(e)||!q9(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function W6e(e,t){return!q9(e)||!q9(t)||!U6e(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}var G6e=({bridge:e,index:t})=>{let{attributes:n,listeners:r,setNodeRef:i,transform:a,transition:o,isDragging:s}=z6e({id:e.id}),[c,l]=(0,C.useState)(!1);return(0,C.useEffect)(()=>{pE(e.id).then(l)},[e.id]),(0,G.jsx)(pv,{ref:i,style:{transform:v9.Transform.toString(a),transition:o,opacity:s?.5:1},variant:`outlined`,sx:{cursor:`grab`,"&:active":{cursor:`grabbing`},bgcolor:s?`action.selected`:`background.paper`,width:`fit-content`},children:(0,G.jsxs)(gv,{sx:{display:`flex`,alignItems:`center`,gap:1.5,py:1,"&:last-child":{pb:1}},children:[(0,G.jsx)(Z,{...n,...r,sx:{display:`flex`,alignItems:`center`,color:`text.secondary`},children:(0,G.jsx)(jhe,{})}),(0,G.jsx)(wv,{label:t+1,size:`small`,color:`primary`,sx:{minWidth:32,fontWeight:`bold`}}),c?(0,G.jsx)(Z,{component:`img`,src:mE(e.id),alt:e.name,sx:{width:40,height:40,borderRadius:`50%`,objectFit:`cover`,boxShadow:2}}):(0,G.jsx)(bb,{sx:{bgcolor:bE(e),width:40,height:40,boxShadow:2},children:(0,G.jsx)(yE(e),{sx:{fontSize:24}})}),(0,G.jsxs)(Z,{sx:{flex:1},children:[(0,G.jsx)(Q,{variant:`subtitle1`,fontWeight:500,children:e.name}),(0,G.jsxs)(Q,{variant:`caption`,color:`text.secondary`,children:[`Port: `,e.port,` • Priority: `,e.priority??100]})]})]})})},K6e=()=>{let{t:e}=fs(),t=Uv(),{content:n,isLoading:r}=TT(),i=Qme(),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!1);(0,C.useEffect)(()=>{n&&(o([...n].sort((e,t)=>(e.priority??100)-(t.priority??100))),c(!1))},[n]);let l=R4e(L4e(P9),L4e(M9,{coordinateGetter:H6e})),u=(0,C.useCallback)(e=>{let{active:t,over:n}=e;n&&t.id!==n.id&&(o(e=>W9(e,e.findIndex(e=>e.id===t.id),e.findIndex(e=>e.id===n.id))),c(!0))},[]),d=(0,C.useCallback)(async()=>{let n=a.map((e,t)=>({id:e.id,priority:(t+1)*10}));try{await i(n),t.show({message:e(`startup.saveSuccess`),severity:`success`}),c(!1)}catch(n){t.show({message:n instanceof Error?n.message:e(`startup.saveFailed`),severity:`error`})}},[a,i,t,e]),f=(0,C.useMemo)(()=>a.map(e=>e.id),[a]);return r?(0,G.jsxs)(Q,{children:[e(`common.loading`),`...`]}):(0,G.jsxs)(Rv,{spacing:3,children:[(0,G.jsx)(Hv,{items:[{name:e(`nav.bridges`),to:Y9.bridges},{name:e(`startup.title`),to:Y9.startup}]}),(0,G.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:2,children:[(0,G.jsx)(cv,{color:`primary`,fontSize:`large`}),(0,G.jsxs)(Z,{children:[(0,G.jsx)(Q,{variant:`h5`,fontWeight:600,children:e(`startup.title`)}),(0,G.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`startup.description`)})]})]}),s&&(0,G.jsx)(zh,{severity:`info`,action:(0,G.jsx)(fv,{color:`inherit`,size:`small`,startIcon:(0,G.jsx)(rE,{}),onClick:d,children:e(`startup.saveChanges`)}),children:e(`startup.unsavedChanges`)}),(0,G.jsx)(m6e,{sensors:l,collisionDetection:G4e,onDragEnd:u,children:(0,G.jsx)(j6e,{items:f,strategy:D6e,children:(0,G.jsx)(Rv,{spacing:1,children:a.map((e,t)=>(0,G.jsx)(G6e,{bridge:e,index:t},e.id))})})}),a.length===0&&(0,G.jsx)(Q,{color:`text.secondary`,textAlign:`center`,py:4,children:e(`startup.noBridges`)}),s&&a.length>0&&(0,G.jsx)(Z,{display:`flex`,justifyContent:`flex-end`,children:(0,G.jsx)(fv,{variant:`contained`,startIcon:(0,G.jsx)(rE,{}),onClick:d,children:e(`startup.saveOrder`)})})]})},J9=`https://riddix.github.io/home-assistant-matter-hub`,Y9={dashboard:`/`,bridges:`/bridges`,bridge:e=>`/bridges/${e}`,createBridge:`/bridges/create`,areaSetup:`/bridges/area-setup`,editBridge:e=>`/bridges/${e}/edit`,devices:`/devices`,networkMap:`/network-map`,health:`/health`,labels:`/labels`,lockCredentials:`/lock-credentials`,plugins:`/plugins`,settings:`/settings`,startup:`/startup`,githubRepository:`https://github.com/riddix/home-assistant-matter-hub/`,documentation:J9,support:`${J9}/support`,faq:{multiFabric:`${J9}/connect-multiple-fabrics`,bridgeConfig:`${J9}/bridge-configuration`}},q6e=[{path:``,element:(0,G.jsx)(Tre,{}),children:[{path:``,element:(0,G.jsx)(Xge,{})},{path:Y9.bridges,element:(0,G.jsx)(Wge,{})},{path:Y9.createBridge,element:(0,G.jsx)(HJe,{})},{path:Y9.areaSetup,element:(0,G.jsx)(wae,{})},{path:Y9.bridge(`:bridgeId`),element:(0,G.jsx)(mhe,{})},{path:Y9.editBridge(`:bridgeId`),element:(0,G.jsx)(UJe,{})},{path:Y9.devices,element:(0,G.jsx)(m_e,{})},{path:Y9.networkMap,element:(0,G.jsx)(V2e,{})},{path:Y9.health,element:(0,G.jsx)(cYe,{})},{path:Y9.labels,element:(0,G.jsx)(fYe,{})},{path:Y9.lockCredentials,element:(0,G.jsx)(vYe,{})},{path:Y9.plugins,element:(0,G.jsx)(p4e,{})},{path:Y9.settings,element:(0,G.jsx)(v4e,{})},{path:Y9.startup,element:(0,G.jsx)(K6e,{})},{path:`*`,element:(0,G.jsx)(yYe,{})}]}],J6e=b_({items:{isInitialized:!1,isLoading:!1}},e=>{e.addCase(B_.pending,e=>{e.items.isLoading=!0}).addCase(B_.rejected,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=void 0,e.items.error=t.error}).addCase(B_.fulfilled,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=t.payload,e.items.error=void 0}).addCase(V_.fulfilled,(e,t)=>{e.items.content?.push(t.payload)}).addCase(U_.fulfilled,(e,t)=>{let n=e.items.content?.findIndex(e=>e.id===t.payload.id)??-1;n!==-1&&(e.items.content[n]=t.payload)}).addCase(W_.fulfilled,(e,t)=>{let n=e.items.content?.findIndex(e=>e.id===t.payload.id)??-1;n!==-1&&(e.items.content[n]=t.payload)}).addCase(H_.fulfilled,(e,t)=>{if(e.items.content){let n=e.items.content.findIndex(e=>e.id===t.meta.arg);n!==-1&&e.items.content.splice(n,1)}}).addCase(G_,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=t.payload,e.items.error=void 0}).addCase(K_,(e,t)=>{if(e.items.content){let n=e.items.content.findIndex(e=>e.id===t.payload.id);n===-1?e.items.content.push(t.payload):e.items.content[n]=t.payload}})}),Y6e=b_({byBridge:{}},e=>{e.addCase(OT.pending,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)}).addCase(OT.rejected,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)}).addCase(OT.fulfilled,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)})}),X9=b_({isInitialized:!1,isLoading:!1,content:void 0,error:void 0},e=>{e.addCase(OT.pending,e=>{e.isLoading=!0}).addCase(OT.rejected,(e,t)=>{e.isInitialized=!0,e.isLoading=!1,e.content=void 0,e.error=t.error}).addCase(OT.fulfilled,(e,t)=>{e.isInitialized=!0,e.isLoading=!1,e.content=t.payload,e.error=void 0})}),X6e=ire({reducer:{bridges:J6e,devices:Y6e}}),Z9=dp({createStyledComponent:J(`div`,{name:`MuiContainer`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`maxWidth${Y(String(n.maxWidth))}`],n.fixed&&t.fixed,n.disableGutters&&t.disableGutters]}}),useThemeProps:e=>wm({props:e,name:`MuiContainer`})});function Z6e(e){return Md(`MuiToolbar`,e)}Nd(`MuiToolbar`,[`root`,`gutters`,`regular`,`dense`]);var Q6e=e=>{let{classes:t,disableGutters:n,variant:r}=e;return cp({root:[`root`,!n&&`gutters`,r]},Z6e,t)},$6e=J(`div`,{name:`MuiToolbar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableGutters&&t.gutters,t[n.variant]]}})(Am(({theme:e})=>({position:`relative`,display:`flex`,alignItems:`center`,variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up(`sm`)]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:`dense`},style:{minHeight:48}},{props:{variant:`regular`},style:e.mixins.toolbar}]}))),e8e=C.forwardRef(function(e,t){let n=wm({props:e,name:`MuiToolbar`}),{className:r,component:i=`div`,disableGutters:a=!1,variant:o=`regular`,...s}=n,c={...n,component:i,disableGutters:a,variant:o};return(0,G.jsx)($6e,{as:i,className:K(Q6e(c).root,r),ref:t,ownerState:c,...s})}),t8e=class extends C.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`ErrorBoundary caught:`,e,t.componentStack)}render(){return this.state.hasError?(0,G.jsxs)(Z,{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,minHeight:`60vh`,gap:2,p:4,children:[(0,G.jsx)(fb,{color:`error`,sx:{fontSize:64}}),(0,G.jsx)(Q,{variant:`h5`,fontWeight:600,children:Ms.t(`errorBoundary.title`)}),(0,G.jsx)(Q,{variant:`body2`,color:`text.secondary`,textAlign:`center`,maxWidth:480,children:this.state.error?.message??Ms.t(`errorBoundary.fallbackMessage`)}),(0,G.jsx)(fv,{variant:`contained`,onClick:()=>{this.setState({hasError:!1,error:null}),window.location.reload()},children:Ms.t(`errorBoundary.reload`)})]}):this.props.children}};function n8e(e){return Md(`MuiFab`,e)}var r8e=Nd(`MuiFab`,[`root`,`primary`,`secondary`,`extended`,`circular`,`focusVisible`,`disabled`,`colorInherit`,`sizeSmall`,`sizeMedium`,`sizeLarge`,`info`,`error`,`warning`,`success`]),i8e=e=>{let{color:t,variant:n,classes:r,size:i}=e,a=cp({root:[`root`,n,`size${Y(i)}`,t===`inherit`?`colorInherit`:t]},n8e,r);return{...r,...a}},a8e=J(kh,{name:`MuiFab`,slot:`Root`,shouldForwardProp:e=>Sm(e)||e===`classes`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`size${Y(n.size)}`],n.color===`inherit`&&t.colorInherit,t[Y(n.size)],t[n.color]]}})(Am(({theme:e})=>({...e.typography.button,minHeight:36,transition:e.transitions.create([`background-color`,`box-shadow`,`border-color`],{duration:e.transitions.duration.short}),borderRadius:`50%`,padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.grey[900]:e.palette.getContrastText?.(e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:`none`},[`&.${r8e.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},variants:[{props:{size:`small`},style:{width:40,height:40}},{props:{size:`medium`},style:{width:48,height:48}},{props:{variant:`extended`},style:{borderRadius:48/2,padding:`0 16px`,width:`auto`,minHeight:`auto`,minWidth:48,height:48}},{props:{variant:`extended`,size:`small`},style:{width:`auto`,padding:`0 8px`,borderRadius:34/2,minWidth:34,height:34}},{props:{variant:`extended`,size:`medium`},style:{width:`auto`,padding:`0 16px`,borderRadius:40/2,minWidth:40,height:40}},{props:{color:`inherit`},style:{color:`inherit`}}]})),Am(({theme:e})=>({variants:[...Object.entries(e.palette).filter(zm([`dark`,`contrastText`])).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].contrastText,backgroundColor:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:(e.vars||e).palette[t].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t].main}}}}))]})),Am(({theme:e})=>({[`&.${r8e.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}}))),o8e=C.forwardRef(function(e,t){let n=wm({props:e,name:`MuiFab`}),{children:r,className:i,color:a=`default`,component:o=`button`,disabled:s=!1,disableFocusRipple:c=!1,focusVisibleClassName:l,size:u=`large`,variant:d=`circular`,...f}=n,p={...n,color:a,component:o,disabled:s,disableFocusRipple:c,size:u,variant:d},m=i8e(p);return(0,G.jsx)(a8e,{className:K(m.root,i),component:o,disabled:s,focusRipple:!c,focusVisibleClassName:K(m.focusVisible,l),ownerState:p,ref:t,...f,classes:m,children:r})}),s8e=[{code:`en`,flag:`🇬🇧`,name:`English`},{code:`de`,flag:`🇩🇪`,name:`Deutsch`},{code:`fr`,flag:`🇫🇷`,name:`Français`},{code:`es`,flag:`🇪🇸`,name:`Español`},{code:`it`,flag:`🇮🇹`,name:`Italiano`},{code:`zh`,flag:`🇨🇳`,name:`中文`},{code:`zh-TW`,flag:`🇹🇼`,name:`繁體中文`},{code:`ja`,flag:`🇯🇵`,name:`日本語`},{code:`th`,flag:`🇹🇭`,name:`ไทย`},{code:`sv`,flag:`🇸🇪`,name:`Svenska`},{code:`tr`,flag:`🇹🇷`,name:`Türkçe`},{code:`ru`,flag:`🇷🇺`,name:`Русский`}],c8e=`hamh-custom-languages`;function l8e(){try{let e=localStorage.getItem(c8e);return e?JSON.parse(e).map(e=>({code:e.code,flag:`🌐`,name:e.name})):[]}catch{return[]}}var u8e=`https://github.com/RiDDiX/home-assistant-matter-hub/issues/new?labels=translation&title=Translation+improvement`;function d8e(){let{t:e,i18n:t}=fs(),[n,r]=(0,C.useState)(!1),i=(0,C.useRef)(null),a=(0,C.useMemo)(()=>[...s8e,...l8e()],[]),o=t.language??`en`,s=a.some(e=>e.code===o)?o:o.split(`-`)[0]??`en`,c=(0,C.useCallback)(()=>{r(e=>!e)},[]),l=(0,C.useCallback)(e=>{t.changeLanguage(e),r(!1)},[t]);return(0,G.jsx)(Hh,{onClickAway:(0,C.useCallback)(()=>{r(!1)},[]),children:(0,G.jsxs)(Z,{children:[(0,G.jsx)(o8e,{ref:i,size:`small`,color:`primary`,onClick:c,"aria-label":`Change language`,sx:{position:`fixed`,bottom:24,right:24,zIndex:1300},children:(0,G.jsx)(Rhe,{})}),(0,G.jsx)(tb,{open:n,anchorEl:i.current,placement:`top-end`,transition:!0,sx:{zIndex:1300},children:({TransitionProps:t})=>(0,G.jsx)(Db,{...t,timeout:200,children:(0,G.jsxs)(Bm,{elevation:8,sx:{mb:1,py:.5,minWidth:160,borderRadius:2,overflow:`hidden`},children:[a.map(e=>(0,G.jsxs)(Z,{onClick:()=>l(e.code),sx:{display:`flex`,alignItems:`center`,gap:1.5,px:2,py:1,cursor:`pointer`,bgcolor:s===e.code?`action.selected`:`transparent`,"&:hover":{bgcolor:`action.hover`},transition:`background-color 0.15s`},children:[(0,G.jsx)(Q,{sx:{fontSize:`1.4rem`,lineHeight:1,userSelect:`none`},children:e.flag}),(0,G.jsx)(Q,{variant:`body2`,fontWeight:s===e.code?600:400,children:e.name})]},e.code)),(0,G.jsx)(zb,{}),(0,G.jsxs)(Z,{sx:{display:`flex`,alignItems:`flex-start`,gap:.75,px:2,py:1},children:[(0,G.jsx)(Wv,{sx:{fontSize:14,mt:.25,color:`text.secondary`}}),(0,G.jsxs)(Q,{variant:`caption`,color:`text.secondary`,sx:{lineHeight:1.4},children:[e(`languageSwitcher.disclaimer`),` `,(0,G.jsx)(Vv,{href:u8e,target:`_blank`,rel:`noopener`,sx:{fontSize:`inherit`},children:e(`languageSwitcher.contribute`)})]})]})]})})})]})})}var f8e={name:`home-assistant-matter-hub`,description:``,version:`2.1.0-alpha.646`,private:!1,type:`module`,bin:{"home-assistant-matter-hub":`./dist/backend/cli.js`},author:{name:`riddix`,url:`https://github.com/riddix`},keywords:[`home-assistant`,`homeassistant`,`home`,`assistant`,`apple home`,`google home`,`apple`,`google`,`alexa`,`matter`,`matter.js`,`matterjs`,`project-chip`,`smart`,`smarthome`,`smart-home`],bugs:{url:`https://github.com/riddix/home-assistant-matter-hub/issues`},license:`Apache-2.0`,repository:`github:riddix/home-assistant-matter-hub`,scripts:{cleanup:`npx rimraf node_modules dist pack LICENSE README.md`,build:`node build.js`,bundle:`pnpm pack --out package.tgz`,postbuild:`pnpm run bundle`,test:`vitest run`,prestart:`pnpm run build`,start:`dotenvx run -f ../../.env -- ./dist/backend/cli.js start`},dependencies:{"@matter/main":`0.16.11`,"@matter/nodejs":`0.16.11`,"@matter/general":`0.16.11`,ajv:`8.18.0`,archiver:`7.0.1`,color:`5.0.3`,debounce:`3.0.0`,express:`5.2.1`,"express-basic-auth":`1.2.1`,"express-ip-access-control":`1.1.3`,"home-assistant-js-websocket":`9.6.0`,"lodash-es":`4.18.1`,multer:`2.1.1`,nocache:`4.0.0`,unzipper:`0.12.3`,ws:`8.20.0`,yargs:`18.0.0`},devDependencies:{"@home-assistant-matter-hub/backend":`workspace:*`,"@home-assistant-matter-hub/frontend":`workspace:*`,"@home-assistant-matter-hub/common":`workspace:*`,"@types/lodash-es":`^4.17.12`},overrides:{minimatch:`9.0.7`,"path-to-regexp":`^8.4.0`,glob:`^13.0.0`},nx:{targets:{start:{cache:!1,dependsOn:[`build`]},pack:{cache:!0,dependsOn:[`build`],outputs:[`{projectRoot}/pack`]},build:{inputs:[`^default`,`default`,`{workspaceRoot}/README.md`,`{workspaceRoot}/LICENSE`],outputs:[`{projectRoot}/dist`,`{projectRoot}/README.md`,`{projectRoot}/LICENSE`]}}}};function p8e(){let e=`2.1.0-alpha.646`,[t,n]=(0,C.useState)(null);(0,C.useEffect)(()=>{fetch(`api/health`).then(e=>e.ok?e.json():null).then(e=>{e?.version&&n(e.version)}).catch(()=>{})},[]);let r=(0,C.useMemo)(()=>!t||e===`0.0.0-dev`?!1:e!==t,[t]);return(0,C.useMemo)(()=>({name:f8e.name,version:t??e,frontendVersion:e,backendVersion:t,versionMismatch:r}),[t,r])}var m8e=()=>{let{t:e}=fs(),t=[{name:e(`footer.github`),url:Y9.githubRepository},{name:e(`footer.documentation`),url:Y9.documentation},{name:e(`footer.support`),url:Y9.support}];return(0,G.jsxs)(Z9,{sx:{mt:16,mb:4},children:[(0,G.jsx)(zb,{sx:{mt:4,mb:4}}),(0,G.jsx)(jv,{container:!0,spacing:2,justifyContent:`center`,children:t.map((e,t)=>(0,G.jsx)(jv,{size:{xs:12,sm:`auto`},children:(0,G.jsx)(fv,{fullWidth:!0,size:`small`,variant:`outlined`,component:Vv,href:e.url,target:`_blank`,children:e.name})},t.toString()))})]})};function h8e(e){return Md(`MuiAppBar`,e)}Nd(`MuiAppBar`,[`root`,`positionFixed`,`positionAbsolute`,`positionSticky`,`positionStatic`,`positionRelative`,`colorDefault`,`colorPrimary`,`colorSecondary`,`colorInherit`,`colorTransparent`,`colorError`,`colorInfo`,`colorSuccess`,`colorWarning`]);var g8e=e=>{let{color:t,position:n,classes:r}=e;return cp({root:[`root`,`color${Y(t)}`,`position${Y(n)}`]},h8e,r)},_8e=(e,t)=>e?`${e.replace(`)`,``)}, ${t})`:t,v8e=J(Bm,{name:`MuiAppBar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`position${Y(n.position)}`],t[`color${Y(n.color)}`]]}})(Am(({theme:e})=>({display:`flex`,flexDirection:`column`,width:`100%`,boxSizing:`border-box`,flexShrink:0,variants:[{props:{position:`fixed`},style:{position:`fixed`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0,"@media print":{position:`absolute`}}},{props:{position:`absolute`},style:{position:`absolute`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0}},{props:{position:`sticky`},style:{position:`sticky`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0}},{props:{position:`static`},style:{position:`static`}},{props:{position:`relative`},style:{position:`relative`}},{props:{color:`inherit`},style:{"--AppBar-color":`inherit`,color:`var(--AppBar-color)`}},{props:{color:`default`},style:{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[100],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[100]),...e.applyStyles(`dark`,{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[900],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[900])})}},...Object.entries(e.palette).filter(zm([`contrastText`])).map(([t])=>({props:{color:t},style:{"--AppBar-background":(e.vars??e).palette[t].main,"--AppBar-color":(e.vars??e).palette[t].contrastText}})),{props:e=>e.enableColorOnDark===!0&&![`inherit`,`transparent`].includes(e.color),style:{backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`}},{props:e=>e.enableColorOnDark===!1&&![`inherit`,`transparent`].includes(e.color),style:{backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`,...e.applyStyles(`dark`,{backgroundColor:e.vars?_8e(e.vars.palette.AppBar.darkBg,`var(--AppBar-background)`):null,color:e.vars?_8e(e.vars.palette.AppBar.darkColor,`var(--AppBar-color)`):null})}},{props:{color:`transparent`},style:{"--AppBar-background":`transparent`,"--AppBar-color":`inherit`,backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`,...e.applyStyles(`dark`,{backgroundImage:`none`})}}]}))),y8e=C.forwardRef(function(e,t){let n=wm({props:e,name:`MuiAppBar`}),{className:r,color:i=`primary`,enableColorOnDark:a=!1,position:o=`fixed`,...s}=n,c={...n,color:i,position:o,enableColorOnDark:a};return(0,G.jsx)(v8e,{square:!0,component:`header`,ownerState:c,elevation:4,className:K(g8e(c).root,r,o===`fixed`&&`mui-fixed`),ref:t,...s})}),b8e={visibility:`hidden`};function x8e(e,t,n){let r=n&&n.getBoundingClientRect(),i=Xm(t),a=t.style.transform,o=t.style.transition;t.style.transition=``,t.style.transform=``;let s=t.getBoundingClientRect(),c=i.getComputedStyle(t).getPropertyValue(`transform`);t.style.transform=a,t.style.transition=o;let l=0,u=0;if(c&&c!==`none`&&typeof c==`string`){let e=c.split(`(`)[1].split(`)`)[0].split(`,`);l=parseInt(e[4],10),u=parseInt(e[5],10)}return e===`left`?r?`translateX(${r.right+l-s.left}px)`:`translateX(${i.innerWidth+l-s.left}px)`:e===`right`?r?`translateX(-${s.right-r.left-l}px)`:`translateX(-${s.left+s.width-l}px)`:e===`up`?r?`translateY(${r.bottom+u-s.top}px)`:`translateY(${i.innerHeight+u-s.top}px)`:r?`translateY(-${s.top-r.top+s.height-u}px)`:`translateY(-${s.top+s.height-u}px)`}function S8e(e){return typeof e==`function`?e():e}function Q9(e,t,n){let r=x8e(e,t,S8e(n));r&&(t.style.transform=r)}var C8e=C.forwardRef(function(e,t){let n=bm(),r={enter:n.transitions.easing.easeOut,exit:n.transitions.easing.sharp},i={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:a,appear:o=!0,children:s,container:c,direction:l=`down`,easing:u=r,in:d,onEnter:f,onEntered:p,onEntering:m,onExit:h,onExited:g,onExiting:_,style:v,timeout:y=i,...b}=e,x=C.useRef(null),S=ih(Bh(s),x,t),w=Wh(x,(e,t)=>{Q9(l,e,c),Uh(e),f&&f(e,t)}),T=Wh(x,(e,t)=>{let r=Kh({timeout:y,style:v,easing:u},{mode:`enter`});e.style.transition=n.transitions.create(`transform`,r),e.style.transform=`none`,m&&m(e,t)}),E=Wh(x,p),D=Wh(x,_),O=Wh(x,e=>{let t=Kh({timeout:y,style:v,easing:u},{mode:`exit`});e.style.transition=n.transitions.create(`transform`,t),Q9(l,e,c),h&&h(e)}),k=Wh(x,e=>{e.style.transition=``,g&&g(e)}),A=e=>{a&&a(x.current,e)},j=C.useCallback(()=>{x.current&&Q9(l,x.current,c)},[l,c]);return C.useEffect(()=>{if(d||l===`down`||l===`right`)return;let e=Gm(()=>{x.current&&Q9(l,x.current,c)}),t=Xm(x.current);return t.addEventListener(`resize`,e),()=>{e.clear(),t.removeEventListener(`resize`,e)}},[l,d,c]),C.useEffect(()=>{d||j()},[d,j]),(0,G.jsx)(bh,{nodeRef:x,onEnter:w,onEntered:E,onEntering:T,onExit:O,onExited:k,onExiting:D,addEndListener:A,appear:o,in:d,timeout:y,...b,children:(e,{ownerState:t,...n})=>{let r;return r=e===`exited`&&!d?v||s.props.style?{visibility:`hidden`,...v,...s.props.style}:b8e:v&&s.props.style?{...v,...s.props.style}:v||s.props.style,C.cloneElement(s,{ref:S,style:r,...n})}})});function w8e(e){return Md(`MuiDrawer`,e)}Nd(`MuiDrawer`,[`root`,`docked`,`paper`,`anchorLeft`,`anchorRight`,`anchorTop`,`anchorBottom`,`paperAnchorLeft`,`paperAnchorRight`,`paperAnchorTop`,`paperAnchorBottom`,`paperAnchorDockedLeft`,`paperAnchorDockedRight`,`paperAnchorDockedTop`,`paperAnchorDockedBottom`,`modal`]);var T8e=(e,t)=>{let{ownerState:n}=e;return[t.root,(n.variant===`permanent`||n.variant===`persistent`)&&t.docked,n.variant===`temporary`&&t.modal]},E8e=e=>{let{classes:t,anchor:n,variant:r}=e;return cp({root:[`root`,`anchor${Y(n)}`],docked:[(r===`permanent`||r===`persistent`)&&`docked`],modal:[`modal`],paper:[`paper`,`paperAnchor${Y(n)}`,r!==`temporary`&&`paperAnchorDocked${Y(n)}`]},w8e,t)},D8e=J(jb,{name:`MuiDrawer`,slot:`Root`,overridesResolver:T8e})(Am(({theme:e})=>({zIndex:(e.vars||e).zIndex.drawer}))),O8e=J(`div`,{shouldForwardProp:Sm,name:`MuiDrawer`,slot:`Docked`,skipVariantsResolver:!1,overridesResolver:T8e})({flex:`0 0 auto`}),k8e=J(Bm,{name:`MuiDrawer`,slot:`Paper`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.paper,t[`paperAnchor${Y(n.anchor)}`],n.variant!==`temporary`&&t[`paperAnchorDocked${Y(n.anchor)}`]]}})(Am(({theme:e})=>({overflowY:`auto`,display:`flex`,flexDirection:`column`,height:`100%`,flex:`1 0 auto`,zIndex:(e.vars||e).zIndex.drawer,WebkitOverflowScrolling:`touch`,position:`fixed`,top:0,outline:0,variants:[{props:{anchor:`left`},style:{left:0}},{props:{anchor:`top`},style:{top:0,left:0,right:0,height:`auto`,maxHeight:`100%`}},{props:{anchor:`right`},style:{right:0}},{props:{anchor:`bottom`},style:{top:`auto`,left:0,bottom:0,right:0,height:`auto`,maxHeight:`100%`}},{props:({ownerState:e})=>e.anchor===`left`&&e.variant!==`temporary`,style:{borderRight:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`top`&&e.variant!==`temporary`,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`right`&&e.variant!==`temporary`,style:{borderLeft:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`bottom`&&e.variant!==`temporary`,style:{borderTop:`1px solid ${(e.vars||e).palette.divider}`}}]}))),A8e={left:`right`,right:`left`,top:`down`,bottom:`up`};function j8e(e){return[`left`,`right`].includes(e)}function M8e({direction:e},t){return e===`rtl`&&j8e(t)?A8e[t]:t}var N8e=C.forwardRef(function(e,t){let n=wm({props:e,name:`MuiDrawer`}),r=bm(),i=Df(),a={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{anchor:o=`left`,BackdropProps:s,children:c,className:l,elevation:u=16,hideBackdrop:d=!1,ModalProps:{BackdropProps:f,...p}={},onClose:m,open:h=!1,PaperProps:g={},SlideProps:_,TransitionComponent:v,transitionDuration:y=a,variant:b=`temporary`,slots:x={},slotProps:S={},...w}=n,T=C.useRef(!1);C.useEffect(()=>{T.current=!0},[]);let E=M8e({direction:i?`rtl`:`ltr`},o),D=o,O={...n,anchor:D,elevation:u,open:h,variant:b,...w},k=E8e(O),A={slots:{transition:v,...x},slotProps:{paper:g,transition:_,...S,backdrop:ah(S.backdrop||{...s,...f},{transitionDuration:y})}},[j,M]=Rm(`root`,{ref:t,elementType:D8e,className:K(k.root,k.modal,l),shouldForwardComponentProp:!0,ownerState:O,externalForwardedProps:{...A,...w,...p},additionalProps:{open:h,onClose:m,hideBackdrop:d,slots:{backdrop:A.slots.backdrop},slotProps:{backdrop:A.slotProps.backdrop}}}),[N,P]=Rm(`paper`,{elementType:k8e,shouldForwardComponentProp:!0,className:K(k.paper,g.className),ownerState:O,externalForwardedProps:A,additionalProps:{elevation:b===`temporary`?u:0,square:!0,...b===`temporary`&&{role:`dialog`,"aria-modal":`true`}}}),[F,I]=Rm(`docked`,{elementType:O8e,ref:t,className:K(k.root,k.docked,l),ownerState:O,externalForwardedProps:A,additionalProps:w}),[L,R]=Rm(`transition`,{elementType:C8e,ownerState:O,externalForwardedProps:A,additionalProps:{in:h,direction:A8e[E],timeout:y,appear:T.current}}),ee=(0,G.jsx)(N,{...P,children:c});if(b===`permanent`)return(0,G.jsx)(F,{...I,children:ee});let z=(0,G.jsx)(L,{...R,children:ee});return b===`persistent`?(0,G.jsx)(F,{...I,children:z}):(0,G.jsx)(j,{...M,children:z})}),P8e=ef({themeId:ym}),F8e={error:vx,warn:Gv,info:mb,debug:RT},I8e=({open:e,onClose:t})=>{let{t:n}=fs(),r=bm(),i=(0,C.useMemo)(()=>({error:r.palette.error.main,warn:r.palette.warning.main,info:r.palette.info.main,debug:r.palette.secondary.main}),[r]),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!0),[l,u]=(0,C.useState)(`error,warn,info`.split(`,`)),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(!0),h=(0,C.useCallback)(async()=>{try{let e=new URLSearchParams({level:l.join(`,`),limit:`500`,...d&&{search:d}}),t=await fetch(`api/logs?${e}`);t.ok&&o((await t.json()).entries)}catch(e){console.error(`Failed to fetch logs:`,e)}finally{c(!1)}},[l,d]);(0,C.useEffect)(()=>{e&&h()},[e,h]),(0,C.useEffect)(()=>{if(!p||!e)return;let t=setInterval(h,5e3);return()=>clearInterval(t)},[p,e,h]);let g=e=>{u(Array.isArray(e.target.value)?e.target.value:[e.target.value])},_=e=>{f(e.target.value)},v=async()=>{try{await fetch(`api/logs`,{method:`DELETE`}),o([])}catch(e){console.error(`Failed to clear logs:`,e)}},y=e=>(0,G.jsx)(F8e[e]||mb,{sx:{fontSize:16,color:i[e]}});return(0,G.jsxs)(Pb,{open:e,onClose:t,maxWidth:`lg`,fullWidth:!0,children:[(0,G.jsxs)(Lb,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,G.jsx)(RT,{}),n(`logs.title`),(0,G.jsx)(Z,{sx:{flexGrow:1}}),(0,G.jsx)(sb,{title:n(`logs.autoRefresh`),children:(0,G.jsx)(wv,{label:p?`Auto`:`Manual`,color:p?`success`:`default`,size:`small`,onClick:()=>m(!p),sx:{cursor:`pointer`}})}),(0,G.jsx)(Ih,{onClick:t,children:(0,G.jsx)(VT,{})})]}),(0,G.jsxs)(Ib,{children:[(0,G.jsx)(Rv,{spacing:2,sx:{mb:2},children:(0,G.jsxs)(Rv,{direction:`row`,spacing:2,alignItems:`center`,children:[(0,G.jsxs)(Dv,{size:`small`,sx:{minWidth:200},children:[(0,G.jsx)(Fx,{children:n(`logs.logLevel`)}),(0,G.jsxs)(_S,{value:l,label:n(`logs.logLevel`),onChange:g,multiple:!0,renderValue:e=>(0,G.jsx)(Z,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:(Array.isArray(e)?e:[e]).map(e=>(0,G.jsx)(wv,{label:e.toUpperCase(),size:`small`,sx:{backgroundColor:i[e],color:`white`}},e))}),children:[(0,G.jsx)(vS,{value:`error`,children:n(`logs.error`)}),(0,G.jsx)(vS,{value:`warn`,children:n(`logs.warning`)}),(0,G.jsx)(vS,{value:`info`,children:n(`logs.info`)}),(0,G.jsx)(vS,{value:`debug`,children:n(`logs.debug`)})]})]}),(0,G.jsx)(xS,{size:`small`,placeholder:n(`logs.searchPlaceholder`),value:d,onChange:_,sx:{flexGrow:1}}),(0,G.jsx)(fv,{variant:`outlined`,onClick:h,children:n(`common.refresh`)}),(0,G.jsx)(fv,{variant:`outlined`,color:`error`,onClick:v,children:n(`common.delete`)})]})}),(0,G.jsx)(Z,{sx:{height:400,overflow:`auto`,backgroundColor:`background.paper`,border:1,borderColor:`divider`,borderRadius:1,p:1},children:s?(0,G.jsx)(Z,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,G.jsxs)(Q,{children:[n(`common.loading`),`...`]})}):a.length===0?(0,G.jsx)(Z,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,G.jsx)(Q,{color:`text.secondary`,children:n(`logs.noResults`)})}):(0,G.jsx)(Rv,{spacing:1,children:a.map((e,t)=>(0,G.jsxs)(Z,{sx:{p:1,borderRadius:1,backgroundColor:`action.hover`,fontFamily:`monospace`,fontSize:`0.875rem`,wordBreak:`break-all`},children:[(0,G.jsxs)(Z,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:.5},children:[y(e.level),(0,G.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:new Date(e.timestamp).toLocaleString()}),(0,G.jsx)(wv,{label:e.level.toUpperCase(),size:`small`,sx:{backgroundColor:i[e.level],color:r.palette.getContrastText(i[e.level]??r.palette.grey[500]),fontSize:`0.7rem`,height:20}})]}),(0,G.jsx)(Q,{sx:{ml:3},children:e.message}),e.context&&(0,G.jsx)(Q,{sx:{ml:3,color:`text.secondary`,fontSize:`0.8rem`},children:JSON.stringify(e.context,null,2)})]},`${e.timestamp}-${e.level}-${t}`))})})]}),(0,G.jsx)(Fb,{children:(0,G.jsx)(fv,{onClick:t,children:n(`common.close`)})})]})};function L8e(){let{t:e}=fs(),{isConnected:t}=X_(),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(!1);(0,C.useEffect)(()=>{let e=async()=>{try{let e=await fetch(`api/health`);e.ok?(r(await e.json()),a(!1)):a(!0)}catch{a(!0)}};e();let t=setInterval(e,3e4);return()=>clearInterval(t)},[]);let o=e=>{let t=Math.floor(e/3600),n=Math.floor(e%3600/60);return t>0?`${t}h ${n}m`:`${n}m`},s=n?.status===`healthy`&&!i,c=n?.services?.bridges,l=c&&c.total>0&&c.running===c.total,u=c&&c.total===0,d=n?(0,G.jsxs)(Z,{sx:{p:.5},children:[(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[e(`health.version`),`:`]}),` `,n.version??e(`status.unknown`)]}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[e(`health.uptime`),`:`]}),` `,o(n.uptime??0)]}),n.services?.bridges&&(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[e(`nav.bridges`),`:`]}),` `,n.services.bridges.running??0,`/`,n.services.bridges.total??0,` `,e(`common.running`).toLowerCase(),(n.services.bridges.stopped??0)>0&&` (${n.services.bridges.stopped} ${e(`common.stopped`).toLowerCase()})`]}),n.services?.homeAssistant&&(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[e(`health.homeAssistant`),`:`]}),` `,n.services.homeAssistant.connected?e(`health.connected`):e(`health.disconnected`)]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`WebSocket:`}),` `,e(t?`health.connected`:`health.disconnected`)]})]}):e(`status.loadingHealth`);return(0,G.jsx)(sb,{title:d,arrow:!0,children:(0,G.jsx)(wv,{icon:i||!s?(0,G.jsx)(vx,{fontSize:`small`}):l?(0,G.jsx)(sv,{fontSize:`small`}):(0,G.jsx)(_b,{fontSize:`small`}),label:e(i?`status.error`:s?t?u?`status.noBridges`:l?`common.online`:`common.starting`:`common.offline`:`status.unhealthy`),color:i||!s?`error`:!l||!t?`warning`:`success`,size:`small`,variant:`filled`,sx:{borderRadius:1,fontWeight:600,"& .MuiChip-icon":{color:`inherit`}}})})}var R8e=e=>(0,G.jsx)(`svg`,{viewBox:`0 0 91 89`,xmlSpace:`preserve`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,G.jsxs)(`g`,{style:{display:`inline`},children:[(0,G.jsx)(`path`,{style:{fill:`#18bcf2`,fillOpacity:1,strokeWidth:.266194},d:`m 49.149143,1.473171 38.513568,38.536435 c 0,0 1.248354,1.186052 2.207681,3.092371 0.959329,1.906323 1.10864,4.600698 1.10864,4.600698 v 36.786372 c 0,0 -0.01549,1.748506 -1.49842,3.050572 -1.482931,1.302064 -3.333077,1.362947 -3.333077,1.362947 l -81.325658,7.7e-5 c 0,0 -1.7523855,-0.0091 -3.17112,-1.352526 C -0.07808495,85.913164 0.05953025,84.487808 0.05953025,84.487808 V 47.704546 c 0,0 -0.0018381,-2.218618 0.95921785,-4.315832 0.9610554,-2.097209 2.3010618,-3.355005 2.3010618,-3.355005 L 41.545959,1.4719546 c 0,0 1.465224,-1.46837077 3.753488,-1.46837077 2.288268,0 3.849696,1.46958717 3.849696,1.46958717 z`}),(0,G.jsx)(`path`,{style:{fill:`#ffffff`,fillOpacity:1,strokeWidth:.175841},d:`m 31.689717,32.051124 c 2.813363,2.331095 6.157331,3.89845 9.721813,4.556421 V 17.180647 l 3.873694,-2.282955 3.870527,2.282955 V 36.60772 c 3.565364,-0.658847 6.910387,-2.226204 9.725159,-4.556417 l 7.032345,4.154609 c -11.437354,11.557779 -29.852321,11.557779 -41.290025,0 z m 8.546732,49.60988 C 44.314996,65.760441 35.09933,49.470196 19.574984,45.139543 v 8.312381 c 3.383916,1.32244 6.386113,3.496288 8.728705,6.320026 L 11.83076,69.485301 v 4.56907 l 3.873697,2.270836 16.469936,-9.713534 c 1.224356,3.48294 1.56683,7.225375 0.996449,10.879778 z M 70.977694,45.139543 c -15.515726,4.34014 -24.72189,20.626696 -20.643519,36.521461 l 7.047658,-4.15742 c -0.569325,-3.654411 -0.2265,-7.3965 0.996449,-10.87979 l 16.457611,9.701233 3.870711,-2.283125 v -4.55677 L 62.233673,59.77195 c 2.342772,-2.822684 5.34497,-4.996533 8.728708,-6.320026 z`})]})}),z8e=e=>{let t=p8e();return(0,G.jsxs)(Z,{component:Qi,to:Y9.dashboard,sx:{display:`flex`,alignItems:`center`,justifyContent:e.large?`flex-start`:`center`,flexGrow:1,textDecoration:`none`,color:`inherit`},children:[(0,G.jsx)(R8e,{style:{height:`40px`}}),(0,G.jsx)(Q,{variant:`inherit`,component:`span`,sx:{mr:1,ml:1},children:t.name.split(`-`).map(Y).join(`-`)}),e.large&&(0,G.jsx)(Q,{variant:`caption`,component:`span`,children:t.version})]})},B8e=()=>{let e=P8e(`(min-width:600px)`),{mode:t,setMode:n}=km(),[r,i]=(0,C.useState)(!1),[a,o]=(0,C.useState)(!1),s=xr(),c=vr(),l=e=>e?e===`/`?c.pathname===`/`:c.pathname.startsWith(e):!1,u=()=>{n(t===`dark`?`light`:`dark`)},{t:d}=fs(),f=[{label:d(`dashboard.title`),icon:(0,G.jsx)(KT,{}),to:Y9.dashboard},{label:d(`nav.bridges`),icon:(0,G.jsx)(qT,{}),to:Y9.bridges},{label:d(`nav.devices`),icon:(0,G.jsx)(ub,{}),to:Y9.devices},{label:d(`nav.networkMap`),icon:(0,G.jsx)(MT,{}),to:Y9.networkMap},{label:d(`nav.startupOrder`),icon:(0,G.jsx)(cv,{}),to:Y9.startup},{label:d(`nav.lockCredentials`),icon:(0,G.jsx)(pT,{}),to:Y9.lockCredentials},{label:d(`nav.filterReference`),icon:(0,G.jsx)(JT,{}),to:Y9.labels},{label:`Plugins`,icon:(0,G.jsx)(WT,{}),to:Y9.plugins},{label:d(`nav.settings`),icon:(0,G.jsx)(ST,{}),to:Y9.settings},{label:d(t===`dark`?`nav.lightMode`:`nav.darkMode`),icon:t===`dark`?(0,G.jsx)(Bhe,{}):(0,G.jsx)(Ohe,{}),onClick:u},{label:d(`nav.systemLogs`),icon:(0,G.jsx)(RT,{}),onClick:()=>i(!0)},{label:d(`nav.health`),icon:(0,G.jsx)(wx,{}),to:Y9.health}],p=e=>{o(!1),e.onClick?e.onClick():e.to&&s(e.to)};return(0,G.jsxs)(Z,{children:[(0,G.jsx)(y8e,{sx:{height:`72px`},children:(0,G.jsx)(e8e,{sx:{paddingLeft:`0 !important`,paddingRight:`0 !important`},children:(0,G.jsxs)(Z9,{sx:{padding:2,height:`100%`,display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,G.jsx)(z8e,{large:e}),e?(0,G.jsxs)(Z,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[f.map(e=>e.to?(0,G.jsx)(sb,{title:e.label,children:(0,G.jsx)(Ih,{component:Qi,to:e.to,sx:{color:`inherit`,bgcolor:l(e.to)?`rgba(255,255,255,0.15)`:`transparent`,borderRadius:1},children:e.icon})},e.label):(0,G.jsx)(sb,{title:e.label,children:(0,G.jsx)(Ih,{onClick:e.onClick,sx:{color:`inherit`},children:e.icon})},e.label)),(0,G.jsx)(L8e,{})]}):(0,G.jsxs)(Z,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,G.jsx)(L8e,{}),(0,G.jsx)(Ih,{onClick:()=>o(!0),sx:{color:`inherit`},children:(0,G.jsx)(Vhe,{})})]})]})})}),(0,G.jsx)(N8e,{anchor:`right`,open:a,onClose:()=>o(!1),children:(0,G.jsx)(Yv,{sx:{width:250},children:f.map(e=>(0,G.jsxs)(Vae,{selected:l(e.to),onClick:()=>p(e),children:[(0,G.jsx)(ey,{children:e.icon}),(0,G.jsx)(ny,{primary:e.label})]},e.label))})}),(0,G.jsx)(I8e,{open:r,onClose:()=>i(!1)})]})},V8e=()=>{let{versionMismatch:e,frontendVersion:t,backendVersion:n}=p8e(),{isConnected:r}=X_();return(0,G.jsxs)(Z,{children:[(0,G.jsx)(B8e,{}),(0,G.jsx)(e8e,{}),e&&(0,G.jsxs)(zh,{severity:`warning`,variant:`filled`,sx:{borderRadius:0},action:(0,G.jsx)(fv,{color:`inherit`,size:`small`,onClick:()=>window.location.reload(),children:`Reload`}),children:[`Version mismatch: frontend `,t,`, backend `,n,`. Please reload to get the latest UI.`]}),!r&&(0,G.jsx)(zh,{severity:`error`,variant:`filled`,sx:{borderRadius:0},children:`Connection lost, data may be outdated. Reconnecting…`}),(0,G.jsx)(Z9,{sx:{p:2},children:(0,G.jsx)(t8e,{children:(0,G.jsx)(ii,{})})}),(0,G.jsx)(m8e,{}),(0,G.jsx)(d8e,{})]})},H8e=_m({colorSchemes:{light:{palette:{primary:{main:`#1976d2`,light:`#42a5f5`,dark:`#1565c0`},secondary:{main:`#9c27b0`,light:`#ba68c8`,dark:`#7b1fa2`},background:{default:`#f5f5f5`,paper:`#ffffff`}}},dark:{palette:{primary:{main:`#90caf9`,light:`#e3f2fd`,dark:`#42a5f5`},secondary:{main:`#ce93d8`,light:`#f3e5f5`,dark:`#ab47bc`},background:{default:`#121212`,paper:`#1e1e1e`}}}},typography:{fontFamily:`"Roboto", "Helvetica", "Arial", sans-serif`,h1:{fontSize:`2.5rem`,fontWeight:500},h2:{fontSize:`2rem`,fontWeight:500},h3:{fontSize:`1.75rem`,fontWeight:500},h4:{fontSize:`1.5rem`,fontWeight:500},h5:{fontSize:`1.25rem`,fontWeight:500},h6:{fontSize:`1rem`,fontWeight:500}},shape:{borderRadius:8},components:{MuiCard:{styleOverrides:{root:{transition:`transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out`,"&:hover":{transform:`translateY(-2px)`,boxShadow:`0 4px 20px rgba(0,0,0,0.12)`}}}},MuiButton:{styleOverrides:{root:{textTransform:`none`,fontWeight:500}}},MuiChip:{styleOverrides:{root:{fontWeight:500}}},MuiAppBar:{styleOverrides:{root:{backgroundImage:`none`}}}}}),$9=document.getElementsByTagName(`base`)[0]?.href?.replace(/\/$/,``);$9?.startsWith(`http`)&&($9=new URL($9).pathname);var U8e=qi([{path:`/`,element:(0,G.jsx)(V8e,{}),children:q6e}],{basename:$9});(0,S.createRoot)(document.getElementById(`root`)).render((0,G.jsx)(C.StrictMode,{children:(0,G.jsx)(L,{store:X6e,children:(0,G.jsxs)(Zee,{theme:H8e,children:[(0,G.jsx)(Gee,{}),(0,G.jsx)(zee,{styles:{".rjsf-field-array > .MuiFormControl-root > .MuiPaper-root > .MuiBox-root > .MuiGrid-root > .MuiGrid-root:has(> .MuiBox-root > .MuiPaper-root > .MuiBox-root > .rjsf-field)":{overflow:`initial !important`,flexGrow:1}}}),(0,G.jsx)(wre,{children:(0,G.jsx)(mne,{children:(0,G.jsx)(va,{router:U8e})})})]})})}));
473
+ `},F4e={onDragStart(e){let{active:t}=e;return`Picked up draggable item `+t.id+`.`},onDragOver(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was moved over droppable area `+n.id+`.`:`Draggable item `+t.id+` is no longer over a droppable area.`},onDragEnd(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was dropped over droppable area `+n.id:`Draggable item `+t.id+` was dropped.`},onDragCancel(e){let{active:t}=e;return`Dragging was cancelled. Draggable item `+t.id+` was dropped.`}};function I4e(e){let{announcements:t=F4e,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=P4e}=e,{announce:a,announcement:o}=A4e(),s=p9(`DndLiveRegion`),[c,l]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{l(!0)},[]),M4e((0,C.useMemo)(()=>({onDragStart(e){let{active:n}=e;a(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&a(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;a(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;a(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;a(t.onDragCancel({active:n,over:r}))}}),[a,t])),!c)return null;let u=C.createElement(C.Fragment,null,C.createElement(O4e,{id:r,value:i.draggable}),C.createElement(k4e,{id:s,announcement:o}));return n?(0,_a.createPortal)(u,n):u}var y9;(function(e){e.DragStart=`dragStart`,e.DragMove=`dragMove`,e.DragEnd=`dragEnd`,e.DragCancel=`dragCancel`,e.DragOver=`dragOver`,e.RegisterDroppable=`registerDroppable`,e.SetDroppableDisabled=`setDroppableDisabled`,e.UnregisterDroppable=`unregisterDroppable`})(y9||={});function b9(){}function L4e(e,t){return(0,C.useMemo)(()=>({sensor:e,options:t??{}}),[e,t])}function R4e(){var e=[...arguments];return(0,C.useMemo)(()=>[...e].filter(e=>e!=null),[...e])}var x9=Object.freeze({x:0,y:0});function z4e(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function B4e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function V4e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function H4e(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function U4e(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}function W4e(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}var G4e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=W4e(t,t.left,t.top),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=z4e(W4e(r),i);a.push({id:t,data:{droppableContainer:e,value:n}})}}return a.sort(B4e)},K4e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=H4e(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=H4e(r),o=i.reduce((e,t,r)=>e+z4e(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(B4e)};function q4e(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=i-r,s=a-n;if(r<i&&n<a){let n=t.width*t.height,r=e.width*e.height,i=o*s,a=i/(n+r-i);return Number(a.toFixed(4))}return 0}var J4e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=[];for(let e of r){let{id:r}=e,a=n.get(r);if(a){let n=q4e(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(V4e)};function Y4e(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function X4e(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:x9}function Z4e(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}var Q4e=Z4e(1);function $4e(e){if(e.startsWith(`matrix3d(`)){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith(`matrix(`)){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function e3e(e,t,n){let r=$4e(t);if(!r)return e;let{scaleX:i,scaleY:a,x:o,y:s}=r,c=e.left-o-(1-i)*parseFloat(n),l=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(` `)+1)),u=i?e.width/i:e.width,d=a?e.height/a:e.height;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c}}var t3e={ignoreTransform:!1};function S9(e,t){t===void 0&&(t=t3e);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=n9(e).getComputedStyle(e);t&&(n=e3e(n,t,r))}let{top:r,left:i,width:a,height:o,bottom:s,right:c}=n;return{top:r,left:i,width:a,height:o,bottom:s,right:c}}function n3e(e){return S9(e,{ignoreTransform:!0})}function r3e(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function i3e(e,t){return t===void 0&&(t=n9(e).getComputedStyle(e)),t.position===`fixed`}function a3e(e,t){t===void 0&&(t=n9(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`?n.test(r):!1})}function C9(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(r9(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!i9(i)||b4e(i)||n.includes(i))return n;let a=n9(e).getComputedStyle(i);return i!==e&&a3e(i,a)&&n.push(i),i3e(i,a)?n:r(i.parentNode)}return e?r(e):n}function o3e(e){let[t]=C9(e,1);return t??null}function w9(e){return!$7||!e?null:e9(e)?e:t9(e)?r9(e)||e===a9(e).scrollingElement?window:i9(e)?e:null:null}function s3e(e){return e9(e)?e.scrollX:e.scrollLeft}function c3e(e){return e9(e)?e.scrollY:e.scrollTop}function T9(e){return{x:s3e(e),y:c3e(e)}}var E9;(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(E9||={});function l3e(e){return!$7||!e?!1:e===document.scrollingElement}function u3e(e){let t={x:0,y:0},n=l3e(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}var d3e={x:.2,y:.2};function f3e(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=d3e);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=u3e(e),p={x:0,y:0},m={x:0,y:0},h={height:t.height*i.y,width:t.width*i.x};return!l&&a<=t.top+h.height?(p.y=E9.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=E9.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=E9.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=E9.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function p3e(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function m3e(e){return e.reduce((e,t)=>m9(e,T9(t)),x9)}function h3e(e){return e.reduce((e,t)=>e+s3e(t),0)}function g3e(e){return e.reduce((e,t)=>e+c3e(t),0)}function _3e(e,t){if(t===void 0&&(t=S9),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);o3e(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}var v3e=[[`x`,[`left`,`right`],h3e],[`y`,[`top`,`bottom`],g3e]],D9=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;let n=C9(t),r=m3e(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of v3e)for(let a of t)Object.defineProperty(this,a,{get:()=>{let t=i(n),o=r[e]-t;return this.rect[a]+o},enumerable:!0});Object.defineProperty(this,`rect`,{enumerable:!1})}},O9=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>this.target?.removeEventListener(...e))},this.target=e}add(e,t,n){var r;(r=this.target)==null||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}};function y3e(e){let{EventTarget:t}=n9(e);return e instanceof t?e:a9(e)}function k9(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return typeof t==`number`?Math.sqrt(n**2+r**2)>t:`x`in t&&`y`in t?n>t.x&&r>t.y:`x`in t?n>t.x:`y`in t?r>t.y:!1}var A9;(function(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(A9||={});function b3e(e){e.preventDefault()}function x3e(e){e.stopPropagation()}var j9;(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(j9||={});var S3e={start:[j9.Space,j9.Enter],cancel:[j9.Esc],end:[j9.Space,j9.Enter,j9.Tab]},C3e=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case j9.Right:return{...n,x:n.x+25};case j9.Left:return{...n,x:n.x-25};case j9.Down:return{...n,y:n.y+25};case j9.Up:return{...n,y:n.y-25}}},M9=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;let{event:{target:t}}=e;this.props=e,this.listeners=new O9(a9(t)),this.windowListeners=new O9(n9(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(A9.Resize,this.handleCancel),this.windowListeners.add(A9.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(A9.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&_3e(n),t(x9)}handleKeyDown(e){if(g9(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=S3e,coordinateGetter:a=C3e,scrollBehavior:o=`smooth`}=r,{code:s}=e;if(i.end.includes(s)){this.handleEnd(e);return}if(i.cancel.includes(s)){this.handleCancel(e);return}let{collisionRect:c}=n.current,l=c?{x:c.left,y:c.top}:x9;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=h9(u,l),r={x:0,y:0},{scrollableAncestors:i}=n.current;for(let n of i){let i=e.code,{isTop:a,isRight:s,isLeft:c,isBottom:l,maxScroll:d,minScroll:f}=u3e(n),p=p3e(n),m={x:Math.min(i===j9.Right?p.right-p.width/2:p.right,Math.max(i===j9.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===j9.Down?p.bottom-p.height/2:p.bottom,Math.max(i===j9.Down?p.top:p.top+p.height/2,u.y))},h=i===j9.Right&&!s||i===j9.Left&&!c,g=i===j9.Down&&!l||i===j9.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===j9.Right&&e<=d.x||i===j9.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}a?r.x=n.scrollLeft-e:r.x=i===j9.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}else if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===j9.Down&&e<=d.y||i===j9.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}a?r.y=n.scrollTop-e:r.y=i===j9.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,m9(h9(u,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}};M9.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=S3e,onActivation:i}=t,{active:a}=n,{code:o}=e.nativeEvent;if(r.start.includes(o)){let t=a.activatorNode.current;return t&&e.target!==t?!1:(e.preventDefault(),i?.({event:e.nativeEvent}),!0)}return!1}}];function w3e(e){return!!(e&&`distance`in e)}function T3e(e){return!!(e&&`delay`in e)}var N9=class{constructor(e,t,n){n===void 0&&(n=y3e(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;let{event:r}=e,{target:i}=r;this.props=e,this.events=t,this.document=a9(i),this.documentListeners=new O9(this.document),this.listeners=new O9(n),this.windowListeners=new O9(n9(i)),this.initialCoordinates=_9(r)??x9,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(A9.Resize,this.handleCancel),this.windowListeners.add(A9.DragStart,b3e),this.windowListeners.add(A9.VisibilityChange,this.handleCancel),this.windowListeners.add(A9.ContextMenu,b3e),this.documentListeners.add(A9.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(T3e(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(w3e(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(A9.Click,x3e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(A9.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){let{activated:t,initialCoordinates:n,props:r}=this,{onMove:i,options:{activationConstraint:a}}=r;if(!n)return;let o=_9(e)??x9,s=h9(n,o);if(!t&&a){if(w3e(a)){if(a.tolerance!=null&&k9(s,a.tolerance))return this.handleCancel();if(k9(s,a.distance))return this.handleStart()}if(T3e(a)&&k9(s,a.tolerance))return this.handleCancel();this.handlePending(a,s);return}e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===j9.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},E3e={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},P9=class extends N9{constructor(e){let{event:t}=e,n=a9(t.target);super(e,E3e,n)}};P9.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];var D3e={move:{name:`mousemove`},end:{name:`mouseup`}},O3e;(function(e){e[e.RightClick=2]=`RightClick`})(O3e||={});var k3e=class extends N9{constructor(e){super(e,D3e,a9(e.event.target))}};k3e.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===O3e.RightClick?!1:(r?.({event:n}),!0)}}];var F9={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},A3e=class extends N9{constructor(e){super(e,F9)}static setup(){return window.addEventListener(F9.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(F9.move.name,e)};function e(){}}};A3e.activators=[{eventName:`onTouchStart`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}];var I9;(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(I9||={});var L9;(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(L9||={});function j3e(e){let{acceleration:t,activator:n=I9.Pointer,canScroll:r,draggingRect:i,enabled:a,interval:o=5,order:s=L9.TreeOrder,pointerCoordinates:c,scrollableAncestors:l,scrollableAncestorRects:u,delta:d,threshold:f}=e,p=N3e({delta:d,disabled:!a}),[m,h]=x4e(),g=(0,C.useRef)({x:0,y:0}),_=(0,C.useRef)({x:0,y:0}),v=(0,C.useMemo)(()=>{switch(n){case I9.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case I9.DraggableRect:return i}},[n,i,c]),y=(0,C.useRef)(null),b=(0,C.useCallback)(()=>{let e=y.current;if(!e)return;let t=g.current.x*_.current.x,n=g.current.y*_.current.y;e.scrollBy(t,n)},[]),x=(0,C.useMemo)(()=>s===L9.TreeOrder?[...l].reverse():l,[s,l]);(0,C.useEffect)(()=>{if(!a||!l.length||!v){h();return}for(let e of x){if(r?.(e)===!1)continue;let n=u[l.indexOf(e)];if(!n)continue;let{direction:i,speed:a}=f3e(e,n,v,t,f);for(let e of[`x`,`y`])p[e][i[e]]||(a[e]=0,i[e]=0);if(a.x>0||a.y>0){h(),y.current=e,m(b,o),g.current=a,_.current=i;return}}g.current={x:0,y:0},_.current={x:0,y:0},h()},[t,b,r,h,a,o,JSON.stringify(v),JSON.stringify(p),m,l,x,u,JSON.stringify(f)])}var M3e={x:{[E9.Backward]:!1,[E9.Forward]:!1},y:{[E9.Backward]:!1,[E9.Forward]:!1}};function N3e(e){let{delta:t,disabled:n}=e,r=d9(t);return l9(e=>{if(n||!r||!e)return M3e;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[E9.Backward]:e.x[E9.Backward]||i.x===-1,[E9.Forward]:e.x[E9.Forward]||i.x===1},y:{[E9.Backward]:e.y[E9.Backward]||i.y===-1,[E9.Forward]:e.y[E9.Forward]||i.y===1}}},[n,t,r])}function P3e(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return l9(e=>t==null?null:r??e??null,[r,t])}function F3e(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{sensor:r}=n,i=r.activators.map(e=>({eventName:e.eventName,handler:t(e.handler,n)}));return[...e,...i]},[]),[e,t])}var R9;(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(R9||={});var I3e;(function(e){e.Optimized=`optimized`})(I3e||={});var L3e=new Map;function R3e(e,t){let{dragging:n,dependencies:r,config:i}=t,[a,o]=(0,C.useState)(null),{frequency:s,measure:c,strategy:l}=i,u=(0,C.useRef)(e),d=g(),f=c9(d),p=(0,C.useCallback)(function(e){e===void 0&&(e=[]),!f.current&&o(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[f]),m=(0,C.useRef)(null),h=l9(t=>{if(d&&!n)return L3e;if(!t||t===L3e||u.current!==e||a!=null){let t=new Map;for(let n of e){if(!n)continue;if(a&&a.length>0&&!a.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new D9(c(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,a,n,d,c]);return(0,C.useEffect)(()=>{u.current=e},[e]),(0,C.useEffect)(()=>{d||p()},[n,d]),(0,C.useEffect)(()=>{a&&a.length>0&&o(null)},[JSON.stringify(a)]),(0,C.useEffect)(()=>{d||typeof s!=`number`||m.current!==null||(m.current=setTimeout(()=>{p(),m.current=null},s))},[s,d,p,...r]),{droppableRects:h,measureDroppableContainers:p,measuringScheduled:a!=null};function g(){switch(l){case R9.Always:return!1;case R9.BeforeDragging:return n;default:return!n}}}function z3e(e,t){return l9(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function B3e(e,t){return z3e(e,t)}function V3e(e){let{callback:t,disabled:n}=e,r=s9(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function z9(e){let{callback:t,disabled:n}=e,r=s9(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function H3e(e){return new D9(S9(e),e)}function U3e(e,t,n){t===void 0&&(t=H3e);let[r,i]=(0,C.useState)(null);function a(){i(r=>{if(!e)return null;if(e.isConnected===!1)return r??n??null;let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let o=V3e({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){a();break}}}}),s=z9({callback:a});return o9(()=>{a(),e?(s?.observe(e),o?.observe(document.body,{childList:!0,subtree:!0})):(s?.disconnect(),o?.disconnect())},[e]),r}function W3e(e){return X4e(e,z3e(e))}var G3e=[];function K3e(e){let t=(0,C.useRef)(e),n=l9(n=>e?n&&n!==G3e&&e&&t.current&&e.parentNode===t.current.parentNode?n:C9(e):G3e,[e]);return(0,C.useEffect)(()=>{t.current=e},[e]),n}function q3e(e){let[t,n]=(0,C.useState)(null),r=(0,C.useRef)(e),i=(0,C.useCallback)(e=>{let t=w9(e.target);t&&n(e=>e?(e.set(t,T9(t)),new Map(e)):null)},[]);return(0,C.useEffect)(()=>{let t=r.current;if(e!==t){a(t);let o=e.map(e=>{let t=w9(e);return t?(t.addEventListener(`scroll`,i,{passive:!0}),[t,T9(t)]):null}).filter(e=>e!=null);n(o.length?new Map(o):null),r.current=e}return()=>{a(e),a(t)};function a(e){e.forEach(e=>{w9(e)?.removeEventListener(`scroll`,i)})}},[i,e]),(0,C.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>m9(e,t),x9):m3e(e):x9,[e,t])}function J3e(e,t){t===void 0&&(t=[]);let n=(0,C.useRef)(null);return(0,C.useEffect)(()=>{n.current=null},t),(0,C.useEffect)(()=>{let t=e!==x9;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?h9(e,n.current):x9}function Y3e(e){(0,C.useEffect)(()=>{if(!$7)return;let t=e.map(e=>{let{sensor:t}=e;return t.setup==null?void 0:t.setup()});return()=>{for(let e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function X3e(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{eventName:r,handler:i}=n;return e[r]=e=>{i(e,t)},e},{}),[e,t])}function Z3e(e){return(0,C.useMemo)(()=>e?r3e(e):null,[e])}var Q3e=[];function $3e(e,t){t===void 0&&(t=S9);let[n]=e,r=Z3e(n?n9(n):null),[i,a]=(0,C.useState)(Q3e);function o(){a(()=>e.length?e.map(e=>l3e(e)?r:new D9(t(e),e)):Q3e)}let s=z9({callback:o});return o9(()=>{s?.disconnect(),o(),e.forEach(e=>s?.observe(e))},[e]),i}function e6e(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return i9(t)?t:e}function t6e(e){let{measure:t}=e,[n,r]=(0,C.useState)(null),i=z9({callback:(0,C.useCallback)(e=>{for(let{target:n}of e)if(i9(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),[a,o]=u9((0,C.useCallback)(e=>{let n=e6e(e);i?.disconnect(),n&&i?.observe(n),r(n?t(n):null)},[t,i]));return(0,C.useMemo)(()=>({nodeRef:a,rect:n,setRef:o}),[n,a,o])}var n6e=[{sensor:P9,options:{}},{sensor:M9,options:{}}],r6e={current:{}},B9={draggable:{measure:n3e},droppable:{measure:n3e,strategy:R9.WhileDragging,frequency:I3e.Optimized},dragOverlay:{measure:S9}},V9=class extends Map{get(e){return e==null?void 0:super.get(e)??void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){return this.get(e)?.node.current??void 0}},i6e={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new V9,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:b9},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:B9,measureDroppableContainers:b9,windowRect:null,measuringScheduled:!1},a6e={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:b9,draggableNodes:new Map,over:null,measureDroppableContainers:b9},H9=(0,C.createContext)(a6e),o6e=(0,C.createContext)(i6e);function s6e(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new V9}}}function c6e(e,t){switch(t.type){case y9.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case y9.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case y9.DragEnd:case y9.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case y9.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new V9(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case y9.SetDroppableDisabled:{let{id:n,key:r,disabled:i}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;let o=new V9(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case y9.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new V9(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function l6e(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:i}=(0,C.useContext)(H9),a=d9(r),o=d9(n?.id);return(0,C.useEffect)(()=>{if(!t&&!r&&a&&o!=null){if(!g9(a)||document.activeElement===a.target)return;let e=i.get(o);if(!e)return;let{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=E4e(e);if(t){t.focus();break}}})}},[r,t,i,o,a]),null}function u6e(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function d6e(e){return(0,C.useMemo)(()=>({draggable:{...B9.draggable,...e?.draggable},droppable:{...B9.droppable,...e?.droppable},dragOverlay:{...B9.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function f6e(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e,a=(0,C.useRef)(!1),{x:o,y:s}=typeof i==`boolean`?{x:i,y:i}:i;o9(()=>{if(!o&&!s||!t){a.current=!1;return}if(a.current||!r)return;let e=t?.node.current;if(!e||e.isConnected===!1)return;let i=X4e(n(e),r);if(o||(i.x=0),s||(i.y=0),a.current=!0,Math.abs(i.x)>0||Math.abs(i.y)>0){let t=o3e(e);t&&t.scrollBy({top:i.y,left:i.x})}},[t,o,s,r,n])}var p6e=(0,C.createContext)({...x9,scaleX:1,scaleY:1}),U9;(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(U9||={});var m6e=(0,C.memo)(function(e){let{id:t,accessibility:n,autoScroll:r=!0,children:i,sensors:a=n6e,collisionDetection:o=J4e,measuring:s,modifiers:c,...l}=e,[u,d]=(0,C.useReducer)(c6e,void 0,s6e),[f,p]=N4e(),[m,h]=(0,C.useState)(U9.Uninitialized),g=m===U9.Initialized,{draggable:{active:_,nodes:v,translate:y},droppable:{containers:b}}=u,x=_==null?null:v.get(_),S=(0,C.useRef)({initial:null,translated:null}),w=(0,C.useMemo)(()=>_==null?null:{id:_,data:x?.data??r6e,rect:S},[_,x]),T=(0,C.useRef)(null),[E,D]=(0,C.useState)(null),[O,k]=(0,C.useState)(null),A=c9(l,Object.values(l)),j=p9(`DndDescribedBy`,t),M=(0,C.useMemo)(()=>b.getEnabled(),[b]),N=d6e(s),{droppableRects:P,measureDroppableContainers:F,measuringScheduled:I}=R3e(M,{dragging:g,dependencies:[y.x,y.y],config:N.droppable}),L=P3e(v,_),R=(0,C.useMemo)(()=>O?_9(O):null,[O]),ee=Te(),z=B3e(L,N.draggable.measure);f6e({activeNode:_==null?null:v.get(_),config:ee.layoutShiftCompensation,initialRect:z,measure:N.draggable.measure});let te=U3e(L,N.draggable.measure,z),B=U3e(L?L.parentElement:null),V=(0,C.useRef)({activatorEvent:null,active:null,activeNode:L,collisionRect:null,collisions:null,droppableRects:P,draggableNodes:v,draggingNode:null,draggingNodeRect:null,droppableContainers:b,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ne=b.getNodeFor(V.current.over?.id),re=t6e({measure:N.dragOverlay.measure}),ie=re.nodeRef.current??L,ae=g?re.rect??te:null,oe=!!(re.nodeRef.current&&re.rect),se=W3e(oe?null:te),ce=Z3e(ie?n9(ie):null),le=K3e(g?ne??L:null),ue=$3e(le),H=u6e(c,{transform:{x:y.x-se.x,y:y.y-se.y,scaleX:1,scaleY:1},activatorEvent:O,active:w,activeNodeRect:te,containerNodeRect:B,draggingNodeRect:ae,over:V.current.over,overlayNodeRect:re.rect,scrollableAncestors:le,scrollableAncestorRects:ue,windowRect:ce}),de=R?m9(R,y):null,fe=q3e(le),U=J3e(fe),pe=J3e(fe,[te]),me=m9(H,U),W=ae?Q4e(ae,H):null,he=w&&W?o({active:w,collisionRect:W,droppableRects:P,droppableContainers:M,pointerCoordinates:de}):null,ge=U4e(he,`id`),[_e,ve]=(0,C.useState)(null),ye=Y4e(oe?H:m9(H,pe),_e?.rect??null,te),be=(0,C.useRef)(null),xe=(0,C.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(T.current==null)return;let i=v.get(T.current);if(!i)return;let a=e.nativeEvent;be.current=new n({active:T.current,activeNode:i,event:a,options:r,context:V,onAbort(e){if(!v.get(e))return;let{onDragAbort:t}=A.current,n={id:e};t?.(n),f({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!v.get(e))return;let{onDragPending:i}=A.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),f({type:`onDragPending`,event:a})},onStart(e){let t=T.current;if(t==null)return;let n=v.get(t);if(!n)return;let{onDragStart:r}=A.current,i={activatorEvent:a,active:{id:t,data:n.data,rect:S}};(0,_a.unstable_batchedUpdates)(()=>{r?.(i),h(U9.Initializing),d({type:y9.DragStart,initialCoordinates:e,active:t}),f({type:`onDragStart`,event:i}),D(be.current),k(a)})},onMove(e){d({type:y9.DragMove,coordinates:e})},onEnd:o(y9.DragEnd),onCancel:o(y9.DragCancel)});function o(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=V.current,o=null;if(t&&i){let{cancelDrop:s}=A.current;o={activatorEvent:a,active:t,collisions:n,delta:i,over:r},e===y9.DragEnd&&typeof s==`function`&&await Promise.resolve(s(o))&&(e=y9.DragCancel)}T.current=null,(0,_a.unstable_batchedUpdates)(()=>{d({type:e}),h(U9.Uninitialized),ve(null),D(null),k(null),be.current=null;let t=e===y9.DragEnd?`onDragEnd`:`onDragCancel`;if(o){let e=A.current[t];e?.(o),f({type:t,event:o})}})}}},[v]),Se=F3e(a,(0,C.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=v.get(r);if(T.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},T.current=r,xe(n,t))},[v,xe]));Y3e(a),o9(()=>{te&&m===U9.Initializing&&h(U9.Initialized)},[te,m]),(0,C.useEffect)(()=>{let{onDragMove:e}=A.current,{active:t,activatorEvent:n,collisions:r,over:i}=V.current;if(!t||!n)return;let a={active:t,activatorEvent:n,collisions:r,delta:{x:me.x,y:me.y},over:i};(0,_a.unstable_batchedUpdates)(()=>{e?.(a),f({type:`onDragMove`,event:a})})},[me.x,me.y]),(0,C.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=V.current;if(!e||T.current==null||!t||!i)return;let{onDragOver:a}=A.current,o=r.get(ge),s=o&&o.rect.current?{id:o.id,rect:o.rect.current,data:o.data,disabled:o.disabled}:null,c={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:s};(0,_a.unstable_batchedUpdates)(()=>{ve(s),a?.(c),f({type:`onDragOver`,event:c})})},[ge]),o9(()=>{V.current={activatorEvent:O,active:w,activeNode:L,collisionRect:W,collisions:he,droppableRects:P,draggableNodes:v,draggingNode:ie,draggingNodeRect:ae,droppableContainers:b,over:_e,scrollableAncestors:le,scrollAdjustedTranslate:me},S.current={initial:ae,translated:W}},[w,L,he,W,v,ie,ae,P,b,_e,le,me]),j3e({...ee,delta:y,draggingRect:W,pointerCoordinates:de,scrollableAncestors:le,scrollableAncestorRects:ue});let Ce=(0,C.useMemo)(()=>({active:w,activeNode:L,activeNodeRect:te,activatorEvent:O,collisions:he,containerNodeRect:B,dragOverlay:re,draggableNodes:v,droppableContainers:b,droppableRects:P,over:_e,measureDroppableContainers:F,scrollableAncestors:le,scrollableAncestorRects:ue,measuringConfiguration:N,measuringScheduled:I,windowRect:ce}),[w,L,te,O,he,B,re,v,b,P,_e,F,le,ue,N,I,ce]),we=(0,C.useMemo)(()=>({activatorEvent:O,activators:Se,active:w,activeNodeRect:te,ariaDescribedById:{draggable:j},dispatch:d,draggableNodes:v,over:_e,measureDroppableContainers:F}),[O,Se,w,te,d,j,v,_e,F]);return C.createElement(j4e.Provider,{value:p},C.createElement(H9.Provider,{value:we},C.createElement(o6e.Provider,{value:Ce},C.createElement(p6e.Provider,{value:ye},i)),C.createElement(l6e,{disabled:n?.restoreFocus===!1})),C.createElement(I4e,{...n,hiddenTextDescribedById:j}));function Te(){let e=E?.autoScrollEnabled===!1,t=typeof r==`object`?r.enabled===!1:r===!1,n=g&&!e&&!t;return typeof r==`object`?{...r,enabled:n}:{enabled:n}}}),h6e=(0,C.createContext)(null),g6e=`button`,_6e=`Draggable`;function v6e(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e,a=p9(_6e),{activators:o,activatorEvent:s,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:d,over:f}=(0,C.useContext)(H9),{role:p=g6e,roleDescription:m=`draggable`,tabIndex:h=0}=i??{},g=c?.id===t,_=(0,C.useContext)(g?p6e:h6e),[v,y]=u9(),[b,x]=u9(),S=X3e(o,t),w=c9(n);return o9(()=>(d.set(t,{id:t,key:a,node:v,activatorNode:b,data:w}),()=>{let e=d.get(t);e&&e.key===a&&d.delete(t)}),[d,t]),{active:c,activatorEvent:s,activeNodeRect:l,attributes:(0,C.useMemo)(()=>({role:p,tabIndex:h,"aria-disabled":r,"aria-pressed":g&&p===g6e?!0:void 0,"aria-roledescription":m,"aria-describedby":u.draggable}),[r,p,h,g,m,u.draggable]),isDragging:g,listeners:r?void 0:S,node:v,over:f,setNodeRef:y,setActivatorNodeRef:x,transform:_}}function y6e(){return(0,C.useContext)(o6e)}var b6e=`Droppable`,x6e={timeout:25};function S6e(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e,a=p9(b6e),{active:o,dispatch:s,over:c,measureDroppableContainers:l}=(0,C.useContext)(H9),u=(0,C.useRef)({disabled:n}),d=(0,C.useRef)(!1),f=(0,C.useRef)(null),p=(0,C.useRef)(null),{disabled:m,updateMeasurementsFor:h,timeout:g}={...x6e,...i},_=c9(h??r),v=z9({callback:(0,C.useCallback)(()=>{if(!d.current){d.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{l(Array.isArray(_.current)?_.current:[_.current]),p.current=null},g)},[g]),disabled:m||!o}),[y,b]=u9((0,C.useCallback)((e,t)=>{v&&(t&&(v.unobserve(t),d.current=!1),e&&v.observe(e))},[v])),x=c9(t);return(0,C.useEffect)(()=>{!v||!y.current||(v.disconnect(),d.current=!1,v.observe(y.current))},[y,v]),(0,C.useEffect)(()=>(s({type:y9.RegisterDroppable,element:{id:r,key:a,disabled:n,node:y,rect:f,data:x}}),()=>s({type:y9.UnregisterDroppable,key:a,id:r})),[r]),(0,C.useEffect)(()=>{n!==u.current.disabled&&(s({type:y9.SetDroppableDisabled,id:r,key:a,disabled:n}),u.current.disabled=n)},[r,a,n,s]),{active:o,rect:f,isOver:c?.id===r,node:y,over:c,setNodeRef:b}}function W9(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function C6e(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function G9(e){return e!==null&&e>=0}function w6e(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function T6e(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}var E6e=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=W9(t,r,n),o=t[i],s=a[i];return!s||!o?null:{x:s.left-o.left,y:s.top-o.top,scaleX:s.width/o.width,scaleY:s.height/o.height}},K9={scaleX:1,scaleY:1},D6e=e=>{let{activeIndex:t,activeNodeRect:n,index:r,rects:i,overIndex:a}=e,o=i[t]??n;if(!o)return null;if(r===t){let e=i[a];return e?{x:0,y:t<a?e.top+e.height-(o.top+o.height):e.top-o.top,...K9}:null}let s=O6e(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...K9}:r<t&&r>=a?{x:0,y:o.height+s,...K9}:{x:0,y:0,...K9}};function O6e(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return r?n<t?i?r.top-(i.top+i.height):a?a.top-(r.top+r.height):0:a?a.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}var k6e=`Sortable`,A6e=C.createContext({activeIndex:-1,containerId:k6e,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:E6e,disabled:{draggable:!1,droppable:!1}});function j6e(e){let{children:t,id:n,items:r,strategy:i=E6e,disabled:a=!1}=e,{active:o,dragOverlay:s,droppableRects:c,over:l,measureDroppableContainers:u}=y6e(),d=p9(k6e,n),f=s.rect!==null,p=(0,C.useMemo)(()=>r.map(e=>typeof e==`object`&&`id`in e?e.id:e),[r]),m=o!=null,h=o?p.indexOf(o.id):-1,g=l?p.indexOf(l.id):-1,_=(0,C.useRef)(p),v=!w6e(p,_.current),y=g!==-1&&h===-1||v,b=T6e(a);o9(()=>{v&&m&&u(p)},[v,p,m,u]),(0,C.useEffect)(()=>{_.current=p},[p]);let x=(0,C.useMemo)(()=>({activeIndex:h,containerId:d,disabled:b,disableTransforms:y,items:p,overIndex:g,useDragOverlay:f,sortedRects:C6e(p,c),strategy:i}),[h,d,b.draggable,b.droppable,y,p,g,c,f,i]);return C.createElement(A6e.Provider,{value:x},t)}var M6e=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return W9(n,r,i).indexOf(t)},N6e=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:a,newIndex:o,previousItems:s,previousContainerId:c,transition:l}=e;return!l||!r||s!==a&&i===o?!1:n?!0:o!==i&&t===c},P6e={duration:200,easing:`ease`},F6e=`transform`,I6e=v9.Transition.toString({property:F6e,duration:0,easing:`linear`}),L6e={roleDescription:`sortable`};function R6e(e){let{disabled:t,index:n,node:r,rect:i}=e,[a,o]=(0,C.useState)(null),s=(0,C.useRef)(n);return o9(()=>{if(!t&&n!==s.current&&r.current){let e=i.current;if(e){let t=S9(r.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&o(n)}}n!==s.current&&(s.current=n)},[t,n,r,i]),(0,C.useEffect)(()=>{a&&o(null)},[a]),a}function z6e(e){let{animateLayoutChanges:t=N6e,attributes:n,disabled:r,data:i,getNewIndex:a=M6e,id:o,strategy:s,resizeObserverConfig:c,transition:l=P6e}=e,{items:u,containerId:d,activeIndex:f,disabled:p,disableTransforms:m,sortedRects:h,overIndex:g,useDragOverlay:_,strategy:v}=(0,C.useContext)(A6e),y=B6e(r,p),b=u.indexOf(o),x=(0,C.useMemo)(()=>({sortable:{containerId:d,index:b,items:u},...i}),[d,i,b,u]),S=(0,C.useMemo)(()=>u.slice(u.indexOf(o)),[u,o]),{rect:w,node:T,isOver:E,setNodeRef:D}=S6e({id:o,data:x,disabled:y.droppable,resizeObserverConfig:{updateMeasurementsFor:S,...c}}),{active:O,activatorEvent:k,activeNodeRect:A,attributes:j,setNodeRef:M,listeners:N,isDragging:P,over:F,setActivatorNodeRef:I,transform:L}=v6e({id:o,data:x,attributes:{...L6e,...n},disabled:y.draggable}),R=y4e(D,M),ee=!!O,z=ee&&!m&&G9(f)&&G9(g),te=!_&&P,B=z?(te&&z?L:null)??(s??v)({rects:h,activeNodeRect:A,activeIndex:f,overIndex:g,index:b}):null,V=G9(f)&&G9(g)?a({id:o,items:u,activeIndex:f,overIndex:g}):b,ne=O?.id,re=(0,C.useRef)({activeId:ne,items:u,newIndex:V,containerId:d}),ie=u!==re.current.items,ae=t({active:O,containerId:d,isDragging:P,isSorting:ee,id:o,index:b,items:u,newIndex:re.current.newIndex,previousItems:re.current.items,previousContainerId:re.current.containerId,transition:l,wasDragging:re.current.activeId!=null}),oe=R6e({disabled:!ae,index:b,node:T,rect:w});return(0,C.useEffect)(()=>{ee&&re.current.newIndex!==V&&(re.current.newIndex=V),d!==re.current.containerId&&(re.current.containerId=d),u!==re.current.items&&(re.current.items=u)},[ee,V,d,u]),(0,C.useEffect)(()=>{if(ne===re.current.activeId)return;if(ne!=null&&re.current.activeId==null){re.current.activeId=ne;return}let e=setTimeout(()=>{re.current.activeId=ne},50);return()=>clearTimeout(e)},[ne]),{active:O,activeIndex:f,attributes:j,data:x,rect:w,index:b,newIndex:V,items:u,isOver:E,isSorting:ee,isDragging:P,listeners:N,node:T,overIndex:g,over:F,setNodeRef:R,setActivatorNodeRef:I,setDroppableNodeRef:D,setDraggableNodeRef:M,transform:oe??B,transition:se()};function se(){if(oe||ie&&re.current.newIndex===b)return I6e;if(!(te&&!g9(k)||!l)&&(ee||ae))return v9.Transition.toString({...l,property:F6e})}}function B6e(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}function q9(e){if(!e)return!1;let t=e.data.current;return!!(t&&`sortable`in t&&typeof t.sortable==`object`&&`containerId`in t.sortable&&`items`in t.sortable&&`index`in t.sortable)}var V6e=[j9.Down,j9.Right,j9.Up,j9.Left],H6e=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:a,over:o,scrollableAncestors:s}}=t;if(V6e.includes(e.code)){if(e.preventDefault(),!n||!r)return;let t=[];a.getEnabled().forEach(n=>{if(!n||n!=null&&n.disabled)return;let a=i.get(n.id);if(a)switch(e.code){case j9.Down:r.top<a.top&&t.push(n);break;case j9.Up:r.top>a.top&&t.push(n);break;case j9.Left:r.left>a.left&&t.push(n);break;case j9.Right:r.left<a.left&&t.push(n);break}});let c=K4e({active:n,collisionRect:r,droppableRects:i,droppableContainers:t,pointerCoordinates:null}),l=U4e(c,`id`);if(l===o?.id&&c.length>1&&(l=c[1].id),l!=null){let e=a.get(n.id),t=a.get(l),o=t?i.get(t.id):null,c=t?.node.current;if(c&&o&&e&&t){let n=C9(c).some((e,t)=>s[t]!==e),i=U6e(e,t),a=W6e(e,t),l=n||!i?{x:0,y:0}:{x:a?r.width-o.width:0,y:a?r.height-o.height:0},u={x:o.left,y:o.top};return l.x&&l.y?u:h9(u,l)}}}};function U6e(e,t){return!q9(e)||!q9(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function W6e(e,t){return!q9(e)||!q9(t)||!U6e(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}var G6e=({bridge:e,index:t})=>{let{attributes:n,listeners:r,setNodeRef:i,transform:a,transition:o,isDragging:s}=z6e({id:e.id}),[c,l]=(0,C.useState)(!1);return(0,C.useEffect)(()=>{pE(e.id).then(l)},[e.id]),(0,G.jsx)(pv,{ref:i,style:{transform:v9.Transform.toString(a),transition:o,opacity:s?.5:1},variant:`outlined`,sx:{cursor:`grab`,"&:active":{cursor:`grabbing`},bgcolor:s?`action.selected`:`background.paper`,width:`fit-content`},children:(0,G.jsxs)(gv,{sx:{display:`flex`,alignItems:`center`,gap:1.5,py:1,"&:last-child":{pb:1}},children:[(0,G.jsx)(Z,{...n,...r,sx:{display:`flex`,alignItems:`center`,color:`text.secondary`},children:(0,G.jsx)(jhe,{})}),(0,G.jsx)(wv,{label:t+1,size:`small`,color:`primary`,sx:{minWidth:32,fontWeight:`bold`}}),c?(0,G.jsx)(Z,{component:`img`,src:mE(e.id),alt:e.name,sx:{width:40,height:40,borderRadius:`50%`,objectFit:`cover`,boxShadow:2}}):(0,G.jsx)(bb,{sx:{bgcolor:bE(e),width:40,height:40,boxShadow:2},children:(0,G.jsx)(yE(e),{sx:{fontSize:24}})}),(0,G.jsxs)(Z,{sx:{flex:1},children:[(0,G.jsx)(Q,{variant:`subtitle1`,fontWeight:500,children:e.name}),(0,G.jsxs)(Q,{variant:`caption`,color:`text.secondary`,children:[`Port: `,e.port,` • Priority: `,e.priority??100]})]})]})})},K6e=()=>{let{t:e}=fs(),t=Uv(),{content:n,isLoading:r}=TT(),i=Qme(),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!1);(0,C.useEffect)(()=>{n&&(o([...n].sort((e,t)=>(e.priority??100)-(t.priority??100))),c(!1))},[n]);let l=R4e(L4e(P9),L4e(M9,{coordinateGetter:H6e})),u=(0,C.useCallback)(e=>{let{active:t,over:n}=e;n&&t.id!==n.id&&(o(e=>W9(e,e.findIndex(e=>e.id===t.id),e.findIndex(e=>e.id===n.id))),c(!0))},[]),d=(0,C.useCallback)(async()=>{let n=a.map((e,t)=>({id:e.id,priority:(t+1)*10}));try{await i(n),t.show({message:e(`startup.saveSuccess`),severity:`success`}),c(!1)}catch(n){t.show({message:n instanceof Error?n.message:e(`startup.saveFailed`),severity:`error`})}},[a,i,t,e]),f=(0,C.useMemo)(()=>a.map(e=>e.id),[a]);return r?(0,G.jsxs)(Q,{children:[e(`common.loading`),`...`]}):(0,G.jsxs)(Rv,{spacing:3,children:[(0,G.jsx)(Hv,{items:[{name:e(`nav.bridges`),to:Y9.bridges},{name:e(`startup.title`),to:Y9.startup}]}),(0,G.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:2,children:[(0,G.jsx)(cv,{color:`primary`,fontSize:`large`}),(0,G.jsxs)(Z,{children:[(0,G.jsx)(Q,{variant:`h5`,fontWeight:600,children:e(`startup.title`)}),(0,G.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`startup.description`)})]})]}),s&&(0,G.jsx)(zh,{severity:`info`,action:(0,G.jsx)(fv,{color:`inherit`,size:`small`,startIcon:(0,G.jsx)(rE,{}),onClick:d,children:e(`startup.saveChanges`)}),children:e(`startup.unsavedChanges`)}),(0,G.jsx)(m6e,{sensors:l,collisionDetection:G4e,onDragEnd:u,children:(0,G.jsx)(j6e,{items:f,strategy:D6e,children:(0,G.jsx)(Rv,{spacing:1,children:a.map((e,t)=>(0,G.jsx)(G6e,{bridge:e,index:t},e.id))})})}),a.length===0&&(0,G.jsx)(Q,{color:`text.secondary`,textAlign:`center`,py:4,children:e(`startup.noBridges`)}),s&&a.length>0&&(0,G.jsx)(Z,{display:`flex`,justifyContent:`flex-end`,children:(0,G.jsx)(fv,{variant:`contained`,startIcon:(0,G.jsx)(rE,{}),onClick:d,children:e(`startup.saveOrder`)})})]})},J9=`https://riddix.github.io/home-assistant-matter-hub`,Y9={dashboard:`/`,bridges:`/bridges`,bridge:e=>`/bridges/${e}`,createBridge:`/bridges/create`,areaSetup:`/bridges/area-setup`,editBridge:e=>`/bridges/${e}/edit`,devices:`/devices`,networkMap:`/network-map`,health:`/health`,labels:`/labels`,lockCredentials:`/lock-credentials`,plugins:`/plugins`,settings:`/settings`,startup:`/startup`,githubRepository:`https://github.com/riddix/home-assistant-matter-hub/`,documentation:J9,support:`${J9}/support`,faq:{multiFabric:`${J9}/connect-multiple-fabrics`,bridgeConfig:`${J9}/bridge-configuration`}},q6e=[{path:``,element:(0,G.jsx)(Tre,{}),children:[{path:``,element:(0,G.jsx)(Xge,{})},{path:Y9.bridges,element:(0,G.jsx)(Wge,{})},{path:Y9.createBridge,element:(0,G.jsx)(HJe,{})},{path:Y9.areaSetup,element:(0,G.jsx)(wae,{})},{path:Y9.bridge(`:bridgeId`),element:(0,G.jsx)(mhe,{})},{path:Y9.editBridge(`:bridgeId`),element:(0,G.jsx)(UJe,{})},{path:Y9.devices,element:(0,G.jsx)(m_e,{})},{path:Y9.networkMap,element:(0,G.jsx)(V2e,{})},{path:Y9.health,element:(0,G.jsx)(cYe,{})},{path:Y9.labels,element:(0,G.jsx)(fYe,{})},{path:Y9.lockCredentials,element:(0,G.jsx)(vYe,{})},{path:Y9.plugins,element:(0,G.jsx)(p4e,{})},{path:Y9.settings,element:(0,G.jsx)(v4e,{})},{path:Y9.startup,element:(0,G.jsx)(K6e,{})},{path:`*`,element:(0,G.jsx)(yYe,{})}]}],J6e=b_({items:{isInitialized:!1,isLoading:!1}},e=>{e.addCase(B_.pending,e=>{e.items.isLoading=!0}).addCase(B_.rejected,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=void 0,e.items.error=t.error}).addCase(B_.fulfilled,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=t.payload,e.items.error=void 0}).addCase(V_.fulfilled,(e,t)=>{e.items.content?.push(t.payload)}).addCase(U_.fulfilled,(e,t)=>{let n=e.items.content?.findIndex(e=>e.id===t.payload.id)??-1;n!==-1&&(e.items.content[n]=t.payload)}).addCase(W_.fulfilled,(e,t)=>{let n=e.items.content?.findIndex(e=>e.id===t.payload.id)??-1;n!==-1&&(e.items.content[n]=t.payload)}).addCase(H_.fulfilled,(e,t)=>{if(e.items.content){let n=e.items.content.findIndex(e=>e.id===t.meta.arg);n!==-1&&e.items.content.splice(n,1)}}).addCase(G_,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=t.payload,e.items.error=void 0}).addCase(K_,(e,t)=>{if(e.items.content){let n=e.items.content.findIndex(e=>e.id===t.payload.id);n===-1?e.items.content.push(t.payload):e.items.content[n]=t.payload}})}),Y6e=b_({byBridge:{}},e=>{e.addCase(OT.pending,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)}).addCase(OT.rejected,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)}).addCase(OT.fulfilled,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)})}),X9=b_({isInitialized:!1,isLoading:!1,content:void 0,error:void 0},e=>{e.addCase(OT.pending,e=>{e.isLoading=!0}).addCase(OT.rejected,(e,t)=>{e.isInitialized=!0,e.isLoading=!1,e.content=void 0,e.error=t.error}).addCase(OT.fulfilled,(e,t)=>{e.isInitialized=!0,e.isLoading=!1,e.content=t.payload,e.error=void 0})}),X6e=ire({reducer:{bridges:J6e,devices:Y6e}}),Z9=dp({createStyledComponent:J(`div`,{name:`MuiContainer`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`maxWidth${Y(String(n.maxWidth))}`],n.fixed&&t.fixed,n.disableGutters&&t.disableGutters]}}),useThemeProps:e=>wm({props:e,name:`MuiContainer`})});function Z6e(e){return Md(`MuiToolbar`,e)}Nd(`MuiToolbar`,[`root`,`gutters`,`regular`,`dense`]);var Q6e=e=>{let{classes:t,disableGutters:n,variant:r}=e;return cp({root:[`root`,!n&&`gutters`,r]},Z6e,t)},$6e=J(`div`,{name:`MuiToolbar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableGutters&&t.gutters,t[n.variant]]}})(Am(({theme:e})=>({position:`relative`,display:`flex`,alignItems:`center`,variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up(`sm`)]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:`dense`},style:{minHeight:48}},{props:{variant:`regular`},style:e.mixins.toolbar}]}))),e8e=C.forwardRef(function(e,t){let n=wm({props:e,name:`MuiToolbar`}),{className:r,component:i=`div`,disableGutters:a=!1,variant:o=`regular`,...s}=n,c={...n,component:i,disableGutters:a,variant:o};return(0,G.jsx)($6e,{as:i,className:K(Q6e(c).root,r),ref:t,ownerState:c,...s})}),t8e=class extends C.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`ErrorBoundary caught:`,e,t.componentStack)}render(){return this.state.hasError?(0,G.jsxs)(Z,{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,minHeight:`60vh`,gap:2,p:4,children:[(0,G.jsx)(fb,{color:`error`,sx:{fontSize:64}}),(0,G.jsx)(Q,{variant:`h5`,fontWeight:600,children:Ms.t(`errorBoundary.title`)}),(0,G.jsx)(Q,{variant:`body2`,color:`text.secondary`,textAlign:`center`,maxWidth:480,children:this.state.error?.message??Ms.t(`errorBoundary.fallbackMessage`)}),(0,G.jsx)(fv,{variant:`contained`,onClick:()=>{this.setState({hasError:!1,error:null}),window.location.reload()},children:Ms.t(`errorBoundary.reload`)})]}):this.props.children}};function n8e(e){return Md(`MuiFab`,e)}var r8e=Nd(`MuiFab`,[`root`,`primary`,`secondary`,`extended`,`circular`,`focusVisible`,`disabled`,`colorInherit`,`sizeSmall`,`sizeMedium`,`sizeLarge`,`info`,`error`,`warning`,`success`]),i8e=e=>{let{color:t,variant:n,classes:r,size:i}=e,a=cp({root:[`root`,n,`size${Y(i)}`,t===`inherit`?`colorInherit`:t]},n8e,r);return{...r,...a}},a8e=J(kh,{name:`MuiFab`,slot:`Root`,shouldForwardProp:e=>Sm(e)||e===`classes`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`size${Y(n.size)}`],n.color===`inherit`&&t.colorInherit,t[Y(n.size)],t[n.color]]}})(Am(({theme:e})=>({...e.typography.button,minHeight:36,transition:e.transitions.create([`background-color`,`box-shadow`,`border-color`],{duration:e.transitions.duration.short}),borderRadius:`50%`,padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.grey[900]:e.palette.getContrastText?.(e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:`none`},[`&.${r8e.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},variants:[{props:{size:`small`},style:{width:40,height:40}},{props:{size:`medium`},style:{width:48,height:48}},{props:{variant:`extended`},style:{borderRadius:48/2,padding:`0 16px`,width:`auto`,minHeight:`auto`,minWidth:48,height:48}},{props:{variant:`extended`,size:`small`},style:{width:`auto`,padding:`0 8px`,borderRadius:34/2,minWidth:34,height:34}},{props:{variant:`extended`,size:`medium`},style:{width:`auto`,padding:`0 16px`,borderRadius:40/2,minWidth:40,height:40}},{props:{color:`inherit`},style:{color:`inherit`}}]})),Am(({theme:e})=>({variants:[...Object.entries(e.palette).filter(zm([`dark`,`contrastText`])).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].contrastText,backgroundColor:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:(e.vars||e).palette[t].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t].main}}}}))]})),Am(({theme:e})=>({[`&.${r8e.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}}))),o8e=C.forwardRef(function(e,t){let n=wm({props:e,name:`MuiFab`}),{children:r,className:i,color:a=`default`,component:o=`button`,disabled:s=!1,disableFocusRipple:c=!1,focusVisibleClassName:l,size:u=`large`,variant:d=`circular`,...f}=n,p={...n,color:a,component:o,disabled:s,disableFocusRipple:c,size:u,variant:d},m=i8e(p);return(0,G.jsx)(a8e,{className:K(m.root,i),component:o,disabled:s,focusRipple:!c,focusVisibleClassName:K(m.focusVisible,l),ownerState:p,ref:t,...f,classes:m,children:r})}),s8e=[{code:`en`,flag:`🇬🇧`,name:`English`},{code:`de`,flag:`🇩🇪`,name:`Deutsch`},{code:`fr`,flag:`🇫🇷`,name:`Français`},{code:`es`,flag:`🇪🇸`,name:`Español`},{code:`it`,flag:`🇮🇹`,name:`Italiano`},{code:`zh`,flag:`🇨🇳`,name:`中文`},{code:`zh-TW`,flag:`🇹🇼`,name:`繁體中文`},{code:`ja`,flag:`🇯🇵`,name:`日本語`},{code:`th`,flag:`🇹🇭`,name:`ไทย`},{code:`sv`,flag:`🇸🇪`,name:`Svenska`},{code:`tr`,flag:`🇹🇷`,name:`Türkçe`},{code:`ru`,flag:`🇷🇺`,name:`Русский`}],c8e=`hamh-custom-languages`;function l8e(){try{let e=localStorage.getItem(c8e);return e?JSON.parse(e).map(e=>({code:e.code,flag:`🌐`,name:e.name})):[]}catch{return[]}}var u8e=`https://github.com/RiDDiX/home-assistant-matter-hub/issues/new?labels=translation&title=Translation+improvement`;function d8e(){let{t:e,i18n:t}=fs(),[n,r]=(0,C.useState)(!1),i=(0,C.useRef)(null),a=(0,C.useMemo)(()=>[...s8e,...l8e()],[]),o=t.language??`en`,s=a.some(e=>e.code===o)?o:o.split(`-`)[0]??`en`,c=(0,C.useCallback)(()=>{r(e=>!e)},[]),l=(0,C.useCallback)(e=>{t.changeLanguage(e),r(!1)},[t]);return(0,G.jsx)(Hh,{onClickAway:(0,C.useCallback)(()=>{r(!1)},[]),children:(0,G.jsxs)(Z,{children:[(0,G.jsx)(o8e,{ref:i,size:`small`,color:`primary`,onClick:c,"aria-label":`Change language`,sx:{position:`fixed`,bottom:24,right:24,zIndex:1300},children:(0,G.jsx)(Rhe,{})}),(0,G.jsx)(tb,{open:n,anchorEl:i.current,placement:`top-end`,transition:!0,sx:{zIndex:1300},children:({TransitionProps:t})=>(0,G.jsx)(Db,{...t,timeout:200,children:(0,G.jsxs)(Bm,{elevation:8,sx:{mb:1,py:.5,minWidth:160,borderRadius:2,overflow:`hidden`},children:[a.map(e=>(0,G.jsxs)(Z,{onClick:()=>l(e.code),sx:{display:`flex`,alignItems:`center`,gap:1.5,px:2,py:1,cursor:`pointer`,bgcolor:s===e.code?`action.selected`:`transparent`,"&:hover":{bgcolor:`action.hover`},transition:`background-color 0.15s`},children:[(0,G.jsx)(Q,{sx:{fontSize:`1.4rem`,lineHeight:1,userSelect:`none`},children:e.flag}),(0,G.jsx)(Q,{variant:`body2`,fontWeight:s===e.code?600:400,children:e.name})]},e.code)),(0,G.jsx)(zb,{}),(0,G.jsxs)(Z,{sx:{display:`flex`,alignItems:`flex-start`,gap:.75,px:2,py:1},children:[(0,G.jsx)(Wv,{sx:{fontSize:14,mt:.25,color:`text.secondary`}}),(0,G.jsxs)(Q,{variant:`caption`,color:`text.secondary`,sx:{lineHeight:1.4},children:[e(`languageSwitcher.disclaimer`),` `,(0,G.jsx)(Vv,{href:u8e,target:`_blank`,rel:`noopener`,sx:{fontSize:`inherit`},children:e(`languageSwitcher.contribute`)})]})]})]})})})]})})}var f8e={name:`home-assistant-matter-hub`,description:``,version:`2.1.0-alpha.647`,private:!1,type:`module`,bin:{"home-assistant-matter-hub":`./dist/backend/cli.js`},author:{name:`riddix`,url:`https://github.com/riddix`},keywords:[`home-assistant`,`homeassistant`,`home`,`assistant`,`apple home`,`google home`,`apple`,`google`,`alexa`,`matter`,`matter.js`,`matterjs`,`project-chip`,`smart`,`smarthome`,`smart-home`],bugs:{url:`https://github.com/riddix/home-assistant-matter-hub/issues`},license:`Apache-2.0`,repository:`github:riddix/home-assistant-matter-hub`,scripts:{cleanup:`npx rimraf node_modules dist pack LICENSE README.md`,build:`node build.js`,bundle:`pnpm pack --out package.tgz`,postbuild:`pnpm run bundle`,test:`vitest run`,prestart:`pnpm run build`,start:`dotenvx run -f ../../.env -- ./dist/backend/cli.js start`},dependencies:{"@matter/main":`0.16.11`,"@matter/nodejs":`0.16.11`,"@matter/general":`0.16.11`,ajv:`8.18.0`,archiver:`7.0.1`,color:`5.0.3`,debounce:`3.0.0`,express:`5.2.1`,"express-basic-auth":`1.2.1`,"express-ip-access-control":`1.1.3`,"home-assistant-js-websocket":`9.6.0`,"lodash-es":`4.18.1`,multer:`2.1.1`,nocache:`4.0.0`,unzipper:`0.12.3`,ws:`8.20.0`,yargs:`18.0.0`},devDependencies:{"@home-assistant-matter-hub/backend":`workspace:*`,"@home-assistant-matter-hub/frontend":`workspace:*`,"@home-assistant-matter-hub/common":`workspace:*`,"@types/lodash-es":`^4.17.12`},overrides:{minimatch:`9.0.7`,"path-to-regexp":`^8.4.0`,glob:`^13.0.0`},nx:{targets:{start:{cache:!1,dependsOn:[`build`]},pack:{cache:!0,dependsOn:[`build`],outputs:[`{projectRoot}/pack`]},build:{inputs:[`^default`,`default`,`{workspaceRoot}/README.md`,`{workspaceRoot}/LICENSE`],outputs:[`{projectRoot}/dist`,`{projectRoot}/README.md`,`{projectRoot}/LICENSE`]}}}};function p8e(){let e=`2.1.0-alpha.647`,[t,n]=(0,C.useState)(null);(0,C.useEffect)(()=>{fetch(`api/health`).then(e=>e.ok?e.json():null).then(e=>{e?.version&&n(e.version)}).catch(()=>{})},[]);let r=(0,C.useMemo)(()=>!t||e===`0.0.0-dev`?!1:e!==t,[t]);return(0,C.useMemo)(()=>({name:f8e.name,version:t??e,frontendVersion:e,backendVersion:t,versionMismatch:r}),[t,r])}var m8e=()=>{let{t:e}=fs(),t=[{name:e(`footer.github`),url:Y9.githubRepository},{name:e(`footer.documentation`),url:Y9.documentation},{name:e(`footer.support`),url:Y9.support}];return(0,G.jsxs)(Z9,{sx:{mt:16,mb:4},children:[(0,G.jsx)(zb,{sx:{mt:4,mb:4}}),(0,G.jsx)(jv,{container:!0,spacing:2,justifyContent:`center`,children:t.map((e,t)=>(0,G.jsx)(jv,{size:{xs:12,sm:`auto`},children:(0,G.jsx)(fv,{fullWidth:!0,size:`small`,variant:`outlined`,component:Vv,href:e.url,target:`_blank`,children:e.name})},t.toString()))})]})};function h8e(e){return Md(`MuiAppBar`,e)}Nd(`MuiAppBar`,[`root`,`positionFixed`,`positionAbsolute`,`positionSticky`,`positionStatic`,`positionRelative`,`colorDefault`,`colorPrimary`,`colorSecondary`,`colorInherit`,`colorTransparent`,`colorError`,`colorInfo`,`colorSuccess`,`colorWarning`]);var g8e=e=>{let{color:t,position:n,classes:r}=e;return cp({root:[`root`,`color${Y(t)}`,`position${Y(n)}`]},h8e,r)},_8e=(e,t)=>e?`${e.replace(`)`,``)}, ${t})`:t,v8e=J(Bm,{name:`MuiAppBar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`position${Y(n.position)}`],t[`color${Y(n.color)}`]]}})(Am(({theme:e})=>({display:`flex`,flexDirection:`column`,width:`100%`,boxSizing:`border-box`,flexShrink:0,variants:[{props:{position:`fixed`},style:{position:`fixed`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0,"@media print":{position:`absolute`}}},{props:{position:`absolute`},style:{position:`absolute`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0}},{props:{position:`sticky`},style:{position:`sticky`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0}},{props:{position:`static`},style:{position:`static`}},{props:{position:`relative`},style:{position:`relative`}},{props:{color:`inherit`},style:{"--AppBar-color":`inherit`,color:`var(--AppBar-color)`}},{props:{color:`default`},style:{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[100],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[100]),...e.applyStyles(`dark`,{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[900],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[900])})}},...Object.entries(e.palette).filter(zm([`contrastText`])).map(([t])=>({props:{color:t},style:{"--AppBar-background":(e.vars??e).palette[t].main,"--AppBar-color":(e.vars??e).palette[t].contrastText}})),{props:e=>e.enableColorOnDark===!0&&![`inherit`,`transparent`].includes(e.color),style:{backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`}},{props:e=>e.enableColorOnDark===!1&&![`inherit`,`transparent`].includes(e.color),style:{backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`,...e.applyStyles(`dark`,{backgroundColor:e.vars?_8e(e.vars.palette.AppBar.darkBg,`var(--AppBar-background)`):null,color:e.vars?_8e(e.vars.palette.AppBar.darkColor,`var(--AppBar-color)`):null})}},{props:{color:`transparent`},style:{"--AppBar-background":`transparent`,"--AppBar-color":`inherit`,backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`,...e.applyStyles(`dark`,{backgroundImage:`none`})}}]}))),y8e=C.forwardRef(function(e,t){let n=wm({props:e,name:`MuiAppBar`}),{className:r,color:i=`primary`,enableColorOnDark:a=!1,position:o=`fixed`,...s}=n,c={...n,color:i,position:o,enableColorOnDark:a};return(0,G.jsx)(v8e,{square:!0,component:`header`,ownerState:c,elevation:4,className:K(g8e(c).root,r,o===`fixed`&&`mui-fixed`),ref:t,...s})}),b8e={visibility:`hidden`};function x8e(e,t,n){let r=n&&n.getBoundingClientRect(),i=Xm(t),a=t.style.transform,o=t.style.transition;t.style.transition=``,t.style.transform=``;let s=t.getBoundingClientRect(),c=i.getComputedStyle(t).getPropertyValue(`transform`);t.style.transform=a,t.style.transition=o;let l=0,u=0;if(c&&c!==`none`&&typeof c==`string`){let e=c.split(`(`)[1].split(`)`)[0].split(`,`);l=parseInt(e[4],10),u=parseInt(e[5],10)}return e===`left`?r?`translateX(${r.right+l-s.left}px)`:`translateX(${i.innerWidth+l-s.left}px)`:e===`right`?r?`translateX(-${s.right-r.left-l}px)`:`translateX(-${s.left+s.width-l}px)`:e===`up`?r?`translateY(${r.bottom+u-s.top}px)`:`translateY(${i.innerHeight+u-s.top}px)`:r?`translateY(-${s.top-r.top+s.height-u}px)`:`translateY(-${s.top+s.height-u}px)`}function S8e(e){return typeof e==`function`?e():e}function Q9(e,t,n){let r=x8e(e,t,S8e(n));r&&(t.style.transform=r)}var C8e=C.forwardRef(function(e,t){let n=bm(),r={enter:n.transitions.easing.easeOut,exit:n.transitions.easing.sharp},i={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:a,appear:o=!0,children:s,container:c,direction:l=`down`,easing:u=r,in:d,onEnter:f,onEntered:p,onEntering:m,onExit:h,onExited:g,onExiting:_,style:v,timeout:y=i,...b}=e,x=C.useRef(null),S=ih(Bh(s),x,t),w=Wh(x,(e,t)=>{Q9(l,e,c),Uh(e),f&&f(e,t)}),T=Wh(x,(e,t)=>{let r=Kh({timeout:y,style:v,easing:u},{mode:`enter`});e.style.transition=n.transitions.create(`transform`,r),e.style.transform=`none`,m&&m(e,t)}),E=Wh(x,p),D=Wh(x,_),O=Wh(x,e=>{let t=Kh({timeout:y,style:v,easing:u},{mode:`exit`});e.style.transition=n.transitions.create(`transform`,t),Q9(l,e,c),h&&h(e)}),k=Wh(x,e=>{e.style.transition=``,g&&g(e)}),A=e=>{a&&a(x.current,e)},j=C.useCallback(()=>{x.current&&Q9(l,x.current,c)},[l,c]);return C.useEffect(()=>{if(d||l===`down`||l===`right`)return;let e=Gm(()=>{x.current&&Q9(l,x.current,c)}),t=Xm(x.current);return t.addEventListener(`resize`,e),()=>{e.clear(),t.removeEventListener(`resize`,e)}},[l,d,c]),C.useEffect(()=>{d||j()},[d,j]),(0,G.jsx)(bh,{nodeRef:x,onEnter:w,onEntered:E,onEntering:T,onExit:O,onExited:k,onExiting:D,addEndListener:A,appear:o,in:d,timeout:y,...b,children:(e,{ownerState:t,...n})=>{let r;return r=e===`exited`&&!d?v||s.props.style?{visibility:`hidden`,...v,...s.props.style}:b8e:v&&s.props.style?{...v,...s.props.style}:v||s.props.style,C.cloneElement(s,{ref:S,style:r,...n})}})});function w8e(e){return Md(`MuiDrawer`,e)}Nd(`MuiDrawer`,[`root`,`docked`,`paper`,`anchorLeft`,`anchorRight`,`anchorTop`,`anchorBottom`,`paperAnchorLeft`,`paperAnchorRight`,`paperAnchorTop`,`paperAnchorBottom`,`paperAnchorDockedLeft`,`paperAnchorDockedRight`,`paperAnchorDockedTop`,`paperAnchorDockedBottom`,`modal`]);var T8e=(e,t)=>{let{ownerState:n}=e;return[t.root,(n.variant===`permanent`||n.variant===`persistent`)&&t.docked,n.variant===`temporary`&&t.modal]},E8e=e=>{let{classes:t,anchor:n,variant:r}=e;return cp({root:[`root`,`anchor${Y(n)}`],docked:[(r===`permanent`||r===`persistent`)&&`docked`],modal:[`modal`],paper:[`paper`,`paperAnchor${Y(n)}`,r!==`temporary`&&`paperAnchorDocked${Y(n)}`]},w8e,t)},D8e=J(jb,{name:`MuiDrawer`,slot:`Root`,overridesResolver:T8e})(Am(({theme:e})=>({zIndex:(e.vars||e).zIndex.drawer}))),O8e=J(`div`,{shouldForwardProp:Sm,name:`MuiDrawer`,slot:`Docked`,skipVariantsResolver:!1,overridesResolver:T8e})({flex:`0 0 auto`}),k8e=J(Bm,{name:`MuiDrawer`,slot:`Paper`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.paper,t[`paperAnchor${Y(n.anchor)}`],n.variant!==`temporary`&&t[`paperAnchorDocked${Y(n.anchor)}`]]}})(Am(({theme:e})=>({overflowY:`auto`,display:`flex`,flexDirection:`column`,height:`100%`,flex:`1 0 auto`,zIndex:(e.vars||e).zIndex.drawer,WebkitOverflowScrolling:`touch`,position:`fixed`,top:0,outline:0,variants:[{props:{anchor:`left`},style:{left:0}},{props:{anchor:`top`},style:{top:0,left:0,right:0,height:`auto`,maxHeight:`100%`}},{props:{anchor:`right`},style:{right:0}},{props:{anchor:`bottom`},style:{top:`auto`,left:0,bottom:0,right:0,height:`auto`,maxHeight:`100%`}},{props:({ownerState:e})=>e.anchor===`left`&&e.variant!==`temporary`,style:{borderRight:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`top`&&e.variant!==`temporary`,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`right`&&e.variant!==`temporary`,style:{borderLeft:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`bottom`&&e.variant!==`temporary`,style:{borderTop:`1px solid ${(e.vars||e).palette.divider}`}}]}))),A8e={left:`right`,right:`left`,top:`down`,bottom:`up`};function j8e(e){return[`left`,`right`].includes(e)}function M8e({direction:e},t){return e===`rtl`&&j8e(t)?A8e[t]:t}var N8e=C.forwardRef(function(e,t){let n=wm({props:e,name:`MuiDrawer`}),r=bm(),i=Df(),a={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{anchor:o=`left`,BackdropProps:s,children:c,className:l,elevation:u=16,hideBackdrop:d=!1,ModalProps:{BackdropProps:f,...p}={},onClose:m,open:h=!1,PaperProps:g={},SlideProps:_,TransitionComponent:v,transitionDuration:y=a,variant:b=`temporary`,slots:x={},slotProps:S={},...w}=n,T=C.useRef(!1);C.useEffect(()=>{T.current=!0},[]);let E=M8e({direction:i?`rtl`:`ltr`},o),D=o,O={...n,anchor:D,elevation:u,open:h,variant:b,...w},k=E8e(O),A={slots:{transition:v,...x},slotProps:{paper:g,transition:_,...S,backdrop:ah(S.backdrop||{...s,...f},{transitionDuration:y})}},[j,M]=Rm(`root`,{ref:t,elementType:D8e,className:K(k.root,k.modal,l),shouldForwardComponentProp:!0,ownerState:O,externalForwardedProps:{...A,...w,...p},additionalProps:{open:h,onClose:m,hideBackdrop:d,slots:{backdrop:A.slots.backdrop},slotProps:{backdrop:A.slotProps.backdrop}}}),[N,P]=Rm(`paper`,{elementType:k8e,shouldForwardComponentProp:!0,className:K(k.paper,g.className),ownerState:O,externalForwardedProps:A,additionalProps:{elevation:b===`temporary`?u:0,square:!0,...b===`temporary`&&{role:`dialog`,"aria-modal":`true`}}}),[F,I]=Rm(`docked`,{elementType:O8e,ref:t,className:K(k.root,k.docked,l),ownerState:O,externalForwardedProps:A,additionalProps:w}),[L,R]=Rm(`transition`,{elementType:C8e,ownerState:O,externalForwardedProps:A,additionalProps:{in:h,direction:A8e[E],timeout:y,appear:T.current}}),ee=(0,G.jsx)(N,{...P,children:c});if(b===`permanent`)return(0,G.jsx)(F,{...I,children:ee});let z=(0,G.jsx)(L,{...R,children:ee});return b===`persistent`?(0,G.jsx)(F,{...I,children:z}):(0,G.jsx)(j,{...M,children:z})}),P8e=ef({themeId:ym}),F8e={error:vx,warn:Gv,info:mb,debug:RT},I8e=({open:e,onClose:t})=>{let{t:n}=fs(),r=bm(),i=(0,C.useMemo)(()=>({error:r.palette.error.main,warn:r.palette.warning.main,info:r.palette.info.main,debug:r.palette.secondary.main}),[r]),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!0),[l,u]=(0,C.useState)(`error,warn,info`.split(`,`)),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(!0),h=(0,C.useCallback)(async()=>{try{let e=new URLSearchParams({level:l.join(`,`),limit:`500`,...d&&{search:d}}),t=await fetch(`api/logs?${e}`);t.ok&&o((await t.json()).entries)}catch(e){console.error(`Failed to fetch logs:`,e)}finally{c(!1)}},[l,d]);(0,C.useEffect)(()=>{e&&h()},[e,h]),(0,C.useEffect)(()=>{if(!p||!e)return;let t=setInterval(h,5e3);return()=>clearInterval(t)},[p,e,h]);let g=e=>{u(Array.isArray(e.target.value)?e.target.value:[e.target.value])},_=e=>{f(e.target.value)},v=async()=>{try{await fetch(`api/logs`,{method:`DELETE`}),o([])}catch(e){console.error(`Failed to clear logs:`,e)}},y=e=>(0,G.jsx)(F8e[e]||mb,{sx:{fontSize:16,color:i[e]}});return(0,G.jsxs)(Pb,{open:e,onClose:t,maxWidth:`lg`,fullWidth:!0,children:[(0,G.jsxs)(Lb,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,G.jsx)(RT,{}),n(`logs.title`),(0,G.jsx)(Z,{sx:{flexGrow:1}}),(0,G.jsx)(sb,{title:n(`logs.autoRefresh`),children:(0,G.jsx)(wv,{label:p?`Auto`:`Manual`,color:p?`success`:`default`,size:`small`,onClick:()=>m(!p),sx:{cursor:`pointer`}})}),(0,G.jsx)(Ih,{onClick:t,children:(0,G.jsx)(VT,{})})]}),(0,G.jsxs)(Ib,{children:[(0,G.jsx)(Rv,{spacing:2,sx:{mb:2},children:(0,G.jsxs)(Rv,{direction:`row`,spacing:2,alignItems:`center`,children:[(0,G.jsxs)(Dv,{size:`small`,sx:{minWidth:200},children:[(0,G.jsx)(Fx,{children:n(`logs.logLevel`)}),(0,G.jsxs)(_S,{value:l,label:n(`logs.logLevel`),onChange:g,multiple:!0,renderValue:e=>(0,G.jsx)(Z,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:(Array.isArray(e)?e:[e]).map(e=>(0,G.jsx)(wv,{label:e.toUpperCase(),size:`small`,sx:{backgroundColor:i[e],color:`white`}},e))}),children:[(0,G.jsx)(vS,{value:`error`,children:n(`logs.error`)}),(0,G.jsx)(vS,{value:`warn`,children:n(`logs.warning`)}),(0,G.jsx)(vS,{value:`info`,children:n(`logs.info`)}),(0,G.jsx)(vS,{value:`debug`,children:n(`logs.debug`)})]})]}),(0,G.jsx)(xS,{size:`small`,placeholder:n(`logs.searchPlaceholder`),value:d,onChange:_,sx:{flexGrow:1}}),(0,G.jsx)(fv,{variant:`outlined`,onClick:h,children:n(`common.refresh`)}),(0,G.jsx)(fv,{variant:`outlined`,color:`error`,onClick:v,children:n(`common.delete`)})]})}),(0,G.jsx)(Z,{sx:{height:400,overflow:`auto`,backgroundColor:`background.paper`,border:1,borderColor:`divider`,borderRadius:1,p:1},children:s?(0,G.jsx)(Z,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,G.jsxs)(Q,{children:[n(`common.loading`),`...`]})}):a.length===0?(0,G.jsx)(Z,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,G.jsx)(Q,{color:`text.secondary`,children:n(`logs.noResults`)})}):(0,G.jsx)(Rv,{spacing:1,children:a.map((e,t)=>(0,G.jsxs)(Z,{sx:{p:1,borderRadius:1,backgroundColor:`action.hover`,fontFamily:`monospace`,fontSize:`0.875rem`,wordBreak:`break-all`},children:[(0,G.jsxs)(Z,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:.5},children:[y(e.level),(0,G.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:new Date(e.timestamp).toLocaleString()}),(0,G.jsx)(wv,{label:e.level.toUpperCase(),size:`small`,sx:{backgroundColor:i[e.level],color:r.palette.getContrastText(i[e.level]??r.palette.grey[500]),fontSize:`0.7rem`,height:20}})]}),(0,G.jsx)(Q,{sx:{ml:3},children:e.message}),e.context&&(0,G.jsx)(Q,{sx:{ml:3,color:`text.secondary`,fontSize:`0.8rem`},children:JSON.stringify(e.context,null,2)})]},`${e.timestamp}-${e.level}-${t}`))})})]}),(0,G.jsx)(Fb,{children:(0,G.jsx)(fv,{onClick:t,children:n(`common.close`)})})]})};function L8e(){let{t:e}=fs(),{isConnected:t}=X_(),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(!1);(0,C.useEffect)(()=>{let e=async()=>{try{let e=await fetch(`api/health`);e.ok?(r(await e.json()),a(!1)):a(!0)}catch{a(!0)}};e();let t=setInterval(e,3e4);return()=>clearInterval(t)},[]);let o=e=>{let t=Math.floor(e/3600),n=Math.floor(e%3600/60);return t>0?`${t}h ${n}m`:`${n}m`},s=n?.status===`healthy`&&!i,c=n?.services?.bridges,l=c&&c.total>0&&c.running===c.total,u=c&&c.total===0,d=n?(0,G.jsxs)(Z,{sx:{p:.5},children:[(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[e(`health.version`),`:`]}),` `,n.version??e(`status.unknown`)]}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[e(`health.uptime`),`:`]}),` `,o(n.uptime??0)]}),n.services?.bridges&&(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[e(`nav.bridges`),`:`]}),` `,n.services.bridges.running??0,`/`,n.services.bridges.total??0,` `,e(`common.running`).toLowerCase(),(n.services.bridges.stopped??0)>0&&` (${n.services.bridges.stopped} ${e(`common.stopped`).toLowerCase()})`]}),n.services?.homeAssistant&&(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[e(`health.homeAssistant`),`:`]}),` `,n.services.homeAssistant.connected?e(`health.connected`):e(`health.disconnected`)]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`WebSocket:`}),` `,e(t?`health.connected`:`health.disconnected`)]})]}):e(`status.loadingHealth`);return(0,G.jsx)(sb,{title:d,arrow:!0,children:(0,G.jsx)(wv,{icon:i||!s?(0,G.jsx)(vx,{fontSize:`small`}):l?(0,G.jsx)(sv,{fontSize:`small`}):(0,G.jsx)(_b,{fontSize:`small`}),label:e(i?`status.error`:s?t?u?`status.noBridges`:l?`common.online`:`common.starting`:`common.offline`:`status.unhealthy`),color:i||!s?`error`:!l||!t?`warning`:`success`,size:`small`,variant:`filled`,sx:{borderRadius:1,fontWeight:600,"& .MuiChip-icon":{color:`inherit`}}})})}var R8e=e=>(0,G.jsx)(`svg`,{viewBox:`0 0 91 89`,xmlSpace:`preserve`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,G.jsxs)(`g`,{style:{display:`inline`},children:[(0,G.jsx)(`path`,{style:{fill:`#18bcf2`,fillOpacity:1,strokeWidth:.266194},d:`m 49.149143,1.473171 38.513568,38.536435 c 0,0 1.248354,1.186052 2.207681,3.092371 0.959329,1.906323 1.10864,4.600698 1.10864,4.600698 v 36.786372 c 0,0 -0.01549,1.748506 -1.49842,3.050572 -1.482931,1.302064 -3.333077,1.362947 -3.333077,1.362947 l -81.325658,7.7e-5 c 0,0 -1.7523855,-0.0091 -3.17112,-1.352526 C -0.07808495,85.913164 0.05953025,84.487808 0.05953025,84.487808 V 47.704546 c 0,0 -0.0018381,-2.218618 0.95921785,-4.315832 0.9610554,-2.097209 2.3010618,-3.355005 2.3010618,-3.355005 L 41.545959,1.4719546 c 0,0 1.465224,-1.46837077 3.753488,-1.46837077 2.288268,0 3.849696,1.46958717 3.849696,1.46958717 z`}),(0,G.jsx)(`path`,{style:{fill:`#ffffff`,fillOpacity:1,strokeWidth:.175841},d:`m 31.689717,32.051124 c 2.813363,2.331095 6.157331,3.89845 9.721813,4.556421 V 17.180647 l 3.873694,-2.282955 3.870527,2.282955 V 36.60772 c 3.565364,-0.658847 6.910387,-2.226204 9.725159,-4.556417 l 7.032345,4.154609 c -11.437354,11.557779 -29.852321,11.557779 -41.290025,0 z m 8.546732,49.60988 C 44.314996,65.760441 35.09933,49.470196 19.574984,45.139543 v 8.312381 c 3.383916,1.32244 6.386113,3.496288 8.728705,6.320026 L 11.83076,69.485301 v 4.56907 l 3.873697,2.270836 16.469936,-9.713534 c 1.224356,3.48294 1.56683,7.225375 0.996449,10.879778 z M 70.977694,45.139543 c -15.515726,4.34014 -24.72189,20.626696 -20.643519,36.521461 l 7.047658,-4.15742 c -0.569325,-3.654411 -0.2265,-7.3965 0.996449,-10.87979 l 16.457611,9.701233 3.870711,-2.283125 v -4.55677 L 62.233673,59.77195 c 2.342772,-2.822684 5.34497,-4.996533 8.728708,-6.320026 z`})]})}),z8e=e=>{let t=p8e();return(0,G.jsxs)(Z,{component:Qi,to:Y9.dashboard,sx:{display:`flex`,alignItems:`center`,justifyContent:e.large?`flex-start`:`center`,flexGrow:1,textDecoration:`none`,color:`inherit`},children:[(0,G.jsx)(R8e,{style:{height:`40px`}}),(0,G.jsx)(Q,{variant:`inherit`,component:`span`,sx:{mr:1,ml:1},children:t.name.split(`-`).map(Y).join(`-`)}),e.large&&(0,G.jsx)(Q,{variant:`caption`,component:`span`,children:t.version})]})},B8e=()=>{let e=P8e(`(min-width:600px)`),{mode:t,setMode:n}=km(),[r,i]=(0,C.useState)(!1),[a,o]=(0,C.useState)(!1),s=xr(),c=vr(),l=e=>e?e===`/`?c.pathname===`/`:c.pathname.startsWith(e):!1,u=()=>{n(t===`dark`?`light`:`dark`)},{t:d}=fs(),f=[{label:d(`dashboard.title`),icon:(0,G.jsx)(KT,{}),to:Y9.dashboard},{label:d(`nav.bridges`),icon:(0,G.jsx)(qT,{}),to:Y9.bridges},{label:d(`nav.devices`),icon:(0,G.jsx)(ub,{}),to:Y9.devices},{label:d(`nav.networkMap`),icon:(0,G.jsx)(MT,{}),to:Y9.networkMap},{label:d(`nav.startupOrder`),icon:(0,G.jsx)(cv,{}),to:Y9.startup},{label:d(`nav.lockCredentials`),icon:(0,G.jsx)(pT,{}),to:Y9.lockCredentials},{label:d(`nav.filterReference`),icon:(0,G.jsx)(JT,{}),to:Y9.labels},{label:`Plugins`,icon:(0,G.jsx)(WT,{}),to:Y9.plugins},{label:d(`nav.settings`),icon:(0,G.jsx)(ST,{}),to:Y9.settings},{label:d(t===`dark`?`nav.lightMode`:`nav.darkMode`),icon:t===`dark`?(0,G.jsx)(Bhe,{}):(0,G.jsx)(Ohe,{}),onClick:u},{label:d(`nav.systemLogs`),icon:(0,G.jsx)(RT,{}),onClick:()=>i(!0)},{label:d(`nav.health`),icon:(0,G.jsx)(wx,{}),to:Y9.health}],p=e=>{o(!1),e.onClick?e.onClick():e.to&&s(e.to)};return(0,G.jsxs)(Z,{children:[(0,G.jsx)(y8e,{sx:{height:`72px`},children:(0,G.jsx)(e8e,{sx:{paddingLeft:`0 !important`,paddingRight:`0 !important`},children:(0,G.jsxs)(Z9,{sx:{padding:2,height:`100%`,display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,G.jsx)(z8e,{large:e}),e?(0,G.jsxs)(Z,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[f.map(e=>e.to?(0,G.jsx)(sb,{title:e.label,children:(0,G.jsx)(Ih,{component:Qi,to:e.to,sx:{color:`inherit`,bgcolor:l(e.to)?`rgba(255,255,255,0.15)`:`transparent`,borderRadius:1},children:e.icon})},e.label):(0,G.jsx)(sb,{title:e.label,children:(0,G.jsx)(Ih,{onClick:e.onClick,sx:{color:`inherit`},children:e.icon})},e.label)),(0,G.jsx)(L8e,{})]}):(0,G.jsxs)(Z,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,G.jsx)(L8e,{}),(0,G.jsx)(Ih,{onClick:()=>o(!0),sx:{color:`inherit`},children:(0,G.jsx)(Vhe,{})})]})]})})}),(0,G.jsx)(N8e,{anchor:`right`,open:a,onClose:()=>o(!1),children:(0,G.jsx)(Yv,{sx:{width:250},children:f.map(e=>(0,G.jsxs)(Vae,{selected:l(e.to),onClick:()=>p(e),children:[(0,G.jsx)(ey,{children:e.icon}),(0,G.jsx)(ny,{primary:e.label})]},e.label))})}),(0,G.jsx)(I8e,{open:r,onClose:()=>i(!1)})]})},V8e=()=>{let{versionMismatch:e,frontendVersion:t,backendVersion:n}=p8e(),{isConnected:r}=X_();return(0,G.jsxs)(Z,{children:[(0,G.jsx)(B8e,{}),(0,G.jsx)(e8e,{}),e&&(0,G.jsxs)(zh,{severity:`warning`,variant:`filled`,sx:{borderRadius:0},action:(0,G.jsx)(fv,{color:`inherit`,size:`small`,onClick:()=>window.location.reload(),children:`Reload`}),children:[`Version mismatch: frontend `,t,`, backend `,n,`. Please reload to get the latest UI.`]}),!r&&(0,G.jsx)(zh,{severity:`error`,variant:`filled`,sx:{borderRadius:0},children:`Connection lost, data may be outdated. Reconnecting…`}),(0,G.jsx)(Z9,{sx:{p:2},children:(0,G.jsx)(t8e,{children:(0,G.jsx)(ii,{})})}),(0,G.jsx)(m8e,{}),(0,G.jsx)(d8e,{})]})},H8e=_m({colorSchemes:{light:{palette:{primary:{main:`#1976d2`,light:`#42a5f5`,dark:`#1565c0`},secondary:{main:`#9c27b0`,light:`#ba68c8`,dark:`#7b1fa2`},background:{default:`#f5f5f5`,paper:`#ffffff`}}},dark:{palette:{primary:{main:`#90caf9`,light:`#e3f2fd`,dark:`#42a5f5`},secondary:{main:`#ce93d8`,light:`#f3e5f5`,dark:`#ab47bc`},background:{default:`#121212`,paper:`#1e1e1e`}}}},typography:{fontFamily:`"Roboto", "Helvetica", "Arial", sans-serif`,h1:{fontSize:`2.5rem`,fontWeight:500},h2:{fontSize:`2rem`,fontWeight:500},h3:{fontSize:`1.75rem`,fontWeight:500},h4:{fontSize:`1.5rem`,fontWeight:500},h5:{fontSize:`1.25rem`,fontWeight:500},h6:{fontSize:`1rem`,fontWeight:500}},shape:{borderRadius:8},components:{MuiCard:{styleOverrides:{root:{transition:`transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out`,"&:hover":{transform:`translateY(-2px)`,boxShadow:`0 4px 20px rgba(0,0,0,0.12)`}}}},MuiButton:{styleOverrides:{root:{textTransform:`none`,fontWeight:500}}},MuiChip:{styleOverrides:{root:{fontWeight:500}}},MuiAppBar:{styleOverrides:{root:{backgroundImage:`none`}}}}}),$9=document.getElementsByTagName(`base`)[0]?.href?.replace(/\/$/,``);$9?.startsWith(`http`)&&($9=new URL($9).pathname);var U8e=qi([{path:`/`,element:(0,G.jsx)(V8e,{}),children:q6e}],{basename:$9});(0,S.createRoot)(document.getElementById(`root`)).render((0,G.jsx)(C.StrictMode,{children:(0,G.jsx)(L,{store:X6e,children:(0,G.jsxs)(Zee,{theme:H8e,children:[(0,G.jsx)(Gee,{}),(0,G.jsx)(zee,{styles:{".rjsf-field-array > .MuiFormControl-root > .MuiPaper-root > .MuiBox-root > .MuiGrid-root > .MuiGrid-root:has(> .MuiBox-root > .MuiPaper-root > .MuiBox-root > .rjsf-field)":{overflow:`initial !important`,flexGrow:1}}}),(0,G.jsx)(wre,{children:(0,G.jsx)(mne,{children:(0,G.jsx)(va,{router:U8e})})})]})})}));